---
title: "Admin-only diagnostic for the signup funnel (BRIEF-LP-000)"
method: GET
path: "/api/v1/observability/funnel-baseline"
tags: ["observability"]
---

# Admin-only diagnostic for the signup funnel (BRIEF-LP-000)

`GET /api/v1/observability/funnel-baseline`

## Request

- Base URL: `https://api.badgeia.com`
- URL: `https://api.badgeia.com/api/v1/observability/funnel-baseline`
- Auth: none declared

Report 24h signup-funnel counts for post-deploy verification.

BRIEF-LP-000 §6.5 / AC-LP0-03 — answers the question "is the
signup_started → signup_completed wiring live in this process?"
without requiring a PostHog API key at runtime.

Returns:
    ``{"signup_started_24h": int,
       "signup_completed_24h": int,
       "ratio": float | None,
       "events_fully_instrumented": bool}``

Authorization: requires the caller's email to appear in ``ADMIN_EMAILS``.
401 for unauthenticated, 403 for authenticated non-admin.

Trade-off (BRIEF §6.5 OQ #1): this endpoint reads a PER-WORKER,
PER-PROCESS in-memory counter. Counts RESET on container restart and
do NOT aggregate across worker pods. For wiring verification ("did the
code path fire at all in this process in the last 24h?") that's the
right signal. For precise PostHog-truth windowing, swap to a HogQL
backend in a follow-up — see BRIEF-LP-000 §6 "Deferred to dev" and
OQ #1 in §9.

## Response `200`

Successful Response

- object

---

[API](https://skmtc.dev/badgeia/apis/badge.md) · [All operations](https://skmtc.dev/badgeia/apis/badge/llms.txt) · [OpenAPI document](https://skmtc.dev/badgeia/apis/badge/revisions/7e7f7fee8b77?raw)
