Vaquill AI · Schema

SessionLawBodyResponse

Response for `GET /us/session-laws/{sessionLawId}/body`.

LegalStatutesRegulationsLegal ResearchLawComplianceLegal TechnologyGovernment DataMCPIndiaContracts

Properties

Name Type Description
processingTimeMs number Server-side time for this request in milliseconds, excluding network transit. Not billed on.
creditsConsumed integer Credits actually charged for this call, never the list price. It includes the `/us/statutes/resolve` fee when a citation was sent where an id goes. 0 when the call was not charged or was refunded (a b
sessionLawId string The law this page belongs to.
citation string The act's citation as its publisher prints it, the same as `citation` on `GET /us/session-laws/{sessionLawId}`. Carried here so a page is attributable on its own, with no second call.
jurisdiction string Lowercase two-letter code of the state, `dc` or `pr`.
session object The legislative session the law was enacted in.
approvedDate object Date the governor approved the act, ISO 8601, as on `GET /us/session-laws/{sessionLawId}`: never an effective date. Null when none is held. See `approvedDateDerived`.
approvedDateDerived boolean True only when `approvedDate` was filled from the publisher's dated signature label rather than held as the approval date. See the same field on `GET /us/session-laws/{sessionLawId}`.
sourceUrl object The official page or file this text was collected from, on a government publisher's host. Present on EVERY outcome, a withheld or not-held law included, so a reader is never at a dead end: where we do
available boolean False when we do not serve this law's text; `reason` says why. A page with `available: false` is not charged.
reason object Why `available` is false: `not_held`, `withheld`, `pending` or `empty_text`. Null when the text is served.
textStatus string Whether we serve this law's text. `held`: the text is served by `/us/session-laws/{sessionLawId}/body`. `withheld`: we hold the text but a measured defect keeps it from being served, and `withheldReas
withheldReason object Present only when `textStatus` is `withheld`: what is wrong with the text we hold. A plain sentence to show, not an enum to branch on.
text object This page of the act's text, exactly as printed, in reading order. Concatenating every page's `text` in order reproduces the whole text. Where `amendatoryMarkup` is `preserved`, struck and inserted la
pageStart object Character offset in the full text where this page starts (0-based). Pages are contiguous: the next page's `pageStart` equals this page's `pageEnd`.
pageEnd object Character offset just past this page. A page is about 30,000 characters, cut back to a paragraph break where one is near, so the length varies.
totalChars object Length of the whole text in characters. This page is the last when `pageEnd` equals it.
totalPages object Estimated pages in the whole text: `totalChars` divided by the page size, rounded up. Pages are cut back to a paragraph break, so a long act can run a few percent over. Null when no text is served.
pagePrice integer Credits charged for the page in this response, the same as `creditsConsumed` on this route: the price of one page when a page was served, 0 when none was (`available` is false). Each further page cost
estimatedRemainingCredits object Estimated credits to read the rest of the text from `pageEnd`: the pages still to come (`totalChars` less `pageEnd`, over the page size, rounded up) times the price of a page. 0 on the last page. Null
textSha256 object SHA-256 (hex) of the full text of this law. It changes only when the text does, so it is the cheap way to tell whether a copy you hold is current. Body pages carry the same value.
amendatoryMarkup object Whether the language an amending act strikes and inserts survives in the text. `preserved`: it is in `text`, in the convention `markupConvention` names. `lost`: the publisher printed it and our text d
markupConvention object How preserved markup is written, set only when `amendatoryMarkup` is `preserved`. `wdiff`: deleted language is `[-like this-]` and inserted language `{+like this+}`. `publisher_literal`: the publisher
nextCursor object Opaque cursor for the next page: send it as `cursor` on the same path. Null on the last page. It is tied to this exact text, so a cursor from before the text was re-collected is a 409.
hasMore boolean True when more pages follow; fetch them with `nextCursor`. Each page is charged.
View JSON Schema on GitHub

JSON Schema

vaquill-ai-session-law-body-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/vaquill-ai/main/json-schema/vaquill-ai-session-law-body-response-schema.json",
  "title": "SessionLawBodyResponse",
  "description": "Response for `GET /us/session-laws/{sessionLawId}/body`.",
  "x-generated": "2026-10-07",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/vaquill-ai-openapi.yml#/components/schemas/SessionLawBodyResponse",
  "properties": {
    "processingTimeMs": {
      "type": "number",
      "title": "Processingtimems",
      "description": "Server-side time for this request in milliseconds, excluding network transit. Not billed on.",
      "default": 0.0
    },
    "creditsConsumed": {
      "type": "integer",
      "title": "Creditsconsumed",
      "description": "Credits actually charged for this call, never the list price. It includes the `/us/statutes/resolve` fee when a citation was sent where an id goes. 0 when the call was not charged or was refunded (a body that answers `available: false`).",
      "default": 0
    },
    "sessionLawId": {
      "type": "string",
      "title": "Sessionlawid",
      "description": "The law this page belongs to."
    },
    "citation": {
      "type": "string",
      "title": "Citation",
      "description": "The act's citation as its publisher prints it, the same as `citation` on `GET /us/session-laws/{sessionLawId}`. Carried here so a page is attributable on its own, with no second call."
    },
    "jurisdiction": {
      "type": "string",
      "title": "Jurisdiction",
      "description": "Lowercase two-letter code of the state, `dc` or `pr`."
    },
    "session": {
      "$ref": "#/$defs/SessionLawSession",
      "description": "The legislative session the law was enacted in."
    },
    "approvedDate": {
      "anyOf": [
        {
          "type": "string",
          "format": "date"
        },
        {
          "type": "null"
        }
      ],
      "title": "Approveddate",
      "description": "Date the governor approved the act, ISO 8601, as on `GET /us/session-laws/{sessionLawId}`: never an effective date. Null when none is held. See `approvedDateDerived`."
    },
    "approvedDateDerived": {
      "type": "boolean",
      "title": "Approveddatederived",
      "description": "True only when `approvedDate` was filled from the publisher's dated signature label rather than held as the approval date. See the same field on `GET /us/session-laws/{sessionLawId}`.",
      "default": false
    },
    "sourceUrl": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Sourceurl",
      "description": "The official page or file this text was collected from, on a government publisher's host. Present on EVERY outcome, a withheld or not-held law included, so a reader is never at a dead end: where we do not serve the text, this is where to read it. Null only when we hold no government text source for the law."
    },
    "available": {
      "type": "boolean",
      "title": "Available",
      "description": "False when we do not serve this law's text; `reason` says why. A page with `available: false` is not charged."
    },
    "reason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reason",
      "description": "Why `available` is false: `not_held`, `withheld`, `pending` or `empty_text`. Null when the text is served."
    },
    "textStatus": {
      "type": "string",
      "enum": [
        "held",
        "withheld",
        "not_held",
        "pending"
      ],
      "title": "Textstatus",
      "description": "Whether we serve this law's text. `held`: the text is served by `/us/session-laws/{sessionLawId}/body`. `withheld`: we hold the text but a measured defect keeps it from being served, and `withheldReason` says what. `not_held`: we know the act exists and do not hold its text. `pending`: collected and not yet verified."
    },
    "withheldReason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Withheldreason",
      "description": "Present only when `textStatus` is `withheld`: what is wrong with the text we hold. A plain sentence to show, not an enum to branch on."
    },
    "text": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Text",
      "description": "This page of the act's text, exactly as printed, in reading order. Concatenating every page's `text` in order reproduces the whole text. Where `amendatoryMarkup` is `preserved`, struck and inserted language is in the text in the convention `markupConvention` names. Null when `available` is false."
    },
    "pageStart": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Pagestart",
      "description": "Character offset in the full text where this page starts (0-based). Pages are contiguous: the next page's `pageStart` equals this page's `pageEnd`."
    },
    "pageEnd": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Pageend",
      "description": "Character offset just past this page. A page is about 30,000 characters, cut back to a paragraph break where one is near, so the length varies."
    },
    "totalChars": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Totalchars",
      "description": "Length of the whole text in characters. This page is the last when `pageEnd` equals it."
    },
    "totalPages": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Totalpages",
      "description": "Estimated pages in the whole text: `totalChars` divided by the page size, rounded up. Pages are cut back to a paragraph break, so a long act can run a few percent over. Null when no text is served."
    },
    "pagePrice": {
      "type": "integer",
      "title": "Pageprice",
      "description": "Credits charged for the page in this response, the same as `creditsConsumed` on this route: the price of one page when a page was served, 0 when none was (`available` is false). Each further page costs the same.",
      "default": 0
    },
    "estimatedRemainingCredits": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Estimatedremainingcredits",
      "description": "Estimated credits to read the rest of the text from `pageEnd`: the pages still to come (`totalChars` less `pageEnd`, over the page size, rounded up) times the price of a page. 0 on the last page. Null when no text is served. An estimate: a page cut back to a paragraph break can add a page on a long act. Reading a whole law costs `estimatedBodyPages` times the price of one body page (6 credits per page on `GET /us/session-laws/{sessionLawId}/body`). Ohio's 2025 budget act (HB 96) is 9,571,132 characters, about 320 pages or 1,920 credits to read in full; most acts are a page or two."
    },
    "textSha256": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Textsha256",
      "description": "SHA-256 (hex) of the full text of this law. It changes only when the text does, so it is the cheap way to tell whether a copy you hold is current. Body pages carry the same value."
    },
    "amendatoryMarkup": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Amendatorymarkup",
      "description": "Whether the language an amending act strikes and inserts survives in the text. `preserved`: it is in `text`, in the convention `markupConvention` names. `lost`: the publisher printed it and our text does not keep it, so deleted words can read as law: check the source before quoting. `absent`: the act carries no such markup that we found. `not_applicable`: there is no text to carry it."
    },
    "markupConvention": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Markupconvention",
      "description": "How preserved markup is written, set only when `amendatoryMarkup` is `preserved`. `wdiff`: deleted language is `[-like this-]` and inserted language `{+like this+}`. `publisher_literal`: the publisher's own words are left as printed (Minnesota prints `new text begin` / `new text end` and `deleted text begin` / `deleted text end` markers). `mixed`: both in one text."
    },
    "nextCursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Nextcursor",
      "description": "Opaque cursor for the next page: send it as `cursor` on the same path. Null on the last page. It is tied to this exact text, so a cursor from before the text was re-collected is a 409."
    },
    "hasMore": {
      "type": "boolean",
      "title": "Hasmore",
      "description": "True when more pages follow; fetch them with `nextCursor`. Each page is charged.",
      "default": false
    }
  },
  "type": "object",
  "required": [
    "sessionLawId",
    "citation",
    "jurisdiction",
    "session",
    "available",
    "textStatus"
  ],
  "$defs": {
    "SessionLawSession": {
      "properties": {
        "code": {
          "type": "string",
          "title": "Code",
          "description": "Session code, `{year}{type}{ordinal}`. `type` is `R` regular, `S` special, `X` extraordinary, `F` fiscal, `V` veto, `U` unknown. A regular session has no ordinal (`2025R`); a numbered special session carries it (`2025S1`, the first special session of 2025); a lettered one carries its letter (`2025SC`, Florida's Special Session C). `year` is the year the publisher numbers the session by, which for a period spanning two years is the first (District of Columbia Council Period 25 is `2023R`). Pass it as `session` to `GET /us/session-laws/list`."
        },
        "label": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Label",
          "description": "The session's canonical label, as the publisher names it."
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Type",
          "description": "`regular`, `special`, `extraordinary`, `fiscal`, `veto` or `unknown`."
        },
        "year": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Year",
          "description": "The year the session convened, the same year `code` starts with."
        }
      },
      "type": "object",
      "required": [
        "code"
      ],
      "title": "SessionLawSession",
      "description": "The legislative session a law was enacted in."
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/vaquill-ai-session-law-body-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.