RTFC API

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

end to end.

Conventions

Base URLhttps://api.faktolumo.eu/v1
AuthX-Auth-Token: rtfc_… or Authorization: Bearer rtfc_…
Errorserror.code is stable; branch on it, not on the message
Lists{items, total, limit, offset}
CreatesSend Idempotency-Key so a retry can't act twice
Every responseCarries X-Request-Id

The unversioned /api/... paths you may see elsewhere are a permanent alias kept for existing integrations. New code should use /v1.