Skip to main content
POST
Search the text of state session laws

Authorizations

Authorization
string
header
required

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

Body

application/json

Body of POST /us/session-laws/search.

query
string
required

What to look for: a question in plain words (can a sheriff pay with a debit card), words from a title, a quoted phrase ("credit card or debit card"), a citation (63-3004), a code section or a bill number (S.F.No. 1552). Quoted parts must appear verbatim; everything else is matched on its words, stemmed, so licensing finds licensed. Words are matched as the legislature wrote them: teeth cleaning professional does not find an act that says dental hygienist. 2 to 300 characters.

Required string length: 2 - 300
Example:

"can the sheriff pay with a debit card"

jurisdiction
enum<string> | null

Limit to one state, dc or pr. Two-letter code, case-insensitive. Omit to search every jurisdiction we hold. federal and an unknown code are a 422, never charged.

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:

"al"

session
string | null

Limit to one session, by the code session.code reports (2025R, 2025S1). Case-sensitive. Matches the act's own session, so it narrows the TITLE, citation and bill signals; the passage text of an act carries its session year and type but not the code.

Required string length: 1 - 32
Pattern: ^[A-Za-z0-9._-]+$
Example:

"2025R"

series
enum<string>[] | null

Limit to these numbering series, one or more (they combine with OR). One of general, public, public_act, special_act, private_and_special, act, acts, law, local, municipal, appropriation, resolve, resolves, resolution, resolution_chapter, joint_resolution, concurrent_resolution, memorial, initiated_bill, constitutional_amendment. Any other value is a 422, never charged.

Available options:
general,
public,
public_act,
special_act,
private_and_special,
act,
acts,
law,
local,
municipal,
appropriation,
resolve,
resolves,
resolution,
resolution_chapter,
joint_resolution,
concurrent_resolution,
memorial,
initiated_bill,
constitutional_amendment
Example:
instrumentType
enum<string>[] | null

Limit to these kinds of measure, one or more (OR). One of act, joint_resolution, concurrent_resolution, resolution, resolve, memorial, other. Any other value is a 422, never charged.

Available options:
act,
joint_resolution,
concurrent_resolution,
resolution,
resolve,
memorial,
other
Example:
approvedFrom
string<date>

Only laws approved on or after this date, YYYY-MM-DD, inclusive; a real calendar date (2025-02-30 is a 422). A law with no printed approval date never matches.

Pattern: ^\d{4}-\d{2}-\d{2}$
Example:

"2025-03-01"

approvedTo
string<date>

Only laws approved on or before this date, YYYY-MM-DD, inclusive. An end before approvedFrom is a 422, never charged.

Pattern: ^\d{4}-\d{2}-\d{2}$
Example:

"2025-06-30"

limit
integer
default:10

Laws per page, 1 to 25. A page costs the same however many laws it holds, so a larger limit is cheaper per law.

Required range: 1 <= x <= 25
Example:

5

offset
integer
default:0

Laws to skip, for the next page: offset plus limit can reach at most the 60 best matches. Each page is a new search and is charged. Deeper than 60 is a 422, never charged: narrow the search with a filter instead.

Required range: 0 <= x <= 59
Example:

5

Response

The laws that matched, best first. An empty results is a charged answer.

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

query
string
required

The query as read, whitespace collapsed.

Example:

"can the sheriff pay with a debit card"

parsed
SessionLawSearchParsed · object
required

How the query was split into words, phrases, citations and bill numbers.

results
SessionLawSearchResult · object[]

The laws, best first. Empty when nothing matched, which is an answer and is charged.

count
integer
default:0

Laws on this page.

Example:

5

offset
integer
default:0

The offset this page was read from.

Example:

0

limit
integer
default:10

The limit this page was read with.

Example:

5

hasMore
boolean
default:false

True when more laws follow: call again with offset raised by limit (within the 60 best).

Example:

true

creditsConsumed
integer
default:0

Credits actually charged for this call, never the list price. 0 when the call was refunded.

Example:

4

processingTimeMs
number
default:0

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

Example:

38.6

Last modified on October 9, 2026