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

# Get the Federal Register documents behind a CFR section

> Federal Register documents linked to one CFR section, from two signals.

**Cost**: 2 credits. Not-found and failed lookups are not charged. An `act_id` sent as a
citation (`21 CFR 314.50`) instead of a CFR act id adds the 2-credit `/resolve` fee, kept when the
citation does not resolve.

`printed_note`: the section's printed source note cites `83 FR 1234`, and a Federal Register rule
of the same CFR title and part spans that page of that volume and was published on the date printed.
Pre-1994 citations (`legacyPrintedCitations`) are kept as text and never resolved. `date_join`: a rule referencing the section's
CFR title and part took effect (or was published) on a date eCFR records as an amendment of this
section. `matchBasis` says which; `quality` is `verified` only when both agree and `candidate`
otherwise. Each eCFR version row in `versions` gets a tier: `confirmed`, `candidate` (one date match), `ambiguous` (two or more documents, none picked), `unmatched` (searched, found nothing) or `not_searched` (older than the date-join window, never looked at). A document found only in the printed note, with no version row meeting its dates, is `candidate` in both `quality` and `tier`. Corrections are attached to their parent in `corrections`. A candidate is a lead, not a finding: a rule that touches the part on the same day as
an amendment may not be the one that amended this section. `matchReason` says so on a candidate
that matched on title, part and date only and does not name the section.

**A printed note can be stale.** `noteIsStale` is true when eCFR records an amendment later than
the newest dated citation the note prints. Newer documents then appear only as `date_join`
candidates. `unresolvedCitations` lists printed citations we could not match to a document;
that is absence in our corpus, never proof the citation is wrong. Read `coverage`.



## OpenAPI

````yaml https://api.vaquill.ai/external/openapi.json get /api/v1/us/statutes/section/{act_id}/rulemaking
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. 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 56 state and territory statutory codes (50 states, DC and five
    territories), 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+a1f3e4af5900e02d
  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
  x-revision: a1f3e4af5900e02d
servers:
  - url: https://api.vaquill.ai
    description: Production
security:
  - ApiKeyAuth: []
  - ApiKeyHeader: []
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: US Rulemaking
    description: >-
      How a federal rule is made, as public records tied together by its
      Regulation Identifier Number (RIN): the semiannual Unified Agenda (every
      edition from Fall 1995), the OIRA review under Executive Order 12866, the
      Regulations.gov docket and its documents, and the Federal Register
      documents that proposed and finalised it.


      **Start here**: `GET /us/rulemaking/coverage` (free) lists what is held
      per source and whether each is fresh. Then **By RIN** for everything held
      for one rule, **Agenda history** for how its timetable moved edition by
      edition, or **Dockets** and **Documents** for the Regulations.gov side.


      Every link between sources carries its `basis` and `quality` (`verified`,
      `candidate`, `ambiguous`). A link we could not make with confidence is
      marked, never guessed, and an umbrella RIN shared by unrelated rules
      claims no proposal-to-final pairing. A comment count of `null` means not
      measured, never zero. Comment text, attachments and commenter information
      are not held or served.
  - 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: Agent Onboarding
    description: >-
      How an AI agent gets an API key for its human, with no copy and paste.
      Free and keyless. The agent starts a signup, the human approves a short
      code while signed in, and the agent collects an ordinary API key. Full
      walkthrough: https://api.vaquill.ai/auth.md
  - 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}/rulemaking:
    get:
      tags:
        - US Statutes
      summary: Get the Federal Register documents behind a CFR section
      description: >-
        Federal Register documents linked to one CFR section, from two signals.


        **Cost**: 2 credits. Not-found and failed lookups are not charged. An
        `act_id` sent as a

        citation (`21 CFR 314.50`) instead of a CFR act id adds the 2-credit
        `/resolve` fee, kept when the

        citation does not resolve.


        `printed_note`: the section's printed source note cites `83 FR 1234`,
        and a Federal Register rule

        of the same CFR title and part spans that page of that volume and was
        published on the date printed.

        Pre-1994 citations (`legacyPrintedCitations`) are kept as text and never
        resolved. `date_join`: a rule referencing the section's

        CFR title and part took effect (or was published) on a date eCFR records
        as an amendment of this

        section. `matchBasis` says which; `quality` is `verified` only when both
        agree and `candidate`

        otherwise. Each eCFR version row in `versions` gets a tier: `confirmed`,
        `candidate` (one date match), `ambiguous` (two or more documents, none
        picked), `unmatched` (searched, found nothing) or `not_searched` (older
        than the date-join window, never looked at). A document found only in
        the printed note, with no version row meeting its dates, is `candidate`
        in both `quality` and `tier`. Corrections are attached to their parent
        in `corrections`. A candidate is a lead, not a finding: a rule that
        touches the part on the same day as

        an amendment may not be the one that amended this section. `matchReason`
        says so on a candidate

        that matched on title, part and date only and does not name the section.


        **A printed note can be stale.** `noteIsStale` is true when eCFR records
        an amendment later than

        the newest dated citation the note prints. Newer documents then appear
        only as `date_join`

        candidates. `unresolvedCitations` lists printed citations we could not
        match to a document;

        that is absence in our corpus, never proof the citation is wrong. Read
        `coverage`.
      operationId: get_section_rulemaking
      parameters:
        - name: act_id
          in: path
          required: true
          schema:
            type: string
            minLength: 3
            maxLength: 200
            description: >-
              Section identifier, e.g. `USC_T42_C21_S1983` (42 U.S.C. § 1983).
              Take it from a `/us/statutes/search`, `/resolve` or `/divisions`
              result; do not assemble one. A citation such as `42 USC 1983` also
              works and adds the `/resolve` price (see `GET
              /us/statutes/section/{actId}`). State session laws (`SSL_` ids)
              are read at `/us/session-laws/{sessionLawId}`.
            examples:
              - CFR_T21_P314_S314_50
            title: Act Id
          description: >-
            Section identifier, e.g. `USC_T42_C21_S1983` (42 U.S.C. § 1983).
            Take it from a `/us/statutes/search`, `/resolve` or `/divisions`
            result; do not assemble one. A citation such as `42 USC 1983` also
            works and adds the `/resolve` price (see `GET
            /us/statutes/section/{actId}`). State session laws (`SSL_` ids) are
            read at `/us/session-laws/{sessionLawId}`.
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            anyOf:
              - type: string
                minLength: 16
                maxLength: 255
                pattern: ^[\x21-\x7e]+$
              - type: 'null'
            description: >-
              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.
            examples:
              - 3f9c2a1e-7b44-4d0a-9c1e-5a6b7c8d9e0f
            title: Idempotency-Key
          description: >-
            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.
      responses:
        '200':
          description: The Federal Register documents that touch the section.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SectionRulemakingResponse'
              example:
                actId: CFR_T21_P314_S314_50
                cfrTitle: 21
                cfrPart: '314'
                federalRegisterDocuments:
                  - documentNumber: 2024-01234
                    citation: 89 FR 1234
                    docType: rule
                    publicationDate: '2024-01-17'
                    effectiveOn: '2024-02-16'
                    docketIds:
                      - FDA-2023-N-0001
                    rins:
                      - 0910-AI12
                    title: Applications for FDA Approval to Market a New Drug
                    matchBasis: both
                    quality: verified
                versions:
                  - amendmentDate: '2024-02-16'
                    substantive: true
                    tier: confirmed
                legacyPrintedCitations: []
                printedNoteCitations:
                  - 89 FR 1234, Jan. 17, 2024
                unresolvedCitations: []
                noteIsStale: false
                coverage: []
                processingTimeMs: 64.2
                creditsConsumed: 2
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
            X-RateLimit-Limit-Day:
              $ref: '#/components/headers/X-RateLimit-Limit-Day'
            X-RateLimit-Remaining-Day:
              $ref: '#/components/headers/X-RateLimit-Remaining-Day'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/X-RateLimit-Limit-Hour'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/X-RateLimit-Remaining-Hour'
            X-RateLimit-Reset-Day:
              $ref: '#/components/headers/X-RateLimit-Reset-Day'
            X-RateLimit-Scope:
              $ref: '#/components/headers/X-RateLimit-Scope'
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/InsufficientCredits'
        '404':
          description: No such CFR section. Not charged.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiDetailError'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
            X-RateLimit-Limit-Day:
              $ref: '#/components/headers/X-RateLimit-Limit-Day'
            X-RateLimit-Remaining-Day:
              $ref: '#/components/headers/X-RateLimit-Remaining-Day'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/X-RateLimit-Limit-Hour'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/X-RateLimit-Remaining-Hour'
            X-RateLimit-Reset-Day:
              $ref: '#/components/headers/X-RateLimit-Reset-Day'
            X-RateLimit-Scope:
              $ref: '#/components/headers/X-RateLimit-Scope'
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '409':
          description: >-
            Idempotency conflict. `idempotency_in_progress`: the original
            request with this key is still running (retry after `Retry-After`).
            `idempotency_replay_unavailable`: it completed but its response was
            not kept (too large, or the account's data retention setting), so it
            cannot be replayed; nothing is charged again, so check the credit
            balance instead of retrying. Read the top-level `code`; `detail` is
            the message string, as on every other error. A replayed response
            reports `creditsConsumed: 0`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiDetailError'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
            X-RateLimit-Limit-Day:
              $ref: '#/components/headers/X-RateLimit-Limit-Day'
            X-RateLimit-Remaining-Day:
              $ref: '#/components/headers/X-RateLimit-Remaining-Day'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/X-RateLimit-Limit-Hour'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/X-RateLimit-Remaining-Hour'
            X-RateLimit-Reset-Day:
              $ref: '#/components/headers/X-RateLimit-Reset-Day'
            X-RateLimit-Scope:
              $ref: '#/components/headers/X-RateLimit-Scope'
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '422':
          description: >-
            Not a CFR act_id. Not charged. `idempotency_key_reused`: the
            `Idempotency-Key` was already used with a different request (another
            body, path or method). Not charged.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiDetailError'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
            X-RateLimit-Limit-Day:
              $ref: '#/components/headers/X-RateLimit-Limit-Day'
            X-RateLimit-Remaining-Day:
              $ref: '#/components/headers/X-RateLimit-Remaining-Day'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/X-RateLimit-Limit-Hour'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/X-RateLimit-Remaining-Hour'
            X-RateLimit-Reset-Day:
              $ref: '#/components/headers/X-RateLimit-Reset-Day'
            X-RateLimit-Scope:
              $ref: '#/components/headers/X-RateLimit-Scope'
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '503':
          description: >-
            The US statutes corpus is temporarily unavailable. Not charged
            (refunded if already taken): retry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiDetailError'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
            X-RateLimit-Limit-Day:
              $ref: '#/components/headers/X-RateLimit-Limit-Day'
            X-RateLimit-Remaining-Day:
              $ref: '#/components/headers/X-RateLimit-Remaining-Day'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/X-RateLimit-Limit-Hour'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/X-RateLimit-Remaining-Hour'
            X-RateLimit-Reset-Day:
              $ref: '#/components/headers/X-RateLimit-Reset-Day'
            X-RateLimit-Scope:
              $ref: '#/components/headers/X-RateLimit-Scope'
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
components:
  schemas:
    SectionRulemakingResponse:
      properties:
        actId:
          type: string
          title: Actid
        resolvedFrom:
          anyOf:
            - $ref: '#/components/schemas/SectionIdentifierResolution'
            - type: 'null'
          description: Present when the identifier sent was not the act_id served.
        cfrTitle:
          type: integer
          title: Cfrtitle
        cfrPart:
          type: string
          title: Cfrpart
        federalRegisterDocuments:
          items:
            $ref: '#/components/schemas/FederalRegisterDocumentOut'
          type: array
          title: Federalregisterdocuments
        versions:
          items:
            $ref: '#/components/schemas/VersionMatchOut'
          type: array
          title: Versions
        legacyPrintedCitations:
          items:
            $ref: '#/components/schemas/LegacyCitationOut'
          type: array
          title: Legacyprintedcitations
        printedNoteCitations:
          items:
            type: string
          type: array
          title: Printednotecitations
        unresolvedCitations:
          items:
            type: string
          type: array
          title: Unresolvedcitations
        noteIsStale:
          type: boolean
          title: Noteisstale
        coverage:
          items:
            type: string
          type: array
          title: Coverage
        processingTimeMs:
          type: number
          title: Processingtimems
        creditsConsumed:
          type: integer
          title: Creditsconsumed
      type: object
      required:
        - actId
        - cfrTitle
        - cfrPart
        - federalRegisterDocuments
        - versions
        - legacyPrintedCitations
        - printedNoteCitations
        - unresolvedCitations
        - noteIsStale
        - coverage
        - processingTimeMs
        - creditsConsumed
      title: SectionRulemakingResponse
    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.'
        code:
          anyOf:
            - type: string
            - type: 'null'
          title: Code
          description: >-
            Stable machine code for the failure. Branch on this, not on
            `detail`. The set is open: tolerate values you do not know. Known
            values: authentication_required, invalid_api_key, api_key_expired,
            permission_denied, insufficient_scope, insufficient_credits,
            payment_required, rate_limited, quota_exceeded, daily_cap_exceeded,
            bad_request, validation_error, method_not_allowed,
            payload_too_large, unsupported_media_type, invalid_query,
            invalid_citation_input, section_not_found, resource_not_found,
            idempotency_key_reused, idempotency_in_progress,
            idempotency_replay_unavailable, upstream_timeout,
            service_unavailable, internal_error, conflict.
          examples:
            - insufficient_credits
          x-known-values:
            - authentication_required
            - invalid_api_key
            - api_key_expired
            - permission_denied
            - insufficient_scope
            - insufficient_credits
            - payment_required
            - rate_limited
            - quota_exceeded
            - daily_cap_exceeded
            - bad_request
            - validation_error
            - method_not_allowed
            - payload_too_large
            - unsupported_media_type
            - invalid_query
            - invalid_citation_input
            - section_not_found
            - resource_not_found
            - idempotency_key_reused
            - idempotency_in_progress
            - idempotency_replay_unavailable
            - upstream_timeout
            - service_unavailable
            - internal_error
            - conflict
        type:
          anyOf:
            - type: string
            - type: 'null'
          title: Type
          description: >-
            URL naming the error kind,
            `https://www.vaquill.ai/docs/errors/{code}`.
          examples:
            - https://www.vaquill.ai/docs/errors/insufficient_credits
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
          description: Short fixed English title for `code`.
          examples:
            - Insufficient credits
        status:
          anyOf:
            - type: integer
            - type: 'null'
          title: Status
          description: Echo of the HTTP status code.
          examples:
            - 402
        requestId:
          anyOf:
            - type: string
            - type: 'null'
          title: Requestid
          description: Equals the `X-Request-ID` response header. Quote it to support.
          examples:
            - 8d32789e-7b27-44f7-9523-424596e7a929
        retryable:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Retryable
          description: True only when repeating the same request is safe and may succeed.
          examples:
            - false
        retryAfterSeconds:
          anyOf:
            - type: integer
            - type: 'null'
          title: Retryafterseconds
          description: 'On 429 and 503 when `Retry-After` is set: the same value in seconds.'
          examples:
            - 30
        actId:
          anyOf:
            - type: string
            - type: 'null'
          title: Actid
          description: 'Section routes only, on a miss: the identifier that matched nothing.'
          examples:
            - UNKNOWN_99999
        reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Reason
          description: >-
            Section routes only, on a miss: why nothing matched, for example
            `unsupported_jurisdiction` or `not_in_registry`. The set is open.
          examples:
            - not_in_registry
        didYouMean:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Didyoumean
          description: 'Section routes only, on a miss: identifiers worth trying instead.'
        sessionLawId:
          anyOf:
            - type: string
            - type: 'null'
          title: Sessionlawid
          description: >-
            Session-law routes only, on a miss: the id or citation that matched
            nothing.
          examples:
            - Pub. L. 117-58
        defaultSessionLawId:
          anyOf:
            - type: string
            - type: 'null'
          title: Defaultsessionlawid
          description: >-
            Session-law routes only, on an `ambiguous_citation` miss: the
            conventional reading, which is NOT chosen for you. `didYouMean`
            lists every candidate.
          examples:
            - us1_ca_2019_ch_123
        candidateCount:
          anyOf:
            - type: integer
            - type: 'null'
          title: Candidatecount
          description: 'Session-law routes only: how many laws the citation names in all.'
          examples:
            - 3
        truncated:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Truncated
          description: >-
            Session-law routes only: true when `didYouMean` lists fewer laws
            than `candidateCount`, so the list is not complete.
          examples:
            - false
        jurisdictions:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Jurisdictions
          description: >-
            Session-law routes only, on a `needs_jurisdiction` miss: every state
            where the citation exists. Name one in the citation, or pass
            `state`.
        sessionCoverage:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Sessioncoverage
          description: >-
            Session-law routes only, on a `session_not_fully_collected` miss:
            how much of the session we hold.
        creditsRequired:
          anyOf:
            - type: integer
            - type: 'null'
          title: Creditsrequired
          description: '402 only, when known: the credits this call needed.'
          examples:
            - 5
        creditsAvailable:
          anyOf:
            - type: integer
            - type: 'null'
          title: Creditsavailable
          description: '402 only, when known: the credits you can spend right now.'
          examples:
            - 2
        topUpHint:
          anyOf:
            - type: string
            - type: 'null'
          title: Topuphint
          description: '402 only, when known: where to add credits.'
          examples:
            - >-
              Add credits in the developer dashboard, then retry the same
              request.
      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.
    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 `pinpoint=(h)(11)` on
            `/body` to get that subsection, or `structured=true` for the whole
            tree.
          examples:
            - (h)(11)
        matchLevel:
          anyOf:
            - type: string
              enum:
                - container
                - multiple
                - repaired
                - register_reference
            - type: 'null'
          title: Matchlevel
          description: >-
            Present only when `section` is NOT the exact unit you cited.
            `container`: you cited a container in one of the supported forms (a
            Missouri, New Jersey, West Virginia or Wyoming regulation series or
            chapter, a constitution article or amendment, an Indiana chapter, an
            Illinois article, or a U.S. Code chapter such as `18 U.S.C. ch. 96`;
            a U.S. Code subchapter is not read), and `section` is the FIRST
            section inside it (see `container` for how many there are and what
            they are). A state STATUTE chapter, subchapter, title, article or
            part cited with its container word and a code name we read for that
            state (`8 Del. C. ch. 1, subch. VII`, `Tex. Penal Code ch. 19`,
            `N.Y. Penal Law art. 125`, `Mass. Gen. Laws ch. 93A`, `La. R.S.
            Title 14`) also answers `container`, with `section` the first live
            section in statutory order, but only where we hold that container
            and its number is unique within the code. A container we do not
            hold, a missing or unrecognised code name, a regulation or rule set,
            or a number that repeats in the code (California repeats chapter
            numbers across its titles) when the citation names more than one
            level, returns `resolved: false` with `missReason:
            container_not_supported`. An article that IS the section unit (`La.
            Civ. Code art. 2315`, `Tex. Code Crim. Proc. art. 38.23`) is read as
            a section. To browse chapters, titles and articles use `GET
            /us/statutes/divisions`. `multiple`: you cited several sections (`§§
            8, 10`, `§§ 1983-1985`) and `section` is the first of them (see
            `citedSections`), or your citation fits more than one held section
            (`D.C.COLO.LR 7.1` is both Local Civil and Local Criminal Rule 7.1)
            and every candidate is listed in `container`; a state statute
            container number that repeats within its code (`Cal. Penal Code tit.
            8` is a title of each of four parts) lists each candidate
            container's first section there, never picking one, when there are
            at most 10. `repaired`: the code name you wrote is a recognised
            miscite and `section` is the one it names (see `repair`); or
            (`repair.kind: prior_edition`) the text you cited has been replaced
            by a current one, and `section` is NOT the text you cited: a C.F.R.
            or U.S.C. section the current code no longer holds, answered with
            the MOST RECENT historical annual edition we hold, or a superseded
            rule set whose rule numbers were kept, answered with the current
            rule (`Tex. R. Civ. Evid. 803` is answered by `Tex. R. Evid. 803`),
            or a state regulation we hold only as superseded filings, answered
            with the latest filing (`W. Va. Code R. § 64-14-5`);
            `repair.interpretedAs` names what was served and why, and
            `repair.alternatives` lists the other held editions, if any; or
            (`repair.kind: former_law`, `former_number`) you cited a FORMER
            section number, recodified or renumbered since, and `section` is the
            successor the state's own disposition table or history line names,
            never the former text (a former section split into several answers
            `multiple`, every successor in `citedSections`). or (`repair.kind:
            code_name_inferred`) your citation named no code (`CODE ANN. §
            73.001`, `Code 4121-3-34`) and `section` is the only one in the
            state that carries that number, so the code was inferred from the
            number and not read from your citation; or (`repair.kind:
            repealed_range`, `renumbered_range`, `range_member`) you cited a New
            York or California section the publisher printed only inside a run
            of sections (`6 NYCRR 420.4` inside `420.3 to 420.4`), and `section`
            is that stub, not the section's own text (`repair.interpretedAs`
            names the range); `register_reference`: you cited a state register
            page, and `section` is a rule whose history cites it (see
            `registerReference`). `resolved` keeps its meaning (a section was
            returned) and is true at every level; read `matchLevel` to tell an
            exact section from a first-of-several. Absent for an exact match.
          examples:
            - container
        container:
          anyOf:
            - $ref: '#/components/schemas/ResolveContainerInfo'
            - type: 'null'
          description: >-
            Set with `matchLevel: container`. What you cited and the sections
            inside it; `section` is the first of them. Also set with
            `matchLevel: multiple` when the citation fits several held sections
            and none is the one cited (kind `alternatives`): every candidate is
            listed, `section` is only the first offered. Omitted from the
            response when it has no value.
        citedSections:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Citedsections
          description: >-
            Set with `matchLevel: multiple`. The sections your citation named,
            as written (a range such as `1983-1985` is one entry); `section` is
            the first. Omitted from the response when it has no value.
        repair:
          anyOf:
            - $ref: '#/components/schemas/ResolveRepairInfo'
            - type: 'null'
          description: >-
            Set with `matchLevel: repaired`. The miscite we corrected and how we
            read it. Omitted from the response when it has no value.
        registerReference:
          anyOf:
            - $ref: '#/components/schemas/ResolveRegisterReference'
            - type: 'null'
          description: >-
            Present only when `matchLevel` is `register_reference`: the citation
            names a page, issue or filing of a state register or bulletin. When
            `registerItemHeld` is true `section` IS that register item
            (corpusType STATE_REGISTER, a notice as printed, not codified law).
            Otherwise the item is not held and `section` is a RULE whose history
            note cites it (the first of `ruleCount`, in document order); read
            `rules` for the others.
        pagePinpoint:
          anyOf:
            - $ref: '#/components/schemas/ResolvePagePinpoint'
            - type: 'null'
          description: >-
            Present only when a treaty citation carried a pinpoint page. Which
            section that page prints, or why one section cannot be named. The
            page never changes `subsection` or `pinpoint`.
      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.
    FederalRegisterDocumentOut:
      properties:
        documentNumber:
          type: string
          title: Documentnumber
        citation:
          anyOf:
            - type: string
            - type: 'null'
          title: Citation
        docType:
          type: string
          enum:
            - rule
            - proposed_rule
            - notice
            - correction
          title: Doctype
        publicationDate:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Publicationdate
        effectiveOn:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Effectiveon
        docketIds:
          items:
            type: string
          type: array
          title: Docketids
        rins:
          items:
            type: string
          type: array
          title: Rins
        rulemakingUrl:
          anyOf:
            - type: string
            - type: 'null'
          title: Rulemakingurl
          description: >-
            Path of `GET /us/rulemaking/rins/{rin}` for this document's single
            RIN, so the whole rulemaking (agenda history, OIRA review, dockets,
            proposed/final links) is one call away. Null unless the rulemaking
            API is enabled AND the document carries exactly one valid RIN. A
            pointer only: it claims no proposal-to-final pairing, and a RIN
            shared by many documents (an umbrella RIN) pairs nothing.
          examples:
            - /api/v1/us/rulemaking/rins/0910-AI40
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
        matchBasis:
          anyOf:
            - type: string
              enum:
                - printed_note
                - date_join
                - both
            - type: 'null'
          title: Matchbasis
        quality:
          anyOf:
            - type: string
              enum:
                - verified
                - candidate
            - type: 'null'
          title: Quality
        tier:
          anyOf:
            - type: string
              enum:
                - confirmed
                - candidate
                - ambiguous
                - unmatched
                - not_searched
            - type: 'null'
          title: Tier
        matchReason:
          anyOf:
            - type: string
            - type: 'null'
          title: Matchreason
          description: >-
            Present on a weak `candidate`: the document matched on CFR title,
            part and date only and does not name this section, so on a large
            part it may be an unrelated rule.
        corrections:
          items:
            type: string
          type: array
          title: Corrections
      type: object
      required:
        - documentNumber
        - docType
      title: FederalRegisterDocumentOut
    VersionMatchOut:
      properties:
        amendmentDate:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Amendmentdate
        issueDate:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Issuedate
        substantive:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Substantive
        tier:
          type: string
          enum:
            - confirmed
            - candidate
            - ambiguous
            - unmatched
            - not_searched
          title: Tier
        documentNumbers:
          items:
            type: string
          type: array
          title: Documentnumbers
      type: object
      required:
        - tier
      title: VersionMatchOut
    LegacyCitationOut:
      properties:
        volume:
          type: integer
          title: Volume
        page:
          type: integer
          title: Page
        printedOn:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Printedon
        text:
          type: string
          title: Text
      type: object
      required:
        - volume
        - page
        - text
      title: LegacyCitationOut
    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
              - query
        msg:
          type: string
          title: Msg
          description: What is wrong with the value, in plain English.
          examples:
            - Field required
        type:
          type: string
          title: Type
          description: >-
            Machine-readable error kind, e.g. `missing`, `literal_error`,
            `json_invalid`.
          examples:
            - missing
      type: object
      required:
        - loc
        - msg
        - type
      title: ApiFieldError
      description: One rejected field in a 422 response.
    ResolveContainerInfo:
      properties:
        kind:
          type: string
          title: Kind
          description: >-
            What was cited: `chapter`, `subchapter`, `series` (a rule group
            number such as `5th Cir. R. 47`, held only as `47.1` to `47.10`),
            `article`, `section` (a constitution section made of numbered
            paragraphs, or a California regulation held as one document per
            subsection, `18 CCR 17071` being `(a)` to `(q)`), `amendment`,
            `document` (a rule set stored as one document holding several
            editions) or `alternatives` (with `matchLevel: multiple`: the held
            sections the citation could mean).
          examples:
            - chapter
        label:
          type: string
          title: Label
          description: The container, as we read your citation.
          examples:
            - U.S. Const. art. III
        childCount:
          type: integer
          title: Childcount
          description: >-
            How many sections the container holds. Always exact, even when
            `children` is cut.
          examples:
            - 12
        children:
          items:
            $ref: '#/components/schemas/ResolveContainerChild'
          type: array
          title: Children
          description: >-
            The sections inside, in document order. `section` is the first of
            them that is in force (the first of all when none is), so it is
            `children[0]` unless that one is repealed or otherwise not in force.
            For an `amendment` of a state whose constitution is held as amended
            text, these are the sections whose own note credits that amendment,
            which is what the corpus records; a section the corpus does not
            annotate is not listed.
        truncated:
          type: boolean
          title: Truncated
          description: True when `children` lists fewer than `childCount` sections.
          default: false
          examples:
            - false
      type: object
      required:
        - kind
        - label
        - childCount
      title: ResolveContainerInfo
      description: What the citation named, and what lies inside it.
    ResolveRepairInfo:
      properties:
        kind:
          type: string
          title: Kind
          description: >-
            What was repaired: `code_name` (a recognised miscite of the code
            name); `prior_edition` (the text you cited has been replaced, so
            `section` is not it: a C.F.R. or U.S.C. section held only as a
            historical annual edition, where `interpretedAs` names the edition
            and its year and `alternatives` the other editions; or a superseded
            rule set whose numbers were kept, such as the former Texas Rules of
            Civil and Criminal Evidence, answered with the current rule and the
            reason in `interpretedAs`; or a state regulation held only as
            superseded filings, where `interpretedAs` names the latest filing's
            date and `alternatives` the earlier filings); `code_name_inferred`
            (the citation named no code, so the only section in the state with
            that number was served: `interpretedAs` is that section's citation,
            `cited` the head as you wrote it, and `alternatives` is empty
            because a number held by two codes is refused, never guessed);
            `former_law` (you cited a section number the state's code no longer
            carries, and the state's own disposition table, a code commission
            comparative table, a revisor's renumbering stub or the Code's
            history credits, says which current section it became; `cited` is
            the number you wrote, `interpretedAs` the successor's citation with
            what the table says: recodified, renumbered or merged, the effective
            date when the table gives one, and the source. The former text
            itself is not served; with `matchLevel: multiple` the former section
            was SPLIT and `citedSections` lists every successor);
            `former_number` (the same, read from the successor's own history
            line where the state prints its lineage there: Georgia's `Code 1933,
            §` and Washington's `Formerly RCW`). Other values name the kind of
            miscite that was read through, such as `act_section`,
            `article_edition`, `ca_ucc_article_number`, `cfr_exchange_act_rule`,
            `cfr_five_digit_part`, `cfr_listing_of_impairments`,
            `cfr_part_number_mixed`, `cfr_part_omitted`, `cfr_part_truncated`,
            `cfr_separator`, `cfr_title`, `cfr_title_typo`,
            `code_article_for_constitution`, `dash_spacing`,
            `dotted_subdivision`, `duplicated_act`, `federal_label_state_rule`,
            `footnote_digit`, `former_code_name`, `former_collected`,
            `former_lpra_repealed_twin`, `former_title_renumbered`,
            `fused_subdivision`, `fused_subsection`, `fused_subsection_letter`,
            `glued_et_seq`, `glued_paragraph_letter`,
            `habeas_rules_stray_number`, `hyphen_restored`, `inside_range`,
            `letter_suffix_pinpoint`, `local_rule_series_inferred`,
            `lost_section_sign`, `merged_section`, `nm_rule_set_prefix`,
            `number_spelling`, `nycrr_title`, `ocr_digits`, `padded_decimal`,
            `part_and_section`, `pr_appendix_evidence`, `range_member`,
            `renumbered_provision`, `renumbered_range`, `renumbered_rule`,
            `renumbered_title`, `restated_rule`, `roman_section`, `set_label`,
            `slash_for_hyphen`, `snapshot_numbering`, `source_table`,
            `source_table_split`, `statute_cited_as_regulation`,
            `tex_statute_under_rule_label`, `title_chapter_form`,
            `title_dropped`, `title_inferred`, `title_moved`, `trailing_rule`,
            `transposed_chapter`, `truncated_section`,
            `usc_appendix_range_point`, `usc_appendix_unique_act`,
            `usc_cfr_miscite`, `usc_patent_rule_miscite`,
            `usc_state_code_miscite`, `wrong_rule_set_same_state`,
            `zero_padded_rule`, `zero_padded_section`, `zero_padding`. The set
            grows as repairs are added, so treat `kind` as an open string, not a
            closed enum; `interpretedAs` always says in words what was read.
          examples:
            - code_name
        cited:
          type: string
          title: Cited
          description: The part of your citation we corrected.
          examples:
            - Jud. Ct. Acts Law
        interpretedAs:
          type: string
          title: Interpretedas
          description: What we read it as.
          examples:
            - N.Y. Judiciary Law § 475
        alternatives:
          items:
            $ref: '#/components/schemas/ResolveRepairAlternative'
          type: array
          title: Alternatives
          description: >-
            Other sections the name you wrote could also have meant. Empty when
            the repair was the only reading.
      type: object
      required:
        - kind
        - cited
        - interpretedAs
      title: ResolveRepairInfo
      description: A miscite we recognised, and how we read it.
    ResolveRegisterReference:
      properties:
        citation:
          type: string
          title: Citation
          description: The register citation, as we read it.
          examples:
            - 36 Pa. Bull. 510
        state:
          type: string
          title: State
          description: Two-letter state code of the register.
          examples:
            - il
        kind:
          type: string
          enum:
            - page
            - range
            - issue
            - filing
          title: Kind
          description: >-
            How the citation matched the rules' history notes. `page`: a note
            cites exactly this volume and page. `range`: a note cites a page
            range that contains it. `issue`: the citation names a register issue
            (Colorado, Michigan). `filing`: it names a filing identifier
            (Washington WSR, Nevada LCB file, Indiana LSA document, Wisconsin
            register number).
          examples:
            - page
        ruleCount:
          type: integer
          title: Rulecount
          description: How many held rules cite it. Always exact, even when `rules` is cut.
          examples:
            - 2
        rules:
          items:
            type: string
          type: array
          title: Rules
          description: >-
            Their act_ids in document order, starting with the one returned as
            `section`.
        registerItemHeld:
          type: boolean
          title: Registeritemheld
          description: >-
            False when `section` is a RULE whose history cites the item (the
            item itself is not held for this state). True when `section` IS the
            register item, held under `corpusType=STATE_REGISTER`; then `rules`
            is that one item and `kind` is `page` (the cite names the page the
            item starts on) or `range` (a later page of the item).
          default: false
          examples:
            - false
      type: object
      required:
        - citation
        - state
        - kind
        - ruleCount
      title: ResolveRegisterReference
    ResolvePagePinpoint:
      properties:
        page:
          type: integer
          title: Page
          description: The page you cited, as printed in the series volume.
        resolved:
          type: boolean
          title: Resolved
          description: >-
            `true` when exactly one section of the instrument begins on or runs
            through that page, and `section` is that section. `false` when the
            page cannot name one section: `section` is then the instrument and
            `reason` says why.
        reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Reason
          description: >-
            Set when `resolved` is false. `page_shared`: several sections begin
            on that page, listed in `sections`. `outside_instrument`: the page
            is not inside the instrument's printed pages. `no_page_data`: the
            instrument's section pages are not recorded.
            `series_pages_not_held`: the series cited (such as T.I.A.S.) is
            numbered, not paged, in what we hold.
        sections:
          items:
            type: string
          type: array
          title: Sections
          description: Act ids of the sections printed on that page, in printed order.
      type: object
      required:
        - page
        - resolved
      title: ResolvePagePinpoint
      description: >-
        A pinpoint PAGE on a treaty citation (`20 U.S.T. 361, 365`), never read
        as a subsection.
    ResolveContainerChild:
      properties:
        actId:
          type: string
          title: Actid
          description: The child section's id.
          examples:
            - CONST_US_A3_S1
        citation:
          anyOf:
            - type: string
            - type: 'null'
          title: Citation
          description: The child's own citation.
          examples:
            - U.S. Const. art. III, § 1
        status:
          anyOf:
            - type: string
            - type: 'null'
          title: Status
          description: Its status in the corpus (`in_force`, `repealed`, ...).
          examples:
            - in_force
      type: object
      required:
        - actId
      title: ResolveContainerChild
    ResolveRepairAlternative:
      properties:
        actId:
          type: string
          title: Actid
          description: Another held section the cited name could also have meant.
          examples:
            - STATE_NY_FCT_S475
        citation:
          anyOf:
            - type: string
            - type: 'null'
          title: Citation
          description: That section's own citation.
          examples:
            - N.Y. Fam. Ct. Act § 475
      type: object
      required:
        - actId
      title: ResolveRepairAlternative
  headers:
    X-RateLimit-Limit:
      description: Requests allowed in the current per-minute window.
      schema:
        type: integer
    X-RateLimit-Remaining:
      description: Requests left in the current per-minute window.
      schema:
        type: integer
    X-RateLimit-Reset:
      description: Unix timestamp at which the per-minute window resets.
      schema:
        type: integer
    X-RateLimit-Limit-Day:
      description: Requests allowed per day (the slow-drip backstop).
      schema:
        type: integer
    X-RateLimit-Remaining-Day:
      description: Requests left in the daily window.
      schema:
        type: integer
    X-RateLimit-Limit-Hour:
      description: Requests allowed per hour.
      schema:
        type: integer
    X-RateLimit-Remaining-Hour:
      description: Requests left in the hourly window.
      schema:
        type: integer
    X-RateLimit-Reset-Day:
      description: Unix timestamp at which the daily window resets (next UTC midnight).
      schema:
        type: integer
    X-RateLimit-Scope:
      description: >-
        Which bucket the limits above describe: `key` (this API key's own
        allowance) or `ip` (the shared per-address ceiling, also used when the
        key did not validate). Absent on requests without an API key.
      schema:
        type: string
        enum:
          - key
          - ip
    X-Request-ID:
      description: Correlation id of this request. Quote it when contacting support.
      schema:
        type: string
    Retry-After:
      description: Seconds to wait before retrying.
      schema:
        type: integer
  responses:
    Unauthorized:
      description: Missing, invalid or revoked API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiDetailError'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
        X-RateLimit-Limit-Day:
          $ref: '#/components/headers/X-RateLimit-Limit-Day'
        X-RateLimit-Remaining-Day:
          $ref: '#/components/headers/X-RateLimit-Remaining-Day'
        X-RateLimit-Limit-Hour:
          $ref: '#/components/headers/X-RateLimit-Limit-Hour'
        X-RateLimit-Remaining-Hour:
          $ref: '#/components/headers/X-RateLimit-Remaining-Hour'
        X-RateLimit-Reset-Day:
          $ref: '#/components/headers/X-RateLimit-Reset-Day'
        X-RateLimit-Scope:
          $ref: '#/components/headers/X-RateLimit-Scope'
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
    InsufficientCredits:
      description: >-
        Insufficient credits (`insufficient_credits`, never retry).
        `creditsRequired` and `creditsAvailable` say how short you are when
        known; top up, then repeat the call.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiDetailError'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
        X-RateLimit-Limit-Day:
          $ref: '#/components/headers/X-RateLimit-Limit-Day'
        X-RateLimit-Remaining-Day:
          $ref: '#/components/headers/X-RateLimit-Remaining-Day'
        X-RateLimit-Limit-Hour:
          $ref: '#/components/headers/X-RateLimit-Limit-Hour'
        X-RateLimit-Remaining-Hour:
          $ref: '#/components/headers/X-RateLimit-Remaining-Hour'
        X-RateLimit-Reset-Day:
          $ref: '#/components/headers/X-RateLimit-Reset-Day'
        X-RateLimit-Scope:
          $ref: '#/components/headers/X-RateLimit-Scope'
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
    RateLimited:
      description: Rate limit exceeded.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiDetailError'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
        X-RateLimit-Limit-Day:
          $ref: '#/components/headers/X-RateLimit-Limit-Day'
        X-RateLimit-Remaining-Day:
          $ref: '#/components/headers/X-RateLimit-Remaining-Day'
        X-RateLimit-Limit-Hour:
          $ref: '#/components/headers/X-RateLimit-Limit-Hour'
        X-RateLimit-Remaining-Hour:
          $ref: '#/components/headers/X-RateLimit-Remaining-Hour'
        X-RateLimit-Reset-Day:
          $ref: '#/components/headers/X-RateLimit-Reset-Day'
        X-RateLimit-Scope:
          $ref: '#/components/headers/X-RateLimit-Scope'
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
        Retry-After:
          $ref: '#/components/headers/Retry-After'
    InternalError:
      description: >-
        Internal error (`internal_error`, retryable). Any credits charged for
        the call are refunded; retry with backoff and quote `requestId` to
        support if it persists.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiDetailError'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
        X-RateLimit-Limit-Day:
          $ref: '#/components/headers/X-RateLimit-Limit-Day'
        X-RateLimit-Remaining-Day:
          $ref: '#/components/headers/X-RateLimit-Remaining-Day'
        X-RateLimit-Limit-Hour:
          $ref: '#/components/headers/X-RateLimit-Limit-Hour'
        X-RateLimit-Remaining-Hour:
          $ref: '#/components/headers/X-RateLimit-Remaining-Hour'
        X-RateLimit-Reset-Day:
          $ref: '#/components/headers/X-RateLimit-Reset-Day'
        X-RateLimit-Scope:
          $ref: '#/components/headers/X-RateLimit-Scope'
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
  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.

````

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