---
title: "Deep dependency health check"
method: GET
path: "/health/deep"
tags: ["Health"]
---

# Deep dependency health check

`GET /health/deep`

## Request

- Base URL: `https://api.apphandoff.com/api`
- URL: `https://api.apphandoff.com/api/health/deep`
- Auth: API key in cookie `sb-access-token`

Superadmin only. Runs external probes (Supabase, Mailgun, Stripe, Fly API) and returns per-service latency and status, plus chores[]: the newest run of every /api/cron/* chore. Use for dashboards/monitoring, not Fly LB checks. The HTTP status follows the Supabase probe only; a failing chore does not change it.

## Response `200`

All dependencies healthy

- DeepHealthResponse: Per-dependency health report (getHealthReport) plus chores[].
  - `chores` ChoreHealth[], required
    - `name` string, required: Chore name, the /api/cron/ route segment
    - `last_started_at` string, date-time, required
    - `last_status` 'running' | 'succeeded' | 'failed' | 'timeout', required: A running row with no finished_at past its timeout reads as timeout
    - `last_message` string, nullable, required: Failure text from the response's error/errors field, or the thrown message
    - `consecutive_failures` integer, required: Newest unbroken streak of failed/timeout runs; a run still inside its window is neither
  - `chores_error` string: Present only when the chore read failed; chores is then empty

## Other responses

- `401`: Not authenticated
- `403`: Forbidden
- `503`: One or more dependencies unhealthy

---

[API](https://skmtc.dev/apphandoff/apis/apphandoff-api.md) · [All operations](https://skmtc.dev/apphandoff/apis/apphandoff-api/llms.txt) · [OpenAPI document](https://skmtc.dev/apphandoff/apis/apphandoff-api/revisions/9f138fe46d56?raw)
