Skip to content

Data freshness

The GET /v1/freshness endpoint returns the most recent refresh-runner snapshot for every state we serve. It’s a public endpoint (no API key required) — the data is operational transparency, not anything sensitive.

GET https://api.taxql.com/v1/freshness

No authentication. Same posture as /healthz.

{
"generated_at": "2026-06-14T16:12:01",
"states": [
{
"code": "tx",
"name": "Texas",
"klass": "auto",
"status": "ok",
"last_refreshed_at": "2026-06-14T03:00:12+00:00",
"effective_through": "2026-04-01",
"last_fetch": "2026-06-10",
"source_period": "2026Q2",
"rows": 56440
},
{
"code": "ia",
"name": "Iowa",
"klass": "auto",
"status": "ok",
"last_refreshed_at": "2026-06-14T03:00:12+00:00",
"effective_through": "2024-01-01",
"last_fetch": "2024-01-01",
"source_period": "2024Q1",
"rows": 1214
}
]
}
FieldWhat it means
code2-letter state code (lowercase).
nameFull state name (also DC).
klassauto (re-fetched on the weekly refresh, Sunday 03:00 UTC), reload (manual file drop), static (statutory base; never re-fetched).
statusRunner’s outcome at the last refresh: ok / changed / stale / failed / static / maintenance / anchor_regression / manual / unknown.
last_refreshed_atISO timestamp of when the pipeline last successfully refreshed this state (the scheduled run). Answers “did we run?” — not how old the data is.
effective_throughISO date of the newest effective rate the data reflects. Answers “how old is the data?” — not whether we ran. Read it against last_refreshed_at: a recent last_refreshed_at with an old effective_through means we refreshed on schedule and the source simply hasn’t published anything newer (e.g. a state whose local rates haven’t moved in years).
last_fetchISO date of the freshest source file on disk for this state (legacy; prefer last_refreshed_at for run time and effective_through for data age).
source_periodThe effective_through signal as a YYYYQN quarter label. Populated for every state (including CA/FL/TX/WA, which read null before 2026-08-14).
rowsRow count after the refresh. Quick sanity for “did anything land”.
  • ok / changed: refresh succeeded; changed means rates moved since the previous snapshot.
  • stale: our last successful source fetch for this state is older than its refresh-class threshold (5 days for auto, 40 for reload), or a shared upstream feed it depends on has drifted. It is a refresh-pipeline age signal — “we haven’t reloaded recently” — not a comparison against the publisher’s newest edition (see the note below).
  • failed: the load step errored. We’re serving the previous snapshot’s data, but the next refresh will need attention.
  • manual: a manually-loaded state (e.g. AZ, NM) whose currency is operator-attested rather than runner-fetched.
  • unknown: the state hasn’t been through the refresh runner yet, so there’s no recorded outcome to report.
  • anchor_regression: a pinned validation anchor for this state diverged from its expected value after the load. The structural fix layer (P0-1b corrections-as-overrides) typically resolves these before they reach this surface.
  • static: the state’s rate is a statutory baseline (Delaware, Montana, New Hampshire, Oregon, plus DC and a few partial-tax states). There’s no source file to age, so it’s never stale.
  • maintenance: a known upstream outage. We’re serving the last good data and the operator is aware.
  • Status pages: render the per-state refresh status on your own dashboard so internal teams can see at a glance whether the refresh pipeline ran and how recent the loaded data is.
  • Monitoring: poll periodically (suggested cadence: hourly) and alert on failed or anchor_regression for states you care about.
  • Decisioning: if your business is highly sensitive to a particular state’s rate, check source_period before relying on the rate for a quarterly close.