Developers

HTTP API

The JSON API behind the dashboards, host by host.

The dashboards talk to one HTTP API, served on three kinds of host: the publisher app (app.<domain>), each site's tenant host (<site>.<domain>) and the operator admin (admin.<domain>). Sessions are cookies set by email sign-in or the member handoff; there are no API tokens in this version. Errors are { "error": { "code", "message", "details?" } }; a 429 carries Retry-After; lists are cursor-paginated; every response carries x-request-id.

The route tables, request and response shapes, limits and status codes are maintained with the code in the repository's docs/api.md, from which the sections below are summarised.

Publisher app

Workspaces and members; sites (connect, reconnect, disconnect, export, health, settings); packages and tier mappings; bylines; the submission queue and the review actions (request revision, approve, reject, delete draft, confirm overwrite, adopt Ghost edits, settle, refund); manual grants; the reconciliation view and "check now"; analytics per submission; billing (checkout, portal).

Tenant host

The snippet (/embed.js) and its config, the member handoff (POST /auth/member), the landing page, email sign-in; the contributor's submissions (start, autosave, preview, submit, resubmit, withdraw, change request), uploads (POST /api/uploads/:kind), embeds (GET /api/embed), analytics.

Webhooks

POST /hooks/ghost/:site/:generation/:event for Ghost, POST /hooks/stripe for billing; both verify signatures on the raw body and record first.

Operator

Behind a second factor: sites and their health, credentials re-wrap, inbox and outbox with replay, the sweeps on demand, drift findings with resolve, status.

On this page