Skip to content

Public API

The public API is the boundary between the CMS and websites. Base path: /api/v1/public. It returns only published content and is edge cached and rate limited (300 requests per 60 seconds per IP).

Method and path Returns
GET /{contentType} Published entries of a content type
GET /{contentType}/{slug} One published entry
GET /media/{id} Media metadata (alt text, type, dimensions)
GET /media/{id}/file The file
GET /global-variables Global variables map
GET /settings/{module} Structured settings: general, contact, social, navigation, footer, seo
GET /pages, GET /pages/by-route Published pages
GET /route-patterns Content type route patterns
POST /forms/{slug}/submissions Submit a form
Terminal window
curl https://your-cms-api.example.com/api/v1/public/blog-post/hello-world

A draft or unknown slug returns 404 with the same response, so drafts are not discoverable.

Signed preview routes exist under /api/v1/public/preview/; see Live Preview. Auth routes are in Astro authentication.

The API serves a generated OpenAPI document at /api/v1/openapi.json and a reference UI at /api/v1/docs (Scalar). These are enabled by default. Set API_DOCS_ENABLED = "false" in [vars] to make both return 404.

The admin API under /api/v1/admin requires a CMS session and is not part of the public integration surface.