Skip to content

API Overview

The HTTP layer — routing, requests, responses, middleware — is Erlenmeyer, a small standalone PHP framework.

Everything lives under /api/v1. Platform routes (managing your own account, projects, tables, keys, RLS policies, storage buckets/objects/policies, and end users) are authenticated with Authorization: Bearer <platform token> from /auth/login. REST and Storage passthrough routes are authenticated with a project API key instead, plus an optional end-user token — see REST Passthrough and Storage.

Every list endpoint below (tables, keys, RLS policies, storage buckets/objects/policies, end users) is paginated with ?limit= (default 25, capped at 100) and ?offset= (default 0), with the result's total/limit/offset echoed back as X-Total-Count, X-Page-Limit, and X-Page-Offset response headers — the same mechanics as REST/Storage passthrough's own GET list endpoint, except passthrough defaults limit to 50 instead of 25 when it's omitted.

For request/response formatting, HTTP status codes, and how each auth token is structured and expires, see Authentication & Tokens and Errors & Responses.

Health check

Method Route Auth Description
GET /api/health Returns { "status": "ok" } — useful for uptime checks and load balancer probes.

Note this route is outside /api/v1.