health.md
title: "Health" description: "Liveness and readiness checks for the MachineMail API, with no authentication: /health while the process serves requests, /health/ready when storage answers." canonical: "https://machinemail.dev/docs/reference/api/health"
Health
Liveness and readiness checks for the MachineMail API, with no authentication: /health while the process serves requests, /health/ready when storage answers.
Source: https://machinemail.dev/docs/reference/api/health
| Method | Path | Summary |
|---|---|---|
GET |
/health |
Liveness |
GET |
/health/ready |
Readiness |
Liveness
GET /health
Always 200 {"status": "ok"} while the process serves requests. No authentication.
Authentication: None.
Response
200 The process is up (application/json)
| Field | Type | Description | |
|---|---|---|---|
status |
"ok" | required |
Errors
| Status | Meaning |
|---|---|
500 |
Unexpected server error. |
Example
curl "https://api.machinemail.dev/health"
{
"status": "ok"
}
Readiness
GET /health/ready
Pings the storage backend: 200 with status: ready (checks.storage: true) when it answers, 503 with status: unavailable when it does not. No authentication.
Authentication: None.
Response
200 Ready (application/json)
| Field | Type | Description | |
|---|---|---|---|
status |
"ready" | "unavailable" | required | ready when storage answers; the HTTP status is then 200, otherwise 503. |
checks |
object |
required | The checks behind status. |
Errors
| Status | Meaning |
|---|---|
500 |
Unexpected server error. |
503 |
Not ready: storage did not answer |
Example
curl "https://api.machinemail.dev/health/ready"
{
"status": "ready",
"checks": {
"storage": true
}
}