Costs, plans and quotas
You are billed for the work actually done - LLM calls, searches, transcription - marked up per your plan. There is no per-request fee, so a cheap claim is cheap.
What a claim cost
curl -s $RTFC/claims/$CLAIM/cost -H "X-Auth-Token: $TOKEN"{"detector_cost_usd": 0.0002, "worker_cost_usd": 0.0018,
"search_cost_usd": 0.0004, "elector_cost_usd": 0.0,
"total_cost_usd": 0.0024}| Component | What it paid for |
|---|---|
detector_cost_usd | Finding the claim in the transcript |
worker_cost_usd | Researching it - the bulk, and it scales with research modes |
search_cost_usd | Search-provider calls |
elector_cost_usd | The LLM judge, when elector_enabled |
total_cost_usd also appears on /claims/{id}/results and /best, and on each SSE result event as claim_total_cost_usd - so you can meter without extra requests.
Transcription is billed separately, by exact audio duration:
curl -s $RTFC/debates/$DEBATE/transcription-cost -H "X-Auth-Token: $TOKEN"Shared claims cost nothing
If a claim has already been researched - because another user shared the same public video, or the same claim text was checked in a shared pool - you get the existing answer and are charged $0.
This is deliberate and it is a feature, not a billing bug. Design for it: do not alert on a zero-cost claim, and do not assume cost is proportional to claims shown.
Your usage
curl -s $RTFC/usage/me/summary -H "X-Auth-Token: $TOKEN"
curl -s "$RTFC/usage/me?range=30d&granularity=day" -H "X-Auth-Token: $TOKEN"/usage/me returns totals, a time series, a breakdown by kind, and a breakdown by debate. range accepts 7d, 30d, mtd, all, or explicit from/to.
Plans and quotas
curl -s $RTFC/plans -H "X-Auth-Token: $TOKEN"
curl -s $RTFC/subscriptions/me -H "X-Auth-Token: $TOKEN"A plan sets included units (claims, debates, transcript minutes, spend), whether overage is allowed, a hard spend cap, max concurrent debates, and which features you can use.
Quotas are enforced wherever the work is requested - the same limits apply whether you call the API or use the web interface. There is no way for the two to disagree.
Running out
Exceeding a quota returns 402:
{"error": {"code": "quota_exceeded",
"details": {"kind": "claims", "plan": "free",
"usage": 100, "included": 100,
"reset_at": "2026-09-01T00:00:00Z"}}}If you cross the limit mid-debate, research pauses rather than failing: already detected claims are held, not dropped, and are re-queued automatically when the period rolls over or you upgrade. Ingest keeps running - you do not lose the transcript.
You will see quota.threshold_reached at 80% if you subscribe to webhooks, which is the point at which it is still comfortable to act.
Features
Some capabilities are plan-gated - certain research modes, the elector, media platforms:
{"error": {"code": "plan_feature_unavailable",
"details": {"feature": "research_modes", "value": "agentic"}}}GET /v1/subscriptions/me lists what your plan allows, so you can hide what is unavailable instead of surfacing a 403.
Paying for a plan
See Payments for Checkout, the Customer Portal, and how overage is billed.