https://api.smry.ai/openapi.json. It is generated
from the same TypeBox schemas that validate requests at runtime, so a parameter
cannot be documented one way and enforced another.
Everything in the API Reference tab — navigation, parameters, schemas,
responses, the interactive playground, and the curl / Python / JavaScript
examples — is generated from that document. No endpoint page is maintained by
hand, which is what stops a copied parameter list from becoming a second,
slowly-wrong source of truth.
Download it
What the document guarantees
These hold on every deploy, and CI fails the build when one breaks:- OpenAPI 3.1, with
https://api.smry.aideclared as the production server. - Only versioned
/v1/*paths appear. - Every operation has a stable
operationId, a summary, a description, a tag that is declared at the document level, and an explicit security requirement. - Every operation declares exactly one OAuth scope —
smry:readorsmry:write— alongside both personal-key schemes. - Every operation documents
401,403,429, and503, plus whatever else it can actually return. An operation does not advertise a status it cannot produce. - Every failure response references
#/components/schemas/Error. There is one error envelope, defined once. - Every response and every parameter carries a real description.
- Every schema in
componentsis referenced by at least one operation. - Article and feed text is described as untrusted source material at the contract boundary.
What it leaves out
/api/* is smry’s internal App API — the web app, the desktop app, and the
browser extension. It is validated by shared source types and caller tests, not
published here, and it changes without notice. Do not build on it.
MCP publishes protocol-native tool schemas rather than a second OpenAPI
document. See the MCP tool reference.
The HTTP API is in beta
/v1 is in beta. Breaking changes can land without a version boundary. A
field can be renamed, a response shape can tighten, an operation can move
between groups. The generated reference and this document always describe what
is served right now — they are not a promise about next month.
If you are building an agent, connect the MCP server instead. Its
tools are shaped around what an agent needs and they absorb changes underneath:
when an operation’s parameters move, the tool keeps working. The HTTP surface
gives you no such layer — your code is coupled to the wire format.
Use HTTP when your application owns the control flow and you can react to a
change. Pin what you can, read the errors, and expect to revisit it.
Additive changes — a new optional field, a new operation, a widened enum — are
routine and land continuously.
Operation summaries are used to build reference page URLs, so an edited
summary moves a page. Deep links into the API Reference are stable only for as
long as the summary is. Link to
operationId in prose when you need
permanence.Next
Errors
The envelope, the status codes, and every error code.
MCP tool reference
The same operations, shaped for agent context budgets.