Add your API reference
Generate reference pages, schemas and examples from OpenAPI.
0:00 / 0:13
Point at the contract
One path, or an array — each entry becomes its own service.
specistry.config.ts openapi: "./openapi.yaml",Place it in the sidebar
Without
navigation, pages come first and the API reference follows.specistry.config.ts navigation: [ "quickstart", { api: true, label: "API reference" }, ],Link to it from guides
API links are checked against the contract at build time.
docs/quickstart.md Create one with [Create inbox](/api/inboxes/create-inbox). See the [201 response](/api/inboxes/create-inbox#response-201).
How URLs are formed
- The reference lives under
/api - Groups are tags — the group slug is the slugified tag name, in declared tag order
- Operation slugs are the
operationIdin kebab case, ormethod-pathwithout one - Collisions gain
-2,-3in canonical order - Untagged operations go to an
operationsgroup, listed last
TipStable URLs
Set an operationId on every operation. Renaming a path then never changes the documentation URL.
Multiple contracts
openapi: [
"./contracts/identity.yaml",
"./contracts/payments.yaml",
],Contracts are never merged because their paths look alike. Local $refs resolve inside the project; remote references are disabled.
Edge cases
Remote $ref
Remote references disabled✕ FAILSopenapi.yaml
$ref: "https://schemas.acme.dev/inbox.yaml"✓ FIXopenapi.yaml
$ref: "./schemas/inbox.yaml"Builds must be reproducible and offline.
Link to an operation that does not exist
CONTENT_LINK_TARGET_MISSING✕ FAILSdocs/quickstart.md
[Create](/api/inboxes/create)✓ FIXdocs/quickstart.md
[Create](/api/inboxes/create-inbox)The slug comes from operationId `createInbox` → `create-inbox`.