/api/v1/articlesPaginated article feed
?beat=<slug>?category=<slug>?region=<slug>?author=<slug>?page=1?per_page=20
Example: /api/v1/articles?beat=tisa-school-funding&per_page=10
Every article, wire post, document, school board, charter application, and beat is also available as JSON. Build embeds. Build civic-tech projects. Cite us in research. Republish with attribution. We’re journalism — we’d rather more people use the data than fewer.
All endpoints are GET-only and return JSON with a consistent envelope: { data, meta, error? }. CORS is open. Anonymous requests get 60/min/IP; pass an API key for higher limits.
curl https://www.tnfirefly.com/api/v1/articles?per_page=5 # Or with an API key (when you have one): curl -H "X-API-Key: your-key" https://www.tnfirefly.com/api/v1/articles
/api/v1/articlesPaginated article feed
?beat=<slug>?category=<slug>?region=<slug>?author=<slug>?page=1?per_page=20Example: /api/v1/articles?beat=tisa-school-funding&per_page=10
/api/v1/wireThe Wire — short-form live updates
?kind=vote|bill|charter|court|document|reaction|breaking|schedule?district=<slug>?page=1?per_page=20/api/v1/documentsDocument Library — every PDF we cite
?kind=state-report|board-minutes|board-agenda|budget|lawsuit|foia|...?page=1?per_page=20Example: /api/v1/documents?kind=board-minutes
/api/v1/school-boardsAll 142 TN public school districts
?county=<slug>?priority=trueExample: /api/v1/school-boards?priority=true
/api/v1/charter-applicationsCharter Watch — statewide application feed
?district=<slug>?status=<status>?active=true?page=1?per_page=20/api/v1/beatsAll curated coverage beats
Example: /api/v1/beats
{
"data": [ /* the actual content */ ],
"meta": {
"version": "v1",
"generatedAt": "2026-04-28T22:00:00.000Z",
"count": 10,
"total": 247,
"page": 1,
"perPage": 10,
"attribution": "Source: Tennessee Firefly (https://www.tnfirefly.com). Re-use is welcome with attribution.",
"docs": "https://www.tnfirefly.com/developers"
}
}Free to use with attribution. When you embed our data or build on it:
/feed.xml — every published article/wire-rss.xml — short-form fast-track postsDrop our reporting into your site with a single <iframe>. Each embed renders independently, links back to the canonical page on Tennessee Firefly, and updates automatically as new data publishes.
/embed/wireThe Wire — live updates from across the TN education world.
?limit=N (3–20, default 5)<iframe src="https://www.tnfirefly.com/embed/wire?limit=5"
width="100%" height="540" frameborder="0"
title="Tennessee Firefly · The Wire"></iframe>/embed/scorecardsTN General Assembly education-policy scorecards — top legislators by score.
?limit=N (3–50, default 10)?chamber=senate|house?sort=score|name<iframe src="https://www.tnfirefly.com/embed/scorecards?limit=15&chamber=senate"
width="100%" height="720" frameborder="0"
title="Tennessee Firefly · Legislator Scorecards"></iframe>/embed/charter-watchStatewide live feed of every active charter-school application.
?limit=N (3–50, default 10)<iframe src="https://www.tnfirefly.com/embed/charter-watch?limit=10"
width="100%" height="640" frameborder="0"
title="Tennessee Firefly · Charter Watch"></iframe>Embeds are iframable from any origin (CSP frame-ancestors *), cached for 60s with 10-minute SWR, and link-out via target="_top". Attribution required: “Source: Tennessee Firefly” with a link to tnfirefly.com.
/developers/keys