---
title: "Health check"
method: GET
path: "/api/v1/health"
tags: ["System"]
---

# Health check

`GET /api/v1/health`

Returns API health status. No authentication required. Limited to 60 requests per minute per IP.

## Headers

- `If-None-Match` string

## Response `200`

Health status

- object
  - `object` 'health', required
  - `data` object, required
    - `status` 'ok' | 'degraded' | 'down' | 'maintenance'
    - `db` boolean
    - `cache` boolean
    - `subsystems` object
      - `background_jobs` object, required — Public-safe aggregate status for expected background job successful-completion heartbeats. Does not expose Redis keys, job names, raw errors, provider payloads, wallet addresses, or condition IDs.
        - `status` 'ok' | 'degraded' | 'down' | 'not_checked', required
        - `checked` boolean, required
        - `total` integer, required
        - `healthy` integer, required
        - `stale` integer, required
        - `missing` integer, required
        - `invalid` integer, required
        - `unconfigured` integer, required
  - `meta` ResponseMeta, required
    - `request_id` string, required — Unique request ID (req_ prefix).
    - `cached` boolean, required
    - `cache_age_s` integer, nullable — Cache age in seconds, null if not cached.

## Other responses

- `304` — Not Modified. Returned when If-None-Match matches the current health payload.
- `408` — Request exceeded the server's 30-second transport timeout. The timeout response has an empty body because it is generated before handler-level JSON error shaping.
- `429` — Rate limit exceeded (100 req/min; batch endpoints also reserve 100 batch item units/min before execution)

## Changes

- **2026-06-01** `422bd4dc1611` — 9 warning, 1 info
  - added the new `account_locked` enum value to the `error/code` response property for the response status `429`
  - added the new `bad_request` enum value to the `error/code` response property for the response status `429`
  - added the new `forbidden` enum value to the `error/code` response property for the response status `429`
  - added the new `internal_error` enum value to the `error/code` response property for the response status `429`
  - …6 more
- **2026-05-07** `2907497f4ca3` — 5 info
  - added the new optional `header` request parameter `If-None-Match`
  - added the non-success response with the status `304`
  - added the non-success response with the status `408`
  - added the non-success response with the status `429`
  - …1 more
- **2026-03-25** `e658903dd89b` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/0xinsider/apis/0xinsider-api/changes/api/v1/health/get.md)

---

[API](https://skmtc.dev/0xinsider/apis/0xinsider-api.md) · [All operations](https://skmtc.dev/0xinsider/apis/0xinsider-api/llms.txt) · [OpenAPI document](https://skmtc.dev/0xinsider/apis/0xinsider-api/revisions/137fa0fd3297?raw)
