---
title: "Deep health check for an external monitor"
method: GET
path: "/v1/health/deep"
tags: ["meta"]
---

# Deep health check for an external monitor

`GET /v1/health/deep`

## Request

- Base URL: `https://api.hyperresearch.ai`
- URL: `https://api.hyperresearch.ai/v1/health/deep`
- Auth: none required

Unauthenticated, rate-limited and cached for 30 s. Answers `ok`, `degraded` or `down` with one named check per dependency and per background signal — D1, R2, Vectorize, the queue producer bindings, each cron's last heartbeat age, the email lane, dead-letter arrivals, the provider balance probe age, the platform spend breaker, orchestrator reachability and the active/stalled run counts. The body carries counts, ages and fixed tokens only: no identifier, no customer data and no thrown message. The HTTP status is always 200 — alert on the body. `ops/monitoring.md` is the runbook.

## Response `200`

Health roll-up

- DeepHealth
  - `status` 'ok' | 'degraded' | 'down', required
  - `checked_at` string, required
  - `environment` string, required
  - `cache_age_s` number, required
  - `checks` DeepHealthCheck[], required
    - `name` string, required
    - `status` 'ok' | 'degraded' | 'down' | 'skipped', required
    - `detail` string, nullable, required
    - `latency_ms` number, nullable
    - `age_s` number, nullable
    - `values` object
  - `dead_letter_queues` object[], required
    - `queue` string, required
    - `recorded_1h` number, required
    - `classes` string[], required

## Other responses

- `429`: Too many requests from this network; wait `Retry-After` seconds
- `500`: Internal error

---

[API](https://skmtc.dev/hyperresearch/apis/hyperresearch-cloud-api.md) · [All operations](https://skmtc.dev/hyperresearch/apis/hyperresearch-cloud-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hyperresearch/apis/hyperresearch-cloud-api/revisions/726ef831ebf4?raw)
