Craftkitdocs

Health check

Public liveness/readiness probe. GET /v1/health returns {status, version, checks:{database}} with 200 when healthy and 503 when degraded. No auth.

Public liveness and readiness probe for the Craftkit API. Returns 200 when all dependency checks pass and 503 when any are failing. No authentication is required.

GET /v1/health

Quick Start

curl

curl -i https://api.craftkit.dev/v1/health

Node.js

const res = await fetch('https://api.craftkit.dev/v1/health');
const health = await res.json();
const healthy = res.status === 200 && health.status === 'ok';

Python

import requests

res = requests.get("https://api.craftkit.dev/v1/health")
healthy = res.status_code == 200 and res.json()["status"] == "ok"

No Authorization header is needed — this endpoint is public.

Response — 200 OK

{
  "status": "ok",
  "version": "a1b2c3d",
  "checks": {
    "database": "ok"
  }
}
Field Type Description
status string ok when every check passed, degraded when at least one failed. degraded is returned with HTTP 503.
version string Short git commit SHA of the running deployment (first 7 chars), or local when not deployed on Vercel.
checks object Per-dependency status map. Each value is ok or error.
checks.database string ok if a SELECT 1 against Postgres succeeded, error otherwise.

When a dependency is failing, the same shape is returned with status: "degraded" and HTTP 503:

{
  "status": "degraded",
  "version": "a1b2c3d",
  "checks": {
    "database": "error"
  }
}

Errors

HTTP Code Meaning Fix
503 degraded One or more dependency checks failed (see checks) Inspect the failing check; this signals an outage, not a client error

This endpoint never returns 4xx — it takes no input and requires no auth. Treat 200 as healthy and 503 as degraded; the JSON body is the same shape in both cases.