Skip to main content
POST
Get many state session laws at once, by id or citation

Authorizations

Authorization
string
header
required

API key issued from the developer dashboard. Pass as Authorization: Bearer vq_key_... (preferred).

Body

application/json

Batch read. See POST /us/session-laws/batch.

ids
string[]
required

State session law ids, or citations, to read: up to 50 DISTINCT entries per call. Each entry is read exactly as the {sessionLawId} path of GET /us/session-laws/{sessionLawId} reads one: an id as sent, an id carrying copy damage, or a citation (Minn. Laws 2025, ch. 1, P.A. 104-0001, S.F.No. 1552). Entries are trimmed, and blank ones are dropped. Duplicates collapse FIRST (the first spelling wins, order is kept) and the cap applies to what is left, so a list quoting one law sixty times is one entry; deduped says how many were collapsed. 200 is the ceiling on the raw list. An entry is at most 300 characters. Federal ids (SAL_...) and endpoint names are misses, never charged.

Required array length: 1 - 200 elements
Example:
jurisdiction
enum<string> | null

Optional two-letter state code that scopes how a CITATION in ids is read, for the whole batch: it supplies the state a citation does not name (Laws 2025, ch. 1 with mn is Minnesota's) and vetoes a state the citation does name or whose form belongs to another. Ignored for an id. The 50 states, dc and pr, case-insensitive; federal or an unknown code is a 422 and nothing is charged. Omit it for a batch whose citations each name their own state.

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

"mn"

includeBody
boolean
default:false

Return the FIRST page of each served law's text inline, on body, beside the record. A page is about 30,000 characters and costs the ordinary body price (6 credits) per law whose page is served; a law whose text is withheld, not held or empty comes back with body: null and is not charged for it. Read creditsConsumed rather than computing the total: the worst case is 50 laws at 2 + 6 credits each. bodyNextCursor continues a longer act on GET /us/session-laws/{sessionLawId}/body.

Example:

true

Response

One entry per distinct id or citation: the served laws in laws, every other entry in notFound with its status and reason. Not every entry is a law: read notFound, and creditsConsumed for what was billed.

Response for POST /us/session-laws/batch.

laws
SessionLawBatchLaw · object[]

The served laws, one per distinct law, in the order the entries of ids first reached them. Entries that missed are NOT here, so a client mapping by position must use input on each law (or notFound), never the index.

resolved
SessionLawResolution · object[]

One entry per input that did NOT match an id exactly as sent: a citation resolved to its law, or an id cleaned of whitespace, quotes or a trailing period. Includes an input whose law an earlier entry already produced, so every input is mappable onto laws. Empty when every entry was an exact id.

notFound
SessionLawBatchMiss · object[]

Every entry that did not yield a law, in the order sent, each with its status and reason. A miss is not charged for the route's own price. An entry read as a CITATION also paid the resolve price, kept whenever we gave a verdict on it (unparsed, ambiguous, needs_jurisdiction, federal) and refunded on session_not_fully_collected and error. An id pays no resolve price.

count
integer
default:0

Number of laws returned in laws.

Example:

2

deduped
integer
default:0

How many entries of ids were collapsed because an earlier entry was identical after trimming. Zero when none were. Two DIFFERENT spellings of one law are not counted here: the law appears once in laws and both spellings are in resolved.

Example:

0

creditsConsumed
integer
default:0

Credits actually charged for this call, never the list price: 2 per law served, plus the 2-credit resolve price for each citation whose resolution is kept, plus the body price per body served. Misses and failures bill nothing for the route.

Example:

4

processingTimeMs
number
default:0

Server-side time for this request in milliseconds, excluding network transit. Not billed on.

Example:

512.3

Last modified on October 9, 2026