Spire's API is what the studio's /api/llm/*, /api/docs/* and /api/sites/* routes forward to.
Every endpoint except /health and the hosted reader surface needs a service bearer or an
X-API-Key, and the authoring entitlement (Run Spire).
{t} is the tenant slug.
Authoring core
| Endpoint | What it does |
|---|
GET /health | Liveness; no authentication |
GET /v1/authoring/formats | The launch formats: openapi (3.x and Swagger 2), asyncapi (2.x and 3.x), graphql (introspection), grpc (protobuf descriptor), jsonschema (draft 7 and 2020-12), arazzo |
POST /v1/authoring/{t}/targets/resolve | Resolve a native document into canonical documentation targets — artifact, service, operation, message, channel, type, field, parameter, response, workflow_step |
POST /v1/authoring/{t}/provenance | Resolve, persist and reconcile a version: provenance envelopes, dependency edges and documentation anchors. Re-importing a version remaps anchors across moves and renames, orphans the rest, and starts stale detection |
GET /v1/authoring/{t}/artifacts/{version_id}/provenance | List a version's persisted envelopes |
POST /v1/authoring/{t}/pointers/resolve | Resolve a source pointer to its native slice. Cross-tenant access is 403, cross-version 409 |
LLM gateway
| Endpoint | What it does |
|---|
POST /v1/llm/{t}/generate | Generate text; JSON, or SSE when streaming |
GET, PUT, DELETE /v1/llm/{t}/providers[/{provider}] | Per-tenant provider API keys, stored encrypted; reads return a …last4 fingerprint only. Providers: anthropic, openai (supported); azure_openai, ollama (declared) |
GET, PUT /v1/llm/{t}/settings | The active provider, model and temperature — Scribe settings |
POST /v1/llm/{t}/proposals, /proposals/batch, /proposals/{job_id}/cancel | Grounded proposals with citations, validation, redaction and an audit entry |
GET, PUT /v1/llm/{t}/budget | The tenant's budget |
GET /v1/llm/{t}/usage | Budget status and usage |
GET /v1/llm/{t}/audit | The audit log |
Docs (Scribe)
| Endpoint | What it does |
|---|
GET, PUT /v1/docs/{t}/{version_id}/content | A version's documentation content; the PUT is an atomic bulk upsert |
GET /v1/docs/{t}/coverage, GET /v1/docs/{t}/{version_id}/coverage | Format-aware coverage, across the tenant or for one version — the coverage dashboard |
GET /v1/docs/{t}/{version_id}/stale-alerts, PUT …/stale-alerts/{alert_id} | Stale alerts raised by detection, and their resolution |
GET, PUT /v1/docs/{t}/{project_id}/style-guide | The style guide: tone preset, terminology, custom guidance |
POST /v1/docs/{t}/{version_id}/generate | One AI suggestion for a target |
POST /v1/docs/{t}/{version_id}/bulk-generate (202), GET /v1/docs/{t}/bulk-jobs[/{job_id}], POST …/bulk-jobs/{job_id}/cancel | Bulk generation jobs |
Sites and builds (Slate)
| Endpoint | What it does |
|---|
POST, GET /v1/sites/{t}; GET, PUT, DELETE /v1/sites/{t}/{site_id} | Slate sites; delete is soft |
POST /v1/sites/{t}/{site_id}/build | Start a build |
GET, PUT /v1/sites/{t}/{site_id}/access | The reader access policy. A shared password is stored as a bcrypt hash and never returned |
GET /v1/builds/{t}, GET /v1/builds/{t}/{build_id} | Builds — the build history |
POST /v1/builds/{t}/{build_id}/run | Run a build |
GET …/log, GET …/artifact, GET …/artifact/download | The build log, its artifact, and the ZIP |
Hosted reader surface
The one router without the entitlement gate: it serves a built site to its readers.
| Endpoint | What it does |
|---|
GET /hosted/{tenant_id}/{site_id}[/{path}] | A page of the built site |
POST /hosted/{tenant_id}/{site_id}/_slate/login | The shared-password form |
Access modes are none (public), password (a shared password; a per-site cookie) and sso (a
suite bearer or slate_session cookie, checked for tenant and email domain; oidc or saml).
Sites can be marked index or noindex for crawlers. This surface has no CDN, custom domain, TLS
or rate limit of its own; the hosted-plan pages (Releases,
Cache, Security, Edge) describe the managed
delivery that sits in front of it.
Releases, promotion and rollback are not Spire endpoints: the Release Center's /api/slate/*
routes forward to apiome-rest's /v1/slate/* control plane, documented in the
Apiome REST reference.