---
title: "Liveness probe"
method: GET
path: "/health"
tags: ["Health"]
---

# Liveness probe

`GET /health`

## Request

- Base URL: `https://api.kawaa.com`
- URL: `https://api.kawaa.com/health`
- Auth: none required

Answers without authentication. Not a status page: https://status.kawaa.com reports component health.

## Response `200`

The API is serving, but **read `status` in the body before concluding it is healthy**. A degraded dependency does not always change the status code: a worker dead-letter-queue probe that fails or reads above its threshold sets `status: "degraded"` while leaving `healthy: true`, and the response is still 200. A monitor that watches only the status code misses worker degradation entirely.

- object
  - `status` string, required
  - `timestamp` string, date-time, required
  - `service` string, required
  - `version` string, required

## Other responses

- `503`: A dependency probe failed: the SAME JSON shape as 200, with `status: "degraded"`. A monitor that treats only 200 as a valid response stops reading precisely when the endpoint has something to say. A 503 whose whole body is `{"message":"Service Unavailable"}` is not this report: the gateway in front of the API answered it (`GatewayError`), and it has no `status` field.
- `default`: Any status this operation does not list. Kawaa's own errors carry the error envelope. The gateway in front of the API can answer any operation with its own bare body (`GatewayError`): a `503` after about 29 seconds, when the request may still have run and been charged, a `413` for a body over about 6 MB, or a `400` for a path with malformed percent-encoding.

---

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