Skip to content

Conventions ​

Base: client plane default :8080, paths under /api/v1/.... project_ref: UUID / live slug / unexpired alias; expired alias → 404 PROJECT_NOT_FOUND. POST is never 301.

JSON is snake_case. Timestamps are RFC 3339 UTC. Error envelope:

json
{ "error": { "code": "UNAUTHORIZED", "message": "…", "details": null } }

Branch on code. A missing store listing is plaintext 404 without that envelope.

Probe: GET /api/v1/health is always 200; ready is DB Ping + storage Head .ready (not Redis). GET /api/v1/ready is 404.

This plane’s contract: GET /api/v1/openapi.json.

Auth ​

MechanismUseFailure
X-Project-Token or Authorization: BearerProject token401
X-Channel-TokenHidden channelsWrong value skips the channel on check; not 403
Store listing tokenFeedsStoreAuth; missing listing is plaintext 404
Admin Cookie/BearerAdmin plane401 / 403

Full schemas: API reference.