Open Data

Tennessee Firefly is also infrastructure.

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.

Quick start

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://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://tnfirefly.com/api/v1/articles

Endpoints

/api/v1/wire

The Wire, short-form live updates

  • ?kind=vote|bill|charter|court|document|reaction|breaking|schedule
  • ?district=<slug>
  • ?page=1
  • ?per_page=20

Example: /api/v1/wire?kind=charter&per_page=50

/api/v1/documents

Document Library, every PDF we cite

  • ?kind=state-report|board-minutes|board-agenda|budget|lawsuit|foia|...
  • ?page=1
  • ?per_page=20

Example: /api/v1/documents?kind=board-minutes

Response format

{
  "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://tnfirefly.com). Re-use is welcome with attribution.",
    "docs": "https://tnfirefly.com/developers"
  }
}

Attribution

Free to use with attribution. When you embed our data or build on it:

  • Credit “Tennessee Firefly” with a link to https://tnfirefly.com.
  • Don’t republish in a way that misrepresents our reporting (don’t edit a quote, don’t omit a correction).
  • Documents in the library may have third-party copyright; we publish them under fair use for journalism. Your re-use should respect the original source.
  • Got a project using our data? Email contact@tnfirefly.com , we’ll feature interesting ones.

Feeds + Newsletter

Embed library

Drop 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/wire

The Wire, live updates from across the TN education world.

  • ?limit=N (3–20, default 5)
<iframe src="https://tnfirefly.com/embed/wire?limit=5"
        width="100%" height="540" frameborder="0"
        title="Tennessee Firefly · The Wire"></iframe>
/embed/scorecards

TN General Assembly education-policy scorecards, top legislators by score.

  • ?limit=N (3–50, default 10)
  • ?chamber=senate|house
  • ?sort=score|name
<iframe src="https://tnfirefly.com/embed/scorecards?limit=15&chamber=senate"
        width="100%" height="720" frameborder="0"
        title="Tennessee Firefly · Legislator Scorecards"></iframe>
/embed/charter-watch

Statewide live feed of every active charter-school application.

  • ?limit=N (3–50, default 10)
<iframe src="https://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.

Coming soon

  • Per-legislator endpoints (auto-generated voting record + contributions)
  • Per-school endpoints (mirrors /schools/grades/school/[id] data)
  • Webhook subscriptions for new wire posts + charter status changes
  • API key dashboard at /developers/keys