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

# Which acts a state publisher lists against this section

> The state session laws a publisher's own tables list against one code section: which act added,
amended or repealed it, when the act took effect, and what the publisher printed. Start from a
section (an `actId` from `/us/statutes/search`, or a citation) and get to the act, then read the
act at `href`, or its text at `href` plus `/body`.

**Stage 1, and honest about it.** This reads the code-section TABLES that state publishers print
against their session laws ("sections affected"), through a reverse lookup. It is never read out of
the acts' prose and it is **never a complete amendment history**: only acts we hold, in sessions we
hold (`coverage.sessionsHeld`), whose table lists the section in the printed form we map. Every row
says `basis: publisher_sections_affected` and `matchQuality: as_printed`. An empty `enactments` with
`supported: true` means "no held table lists this section", not "this section was never amended". The
published `coverage.note` says, per jurisdiction, what is not read: entries printed as lists or ranges
(`338-15, 21`), with a subsection pincite, or by an act's own section number are not matched.

**Where it works.** CA, DC, HI, KY, MO, MS, NE, UT, WA: the jurisdictions where the publisher's printed form was shown to
map to our section numbers against real data on both sides, and each section's stored number must be
in the form that mapping was proven on. Any other jurisdiction (and any federal, regulation or
constitution section) answers `supported: false`, an empty list, a `reason` and a `coverage.note`,
and is **not charged**. A wrong match is worse than a miss, so equality is on the whole number after
folding case, spacing, dashes and the section sign: `71-24,104` does not match `71-24,10`, and `3` does
not match `3.1`. Where a publisher qualifies a section by code (California, Hawaii, DC) the printed code
must match too.

**Cost**: 1 credit. A section that does not exist is not charged. A supported section whose
answer is empty IS charged: "no held table lists it" is the answer you paid for, as an empty history
is on `/us/statutes/section/{actId}/changes`. An unsupported jurisdiction or section is refunded, and
so is any failure on our side (503, 500). `creditsConsumed` reports what was billed. A citation in
place of the id also pays the `/resolve` price, whether or not it resolves.

**What a row says.** `sessionLawId` and `href` name the act; `action` is the normalised
`added | amended | repealed | renumbered | other`, mapped only where the publisher's legend is settled
and `other` otherwise (Nebraska prints no action; Mississippi's `BF` is "brought forward", not a
change), and `actionAsPrinted` is always the publisher's own code. `effectiveDates` are the ACT's
dates, as printed, not necessarily this section's. `sectionAsPrinted`, `codeAsPrinted` and
`actSectionAsPrinted` are verbatim. Rows are newest act first and one per printed entry: an act that
lists the section twice appears twice. `truncated` is true past 200 rows.

**Example**

```bash
curl "https://api.vaquill.ai/api/v1/us/statutes/section/STATE_MS_T27_C71_S27-71-5/enactments" \
  -H "Authorization: Bearer $VAQUILL_API_KEY"
```

**Related endpoints**

- `GET /us/statutes/section/{actId}/changes` is what our refreshes observed to the section.
- `GET /us/session-laws/{sessionLawId}` reads an act from `href`; `/body` reads its text.
- `GET /us/statutes/coverage` says which sessions we hold and how complete each is, in each
  jurisdiction's `sessionLaws` block.



## OpenAPI

````yaml https://api.vaquill.ai/external/openapi.json get /api/v1/us/statutes/section/{act_id}/enactments
openapi: 3.1.0
info:
  title: Vaquill Developer API
  description: >-
    Public API for legal statutes and legislation.


    **Authentication**: Pass your API key as `Authorization: Bearer vq_key_...`
    (preferred) or in the `X-API-Key` header. The `api_key` query parameter also
    works where a header cannot be set, but a URL ends up in logs and browser
    history. Sending two different keys in one request is rejected with a 401.


    **Credits**: Each call costs API credits. See `GET
    /api/v1/api-credits/pricing` for the full pricing matrix.


    ## Jurisdictions


    | Jurisdiction | Coverage | `countryCode` |

    |---|---|---|

    | **United States** | USC and the Statutes at Large, the CFR and its annual
    editions, all 52 state and territory statutory codes (50 states plus DC and
    Puerto Rico), state administrative regulations, court rules, federal and
    state constitutions, federal agency guidance and adjudications, the Federal
    Register, the Sentencing Guidelines and US tax treaties. | `US` |


    See the full [Coverage page](https://www.vaquill.ai/docs/api-guide/coverage)
    for the jurisdiction-by-jurisdiction breakdown, or call
    `/us/statutes/coverage` for live counts. Coverage is per (jurisdiction,
    corpusType) pair, so treat that endpoint as the authoritative list rather
    than this summary.


    ## Endpoints


    - **US Statutes**: Search and retrieve any of the corpora above with full
    text, resolve a citation to its exact section, browse the statutory
    hierarchy, read a section as it stood on a past date, and follow its change
    history, cross-references and defined terms

    - **Board Watches**: Subscribe to a corpus source and get a webhook or email
    when it refreshes with real changes (free, API key required)

    - **Pricing**: Credit costs per endpoint (no auth required)


    ## Rate limits


    Limits are enforced per API key and scale with your plan. A `429` response
    includes a `Retry-After` header.


    | Plan | Per minute | Per hour | Per day |

    |---|---|---|---|

    | Vaquill API Pro | 60 | 1,000 | 2,000 |

    | Vaquill API Business | 150 | 2,500 | 10,000 |


    For full documentation, visit the [API
    Reference](https://www.vaquill.ai/docs/api-reference/).
  version: 1.0.0
  contact:
    name: Vaquill API Support
    url: https://www.vaquill.ai
    email: support@vaquill.ai
  license:
    name: Proprietary
    url: https://www.vaquill.ai/terms
  termsOfService: https://www.vaquill.ai/terms
servers:
  - url: https://api.vaquill.ai
    description: Production
security:
  - ApiKeyAuth: []
  - ApiKeyHeader: []
  - ApiKeyQuery: []
tags:
  - name: US Statutes
    description: >-
      Search and retrieve US primary law. Covers the United States Code and the
      Statutes at Large, the Code of Federal Regulations and its annual
      editions, state statutory codes and administrative regulations, federal
      and state constitutions, court rules, Federal Register rules and
      Presidential documents, federal and state agency guidance, agency
      adjudications, state Attorney General opinions, the Sentencing Guidelines
      and US tax treaties. Scope a search with the `corpusType` filter, and call
      `/us/statutes/coverage` for the live jurisdiction-by-corpusType list.


      - **Search**: Search across all USC, CFR, state, and regulatory sections

      - **Section**: Get metadata, citation, hierarchy, and source links for a
      specific section

      - **Body**: Get the full text of a section

      - **Enactments**: Which state session laws a publisher's own tables list
      against a section (supported jurisdictions only, never a complete history)
  - name: US Session Laws
    description: >-
      State session laws: the acts of each legislature as they were enacted,
      chapter by chapter, before they are folded into a code. A session law is
      what the governor signs. It carries the act's own text, including the
      language it strikes and inserts, its approval and effective dates, and,
      where the publisher prints one, the code sections it changes. That makes
      it the source for "which act changed this section, and when did it take
      effect".


      Every act has a permanent `sessionLawId` (for example
      `SSL_MN_2025R_G_Y2025_C1`, Minnesota Laws 2025, regular session, chapter
      1) whether or not we hold its text, and a citation or bill number such as
      `S.F.No. 1552` is accepted where an id goes. v1 serves STATE acts only.
      Federal session laws (the Statutes at Large, `SAL_` ids) are served by
      `/us/statutes/section`, and `/us/statutes/resolve` points a session-law
      citation here.


      **Start here**: check `/us/statutes/coverage` (free) for what we hold per
      state: each jurisdiction's `sessionLaws` block lists its sessions, which
      are complete or only partly collected, and the `series` and
      `instrumentTypes` that exist. Then **List** a session or a date range to
      get ids, **Get** one act for its record, then **Body** for its text. A law
      missing from a partly collected session is a free 404
      (`session_not_fully_collected`), not proof it does not exist.


      - **List**: everything enacted in a state's session, approved in a window,
      or taking effect on a date

      - **Get**: one act by id or by citation; dates (`effectiveDates` is always
      a list), sources and the code sections it affects

      - **Body**: the act's text as printed, paged by cursor, with amendatory
      markup preserved where the publisher printed it

      - **Batch**: up to 50 ids or citations in one call, the same record as
      Get, billed per law served, with every miss listed and its reason

      - **Changes**: a sync feed of the registry over an integer cursor
      (`sinceId`): what began to be served, was corrected, withdrawn or merged


      The reverse link, from a code section to the acts a publisher's own tables
      list against it, is `GET /us/statutes/section/{actId}/enactments`.
  - name: Board Watches
    description: >-
      Law-change alerts. Subscribe to a **board** (a tracked corpus source,
      identified by `corpusType` plus an optional `state`) and get a webhook or
      email whenever it refreshes with real changes, naming the exact sections
      that changed. Fetch old-vs-new text for any amended section via the change
      diff.


      Boards refresh on their own existing cadence; watching one does not change
      how often it refreshes. Every endpoint here is **free**: authenticated by
      API key and rate-limited, but not credit-metered.


      See the [Law Change Alerts
      guide](https://www.vaquill.ai/docs/api-guide/alerts) for the full
      walkthrough.
  - name: Pricing
    description: >-
      Credit pricing and conversion rates. No authentication required. 1 credit
      = $0.01 USD.
  - name: Credits
    description: >-
      Your own credit balance: what is spendable right now, where it came from,
      and what is about to expire.


      Free and never charged, so it is safe to poll for low-balance alerting or
      to pre-flight a batch job.
externalDocs:
  description: Full API Reference
  url: https://www.vaquill.ai/docs/api-reference/
paths:
  /api/v1/us/statutes/section/{act_id}/enactments:
    get:
      tags:
        - US Statutes
      summary: Which acts a state publisher lists against this section
      description: >-
        The state session laws a publisher's own tables list against one code
        section: which act added,

        amended or repealed it, when the act took effect, and what the publisher
        printed. Start from a

        section (an `actId` from `/us/statutes/search`, or a citation) and get
        to the act, then read the

        act at `href`, or its text at `href` plus `/body`.


        **Stage 1, and honest about it.** This reads the code-section TABLES
        that state publishers print

        against their session laws ("sections affected"), through a reverse
        lookup. It is never read out of

        the acts' prose and it is **never a complete amendment history**: only
        acts we hold, in sessions we

        hold (`coverage.sessionsHeld`), whose table lists the section in the
        printed form we map. Every row

        says `basis: publisher_sections_affected` and `matchQuality:
        as_printed`. An empty `enactments` with

        `supported: true` means "no held table lists this section", not "this
        section was never amended". The

        published `coverage.note` says, per jurisdiction, what is not read:
        entries printed as lists or ranges

        (`338-15, 21`), with a subsection pincite, or by an act's own section
        number are not matched.


        **Where it works.** CA, DC, HI, KY, MO, MS, NE, UT, WA: the
        jurisdictions where the publisher's printed form was shown to

        map to our section numbers against real data on both sides, and each
        section's stored number must be

        in the form that mapping was proven on. Any other jurisdiction (and any
        federal, regulation or

        constitution section) answers `supported: false`, an empty list, a
        `reason` and a `coverage.note`,

        and is **not charged**. A wrong match is worse than a miss, so equality
        is on the whole number after

        folding case, spacing, dashes and the section sign: `71-24,104` does not
        match `71-24,10`, and `3` does

        not match `3.1`. Where a publisher qualifies a section by code
        (California, Hawaii, DC) the printed code

        must match too.


        **Cost**: 1 credit. A section that does not exist is not charged. A
        supported section whose

        answer is empty IS charged: "no held table lists it" is the answer you
        paid for, as an empty history

        is on `/us/statutes/section/{actId}/changes`. An unsupported
        jurisdiction or section is refunded, and

        so is any failure on our side (503, 500). `creditsConsumed` reports what
        was billed. A citation in

        place of the id also pays the `/resolve` price, whether or not it
        resolves.


        **What a row says.** `sessionLawId` and `href` name the act; `action` is
        the normalised

        `added | amended | repealed | renumbered | other`, mapped only where the
        publisher's legend is settled

        and `other` otherwise (Nebraska prints no action; Mississippi's `BF` is
        "brought forward", not a

        change), and `actionAsPrinted` is always the publisher's own code.
        `effectiveDates` are the ACT's

        dates, as printed, not necessarily this section's. `sectionAsPrinted`,
        `codeAsPrinted` and

        `actSectionAsPrinted` are verbatim. Rows are newest act first and one
        per printed entry: an act that

        lists the section twice appears twice. `truncated` is true past 200
        rows.


        **Example**


        ```bash

        curl
        "https://api.vaquill.ai/api/v1/us/statutes/section/STATE_MS_T27_C71_S27-71-5/enactments"
        \
          -H "Authorization: Bearer $VAQUILL_API_KEY"
        ```


        **Related endpoints**


        - `GET /us/statutes/section/{actId}/changes` is what our refreshes
        observed to the section.

        - `GET /us/session-laws/{sessionLawId}` reads an act from `href`;
        `/body` reads its text.

        - `GET /us/statutes/coverage` says which sessions we hold and how
        complete each is, in each
          jurisdiction's `sessionLaws` block.
      operationId: >-
        get_section_enactments_api_v1_us_statutes_section__act_id__enactments_get
      parameters:
        - name: act_id
          in: path
          required: true
          schema:
            type: string
            minLength: 3
            maxLength: 200
            description: >-
              Section identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter
              21, Section 1983, which a lawyer writes as 42 U.S.C. § 1983). Take
              it from a `/us/statutes/search` or `/us/statutes/resolve` result.


              A citation also works here: `26 U.S.C. § 1`, `42 USC 1983` or
              `Cal. Civ. Code § 1950.5` is resolved with the same resolver
              `/resolve` uses, and the section is served. A citation costs this
              endpoint's price PLUS the `/resolve` price (2 credits), charged as
              its own line whether or not it resolves, exactly as `/resolve`
              charges; that is the same total as calling `/resolve` and then
              this endpoint, in one round trip. An exact act_id costs only this
              endpoint's price. When a citation resolves, or when the id only
              matched after surrounding whitespace, quotes or a trailing period
              were removed, the response carries `resolvedFrom` saying what your
              input was matched as. Check it the way you would check a
              `/resolve` answer. A citation containing `/` cannot travel in a
              URL path segment; resolve it with `GET /us/statutes/resolve`
              instead.


              Do not assemble an id from a citation: the title and section are
              derivable, but the CHAPTER is not, so `USC_T26_S1` misses. A miss
              returns 404 with `reason` and, where the section exists under
              another id, `didYouMean`.


              State session laws (acts as enacted, ids starting `SSL_`) are not
              code sections: read them at `/us/session-laws/{sessionLawId}`.
            examples:
              - STATE_MS_T27_C71_S27-71-5
            title: Act Id
          description: >-
            Section identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21,
            Section 1983, which a lawyer writes as 42 U.S.C. § 1983). Take it
            from a `/us/statutes/search` or `/us/statutes/resolve` result.


            A citation also works here: `26 U.S.C. § 1`, `42 USC 1983` or `Cal.
            Civ. Code § 1950.5` is resolved with the same resolver `/resolve`
            uses, and the section is served. A citation costs this endpoint's
            price PLUS the `/resolve` price (2 credits), charged as its own line
            whether or not it resolves, exactly as `/resolve` charges; that is
            the same total as calling `/resolve` and then this endpoint, in one
            round trip. An exact act_id costs only this endpoint's price. When a
            citation resolves, or when the id only matched after surrounding
            whitespace, quotes or a trailing period were removed, the response
            carries `resolvedFrom` saying what your input was matched as. Check
            it the way you would check a `/resolve` answer. A citation
            containing `/` cannot travel in a URL path segment; resolve it with
            `GET /us/statutes/resolve` instead.


            Do not assemble an id from a citation: the title and section are
            derivable, but the CHAPTER is not, so `USC_T26_S1` misses. A miss
            returns 404 with `reason` and, where the section exists under
            another id, `didYouMean`.


            State session laws (acts as enacted, ids starting `SSL_`) are not
            code sections: read them at `/us/session-laws/{sessionLawId}`.
      responses:
        '200':
          description: >-
            The entries the publisher's tables list against the section, or
            `supported: false` (not charged). Not a complete history.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SectionEnactmentsResponse'
              examples:
                supported:
                  summary: >-
                    Miss. Code Ann. § 27-71-5, listed by a 2025 act (printed
                    `027-0071-0005`)
                  value:
                    actId: STATE_MS_T27_C71_S27-71-5
                    jurisdiction: ms
                    supported: true
                    enactments:
                      - sessionLawId: SSL_MS_2025R_G_C301
                        href: /api/v1/us/session-laws/SSL_MS_2025R_G_C301
                        citation: Regular Session, ch. 301
                        title: >-
                          AN ACT TO AUTHORIZE A PERSON WHO IS THE HOLDER OF A
                          WINE MANUFACTURER'S PERMIT IN THIS STATE, OR WHO IS
                          LICENSED OR PERMITTED OUTSIDE OF THE STATE TO ENGAGE
                          IN THE ACTIVITY OF MANUFACTURING WINE, TO SELL AND
                          SHIP WINE DIRECTLY TO RESIDENTS ...
                        sessionCode: 2025R
                        effectiveDates:
                          - date: '2025-07-01'
                            dateAsPrinted: July 1, 2025
                        action: amended
                        actionAsPrinted: A
                        sectionAsPrinted: 027-0071-0005
                        basis: publisher_sections_affected
                        matchQuality: as_printed
                        identityConfidence: single_source
                        textStatus: held
                        enactmentOutcome: signed
                    count: 1
                    truncated: false
                    coverage:
                      jurisdiction: ms
                      sessionsHeld:
                        - code: 2025R
                          label: 2025 Regular Session
                          status: complete
                      note: >-
                        Mississippi: the Legislature's bill-status record lists
                        Code sections in a zero-padded form. A section brought
                        forward (`BF`) or reenacted (`R`) is listed as `other`:
                        the act named it and did not necessarily change it.
                        Entries the publisher prints as a list or range
                        (`338-15, 21`), with a subsection pincite, or by an
                        act's own section number are not matched, so a section
                        can be amended by an act this answer does not list. 
                    creditsConsumed: 1
                    processingTimeMs: 96.4
                supportedEmpty:
                  summary: >-
                    A supported section no held table lists: charged, an answer
                    and not a claim
                  value:
                    actId: STATE_MS_T27_C71_S27-71-9
                    jurisdiction: ms
                    supported: true
                    enactments: []
                    count: 0
                    truncated: false
                    coverage:
                      jurisdiction: ms
                      sessionsHeld:
                        - code: 2025R
                          label: 2025 Regular Session
                          status: complete
                      note: >-
                        Mississippi: the Legislature's bill-status record lists
                        Code sections in a zero-padded form. A section brought
                        forward (`BF`) or reenacted (`R`) is listed as `other`:
                        the act named it and did not necessarily change it.
                        Entries the publisher prints as a list or range
                        (`338-15, 21`), with a subsection pincite, or by an
                        act's own section number are not matched, so a section
                        can be amended by an act this answer does not list. 
                    creditsConsumed: 1
                    processingTimeMs: 71.2
                unsupported:
                  summary: >-
                    A jurisdiction we do not read (Iowa): supported false, not
                    charged
                  value:
                    actId: STATE_IA_TXI_C459_S459.308
                    jurisdiction: ia
                    supported: false
                    reason: unsupported_jurisdiction
                    enactments: []
                    count: 0
                    truncated: false
                    coverage:
                      jurisdiction: ia
                      sessionsHeld: []
                      note: >-
                        Code-section tables are read for CA, DC, HI, KY, MO, MS,
                        NE, UT, WA. This jurisdiction's own table is held, but
                        it prints an edition prefix and a subsection pincite
                        (`2025 Code - 331.301 (27)`), so an exact lookup would
                        find only the entries printed without one and silently
                        under-report the rest.
                    creditsConsumed: 0
                    processingTimeMs: 38.9
        '401':
          description: Invalid or missing API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiDetailError'
        '402':
          description: Insufficient credits.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiDetailError'
        '404':
          description: >-
            No such section. `reason` says why, `didYouMean` lists real ids. Not
            charged for the route; a citation's `/resolve` price is kept on an
            unresolved citation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatuteSectionNotFoundError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiDetailError'
        '503':
          description: >-
            The statutes corpus or the session-laws database is temporarily
            unavailable. The charge is refunded; retry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiDetailError'
components:
  schemas:
    SectionEnactmentsResponse:
      properties:
        actId:
          type: string
          title: Actid
          description: >-
            The section's act_id as served, after any citation or copy damage
            was resolved.
          examples:
            - STATE_MS_T27_C71_S27-71-5
        resolvedFrom:
          anyOf:
            - $ref: '#/components/schemas/SectionIdentifierResolution'
            - type: 'null'
          description: >-
            Present only when your input was a citation or an id carrying copy
            damage: what it was matched as. Null when you sent an exact act_id.
        jurisdiction:
          anyOf:
            - type: string
            - type: 'null'
          title: Jurisdiction
          description: >-
            Lowercase two-letter code of the section's jurisdiction. Null for a
            federal section.
          examples:
            - ms
        supported:
          type: boolean
          title: Supported
          description: >-
            True when this section's jurisdiction is one whose publisher table
            is mapped to the statutes section numbers and this section is in the
            form that mapping was proven on: then `enactments` is an answer,
            even when it is empty, and the call is charged. False when it is not
            (see `reason`): `enactments` is empty, says nothing about the
            section, and the call is NOT charged.
          examples:
            - true
        reason:
          anyOf:
            - type: string
              enum:
                - unsupported_jurisdiction
                - not_a_state_code_section
                - section_not_in_proven_form
            - type: 'null'
          title: Reason
          description: >-
            Why `supported` is false. `unsupported_jurisdiction`: we do not read
            this jurisdiction's table (none is printed, or its form is not
            verified against our section numbers), see `coverage.note`.
            `not_a_state_code_section`: the section is not a state statute (a
            federal, regulation or constitution section).
            `section_not_in_proven_form`: the jurisdiction is read, but this
            section's stored number is not in a form the mapping was proven on,
            so it is not guessed at. Null when `supported` is true.
          examples:
            - null
        enactments:
          items:
            $ref: '#/components/schemas/SectionEnactment'
          type: array
          title: Enactments
          description: >-
            The entries of the publisher's tables whose printed section is this
            section, newest act first (by approval date, undated last), one per
            printed entry: an act that lists the section twice appears twice.
            NEVER a complete history: only acts we hold, in sessions we hold,
            whose table lists the section in the printed form this
            jurisdiction's mapping reads. Empty with `supported: true` is a real
            answer: no held table lists it.
        count:
          type: integer
          title: Count
          description: Entries returned in `enactments`.
          default: 0
          examples:
            - 1
        truncated:
          type: boolean
          title: Truncated
          description: >-
            True when more entries matched than are returned (the newest are
            kept). A section amended by that many acts is not a case we have
            met.
          default: false
          examples:
            - false
        coverage:
          $ref: '#/components/schemas/EnactmentCoverage'
          description: >-
            What this answer is read from, and what it is not. Show it with the
            list.
        creditsConsumed:
          type: integer
          title: Creditsconsumed
          description: >-
            Credits actually charged for this call, never the list price. 0 when
            `supported` is false (refunded) and on a failure. A citation sent in
            place of the act_id adds the `/us/statutes/resolve` price, charged
            whether or not it resolves.
          default: 0
          examples:
            - 1
        processingTimeMs:
          type: number
          title: Processingtimems
          description: >-
            Server-side time for this request in milliseconds, excluding network
            transit. Not billed on.
          default: 0
          examples:
            - 96.4
      type: object
      required:
        - actId
        - supported
        - coverage
      title: SectionEnactmentsResponse
      description: Response for `GET /us/statutes/section/{act_id}/enactments`.
    ApiDetailError:
      properties:
        detail:
          type: string
          title: Detail
          description: >-
            Human-readable reason, safe to surface to an end user. Branch on the
            HTTP status rather than on this string: the wording is not part of
            the contract and may be reworded, but 401 (bad key), 402 (out of
            credits), 403 (missing scope), 404 (no such resource) and 429 (rate
            limited) are stable.
          examples:
            - Insufficient API credits.
        errors:
          anyOf:
            - items:
                $ref: '#/components/schemas/ApiFieldError'
              type: array
            - type: 'null'
          title: Errors
          description: 'Present on 422 only: every field that failed validation.'
      type: object
      required:
        - detail
      title: ApiDetailError
      description: >-
        Error envelope the API actually returns.


        Every error (400/401/402/403/404/405/422/429/5xx) carries a `detail`

        string, e.g. `{"detail": "Insufficient API credits."}`, on every mount
        of

        the API. A 422 adds `errors`, one entry per rejected field. Some 404s
        add

        endpoint-specific diagnosis beside `detail` (the statutes section routes

        add `actId`, `reason` and `didYouMean`); treat unknown keys as optional.
    StatuteSectionNotFoundError:
      properties:
        detail:
          type: string
          title: Detail
          description: >-
            Human-readable reason, safe to show a user. Branch on `reason`, not
            on this string.
          examples:
            - >-
              Section not found. This id does not exist, but the section does,
              ...
        actId:
          type: string
          title: Actid
          description: The identifier exactly as you sent it.
        reason:
          type: string
          enum:
            - assembled_id
            - unresolved_citation
            - not_in_corpus
            - missing_act_id
            - state_session_law
          title: Reason
          description: >-
            `assembled_id` -- the id does not exist but the section does, under
            the ids in `didYouMean` (usually an id built by hand from a
            citation, or sent in the wrong case). `unresolved_citation` -- the
            input is a citation and resolves to nothing we hold; check it with
            `/us/statutes/resolve`. `not_in_corpus` -- nothing matched.
            `missing_act_id` -- the URL left the id out, so an endpoint name
            (`body`, `changes`, ...) sits where the id goes; `detail` names the
            path you meant. Never charged. `state_session_law` -- the id starts
            `SSL_`: it names a STATE session law (an act as enacted), which is
            not a code section; read it at `GET
            /us/session-laws/{sessionLawId}`.
          examples:
            - assembled_id
        didYouMean:
          items:
            type: string
          type: array
          title: Didyoumean
          description: >-
            Real act_ids for the section your id pointed at, best first, at most
            3.
          examples:
            - - USC_T26_C1_S1
      type: object
      required:
        - detail
        - actId
        - reason
      title: StatuteSectionNotFoundError
      description: The 404 from any `/us/statutes/section/{act_id}/...` route.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    SectionIdentifierResolution:
      properties:
        input:
          type: string
          title: Input
          description: The identifier exactly as you sent it.
          examples:
            - 26 U.S.C. § 1
        actId:
          type: string
          title: Actid
          description: The act_id it matched. Send this next time to skip resolution.
          examples:
            - USC_T26_C1_S1
        via:
          type: string
          enum:
            - normalized_id
            - citation
          title: Via
          description: >-
            `citation` -- your input was a citation, resolved with the same
            resolver as `GET /us/statutes/resolve`. Check it the way you would
            check a `/resolve` answer. `normalized_id` -- your input was an
            act_id carrying surrounding whitespace, quotes, a trailing period or
            double percent-encoding, which were removed.
          examples:
            - citation
        subsection:
          anyOf:
            - type: string
            - type: 'null'
          title: Subsection
          description: >-
            The pincite your citation carried, e.g. `(h)(11)` for `26 U.S.C. §
            1(h)(11)`. The WHOLE section is served; use `structured=true` on
            `/body` to address the subsection.
          examples:
            - (h)(11)
      type: object
      required:
        - input
        - actId
        - via
      title: SectionIdentifierResolution
      description: >-
        How the identifier you sent was matched, when it was not an exact
        act_id.


        Present only when the input did NOT match as sent. Absent (null) means
        the

        section is exactly the act_id in your request.
    SectionEnactment:
      properties:
        sessionLawId:
          type: string
          title: Sessionlawid
          description: The act, in the session-law registry. Read it at `href`.
          examples:
            - SSL_MS_2025R_G_C301
        href:
          type: string
          title: Href
          description: >-
            Path of the act on this API: `GET` it for the record, or its `/body`
            for the text.
          examples:
            - /api/v1/us/session-laws/SSL_MS_2025R_G_C301
        citation:
          anyOf:
            - type: string
            - type: 'null'
          title: Citation
          description: >-
            The act's citation as its publisher prints it. Null when none is
            held.
          examples:
            - Regular Session, ch. 301
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
          description: The act's title as printed. Null when none is held.
          examples:
            - >-
              AN ACT TO AUTHORIZE A PERSON WHO IS THE HOLDER OF A WINE
              MANUFACTURER'S PERMIT
        sessionCode:
          anyOf:
            - type: string
            - type: 'null'
          title: Sessioncode
          description: The session the act was enacted in, as in `coverage.sessionsHeld`.
          examples:
            - 2025R
        approvedDate:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Approveddate
          description: >-
            Date the governor approved the act, ISO 8601: never an effective
            date. Null when none is held.
          examples:
            - '2025-03-17'
        effectiveDates:
          items:
            $ref: '#/components/schemas/SessionLawDate'
          type: array
          title: Effectivedates
          description: >-
            Every effective date the publisher prints for the ACT, in printed
            order: the act's, not necessarily this section's (an act can take
            effect in parts, and a date may carry a `scopeAsPrinted`). Empty
            when none is held, which does not mean the act is not in force.
        action:
          type: string
          enum:
            - added
            - amended
            - repealed
            - renumbered
            - other
          title: Action
          description: >-
            What the act did to the section, normalised: `added`, `amended`,
            `repealed`, `renumbered`, or `other`. It is mapped from
            `actionAsPrinted` only where the publisher's legend is settled;
            `other` means the table prints no action (Nebraska,
            `actionAsPrinted` is null), prints one that is not a change to this
            section (Mississippi's `BF`, brought forward), or one we do not map.
            Never read `other` as 'unchanged'. The publisher's own code is
            always in `actionAsPrinted`.
          examples:
            - amended
        actionAsPrinted:
          anyOf:
            - type: string
            - type: 'null'
          title: Actionasprinted
          description: >-
            The publisher's own action code or word for this entry, verbatim.
            Null when the table prints none.
          examples:
            - A
        sectionAsPrinted:
          type: string
          title: Sectionasprinted
          description: The section exactly as the publisher's table prints it.
          examples:
            - 027-0071-0005
        codeAsPrinted:
          anyOf:
            - type: string
            - type: 'null'
          title: Codeasprinted
          description: >-
            The code the publisher qualifies the section with, as printed
            (`HRS`, `D.C. Code`, `Education Code`). Null where the publisher
            prints none.
          examples:
            - RCW
        actSectionAsPrinted:
          anyOf:
            - type: string
            - type: 'null'
          title: Actsectionasprinted
          description: >-
            Which section of the ACT does it, as printed (Washington's `1223`,
            Kentucky's `5`). Null where the table prints none.
          examples:
            - '6'
        basis:
          type: string
          const: publisher_sections_affected
          title: Basis
          description: >-
            Where the entry comes from: always `publisher_sections_affected`,
            the publisher's own table of the code sections an act affects. Never
            read out of the act's prose.
          default: publisher_sections_affected
          examples:
            - publisher_sections_affected
        matchQuality:
          type: string
          const: as_printed
          title: Matchquality
          description: >-
            How the entry was matched to the section: always `as_printed`, the
            publisher's printed section equals this section's number after
            folding case, spacing, dashes and the section sign, and nothing is
            matched by prefix. The match is on the number, in the jurisdiction's
            own printed form; it is not a legal analysis of what the act did.
          default: as_printed
          examples:
            - as_printed
        identityConfidence:
          type: string
          enum:
            - confirmed
            - single_source
            - inferred
            - disputed
          title: Identityconfidence
          description: >-
            How firmly the registry knows the act is the law it says it is:
            `confirmed`, `single_source`, `inferred` or `disputed`.
          examples:
            - single_source
        textStatus:
          type: string
          enum:
            - held
            - withheld
            - not_held
            - pending
          title: Textstatus
          description: >-
            Whether we serve the act's text: `held`, `withheld`, `not_held` or
            `pending`, as on `GET /us/session-laws/{sessionLawId}`.
          examples:
            - held
        enactmentOutcome:
          anyOf:
            - type: string
              enum:
                - signed
                - became_law_without_signature
                - veto_overridden
                - line_item_veto
                - vetoed
                - pocket_veto
                - not_presented
                - approved_by_voters
                - unknown
            - type: 'null'
          title: Enactmentoutcome
          description: >-
            How the act became (or did not become) law, as on the act's record:
            `signed`, `vetoed` and so on. Null when it is not recorded.
          examples:
            - signed
      type: object
      required:
        - sessionLawId
        - href
        - action
        - sectionAsPrinted
        - identityConfidence
        - textStatus
      title: SectionEnactment
      description: >-
        One printed entry of a publisher's table: this act, against this
        section.
    EnactmentCoverage:
      properties:
        jurisdiction:
          anyOf:
            - type: string
            - type: 'null'
          title: Jurisdiction
          description: >-
            Lowercase two-letter code of the section's jurisdiction. Null for a
            section that is not a state statute (a federal section).
          examples:
            - ms
        sessionsHeld:
          items:
            $ref: '#/components/schemas/EnactmentSession'
          type: array
          title: Sessionsheld
          description: >-
            The sessions of this jurisdiction whose code-section tables are
            held. A session not listed contributes nothing to `enactments`: an
            empty list says we read nothing, not that the section was untouched.
            Empty for an unsupported jurisdiction.
        note:
          type: string
          title: Note
          description: >-
            In words: where the list comes from for this jurisdiction, and what
            it does not read. Show it beside the list: `enactments` is what the
            publisher's table prints, never a complete amendment history.
          examples:
            - >-
              Mississippi: the Legislature's bill-status record lists Code
              sections in a zero-padded form. Entries the publisher prints as a
              list or range are not matched.
      type: object
      required:
        - note
      title: EnactmentCoverage
      description: What this answer is read from, and what it is not.
    ApiFieldError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Loc
          description: >-
            Where the bad value is: `body`, `query` or `path`, then the
            parameter name exactly as you send it (camelCase), then list
            indexes. A bare `["body"]` means the body as a whole was not a JSON
            object.
          examples:
            - - body
              - corpusType
        msg:
          type: string
          title: Msg
          description: What is wrong with the value, in plain English.
          examples:
            - Input should be 'USC', 'CFR' or 'STATE'
        type:
          type: string
          title: Type
          description: >-
            Machine-readable error kind, e.g. `missing`, `literal_error`,
            `json_invalid`.
          examples:
            - literal_error
      type: object
      required:
        - loc
        - msg
        - type
      title: ApiFieldError
      description: One rejected field in a 422 response.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    SessionLawDate:
      properties:
        kind:
          anyOf:
            - type: string
            - type: 'null'
          title: Kind
          description: >-
            What the date is, on `otherDates`: `approved`, `filed` or `other`
            (`kindAsPrinted` carries the publisher's label for `other`). Null on
            `effectiveDates`, where every entry is an effective date.
          examples:
            - approved
            - other
            - null
        date:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Date
          description: >-
            The date as ISO 8601 when the printed text could be read as one.
            Null when the publisher's wording is not a calendar date.
          examples:
            - '2025-03-17'
        dateAsPrinted:
          anyOf:
            - type: string
            - type: 'null'
          title: Dateasprinted
          description: >-
            The date exactly as the publisher wrote it, including any time of
            day.
          examples:
            - March 17, 2025, 10:54 a.m.
            - 06/20/25
        kindAsPrinted:
          anyOf:
            - type: string
            - type: 'null'
          title: Kindasprinted
          description: The publisher's own label for what the date is, when it prints one.
          examples:
            - Presentment Date
            - Presented to the governor
        scopeAsPrinted:
          anyOf:
            - type: string
            - type: 'null'
          title: Scopeasprinted
          description: >-
            What the date applies to when it is not the whole act, as printed:
            an act can take effect in parts. Null when the date applies to the
            act as a whole.
          examples:
            - CCP §871.20.
            - null
      type: object
      title: SessionLawDate
      description: One printed date on a session law.
    EnactmentSession:
      properties:
        code:
          type: string
          title: Code
          description: >-
            Session code, `{year}{type}{ordinal}`, as on `GET
            /us/session-laws/list`.
          examples:
            - 2025R
        label:
          anyOf:
            - type: string
            - type: 'null'
          title: Label
          description: The session's canonical label, as the publisher names it.
          examples:
            - 2025 Regular Session
        status:
          anyOf:
            - type: string
              enum:
                - complete
                - partial
            - type: 'null'
          title: Status
          description: >-
            Whether we hold every act of the session (`complete`) or only part
            of it (`partial`): an act missing from a partial session is not
            evidence that it did not touch the section. Null when coverage could
            not be read just now.
          examples:
            - complete
      type: object
      required:
        - code
      title: EnactmentSession
      description: >-
        One legislative session of the jurisdiction whose code-section tables
        are read.
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      bearerFormat: vq_key_*
      description: >-
        API key issued from the developer dashboard. Pass as `Authorization:
        Bearer vq_key_...` (preferred).
    ApiKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        The same API key as a bare header value: `X-API-Key: vq_key_...`.
        Equivalent to the Bearer form.
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api_key
      description: >-
        The same API key as a query parameter: `?api_key=vq_key_...`. Use only
        where you cannot set a header. A URL can end up in proxy and server
        logs, browser history and shared links, so prefer either header form,
        and rotate a key that has leaked.

````

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