> ## Documentation Index
> Fetch the complete documentation index at: https://vaquill.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Citation Formats

> Which citation strings resolve, why the form your state prints is the safest one to send, and which forms are refused on purpose

`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.

```json Result from /us/statutes/search theme={"theme":"github-dark"}
{
  "actId": "STATE_GA_T51_C1_S51-1-6",
  "citation": "O.C.G.A. § 51-1-6",
  "sectionTitle": "Recovery of damages upon breach of legal duty."
}
```

```bash Feed it straight back theme={"theme":"github-dark"}
curl -G https://api.vaquill.ai/api/v1/us/statutes/resolve \
  -H "Authorization: Bearer vq_key_..." \
  --data-urlencode "cite=O.C.G.A. § 51-1-6"
```

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.

| You send | Resolves to |
| - | - |
| `Ga. Code Ann. § 51-1-6` **or** `O.C.G.A. § 51-1-6` | the same Georgia section |
| `Wash. Rev. Code § 59.18.060` **or** `RCW 59.18.060` | the same Washington section |
| `Ohio Rev. Code § 2305.10` **or** `R.C. 2305.10` | the same Ohio section |
| `Tenn. Code Ann. § 49-1-602` **or** `T.C.A. § 49-1-602` | the same Tennessee section |
| `Alaska Stat. § 11.76.115` **or** `AS 11.76.115` | the same Alaska section |

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.

| Acronym | Claimed by |
| - | - |
| `MCA` | Montana **and** Mississippi Code Annotated |
| `IC` | Indiana **and** Idaho Code |
| `G.S.` | North Carolina **and** Connecticut General Statutes |
| `G.L.` | Massachusetts **and** Rhode Island General Laws |
| bare `R.S.` | Louisiana **and** New Jersey Revised Statutes |

<Warning>
  `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.
</Warning>

**Pass `state` and they resolve.** You have told us which jurisdiction you mean,
so there is nothing left to guess:

```bash theme={"theme":"github-dark"}
# resolved: false - MCA is Montana AND Mississippi
--data-urlencode "cite=MCA § 27-2-204"

# resolves - Mont. Code Ann. § 27-2-204
--data-urlencode "cite=MCA § 27-2-204" -d "state=mt"
```

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:

| You send | Resolves to |
| - | - |
| `MCR 3.709` | Michigan Court Rules |
| `JuCR 7.15` | Washington Juvenile Court Rules |
| `N.D.R.Civ.P. 64` | North Dakota Rules of Civil Procedure |
| `M. R. Civ. P. 17` | Montana Rules of Civil Procedure |
| `Rule 901, SCRE` | South Carolina Rules of Evidence |

Punctuation and case do not matter: `I.I.R. 4`, `IIR 4` and `iir 4` are the same
citation.

<Warning>
  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.
</Warning>

```bash theme={"theme":"github-dark"}
--data-urlencode "cite=CR 56"                 # resolved: false - CR is KY and WA
--data-urlencode "cite=CR 56" -d "state=wa"   # Wash. Super. Ct. Civ. R. 56
```

### 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`:

| You send | Resolves to |
| - | - |
| `Cook Cnty. Cir. Ct. R. 2.1` | Cook County Circuit Court rule 2.1 |
| `LRSF 16.15` | San Francisco Superior Court Local Rule 16.15 |
| `KCLCMR 7` | King County Local Mandatory Arbitration Rule 7 |
| `Phila. R.J.A. 4008` | Philadelphia Rule of Judicial Administration 4008 |
| `Ariz. Local R. Prac. Super. Ct. (Maricopa) 2.8` | Maricopa County local rule 2.8 |

A bare rule number that names no court is never guessed at.
The 38 courts held are listed on [State and territory coverage](/docs/api-guide/coverage/states#court-rules-from-county-and-district-trial-courts).

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.

<Steps>
  <Step title="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.
  </Step>

  <Step title="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`.
  </Step>
</Steps>

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.

<Tip>
  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`.
</Tip>

## 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.

| `matchLevel` | You cited | `section` is | Companion field |
| - | - | - | - |
| absent | one section | exactly that section | none |
| `container` | a chapter, series, article, part or amendment | the **first** section inside it | `container` |
| `multiple` | several sections in one citation | the **first** of them | `citedSections` |
| `repaired` | a recognised miscite of a code name | the section the repair names | `repair` |
| `register_reference` | a state register page, issue or filing | the register item, or a rule whose history cites it | `registerReference` |

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](#register-citations).

Real answers, taken from the resolver:

```bash container theme={"theme":"github-dark"}
# Mo. Code Regs. Ann. tit. 10, § 40-6 is a chapter, not a section
curl -G https://api.vaquill.ai/api/v1/us/statutes/resolve \
  -H "Authorization: Bearer vq_key_..." \
  --data-urlencode "cite=Mo. Code Regs. Ann. tit. 10, § 40-6"
```

```json container (fields beside resolved and section) theme={"theme":"github-dark"}
{
  "matchLevel": "container",
  "container": {
    "kind": "chapter",
    "label": "10 CSR 40-6",
    "childCount": 12,
    "children": [
      { "actId": "STATE_MO_CSR_T10_D40_C6_S010", "citation": "10 CSR 40-6.010", "status": "in_force" },
      { "actId": "STATE_MO_CSR_T10_D40_C6_S020", "citation": "10 CSR 40-6.020", "status": "in_force" }
    ],
    "truncated": false
  }
}
```

The `children` array above is cut to two of the twelve entries for this page; the real response lists all twelve.

```json repaired (N.Y. Jud. Ct. Acts Law § 475) theme={"theme":"github-dark"}
{
  "matchLevel": "repaired",
  "repair": {
    "kind": "code_name",
    "cited": "Jud. Ct. Acts Law",
    "interpretedAs": "N.Y. Judiciary Law § 475",
    "alternatives": [{ "actId": "STATE_NY_AFCT_A4_P7_S475", "citation": "N.Y. FCT Law § 475" }]
  }
}
```

| You send | `matchLevel` | `section.actId` | Note |
| - | - | - | - |
| `42 U.S.C. § 1983` | absent | `USC_T42_C21_S1983` | An exact match |
| `42 U.S.C. §§ 1983-1985` | `multiple` | `USC_T42_C21_S1983` | `citedSections: ["1983-1985"]` |
| `Mo. Code Regs. Ann. tit. 10, § 40-6` | `container` | `STATE_MO_CSR_T10_D40_C6_S010` | Chapter of 12 sections |
| `N.J.A.C. 8:33E` | `container` | `STATE_NJ_NJAC_T8_C33E_S1_S8_33E_1_1` | Chapter of 31 sections |
| `85 CSR 20` | `container` | `STATE_WV_CSR_T85_SER20_S1` | Series of 71 sections, `truncated: true` |
| `Ga. Const. art. X, § I` | `container` | `SCONST_GA_AX.I_SI` | Six paragraphs under one section number |
| `Iowa Const. amend. 21` | `container` | `SCONST_IA_AV_S3` | Nine sections whose own note credits Amendment 21 |
| `N.Y. Jud. Ct. Acts Law § 475` | `repaired` | `STATE_NY_AJUD_A15_S475` | Read as `N.Y. Judiciary Law § 475` |
| `36 Pa. Bull. 510` | `register_reference` | `SREGISTER_PA_V36_P510` | The register item itself, `registerItemHeld: true` |
| `17 Ill. Reg. 10414` | `register_reference` | `STATE_IL_IAC_T1_P100_S100_120` | A rule whose history cites the page, `ruleCount: 18` |

<Warning>
  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.
</Warning>

### 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](/docs/api-guide/coverage/states#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 `actId`s, 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).

```json register item held (36 Pa. Bull. 510) theme={"theme":"github-dark"}
{
  "matchLevel": "register_reference",
  "registerReference": {
    "citation": "36 Pa. Bull. 510",
    "state": "pa",
    "kind": "page",
    "ruleCount": 1,
    "rules": ["SREGISTER_PA_V36_P510"],
    "registerItemHeld": true
  }
}
```

```json register item not held (17 Ill. Reg. 10414) theme={"theme":"github-dark"}
{
  "matchLevel": "register_reference",
  "registerReference": {
    "citation": "17 Ill. Reg. 10414",
    "state": "il",
    "kind": "page",
    "ruleCount": 18,
    "rules": ["STATE_IL_IAC_T1_P100_S100_120", "STATE_IL_IAC_T1_P100_S100_210"],
    "registerItemHeld": false
  }
}
```

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.

<CodeGroup>
  ```bash cURL theme={"theme":"github-dark"}
  curl -X POST https://api.vaquill.ai/api/v1/us/statutes/resolve \
    -H "Authorization: Bearer vq_key_..." \
    -H "Content-Type: application/json" \
    -d '{"citations": ["42 U.S.C. 1983", "16 C.F.R. 444.1", "Cal. Civ. Code 1950.5"]}'
  ```

  ```python Python theme={"theme":"github-dark"}
  import requests

  resp = requests.post(
      "https://api.vaquill.ai/api/v1/us/statutes/resolve",
      headers={"Authorization": "Bearer vq_key_..."},
      json={
          "citations": [
              "42 U.S.C. 1983",
              "16 C.F.R. 444.1",
              "Cal. Civ. Code 1950.5",
          ]
      },
  ).json()

  for item in resp["results"]:
      if item["resolved"]:
          print(item["inputCitation"], "->", item["section"]["actId"])
      else:
          print(item["inputCitation"], "-> unresolved")

  print(resp["resolvedCount"], "of", resp["count"], "resolved")
  ```
</CodeGroup>

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}`](/docs/api-guide/session-laws#finding-a-law).

## When something does not resolve

<Steps>
  <Step title="Check it is not a deliberate refusal">
    Compare against the ambiguous-acronym table above. If it is on that list,
    add `state`.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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](mailto:contact@vaquill.ai) and we will fix the parser.
  </Step>
</Steps>

<Note>
  Case law citations are not covered here. The Data API serves statutes,
  regulations, constitutions and court rules; it is not a case law API.
</Note>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.