Skip to the documentation

Platform

Status, health, and this API as OpenAPI and as markdown.

Which build answers

GET/api/v1/status

The name, version and commit of the build that answered, and which deployment it is (production, lab, preview or development). Open to anyone.

Open to anyone. No key needed.

Required and optional fields, allowed values and errors, as the page shows them.

Examples

curl "https://liviamatch.com/api/v1/status"

Responses

200

The build.

Production
{
  "data": {
    "name": "livia-match",
    "version": "0.2.0",
    "commit": "67cd93e4c1f0a8b2d9e5731a60b4c8d2f1e9a735",
    "deployment": "production"
  }
}
Fields (5)
FieldTypeDescription
dataobject
data.namestring
data.versionstring
data.commitstring | null
data.deploymentstring

Errors

Any call of this kind can also answer500 internal

Health

GET/api/v1/health

Whether this deployment is healthy: ok is true when the database schema matches the build. A deployment is live only when commit is the one you shipped and ok is true. This is the one endpoint that answers a bare object, not the { data } envelope, because monitors expect ok at the top level. Never cached.

Open to anyone. No key needed.

Required and optional fields, allowed values and errors, as the page shows them.

Examples

curl "https://liviamatch.com/api/v1/health"

Responses

200

Healthy.

Healthy
{
  "ok": true,
  "version": "0.2.0",
  "commit": "67cd93e4c1f0a8b2d9e5731a60b4c8d2f1e9a735",
  "migrations": {
    "applied": 93,
    "expected": 93
  },
  "problem": null
}
Fields (7)
FieldTypeDescription
okbooleanTrue when this build's database schema is current.
versionstring
commitstring | nullThe full commit SHA the deployment was built from.
migrationsobject
migrations.appliedinteger | null
migrations.expectedinteger
problemstring | nullWhy ok is false, in words; null when it is true.
503

Not healthy: the database is unreachable, unconfigured, or behind this build.

Behind
{
  "ok": false,
  "version": "0.2.0",
  "commit": "67cd93e4c1f0a8b2d9e5731a60b4c8d2f1e9a735",
  "migrations": {
    "applied": 92,
    "expected": 93
  },
  "problem": "schema is behind this build: applied 92, expected 93"
}
Fields (7)
FieldTypeDescription
okbooleanTrue when this build's database schema is current.
versionstring
commitstring | nullThe full commit SHA the deployment was built from.
migrationsobject
migrations.appliedinteger | null
migrations.expectedinteger
problemstring | nullWhy ok is false, in words; null when it is true.

Errors

Any call of this kind can also answer500 internal

The OpenAPI document

GET/api/v1/openapi.json

This API as an OpenAPI 3.1 document, generated from the same reference these docs are, so it cannot disagree with them. Feed it to a client generator, Postman or an API gateway. Open to anyone and cacheable for an hour.

Open to anyone. No key needed.

Required and optional fields, allowed values and errors, as the page shows them.

Examples

curl "https://liviamatch.com/api/v1/openapi.json"

Responses

200

The OpenAPI 3.1 document.

HeadersX-Request-Id

Fields (5)
FieldTypeDescription
openapistring
infoobject
info.titlestring
info.versionstring
pathsobject

Errors

Any call of this kind can also answer500 internal

The docs as markdown for AI

GET/api/v1/docs.md

The whole API as markdown for an AI model: every endpoint, field, allowed value and error code these pages show, written from the same reference, with notes on using it safely. Each endpoint's Copy for AI button copies its own part. Open to anyone and cacheable for an hour.

Open to anyone. No key needed.

Required and optional fields, allowed values and errors, as the page shows them.

Parameters

NameInTypeRequiredDescription
endpointQuerystringOptionalOne endpoint's id, the anchor of its section in these docs, to answer only its part. Absent, the whole API.

Examples

curl "https://liviamatch.com/api/v1/docs.md?endpoint=start-search"

Responses

200

The markdown.

HeadersX-Request-Id

The start of one endpoint
# Start a search

`POST /api/v1/search`

Saves a search from a full request and queues its first run.

Errors

StatusCodeWhen
404not-foundThe docs list no endpoint with that id.

Any call of this kind can also answer500 internal