RTFC API
Fact-check claims in real time. Send a debate, a transcript, or a link to a video; get back verdicts with sources, and what each one cost.
The API is built around three ideas worth knowing before you write any code.
A debate is the unit of work
Everything hangs off a debate: a transcript, the claims detected in it, the research panels for those claims, and the bill. You create one, feed it content (audio, a video URL, or text you transcribed yourself), and read results back.
A debate is also the unit of isolation - if you are building a product with many end users, each of them gets their own debates, and they cannot see each other's. See Multi-tenancy.
A claim can be checked several ways at once
There is no single "fact-check" algorithm. A claim can be researched by a quick two-step search, by decomposition into sub-questions, by an agent that reads documents and follows citations, and more - see Research modes.
Each method produces a panel: a verdict, a confidence, an explanation, and the sources it used. GET /v1/claims/{id}/results returns every panel plus a computed best. If you only want one answer, GET /v1/claims/{id}/best gives you that.
You are billed for what the research actually cost
Every claim carries its real cost - LLM calls, searches, transcription - marked up by your plan. GET /v1/claims/{id}/cost breaks it down. Nothing is hidden in a per-request fee.
One consequence worth designing around: a claim someone already checked costs you nothing. If another user has publicly analysed the same video, or the same claim text has already been researched in a shared pool, you get the existing answer rather than paying to redo it. That is not a bug to work around - it is the point.
Start here
- Quickstart - a working fact-check in about five minutes.
- Build your own fact-checking app - the full multi-tenant flow,
end to end.
- Authentication - tokens, scopes, and which to use when.
- API reference - every endpoint, generated from the live schema.
Conventions
| Base URL | https://api.faktolumo.eu/v1 |
| Auth | X-Auth-Token: rtfc_… or Authorization: Bearer rtfc_… |
| Errors | error.code is stable; branch on it, not on the message |
| Lists | {items, total, limit, offset} |
| Creates | Send Idempotency-Key so a retry can't act twice |
| Every response | Carries X-Request-Id |
The unversioned /api/... paths you may see elsewhere are a permanent alias kept for existing integrations. New code should use /v1.