Skip to content
unzoi docs

OpenAPI

https://api.unzoi.com/openapi.json — 7 paths, 8 schemas, OpenAPI 3.1, no vendor extensions, and no API key required to read it.

It is public deliberately. An agent deciding whether this API is worth signing up for has to be able to read what it does before it has a key, and requiring one to find that out means the answer is always no.

It cannot drift

The document is maintained alongside the router in the engine's own source, and a test in the API crate greps the router's routes and asserts the two lists agree in both directions: a route that is not in the spec fails the build, and a spec path that is not routed fails it too. A second test asserts every MCP tool names a path the spec documents.

Every reference page on this site is generated from that same document, which is why the parameter tables here can be trusted rather than merely proofread.

Generating a client

# TypeScript types only — no runtime, no client to keep up to date.
npx openapi-typescript https://api.unzoi.com/openapi.json -o src/unzoi.d.ts

# A full typed client.
npx @hey-api/openapi-ts -i https://api.unzoi.com/openapi.json -o src/unzoi

# Python.
pip install openapi-python-client
openapi-python-client generate --url https://api.unzoi.com/openapi.json

# Go.
go run github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen@latest \
  -generate types,client -package unzoi https://api.unzoi.com/openapi.json > unzoi.go

What it does not cover

  • Operational endpoints. /healthz, /readyz, /metrics exist for probes and operators, not for callers, and are deliberately absent.
  • The documentation endpoints themselves. Listing /openapi.json inside /openapi.json is noise; /llms.txt points at all of them.
  • MCP tool schemas. The spec describes /mcp as a transport; /mcp/tools.json is the tool contract, in MCP's own format.
  • The control plane. Key and tenant management is a separate, non-public API — the console is the interface to it.

Validating it

curl -s https://api.unzoi.com/openapi.json | npx @redocly/cli lint -

Worth running once against your own pinned copy if you generate a client in CI — it will tell you about a schema change before your build does.