Get this section's change history
Changed onEvery change our refreshes have observed to one section: when it was added, each time its text was replaced, and whether it has since been removed.
Cost: 1 credit. Not-found and failed lookups are not charged. An empty history for a section that exists IS the answer and is charged.
A section lookup tells you what the law says today. This tells you whether that is the same thing it said when you last reviewed it. Unlike a board watch, which can only show changes that postdate the subscription, this reads the history already captured.
What this is, and is not. These are OBSERVED changes: a refresh compared the source against the copy we held and found it different. detectedAt is when we saw it, an upper bound on when it took effect, never the effective date itself. For the publisher's own effective and amendment dates, read amendmentHistory on GET /us/statutes/section/{act_id}. The two are complements: the publisher tells you what it says changed, this tells you what actually moved and when we could have told you.
Coverage is bounded by capture, not by the age of the law. Change capture began long after the corpus itself did, it is per-source, and events are swept at 5 years. An empty changes list therefore means no captured change, not never amended. The coverage field on every response says so; surface it rather than rendering an empty list as "unchanged".
This is not legislative history. It lists only changes Vaquill's own refreshes recorded. For the acts that amended a section over the years read GET /us/statutes/section/{act_id}/enactments (state session laws, where supported) and amendmentHistory on the section record. When the log is empty, note says so and points there.
A removed section still answers. When the newest change is a removed, the section is gone from the corpus and section comes back null. That is a successful, charged response, not a 404 -- learning that a provision was repealed is the point.
Paging. hasMore is true only when at least one more change sits behind this page (the route reads one row past limit to know). total is the size of this page, not a corpus-wide count. Walk backwards through history with beforeId (the smallest id you hold) and forward into new changes with sinceId (cursor from your last page). sinceId always pages oldest-first (it implies order=asc, whatever order says), so a cursor walk never skips the middle of a gap; cursor is the highest id on the page. captureBeganAt is when capture began for the section's whole source, and note says when the publisher's amendmentYears pre-date it.
Alerting on future changes is a different surface: subscribe to the corpusType on this response via POST /boards/watches, optionally scoped to this exact actId, and take before/after diff text from the watch's own diff endpoint.
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
Section identifier, e.g. USC_T42_C21_S1983 (42 U.S.C. § 1983). Take it from a /us/statutes/search, /resolve or /divisions result; do not assemble one. A citation such as 42 USC 1983 also works and adds the /resolve price (see GET /us/statutes/section/{actId}). State session laws (SSL_ ids) are read at /us/session-laws/{sessionLawId}.
Query parameters
Max changes to return on this page.
Return only changes with an id greater than this: the cursor for polling forward into new changes. Implies order=asc: a forward cursor read newest-first would return the newest limit rows and skip the ones between. Ids are a monotonic sequence, so this is exact, immune to clock skew, and cannot drop two changes that share a timestamp. Carry cursor forward.
Return only changes with an id less than this: the cursor for walking BACK through history, which is what a newest-first reader needs. Pass the smallest id on your last page.
Filter to these kinds. Repeat the parameter to pass several (?changeKind=amended&changeKind=removed). Omit for all three.
desc (default) is newest first, the natural reading order for a history. Use asc to replay a section's life forward, or when catching up from a cursor.
Headers
Optional. 16 to 255 visible ASCII characters (a UUIDv4 works). Repeating the same request with the same key replays the original 2xx response for 24 hours without charging again. The same key on a different request is rejected. With the account's cacheQueryDerivedData retention setting off, no body is stored and a retry answers 409 idempotency_replay_unavailable, still without a second charge.
Response
The section's captured change history, newest first.
Example response
{
"actId": "CFR_T21_P314_S314_50",
"section": {
"source": "sct",
"body": "(a) If within a reasonable time after written or oral notice...",
"bodyUnavailable": true,
"bodyUnavailableReason": "image_only_source",
"bodyNote": "fetch_failed",
"matchContexts": [
{
"text": "(a) An employer shall not retaliate against an employee who files a complaint",
"highlights": [
[
7,
15
],
[
26,
35
]
]
}
],
"renumberedTo": "self:4651",
"renumberedToLabel": "section 10105 of Title 34",
"transferredTo": "34:10105",
"transferredToLabel": "section 10105 of Title 34",
"issueDate": "1999-05-25",
"statutoryAuthority": [
{
"display": "15 U.S.C. 78o",
"section": "78o",
"title": 15,
"type": "usc"
}
],
"implementingRegulations": [
{
"cfrTitle": 17,
"display": "17 CFR Part 240",
"part": "240",
"partName": "General Rules"
}
],
"rescindedOn": "2016-07-01",
"pendingAdoptions": [
{
"agency": "Department of Financial Services",
"effectiveDate": "2026-09-23",
"idNo": "DFS-23-26-00013-A",
"issueDate": "2026-09-23",
"scope": "part"
}
],
"adoptedAfterCurrentThrough": true,
"responseBounds": {
"truncated": true,
"fields": [
{
"field": "publicLaws",
"unit": "items",
"total": 190,
"returned": 50,
"nextOffset": 50
}
]
},
"effectiveDate": "2002-11-25",
"effectiveDateRaw": "September 8, 1916",
"historyEffectiveDate": "2009-06-19",
"priorEffectiveDates": [
"2004-12-17",
"2012-11-01"
],
"pendingAmendments": [
{
"id": "FRULES_FRCP_R26_P2027",
"status": "approved_by_standing_committee",
"cycle": 2027,
"effectiveDate": "2027-12-01",
"commentPeriodEnd": "2026-02-16",
"sourceUrl": "https://www.uscourts.gov/rules-policies/pending-rules-and-forms-amendments",
"textComplete": true,
"commentDocketIds": [
"USC-RULES-CV-2025-0004"
]
}
],
"abstract": "This regulation extends time-limited tolerances for pesticides.",
"agencies": [
"Environmental Protection Agency"
],
"agencySlugs": [
"environmental-protection-agency"
],
"topics": [
"Environmental protection",
"Pesticides and pests"
],
"documentTypeLabel": "Rule",
"documentSubtype": "Proclamation",
"action": "Final rule.",
"president": "George W. Bush",
"signingDate": "2026-04-02",
"executiveOrderNumber": "14179",
"proclamationNumber": "10886",
"instrumentNumberSource": "derived_from_text",
"datesText": "This regulation is effective December 14, 2001.",
"frVolume": 66,
"frStartPage": 64768,
"frEndPage": 64775,
"wordCount": 6271,
"issuingAgency": "Pollution Control Board",
"adoptingCitations": [
"37 Ill. Reg. 16539"
],
"lawImplemented": "Section 4656.1, Public Resources Code",
"lastAmendedDate": "2013-10-04",
"amendmentNote": "Amended at 37 Ill. Reg. 16539, effective October 4, 2013",
"currencyYear": 2025,
"reviewDate": "11/1/2028",
"originalEnactmentDate": "1934-06-27",
"originalEnactmentDateRaw": "June 27, 1934",
"releaseDate": "2018-06-14",
"documentNumber": "21-CA-211066",
"caseName": "Dunn-Edwards Corp.",
"forum": "Administrative Proceeding",
"court": "U.S. District Court for the District of Massachusetts",
"relatedDocuments": [
"Consent Order",
"Stipulation"
],
"settlementAmount": "$16,500",
"requesters": [
"Preece, Inc."
],
"program": "Old-Age and Survivors Insurance",
"languageCode": "es",
"volume": 1,
"articleNumber": "1",
"articleName": "Declaration of Rights",
"ruleSetCode": "NDSUPCTADMINR",
"edition": "2025",
"relatedCitations": [
"RCW 28A.150.290"
],
"supersessionActions": {
"modifies": [
"Rev. Proc. 2011-47"
]
},
"subtitle": "11",
"subtitleName": "AIR QUALITY",
"publisherKey": "430000000310400000000000000000000",
"versionId": "11948",
"referencedShortTitles": [
"Driftnet Modernization and Bycatch Reduction Act"
],
"subjectNumber": "47",
"audience": "All Persons Engaged in Marketing",
"sourceCharStart": 263194,
"sourceCharEnd": 264198,
"matchSegment": "note",
"matchNoteYear": 1993,
"alternateCitations": [
"4 L.P.R.A. § 2077"
],
"expirationDate": "2029-03-01",
"expirationDateRaw": "03-01-2029",
"sourcePageStart": 114,
"sourcePageEnd": 114,
"displayLabel": "MPEP § 2165.03",
"publicationDate": "2001-12-14",
"topLevelTitle": "Title 9: Criminal",
"externalUrl": "https://www.mass.gov/regulations/240-CMR-200-licensure-of-cosmetologists",
"sourceUrl": "https://www.mass.gov/regulations/240-CMR-200-licensure-of-cosmetologists"
},
"changes": [
{
"id": 91,
"changeKind": "amended",
"detectedAt": "2026-08-07T04:10:00Z",
"citation": "21 CFR 314.50",
"displayCitation": "21 C.F.R. § 314.50",
"title": "Content and format of an NDA",
"corpusType": "cfr",
"state": "wa"
}
],
"total": 3,
"cursor": 91,
"observedFrom": "2026-08-14T04:10:00Z",
"captureBeganAt": "2026-06-18T04:10:00Z",
"coverage": "Observed changes only, from when capture began for this source through today, retained 5 years. Not a full legislative history.",
"note": "No change to this section has been captured. This log only covers changes Vaquill's own refreshes observed.",
"resolvedFrom": {
"input": "26 U.S.C. § 1",
"actId": "USC_T26_C1_S1",
"via": "citation",
"subsection": "(h)(11)",
"matchLevel": "container",
"container": {
"kind": "chapter",
"label": "U.S. Const. art. III",
"childCount": 12,
"children": [
{
"actId": "CONST_US_A3_S1",
"citation": "U.S. Const. art. III, § 1",
"status": "in_force"
}
]
},
"repair": {
"kind": "code_name",
"cited": "Jud. Ct. Acts Law",
"interpretedAs": "N.Y. Judiciary Law § 475",
"alternatives": [
{
"actId": "STATE_NY_FCT_S475",
"citation": "N.Y. Fam. Ct. Act § 475"
}
]
},
"registerReference": {
"citation": "36 Pa. Bull. 510",
"state": "il",
"kind": "page",
"ruleCount": 2
}
},
"processingTimeMs": 18.4,
"creditsConsumed": 1
}Changes
- warning
added the new
response_size_capenum value to the///response property for the response status - 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
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status - info
the response property
//became required for the status
- warning