Changes
What changed in the dataset, and what changes soon.
| Operation | Summary |
|---|---|
GET /v1/changes |
List recent and upcoming changes |
GET /v1/changes
List recent and upcoming changes
Recently published records and changes taking effect or ending soon.
Poll this (e.g. daily with since = last poll) to update tax codes and asset
classes before a change applies. published items depend on published_at,
which bundle builds stamp automatically for new or changed records. Decision
tables and accounting-standards topics and differences appear as published when
they are added and updated when their content changes.
data.items is sorted by date. Each item has the kind of record (tax_rate,
tax_threshold, asset_class, pending, decision_table, ...), the type of change
(published, updated, takes_effect, ends, decision_scheduled), the record
itself in current and the version it replaces in previous. data.until is the end of
the look-ahead window. 422 if since is in the future.
| Authentication | an API key, where the server requires one |
| Operation id | changes_v1_changes_get |
Parameters
| In | Name | Type | Required | Description |
|---|---|---|---|---|
| query | since |
string (date) | yes | Include records published on or after this date (ISO 8601). Must not be in the future. A daily poller passes the date of its last poll. |
| query | upcoming_days |
integer | Look-ahead in days from today for changes that take effect, end or are decided soon (0-730). Default 90. (min 0; max 730; default 90) |
|
| query | jurisdiction |
string or null | Only changes in this jurisdiction, e.g. 'DE' or 'CA' (a country includes its subdivisions such as CA-ON). Case-insensitive. Default: all. | |
| query | dataset_version |
string or null | Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404. |
Example request
curl "$DATAVNEXT_URL/v1/changes?since=2026-09-01" \
-H "X-API-Key: $DATAVNEXT_KEY"
Responses
| Status | Meaning | Body |
|---|---|---|
| 200 | OK | Envelope_ChangeFeed_ |
| 401 | Missing or invalid API key. | Error |
| 404 | Nothing found for the identifier, or the pinned dataset_version is not archived. |
Error |
| 422 | The request is invalid: {"detail": "…"} for a rule the service checks, or FastAPI's {"detail": [{"loc", "msg", "type"}]} for a malformed parameter or body. |
HTTPValidationError |
Example response (shape)
{
"data": {
"since": "2026-09-21",
"until": "2026-09-21",
"items": [
{
"change": null,
"date": null,
"kind": null,
"series": null,
"record_id": null,
"jurisdiction": null,
"current": null,
"previous": null,
"sources": null
}
]
},
"meta": {
"dataset_version": "string",
"as_of": "2026-09-21",
"known_at": "2026-09-21",
"sources": [
{
"authority": null,
"url": null,
"reference": null,
"verified_at": null,
"kind": null
}
],
"notes": [
"string"
]
}
}
Schemas
ChangeFeed
| Field | Type | Required | Description |
|---|---|---|---|
since |
string (date) | yes | |
until |
string (date) | yes | |
items |
array of ChangeItem |
yes |
ChangeItem
| Field | Type | Required | Description |
|---|---|---|---|
change |
"decision_scheduled" | "ends" | "published" | "takes_effect" | "updated" |
yes | |
date |
string (date) | yes | Publication, effective, end or decision date, depending on change. |
kind |
"allowance" | "asset_class" | "decision_table" | "net_tax_rate" | "pending" | "standard_difference" | "standard_topic" | "tax_rate" | "tax_threshold" |
yes | |
series |
string | yes | |
record_id |
string | yes | |
jurisdiction |
string or null | ||
current |
object | yes | |
previous |
object or null | The version this one replaces, if any. | |
sources |
array of Source |
yes |
Envelope_ChangeFeed_
| Field | Type | Required | Description |
|---|---|---|---|
data |
ChangeFeed |
yes | |
meta |
Meta |
yes |