Send your key in the X-API-Key header. A missing or wrong key gets a 403 with this body:
{"detail": "Invalid or missing X-API-Key header"}
These answer without a key: /health, /health/worker, /docs, /redoc, /openapi.json.
Responses are JSON. Each is cached for the time shown on its endpoint, separately for each key.
Getting a key
Keys come with a Desync Starter account. Write to us or book a call and we will set one up.
Use it with an AI assistant
Copy the whole reference as plain text, paste it into Claude, ChatGPT or whatever you use, and ask it to write the call you need.
Endpoints
GET/api/search
Search items by words and by meaning: a keyword ranking (BM25) and a vector ranking fused by Reciprocal Rank Fusion. With no q, it lists items most on topic first. Results stop after 200.
Parameters
q
string, optional; empty lists by relevance
tags
string, repeatable; a topic slug from /api/tags
source_type
string, repeatable; rss, web, youtube, podcast or arxiv; only applies when q is set
from_date, to_date
ISO date or datetime; the published window
language
string, repeatable; ISO code of the original language
content_type
string, repeatable; article, video, podcast_episode, audio or paper
min_relevance
number 0 to 1; only items scored at least this on topic
alpha
number 0 to 1, default 0.5; 0 ranks by words only, 1 by meaning only
limit
integer 1 to 100, default 10
offset
integer, default 0
original
true for the original-language text instead of English; default false
One item in full: its text, sections, images, transcript, entities, topics and the five nearest related items. Lines the source repeats in every item (newsletter and donation pleas, share bars, copyright notices) are left out of the text, and boilerplate_removed says how many.
Parameters
id
integer, in the path
original
true for the original-language text instead of English; default false
Who wrote an item, who is in it and what it says they did: the byline (authors matched to people, with their roles, and the outlet), each person named with up to two organisations and two places, the relations the item states, each with its sentiment (negative, neutral, positive or mixed), and the item's own sentiment. Listed items only.
The archive's counts: items, on topic, passages, entities and merged duplicates, topics, sources, languages, the newest item on topic and the last pipeline run.
The pipeline's state and the last weeks in numbers: freshness, coverage, items each week, sources, languages, kinds, and who and what was named most in 30 days.
The same data as read-only tools, over streamable HTTP. It needs a key, sent in the same X-API-Key header as the API (put yours in place of YOUR_KEY below), and is rate-limited like it.
MCPhttps://api.observatory.desync.ai/mcp
Tools
search_articles
Search by words and meaning; titles and summaries in English. Args: query, tag (a topic slug, optional), limit (up to 25).
get_article
One item's English text and details by id; the body is cut at about 8,000 characters, with a flag when it is. Args: article_id.
list_entities
People, organizations, projects and more, most mentioned first. Args: query (optional), limit (up to 50).
entity_graph
Who a named entity appears with and how they relate, as nodes and edges. Args: entity, depth (up to 2).
list_sources
The active sources, with item counts. No args.
get_stats
The archive's counts: items, entities, passages, topics, sources, languages. No args.
Claude Code
bash
claude mcp add --transport http desync-observatory https://api.observatory.desync.ai/mcp --header "X-API-Key: YOUR_KEY"