Skip to main content
GET /us/statutes/resolve turns a citation string into one exact section, and POST /us/statutes/resolve does the same for up to 50 at a time. This page answers the two questions that decide whether either works for you: what to send, and when to scope it.

The short answer: send back the citation we gave you

Every section we return carries a citation field. That string is the form the publishing jurisdiction itself prints, and feeding it back is guaranteed to resolve to the same section.
Result from /us/statutes/search
Feed it straight back
If you are storing citations in your own database, store the citation value we return rather than a form you construct. It round-trips by definition, and it survives us adding jurisdictions.

You do not have to send Bluebook

Both the Bluebook form and the form the state’s own courts use resolve to the same section. You do not need a per-state table. Also accepted, because real documents contain them:
  • The code name after the section. § 292.290, RSMo and § 162.41, Fla. Stat. resolve exactly like the name-first forms.
  • An edition year inside the code name. Ala. Code 1975, § 17-14-2 and NMSA 1978, § 22-23-1.1. The year names the edition, not the section, and is ignored.
  • Doubled section symbols. Cal. Civ. Code §§ 1950.5.
  • A trailing period, so a citation lifted out of a sentence works: 42 U.S.C. § 1983.
  • Typographic dashes. Text copied from a PDF or Word document carries non-breaking hyphens, figure dashes and minus signs instead of -. They are invisible on screen and they are normalized for you.
  • Pinpoint subsections. 42 U.S.C. § 1983(b)(2) resolves to the parent section and echoes (b)(2) back in subsection.

Forms that are refused on purpose

Some acronyms belong to two jurisdictions. For those, resolve returns resolved: false rather than guessing.
resolved: false on one of these is the correct answer, not a gap. A wrong section is a wrong statement of the law; an unresolved citation is a question you can answer.
Pass state and they resolve. You have told us which jurisdiction you mean, so there is nothing left to guess:
The same applies to a form carrying no jurisdiction at all: Virginia’s own in-state form is the bare word Code, so cite=Code § 8.01-243&state=va resolves while the string alone cannot. Connecticut and North Carolina both print General Statutes § ..., which names a compilation but no jurisdiction. Those resolve the same way: cite=General Statutes § 42a-1-101&state=ct.

Court rules

Many states cite a court rule with no jurisdiction token at all, because inside that state none is needed. Those resolve on the set acronym alone: Punctuation and case do not matter: I.I.R. 4, IIR 4 and iir 4 are the same citation.
Some set acronyms are shared. CR is both the Kentucky Civil Rules and the Washington Superior Court Civil Rules; RAP belongs to Washington, Kentucky and West Virginia; TCR to Oregon and West Virginia. These return resolved: false until you pass state, and they are refused on the acronym’s own ambiguity, not on whether we happen to hold that rule number for one state only. A gap in our coverage must never read as disambiguation.

Trial-court, professional-conduct and territory forms

A county or district trial court’s local rules are cited with the court named, because the court is part of the citation and of the actId: A bare rule number that names no court is never guessed at. The 38 courts held are listed on State and territory coverage. Professional-conduct rules resolve in the form each jurisdiction prints: Cal. R. Prof. Conduct 1.1, Or. RPC 1.1, Va. R. Prof. Conduct 1.1, D.C. R. Prof. Conduct 1.1, Ga. R. Prof. Conduct 1.1, Idaho R. Prof. Conduct 1.1, Fla. R. Regulating Fla. Bar 4-1.1. Nevada’s alternative dispute resolution rules are three sets: Nev. R. ADR 1 (the General Provisions only), Nev. Arb. R. 14 and Nev. Med. R. 9. The territories use their own codes: 9 Guam Code Ann. § 16.10, 2 N. Mar. I. Code § 7222, Am. Samoa Code Ann. § 46.4810 (or A.S.C.A. § 46.4810), Am. Samoa Const. art. IV, § 4, Am. Samoa Admin. Code § 4.2126, V.I. Code Ann. tit. 14, § 1 (or 14 V.I.C. § 1) and 12 V.I. R. & Regs. § 803-52. Their court rules resolve as Guam R. Civ. P. 71, N. Mar. I. R. Civ. P. 53, Am. Samoa High Ct. R. 139, V.I. R. Civ. P. 6-3 and V.I. S. Ct. R. 211.1.10. Vermont’s court rules resolve in the Judiciary’s own forms, Vt. R. Civ. P. 26 (or V.R.C.P. 26) and Vt. R. Evid. 803 (or V.R.E. 803).

Scoping: a constraint, not a hint

state and corpusType narrow a lookup. They never redirect one.
1

A citation that agrees with the scope resolves normally

cite=O.C.G.A. § 51-1-6&state=ga&corpusType=STATE returns the same section as the unscoped call.
2

A citation that disagrees returns resolved: false

cite=O.C.G.A. § 51-1-6&state=tx does not find a Texas section that happens to share the number. It returns resolved: false.
That refusal is the point. Scope when a citation form is shared across jurisdictions or corpora, which is exactly when a bare lookup could pick the wrong one:
  • 8 CCR 1206-2 is Colorado and 22 CCR 76227 is California. The acronym alone cannot say which, so pass state.
  • A rule number and a statute section often collide. If your citation names a court rule, pass corpusType=STATE_RULES so a same-numbered statute cannot answer instead.
If you are not disambiguating, leave the scope off. Scoping an unambiguous citation cannot improve the answer, and a scope that disagrees with the citation turns a good result into resolved: false.

When the answer is not the exact unit you cited: matchLevel

An exact match carries none of the fields below, so every answer that resolved before is unchanged. Four optional fields appear on both GET and POST /us/statutes/resolve only when section is not the exact unit you cited. resolved keeps its meaning (a section came back) and is true at every level, so read matchLevel to tell an exact section from a first-of-several. The companion fields:
  • container: kind (chapter, subchapter, series, article, section for a constitution section made of numbered paragraphs, or amendment), label, childCount (always exact), children (actId, citation, status, in document order, starting with the section returned) and truncated (true when children lists fewer than childCount; at most 50 are listed).
  • citedSections: the sections you named, as written. A range such as 1983-1985 is one entry.
  • repair: kind (today only code_name), cited (the part we corrected), interpretedAs, and alternatives, the other held sections the same code name could have meant. Empty when the repair was the only reading.
  • registerReference: see Register citations.
Real answers, taken from the resolver:
container
container (fields beside resolved and section)
The children array above is cut to two of the twelve entries for this page; the real response lists all twelve.
repaired (N.Y. Jud. Ct. Acts Law § 475)
A flagged answer is the first section of several, or a correction of what you wrote. Do not treat it as the section you cited. Citation verification that must mean “this exact string names exactly this section” should accept only an answer with no matchLevel. A citation that resolved to nothing before and resolves now only through a flagged reading (the first section of a chapter, a repair, a register reference) is not pinned to rank 1 by POST /us/statutes/search and is not accepted by the {actId} routes.

Register citations

36 Pa. Bull. 510 or 17 Ill. Reg. 10414 names a page of a state register. The answer depends on whether we hold that register:
  • We hold the item (registerReference.registerItemHeld: true). section is the register notice itself, corpusType STATE_REGISTER. It is a notice as printed on a date, not codified law. kind is page when the citation names the page the item starts on and range when it names a later page of the item. Held for the jurisdictions listed under State administrative registers.
  • We do not hold it (registerItemHeld: false). section is a codified rule whose history note cites that page: the first of ruleCount, with the others in rules. An omnibus item that touched more than 30 rules is refused rather than represented by one arbitrary rule.
registerReference carries citation (as we read it), state, kind, ruleCount (always exact), rules (their actIds, in document order, at most 25) and registerItemHeld. kind is page (a history note cites exactly this volume and page), range (a note cites a range that contains the page), issue (the citation names a register issue, as Colorado and Michigan cite) or filing (it names a filing identifier, as Washington, Nevada, Indiana and Wisconsin do).
register item held (36 Pa. Bull. 510)
register item not held (17 Ill. Reg. 10414)
Only an exact hit counts: the exact volume and page, a range that contains the page, or the exact filing identifier. A page that merely falls between two cited pages is never a hit, and a page is never matched without its volume. 17 Ill. Reg. 10415 returns resolved: false. Washington’s WSR 20-12-091 and Virginia’s 27 Va. Reg. 640 resolve to the register item, and Colorado’s 42 CR 15 names an issue and resolves to the first of 11 rules that cite it. A register citation that no held item and no rule’s history note cites returns resolved: false.

Checking a whole document: POST /us/statutes/resolve

Everything above applies unchanged to the batch route. It takes up to 50 citations in one call and returns the same verdict per citation. Use it when you are checking the citations in a document rather than looking one up. A brief, a memo or a model’s output typically carries dozens, and the single-citation route makes that dozens of round trips.
Four things to know about the response and the price. Every input gets an entry. An unresolved citation comes back with resolved: false, never as an omission. A caller checking thirty citations needs to know WHICH failed, and a shorter array cannot say that. Duplicates are collapsed before pricing and before the response is built, so sending the same citation twice costs once and returns one entry. results lines up with the de-duplicated input, in the order supplied, and count is its length. Scoping applies to the whole batch. state and corpusType are the same constraint they are on the single route, applied to every citation in the call. A batch spanning jurisdictions should omit them and let each citation name its own. Batching buys a round trip, not a discount. It is billed per citation, exactly as if you resolved them one at a time. Unresolved citations are charged, because a confident “this does not resolve” is the answer you are paying for when you are verifying a model’s output. Only citations we failed to process because of a backend error are refunded, so read creditsConsumed rather than multiplying.

Scoping on search is a different thing

On POST /us/statutes/search, state and corpusType filter the candidate pool before ranking. Two consequences worth knowing:
  • A recognized citation passed as the query is pinned to rank 1 at relevanceScore: 1.0, scoped or not. If you want one exact section, prefer /us/statutes/resolve: it is cheaper and it tells you whether the citation is real.
  • For a natural-language query, scoping changes which candidates are considered, so scoped and unscoped searches legitimately return different result sets. That is filtering working, not a bug.

State session law citations

/us/statutes/resolve resolves code sections first. When a citation names no code section but does name a state session law (CHAPTER 2025-12, S.F.No. 1552), the response carries matchedCorpus: "session_law" and a sessionLaw block with the law’s title, dates, outcome and href, and resolved stays false because section is null. sessionLaw.status is matched or ambiguous; an ambiguous citation lists every candidate and chooses none. There is no extra charge. To read the law, send its sessionLawId or the citation itself to GET /us/session-laws/{sessionLawId}.

When something does not resolve

1

Check it is not a deliberate refusal

Compare against the ambiguous-acronym table above. If it is on that list, add state.
2

Drop the scope

A scope that disagrees with the citation returns resolved: false. Retry without state and corpusType to find out whether the scope was the problem.
3

Search for it instead

POST /us/statutes/search with the citation as the query will surface the section even when the string is not a form we parse, and the result carries the citation we do recognize.
4

Tell us

A citation that a jurisdiction genuinely prints and that we cannot read back is a defect on our side, not yours. Send it to contact@vaquill.ai and we will fix the parser.
Case law citations are not covered here. The Data API serves statutes, regulations, constitutions and court rules; it is not a case law API.
Last modified on October 9, 2026