What The Fact · Tech
Home Dashboard Transparency API ← Consumer site
Developer Hub

Public API v1

Read-only endpoints for researchers, civic-tech projects, and dashboards. No auth required — rate-limited per IP. CORS open.

Quickstart
curl https://what-the-fact.tech/api/v1/articles?limit=5
Endpoints
GET /api/v1/articles
List articles. Params: limit (max 100), offset, since (ISO).
GET /api/v1/articles/<id>
Single article with full bias + tier metadata.
GET /api/v1/articles/<id>/audit
Audit trail (event log) for one article.
GET /api/v1/articles/<id>/fact-checks
V.E.R.I.F.Y. claims + verdicts for one article.
GET /api/v1/clusters
Story clusters (same story across multiple outlets).
GET /api/v1/clusters/<id>
Cluster detail with member article IDs.
GET /api/v1/sources
All 46 sources with bias_lean + ownership metadata.
Example: GET /api/v1/articles?limit=2
{
  "ok": true,
  "count": 2,
  "limit": 2,
  "offset": 0,
  "articles": [
    {
      "id": 252730,
      "title": "Federal cabinet approved a new pipeline expansion ...",
      "url": "https://www.cbc.ca/news/...",
      "published_at": "2026-05-17T17:23:00+00:00",
      "source": { "slug": "cbc_english", "name": "CBC News",
                  "bias_lean": "center" },
      "bias": { "band": "center", "score": -0.12 },
      "geo": { "province_code": "BC", "country_code": "CA",
               "scope": "provincial" },
      "analysis_tier": "quick_v1+full"
    },
    { "...": "..." }
  ]
}
Limits & License
Rate limit: 60 requests / 60-second rolling window per IP. Exceeding returns HTTP 429 with Retry-After header.
Auth: none required for read endpoints.
CORS: open — call from any origin.
Versioning: every response carries X-WTF-API-Version: v1. Breaking changes ship as /api/v2.
Data license: Aggregate bias scores released CC-BY-NC. Article titles, URLs, and bodies remain the property of their publishers — cite per their terms.
Also Available on what-the-fact.com
Consumer mirror with the same shape, plus map + bias-distribution helpers:
  • GET /api/v1/articles · filterable by source, bias, province, country
  • GET /api/v1/sources
  • GET /api/v1/bias-distribution · aggregated counts + per-source averages
  • GET /api/v1/map-data · pre-aggregated map pins for the consumer /map page
Questions? Cite a stable article via its audit trail — every article has a /transparency/<id> page showing every signal we computed.