A public read API over the Desync Observatory corpus: hybrid search, article
detail, entities, tags, sources, corpus stats, and knowledge-graph
traversal. Responses are JSON; every list endpoint is paginated and
CDN-cached.
The endpoints below are generated from the live OpenAPI schema where practical — the interactive explorers above are the
always-current, machine-readable source of truth.
Authentication
Requests carry an X-API-Key header, validated
against the server's configured key set (AGG_API_KEYS,
comma-separated). When the key set is empty the API runs in open
mode and the header is optional. A bad or missing key returns 403 with {"detail": "Invalid or missing X-API-Key header"}.
Always open (no key required): /health, /docs, /redoc, /openapi.json.
Base URL is deployment-specific — substitute your instance for $API_BASE and your key for $KEY in the examples below.
Licensing & bulk access
The endpoints below are the public read API. The full corpus — whole or
scoped to what you need — is available under licence.
Copy the whole API reference below as plain text and paste it into
ChatGPT, Claude, or whatever you use — then just ask it to write the
request you need.
01
Endpoints
GET/api/searchCache-Controlpublic, max-age=300
Hybrid BM25 + cosine search over article chunks, fused with Reciprocal Rank Fusion. Returns ranked article hits.
Parameters
qstring — free-text query (optional; empty browses by relevance)
tagsrepeatable string — filter by controlled-vocab tag slug
Liveness probe. No auth required. Reports app + dependency state without pinging the DB on every call.
Response
{ status: "ok", db_ok: bool, embedder_ok: bool }
Example
curl "$API_BASE/health"
02
Ingestion-v2 fields
Ingestion-v2 enrichment travels inside the article response's metadata object (a JSON map on GET /api/articles/{id}), populated by ingestion-v2
fetchers where the source supports it. These are not top-level
response columns — read them from metadata.
content_clean_htmlstring — boilerplate-stripped article HTML (Tier-1 extraction)
body_formatstring — the body's source format (e.g. html | markdown | text)
authorsstring[] — byline authors parsed from the source
imagesstring[] — in-body image URLs extracted during ingestion
lead_image_urlstring — the article's primary/lead image URL
03
MCP server
Model Context Protocol
Plug the corpus straight into an agent or LLM client. The same
data as the REST API is exposed as read-only MCP tools over the
streamable-HTTP transport at https://api.observatory.desync.ai/mcp — public,
no API key (rate-limited, like the REST surface).