List what changed on a watch's source
Changed onThe sections this watch's source added, amended, or removed, newest first: the per-item detail behind the counts in a notification. It covers the source's whole captured history, not just the period since you subscribed; pass since= the watch's createdAt for what your alert has covered.
History runs from when change capture began for that source and is swept at 5 years. An empty list means no captured change, not that the law was never amended; the publisher's own history, where there is one, is on the section's amendmentHistory. The endpoint is read-only and safe to poll alongside a webhook or email watch: it cannot suppress, advance or double-fire a delivery.
Paging: pass sinceId with meta.cursor from your previous page to get only what is new, and keep going while meta.hasMore is true. With sinceId the order defaults to asc so the cursor never skips rows. To read newest first, pass order=desc and page older with beforeId=meta.nextBeforeId.
changeKind is added (a new section), amended (its content was replaced), or removed (it disappeared from a full refresh of the source). citation and title are null for corpora that do not carry them. detectedAt is when our refresh saw the change; sourceChangedOn, the publisher's own date, is carried on cfr, federal_rules and on no other board, and its absence never licenses reading detectedAt as the amendment date. Check publishesSourceChangedOn on GET /boards.
Free.
Request
- Base URLhttps://api.vaquill.ai
- Auth
- HTTP bearer
- or API key in header X-API-Key
- TypeScriptA function with typed inputs. Its response is checked against the schema.
Path parameters
Id of the watch, as returned by POST /watches (id).
Query parameters
Max changes to return.
Return only changes with an id greater than this. The cursor to build on: ids are a monotonic sequence, so this is exact, immune to clock skew, and cannot drop two changes that share a timestamp. Carry meta.cursor forward from your last page.
Return only changes with an id less than this: the cursor for walking BACK through history, where sinceId walks forward into new changes. A newest-first reader needs this one, since paging down a descending list means asking for what sits below the lowest id already held. Pass the smallest id on your last page.
Return only changes detected strictly after this ISO-8601 timestamp. Coarser than sinceId (a single refresh writes many rows at the same instant, and this drops all of them), but useful when all you kept was the detectedAt off a changes[] item in a webhook body. Prefer that item's id as sinceId where you still have it. Both may be combined.
Filter to these kinds. Repeat the parameter to pass several (?changeKind=added&changeKind=amended). Omit for all three.
desc is newest first, for showing a recent-activity list, and is the default when sinceId is not set. When sinceId IS set the default is asc: catching up from a cursor walks forward, and an oldest-first page that hits limit leaves the unread gap at its far end, so meta.cursor can be carried forward without skipping rows. Pass desc together with sinceId explicitly to read the newest rows first; see meta.cursor and meta.nextBeforeId.
Response
What changed, newest first.
Example response
{
"data": {
"changes": [
{
"sourceChangedOn": "2026-08-17"
}
]
}
}Changes
- breaking
for the
queryrequest parameterorder, default valuedescwas removed - breaking
removed the enum value
ascfrom thequeryrequest parameterorder - breaking
removed the enum value
descfrom thequeryrequest parameterorder - info
queryrequest parameterorderlist-of-types was widened by adding typesnull - info
for the
queryrequest parameterorder, the type was generalized fromstringto no type - info
added the non-success response with the status
- info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
/to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status
- breaking