Quickstart
Get a key and pull your first matched news in five minutes.
How it works
The stateless-vector model, the two-stage match, and why scores are
reproducible.
API reference
POST /v1/match and GET /v1/sources, with a live request playground.The model in one paragraph
Clair owns only news: text and embeddings. Entities are a client-side concept: an open, pinned embedding model (bge-m3) turns your entity’s
description into a single 1024-dimensional vector, and only that vector is sent.
Clair matches it against the corpus and returns the articles it links to. Because
the model is open and deterministic, the same entity always produces the same
vector and the same scores; nothing in the loop can drift or hallucinate. The
moat is the corpus (un-backfillable historical text), not the vectors.
Your entity text never leaves your machine. Only the 1024-dim vector is sent,
and it is reproducible from public model weights, so there is nothing secret
to protect on the client.
Three ways to ask
One endpoint, and the query decides how it reads.Ranked
Send
text or a vector to get the top matches by score, with the passage that
explains each one. A snapshot: best first, no paging.Complete
Add
order=time to get everything at or above your score floor in the
window, newest first, paged to the end. The monitoring loop.Bulk
Send no query at all for the corpus itself, chronologically. Match locally with
the open
bge-m3 model. For heavy users and archives.