Skip to main content

Base URL

Replace this with your deployed domain in production.

Authentication

Most of the API is wide open — no tokens, no sign-in. The only exception is the admin routes.

Admin API key

Pass your key in the x-api-key header:
If the key is wrong or missing, you’ll get:
The key is set via the ADMIN_API_KEY environment variable. Don’t hardcode it anywhere, don’t log it, and definitely don’t commit it.

Rate limiting

There are three layers of rate limiting in place: Hit any of these and you’ll get a 429:

Errors

The API returns standard HTTP status codes. Here’s what each one means in context: Error responses look like this:
Search and validation errors use error instead of message:
Yeah, the inconsistency is a known thing. It’ll get cleaned up.

Response shapes

Paginated list (search results):
Single resource (create/delete):