LIVE · 41 SOURCES
Search stories, MPs, sources
News
Latest news Activity log Weather Blindspot Divergence Story clusters Full archive
Politics
MPs & ridings Municipal Lobbying Appointments Ethics tracker Officers Rates
Money
Economy Cost of Parliament Markets
Media
Sources Owners Journalists CRTC
Data
Coverage map Accountability chain Cross-Watch Claims Developer API Education API
About
Methodology The newsroom Governance & ethics Score an article Subscribe to What The Fact Sign in →

Public API

Read-only access to What The Fact's article, outlet and bias data, plus the cross-product accountability signals behind Cross-Watch. No key is required to start — anonymous callers are simply limited per IP. A free key raises your limits and, more usefully, gives you your own budget instead of one shared with everyone behind your network address.

Authentication

Send your key in either header. Both are accepted; pick whichever your client makes easy.

X-API-Key: wtf_yourprefix_yoursecret # or, equivalently Authorization: Bearer wtf_yourprefix_yoursecret Sign in to get a free key →

Rate limits

These are the numbers the edge actually enforces — this table is generated from the running policy, not written by hand. Limits are aggregate across our workers. When you exceed one you get 429 with a Retry-After header; honour it rather than retrying immediately.

PlanCategoryRequestsPer
anonymous default 60 minute
expensive 5 hour
proxy_read 60 minute
score 5 day
write 10 hour
keyed default 600 minute
expensive 25 hour
proxy_read 600 minute
score 50 day
write 60 hour
paid default 6000 minute
expensive 200 hour
proxy_read 6000 minute
score 500 day
write 600 hour

anonymous — no key. keyed — any free key. paid — a key or session with an active What The Fact subscription. Categories: default and proxy_read are ordinary reads; write covers submissions such as flagging; expensive and score run real language-model work and are budgeted accordingly.

Endpoints

MethodPathReturns
GET/api/v1Index of available endpoints
GET/api/v1/articlesRecent articles with bias scores
GET/api/v1/sourcesTracked outlets and their aggregate lean
GET/api/v1/bias-distributionDistribution of scores across coverage
GET/api/v1/blindspotStories covered by one side only
GET/api/v1/divergenceEnglish vs French coverage divergence
GET/api/v1/outlets/<id>/bias-trendAn outlet's lean over time
GET/api/cross-watch/entitiesEntities in the shared accountability graph
GET/api/cross-watch/searchFree-text search across signal types

Fair use

Every request costs us something and the expensive categories cost real compute. Cache what you can, honour Retry-After, and give your key a label so we can tell you which integration is misbehaving before we have to revoke it. Keys are free — if the limits genuinely do not fit what you are building, get in touch rather than rotating keys around them.