US Statutes

Get metadata for many statute sections

Metadata for up to 50 sections in one call.

Cost: 2 credits per section returned. Identifiers with no match are refunded, so a batch of 50 ids that resolves 47 costs 94 credits, not 100. Batching is a round-trip and latency win, not a discount. An input that is not a citation (an unknown id such as NOPE1, punctuation, an over-long string) is a plain miss and costs nothing; only a real citation sent in place of an id pays the /resolve price on top, resolved or not.

The response preserves the order of actIds and reports misses separately in notFound, so results can be zipped back onto the ids that produced them.

Take ids from a /us/statutes/search response, do not build them from a citation. An act_id looks derivable and is not: Tex. Property Code § 93.005 is STATE_TX_Cpr_C93_S93.005, and the Cpr code segment exists only in the data. Assembling ids works for a few jurisdictions whose hierarchy happens to sit in the citation, which makes the failures look like missing coverage rather than like wrong ids.

So every miss also comes back in notFoundDetail saying which it was: assembled_id with the real ids in didYouMean, or not_in_corpus when nothing matching exists (check /us/statutes/coverage for the jurisdiction before concluding a section is absent). The diagnosis is free and never charged. To go from a citation rather than a guess, use /us/statutes/resolve.

Use /us/statutes/section/{actId}/body for full text; this endpoint returns metadata and source links only.

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/sections

Request

Headers

Idempotency-Keystring nullable

Optional. 16 to 255 visible ASCII characters (a UUIDv4 is ideal). A retry with the same key and the same request replays the original 2xx response for 24 hours without charging again. The same key with a different request is rejected. Scope is the API key, method, path and body. The stored response body is a query-derived cache controlled by the account's data retention setting cacheQueryDerivedData: when it is false the body is never stored and a retry answers 409 idempotency_replay_unavailable, without charging again.

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

Request body

actIdsstring[] required

Section identifiers from a prior /us/statutes/search response. Up to 50 per call. Duplicates are collapsed, and order is preserved in the response. Each id encodes the citation's hierarchy: USC_T42_C21_S1983 is Title 42, Chapter 21, Section 1983. DO NOT BUILD THESE FROM A CITATION: the chapter/article/part segments exist only in the data, so Tex. Property Code § 93.005 is STATE_TX_Cpr_C93_S93.005, not STATE_TX_C93_S93.005. Assembled ids miss, and notFoundDetail will say so and suggest the real ones. A citation (26 U.S.C. § 1) is also accepted in place of an id: it is resolved and served, and listed in resolved.

includeBodyboolean

Return each section's full text inline on body, instead of metadata only. Adds the ordinary body price per row that returns text, so 20 ids resolving 20 bodies is 40 + 120 = 160 credits. Rows whose text cannot be resolved come back with body: null and are not charged for it, so read creditsConsumed rather than computing the total. Without this, use /us/statutes/section/{actId}/body one id at a time.

Example request

{
  "actIds": [
    "USC_T42_C21_S1983",
    "USC_T42_C21_S1981a"
  ]
}

Response

Sections found, plus any ids that did not resolve.

notFoundstring[]

Identifiers with no match. These are NOT charged, so a batch with misses costs less than len(actIds) times the per-section rate.

bodyNotestring nullable

Present only when includeBody: true was set and the bodies were withheld because the balance could not cover them (each row says bodyNote: insufficient_credits). The ranking was served and billed as usual; no body was charged.

countinteger

Number of sections returned.

processingTimeMsnumber

Server-side time for this request in milliseconds, excluding network transit. Useful for spotting a slow query; not billed on.

creditsConsumednumber

Credits actually charged for this call. Read it rather than assuming the list price: failed and refunded work bills 0, and batch endpoints charge per item returned, so a partial result costs less than a full one.

Example response

{
  "sections": [
    {
      "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"
    }
  ],
  "notFoundDetail": [
    {
      "reason": "assembled_id",
      "didYouMean": [
        "STATE_CO_T38_A12_P1_S38-12-103"
      ]
    }
  ],
  "resolved": [
    {
      "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": 240.5,
  "creditsConsumed": 4
}

Changes

No recorded changes to this operation across all 1 revision of this API.