US Statutes

Resolve many citations at once

Changed on

Resolve up to 50 Bluebook citations in one call: the batch form of GET /us/statutes/resolve, with the same verdict per citation (matchLevel, missReason, pinpoint). Use it to check the citations in a brief, a memo or a model's output rather than making a call per citation.

Every input gets an entry, in order. An unresolved citation appears with resolved: false, never as an omission, so you can tell which of thirty citations failed. Duplicates are collapsed before pricing, so the same citation twice costs once and returns one entry.

Cost: 2 credits per citation, the same as resolving them one at a time; batching buys round trips, not a discount. Unresolved citations are charged. Refunded: citations that failed on a backend error, could not be read or name no jurisdiction (missReason malformed or ambiguous_jurisdiction). creditsConsumed reports what was billed.

Scope the whole batch with state or corpusType when every citation belongs to one jurisdiction or corpus (22 CCR 76227 is California and 8 CCR 1206-2 is Colorado; the acronym alone cannot say which). Omit both for a batch that spans jurisdictions. The batch spends at most about 20 seconds locating pinpoints; a citation past that budget resolves normally with a pinpointNote.

A citation to a STATE session law (an act as enacted, for example CHAPTER 2025-12 or S.F.No. 1552) names no code section, so resolved stays false and section stays null. The law is described in sessionLaw, beside matchedCorpus: "session_law", with an href to read it under /us/session-laws, and enough to answer what it is and when it took effect without a second call: title, billNumber, approvedDate, effectiveFirst and effectiveLast (null when the publisher prints no effective date), enactmentOutcome and sourceUrl, the government publisher's own text. A citation naming several laws comes back ambiguous with every candidate and none chosen for you. A state scope applies to session laws; a corpusType scope excludes them. No extra charge, and a citation that resolves to a section is never checked against session laws. A citation that names no state is matched against every state's laws, so at most 25 of them are checked per call: the others carry no sessionLaw block, which says nothing about whether the law exists. Name the state, or send the rest in another call.

Bounded rows. A heavily amended section (26 U.S.C. 1) carries hundreds of references and a credit line of tens of thousands of characters. Each row keeps the first 50 items of every long list and the first 4,000 characters of history and committeeNote. A row that was cut carries responseBounds (truncated, and per field the total, what was returned and nextOffset); a row that was not cut omits it. The whole record is one call away: GET /us/statutes/section/{actId}?full=true.

post/api/v1/us/statutes/resolve

Request

Headers

Idempotency-Keystring nullable

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.

Example:3f9c2a1e-7b44-4d0a-9c1e-5a6b7c8d9e0f

Request body

citationsstring[] required

Bluebook citation strings to resolve. Duplicates are collapsed FIRST and order is preserved, so the response's results array lines up with the de-duplicated input.

The cap is 50 UNIQUE citations, applied after that collapse, so a brief quoting one section sixty times is one citation and is accepted.

Priced PER CITATION at the single-resolve rate, exactly like POST /us/statutes/sections: batching is a round-trip and latency win, not a discount. Thirty citations cost the same 60 credits either way and take one request instead of thirty.

state'federal' | 'al' | 'ak' | 'as' | 'az' | 'ar' | 'ca' | 'co' | 'ct' | 'de' | 'dc' | 'fl' | 'ga' | 'gu' | 'hi' | 'id' | 'il' | 'in' | 'ia' | 'ks' | 'ky' | 'la' | 'me' | 'md' | 'ma' | 'mi' | 'mn' | 'ms' | 'mo' | 'mt' | 'ne' | 'nv' | 'nh' | 'nj' | 'nm' | 'ny' | 'nc' | 'nd' | 'mp' | 'oh' | 'ok' | 'or' | 'pa' | 'pr' | 'ri' | 'sc' | 'sd' | 'tn' | 'tx' | 'ut' | 'vt' | 'vi' | 'va' | 'wa' | 'wv' | 'wi' | 'wy' nullable

Optional jurisdiction to resolve every citation WITHIN: a two-letter state code, or federal for the U.S. Code, the C.F.R., federal rules and the U.S. Constitution. Applies to the whole batch: a batch spanning jurisdictions should omit it and let each citation name its own. Same semantics as the single-citation route -- a constraint, not a hint.

corpusType'CONSTITUTION' | 'REGULATION' | 'STATE' | 'STATE_CONSTITUTION' | 'STATE_RULES' nullable

Optional corpus to resolve every citation WITHIN: STATE (statutory text, federal or state), REGULATION (administrative codes), STATE_RULES (court rules), CONSTITUTION (constitutional text), STATE_CONSTITUTION (constitutional text; a synonym of CONSTITUTION here, since state is what separates the two). Same semantics as the single-citation route.

Example request

{
  "citations": [
    "42 U.S.C. 1983",
    "16 C.F.R. 444.1",
    "Cal. Civ. Code 1950.5"
  ],
  "state": "ca",
  "corpusType": "REGULATION"
}

Response

One verdict per submitted citation, in order.

resolvedCountinteger

How many of the submitted citations resolved to a code section. A citation answered only by a sessionLaw block is not counted.

failedCountinteger nullable

Present only when some entries failed on OUR side (missReason: lookup_failed): how many. Those entries are not a verdict on the citation, are refunded, and are answered by sending them again. Absent when every entry was answered.

countinteger

Total entries in results, after de-duplication.

processingTimeMsnumber

Server-side time for this request in milliseconds.

creditsConsumednumber

Credits actually charged. Read it rather than multiplying the list price by your input length: a backend failure on some citations refunds those, so this can be lower than 2 x count.

Example response

{
  "results": [
    {
      "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"
      },
      "citationOutsideFilters": {
        "actId": "USC_T42_C21_S1983",
        "citation": "42 U.S.C. § 1983 (2026)",
        "title": "Civil action for deprivation of rights",
        "state": "federal",
        "corpusType": "USC",
        "excludedBy": [
          "state"
        ]
      },
      "sessionLaw": {
        "status": "matched",
        "sessionLawId": "SSL_MN_2025R_G_Y2025_C1",
        "citation": "CHAPTER 1--S.F.No. 1552",
        "jurisdiction": "mn",
        "session": {
          "code": "2025R",
          "label": "2025 Regular Session",
          "type": "regular",
          "year": 2025
        },
        "textStatus": "held",
        "title": "An act relating to agriculture; modifying financial reporting requirements for grain buyers; amending Minnesota Statutes 2024, section 223.17, subdivision 6.",
        "billNumber": "S.F.No. 1552",
        "approvedDate": "2025-03-17",
        "effectiveFirst": "2025-09-01",
        "effectiveLast": "2025-09-01",
        "enactmentOutcome": "signed",
        "sourceUrl": "https://www.revisor.mn.gov/laws/2025/0/Session+Law/Chapter/1/",
        "href": "/api/v1/us/session-laws/SSL_MN_2025R_G_Y2025_C1",
        "candidates": [
          {
            "sessionLawId": "SSL_MN_2025R_G_Y2025_C1",
            "citation": "CHAPTER 1--S.F.No. 1552",
            "jurisdiction": "mn",
            "session": {
              "code": "2025R",
              "label": "2025 Regular Session",
              "type": "regular",
              "year": 2025
            },
            "textStatus": "held",
            "title": "An act relating to agriculture; modifying financial reporting requirements for grain buyers; amending Minnesota Statutes 2024, section 223.17, subdivision 6.",
            "billNumber": "S.F.No. 1552",
            "approvedDate": "2025-03-17",
            "effectiveFirst": "2025-09-01",
            "effectiveLast": "2025-09-01",
            "enactmentOutcome": "signed",
            "sourceUrl": "https://www.revisor.mn.gov/laws/2025/0/Session+Law/Chapter/1/",
            "href": "/api/v1/us/session-laws/SSL_MN_2025R_G_Y2025_C1"
          }
        ]
      },
      "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
      },
      "pinpoint": {
        "requested": "(c)(1)",
        "path": [
          "c",
          "1"
        ],
        "label": "(1)",
        "level": "paragraph",
        "inferred": true,
        "matched": true,
        "matchLevel": "exact",
        "leadIn": [
          {
            "path": [
              "c"
            ],
            "label": "(c)",
            "text": "Unless a different limit is established under this Chapter, the limit is:"
          }
        ],
        "children": [
          {
            "path": [
              "c",
              "1"
            ],
            "label": "(1)",
            "level": "paragraph",
            "inferred": true
          }
        ],
        "siblings": {
          "previous": "b",
          "next": "d"
        },
        "charStart": 1204,
        "charEnd": 1873,
        "kind": "range",
        "reason": "no_such_subsection",
        "structure": {
          "source": "artifact",
          "quality": "verified",
          "builder": "ilga_html",
          "textSha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
        }
      },
      "missReason": "ambiguous_jurisdiction",
      "candidates": [
        {
          "state": "co",
          "actId": "REG_CO_T8_S1206-2",
          "citation": "8 CCR 1206-2"
        }
      ]
    }
  ],
  "resolvedCount": 2,
  "failedCount": 1,
  "count": 3,
  "processingTimeMs": 610.2,
  "creditsConsumed": 6
}

Changes

    • warning

      added the new miss_reason_unavailable enum value to the /// response property for the response status

    • warning

      added the new response_size_cap enum 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

      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