---
title: "Admin-only diagnostic for observability wiring (PostHog + Sentry)"
method: GET
path: "/api/v1/observability/healthz"
tags: ["observability"]
---

# Admin-only diagnostic for observability wiring (PostHog + Sentry)

`GET /api/v1/observability/healthz`

## Request

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

Report PostHog + Sentry wiring status for post-deploy verification.

Returns:
    ``{"posthog": {"initialized": bool, "host": str, "key_prefix": str | None,
                   "last_capture_ts": str | None, "last_capture_event": str | None},
       "sentry": {"dsn_set": bool}}``

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

The ``last_capture_*`` fields are process-local — they reflect the most
recent successful enqueue in *this* worker. In a multi-worker prod
pod, expect them to lag and vary between requests; that's fine for
"is anything firing at all?" verification.

## 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)
