Skip to main content
GET
Get a state session law, by id or by citation

Authorizations

Authorization
string
header
required

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

Path Parameters

session_law_id
string
required

A STATE session law's id, for example SSL_MN_2025S1_G_Y2025_C1, from a /us/session-laws/list result.

A citation also works here on GET /us/session-laws/{sessionLawId}, and resolvedFrom says what your input matched. Name the state in the citation: Minn. Laws 2025, ch. 1, 2025 Minn. Laws ch. 1, Ch. 1, Laws of Minnesota 2025, Ch. 2025-12, Laws of Fla., 2025 Wash. Sess. Laws ch. 12, La. Acts 2025, No. 12, Pa. Act 12 of 2025, Minn. S.F. 1552 (2025), MN: Laws 2025, ch. 1. A form only one state uses needs no state: P.A. 104-0001 (Illinois), Pub. Act No. 26-151 (Connecticut), S.L. 2025-12 (North Carolina), Stats. 2025, ch. 12 (California), D.C. Law 25-713. The publisher's printed form (CHAPTER 2025-12, S.F.No. 1552) and the citation we print on every law also work. A form several states share (Laws 2025, ch. 1, HB 123, Act 12 of 2025) is a 404 with reason: needs_jurisdiction, the states it exists in and one candidate per state: we never guess the state. A citation naming several laws of one state (Minnesota 2025 has two Chapter 1s) is a 404 listing all of them, candidateCount and truncated saying whether the list is complete, and defaultSessionLawId the regular session's law where there is exactly one conventional reading. An id or citation that matches nothing in a session we have only partly collected is a 404 with reason: session_not_fully_collected and that session's coverage: the law may exist and not be held yet, so it is never charged, the resolve price included. A citation costs the route's price PLUS the /us/statutes/resolve price (2 credits), the second charged whether or not it resolves. URL-encode the citation; one containing / cannot travel in a path segment.

Federal session laws (SAL_..., Pub. L. 118-5, the Statutes at Large) are served by /us/statutes/section, not here, and code citations (26 U.S.C. § 1) by /us/statutes/resolve.

Required string length: 1 - 300
Example:

"SSL_MN_2025R_G_Y2025_C1"

Query Parameters

jurisdiction
enum<string> | null

Optional two-letter state code that scopes how a CITATION sent in place of the id is read. It supplies the state a citation does not name (Laws 2025, ch. 1 with jurisdiction=mn is Minnesota's) and it vetoes a state the citation does name or whose form belongs to another: Minn. Laws 2025, ch. 1 with jurisdiction=tx is a 404 unresolved_citation (the resolution fee is kept), never answered from Minnesota. Ignored, with no effect, when you send an id. The same codes as the list's jurisdiction: the 50 states, dc and pr, case-insensitive; federal or an unknown code is a 422 and is 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:

"mn"

Response

The law's record. textStatus says whether its text is served; resolvedFrom is present when a citation was sent in place of an id.

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

sessionLawId
string
required

Permanent identifier of the law, the key to use everywhere. Shape SSL_{state}_{session code}_{series}[_Y{numberingYear}]_{C<chapter>|B<billKey>}. It never changes: a correction to our reading of a law keeps the old id working. Pass it to GET /us/session-laws/{sessionLawId}.

Example:

"SSL_MN_2025R_G_Y2025_C1"

jurisdiction
string
required

Lowercase two-letter code of the state, dc or pr. Federal acts are not served by this family: they are on /us/statutes/section.

Example:

"mn"

citation
string
required

The act's citation as its publisher prints it, falling back to {session label}, ch. {number} when none is printed. It is NOT unique: many states print a bare CHAPTER 1 every session. Key on sessionLawId.

Examples:

"CHAPTER 1--S.F.No. 1552"

"ACT No. 2"

"Chapter 1, Laws of 2025"

session
SessionLawDetailSession · object
required

The legislative session the law was enacted in, and whether we hold all of it (coverageStatus).

series
string
required

The numbering series the law belongs to within its session. Most states have one, general. Others number acts, resolutions or local laws separately (public, act, acts, law, public_act, resolve, resolution_chapter, local, ...). An open list that grows as jurisdictions load. Filter with series on the list.

Example:

"general"

instrumentType
string
required

What kind of measure this is: act, joint_resolution, concurrent_resolution, resolution, resolve, memorial or other. An open list. A resolution that was numbered and published among the session laws is included, with isLaw saying whether it binds as law.

Example:

"act"

enactmentOutcome
string
required

How the measure became, or failed to become, law. signed; became_law_without_signature; veto_overridden; line_item_veto (signed with some items vetoed); vetoed and pocket_veto (not law); not_presented (no governor action recorded, usual for resolutions); approved_by_voters; unknown (the publisher does not say).

Example:

"signed"

textStatus
enum<string>
required

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.

Available options:
held,
withheld,
not_held,
pending
Example:

"held"

identityConfidence
string
required

How firmly the law's identity (session and number) is established. single_source: read from one publisher source, which is every state law at launch. confirmed: agreed by a second independent source, the level at which a lawId can be minted. inferred: derived by us rather than printed. disputed: sources disagree. The sessionLawId is the same at every level.

Example:

"single_source"

processingTimeMs
number
default:0

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

Example:

747.5

creditsConsumed
integer
default:0

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

Example:

2

lawId
string | null

The law's identifier in the open us1 scheme. Null until its identity is confirmed by a second source and the us1 state shape is minted, so it is null on every state law today. Use sessionLawId, which is always present.

Example:

null

citableAs
string | null

The law cited the way a lawyer writes it, from the state's own form: Minn. Laws 2025, ch. 1, 2025 Fla. Laws ch. 3, Ill. Pub. Act 104-0001, S.L. 2025-12 (North Carolina), Stats. 2025, ch. 12 (California), Ohio S.B. 1 (2025) for a state that numbers no chapters. A law in a special or extraordinary session carries it (Minn. Laws 2025, 1st Spec. Sess., ch. 1). Every value is read back through the grammar that GET /us/session-laws/{sessionLawId} accepts a citation in, and must name this law; one that would not is null, never guessed. Null where the state's form is not known, for a series with no standard form (resolutions, memorials), or for a law with neither a chapter nor a bill key. Where a regular and a special session each have a chapter 1, the bare form is the regular session's law and resolves with that law flagged as the default; the special session's carries its session. Distinct from citation, which is the publisher's printed form.

Example:

"Minn. Laws 2025, ch. 1"

citationShort
string | null

A compact label for tables and badges: MN ch. 1 (2025), IL P.A. 104-0001, OH S.B. 1 (2025). Not a form to send back: use citableAs or the sessionLawId. Null exactly when citableAs is null.

Example:

"MN ch. 1 (2025)"

number
string | null

The chapter or act number exactly as printed, as a string. It is not always an integer: 1, 2025-12 (Florida), 104-0001 (Illinois), 1A. Null where the state does not number its acts (see billKey).

Example:

"1"

billKey
string | null

Normalised bill identifier (chamber and type letters plus the number) that stands in for a chapter number in states that do not number their acts (Missouri, Ohio, Nebraska). House Bill 2 is HB2. Null whenever number is set. Part of the sessionLawId as B<billKey>.

Example:

"HB2"

billNumber
string | null

The bill the act originated as, as the publisher prints it. Matches as a citation on GET /us/session-laws/{sessionLawId}.

Example:

"S.F.No. 1552"

numberingYear
integer | null

The year of the numbering sequence the chapter number belongs to, where the state numbers by year (Minnesota, Florida, Texas). It appears in the sessionLawId as _Y2025. A chapter number is only unique within a session and numbering year: Minnesota's regular and first special sessions of 2025 each have a Chapter 1. Null where one sequence runs across the session (Louisiana).

Example:

2025

title
string | null

The act's long title as printed, usually beginning An act relating to. It names the code sections the act amends in prose.

Example:

"An act relating to agriculture; modifying financial reporting requirements for grain buyers; amending Minnesota Statutes 2024, section 223.17, subdivision 6."

shortTitle
string | null

The act's short title when the publisher gives one (Ohio, New York, the District of Columbia and a few others do), otherwise null.

Example:

"Enact Advance Ohio Higher Education Act"

approvedDate
string<date> | null

Date the governor (or the equivalent authority) approved the act, ISO 8601. Never an effective date: an act is usually in force on a different day, which is effectiveDates. Null when the publisher prints no approval date. Where the registry holds none but the publisher's own dated label on otherDates names the governor's signature, it is filled from that label and approvedDateDerived is true. The approvedFrom and approvedTo filters do NOT match a derived date: they read the registry's own approval date.

Example:

"2025-03-17"

approvedDateDerived
boolean
default:false

True only when approvedDate was not held as an approval date and we filled it from a dated label printed on the act (today South Dakota's Signed by the Governor, listed under otherDates), on an act whose enactmentOutcome is signed or line_item_veto. False when approvedDate is null or is the registry's own. We never read a presented or passed date as an approval, nor a signing label on an act that became law without signature.

Examples:

false

true

effectiveFirst
string<date> | null

Earliest of the act's effective dates we hold. Null when we hold none: a date the publisher does not print, or prints as a relative rule (the day following final enactment), is not guessed. The full list is effectiveDates on GET /us/session-laws/{sessionLawId}.

Example:

"2025-09-01"

effectiveLast
string<date> | null

Latest of the act's effective dates we hold. Equal to effectiveFirst for an act with one date; null when we hold none.

Example:

"2026-01-01"

isLaw
boolean | null

True for an act that is law. False for a numbered measure that is not: a vetoed bill, a pocket veto. Null when enactmentOutcome does not settle it (not_presented, unknown).

Example:

true

withheldReason
string | null

Present only when textStatus is withheld: a plain sentence saying what is wrong with the text we hold and what would release it. Free text, not an enum: show it, do not branch on it. The record itself (dates, sources, title) is still served and still correct.

Example:

"LA: struck (deleted) law is merged into the text as if current while the record declares the markup preserved or absent (audit 2026-10-03). Awaiting a re-run with strike and underline recovery."

charCount
integer | null

Length of the law's full text in characters, the same as totalChars on the body. Null when there is no text. It is reported for a withheld law too (a fact about the text we hold), though that text is not served.

Example:

5470

estimatedBodyPages
integer | null

How many body pages the text takes: charCount divided by the page size (30,000 characters), rounded up. Pages are cut back to a paragraph break, so a long act can run a few percent over. Null unless textStatus is held: there is nothing to read. 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.

Example:

1

textSha256
string | null

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.

Example:

"55c7a8d08647e41f87e23fc2016881a6583911a1d5cfa8687403442e9096451b"

versionNo
integer | null

Revision counter of our record of this law: 1 for the first collection, higher after a re-collection changed the text or the metadata. Not a legislative version.

Example:

1

amendatoryMarkup
string | null

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.

Example:

"preserved"

markupConvention
string | null

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.

Example:

"publisher_literal"

documentKind
string | null

What kind of document the text was taken from: session_law_print (the publisher's printed chapter), enrolled_bill, slip_law, volume_extract (carved out of a bound volume) or other. An open list. Null when there is no text.

Example:

"session_law_print"

licenseNote
string | null

What the law's licence class is and what it means for reuse, in a plain sentence: Government public: published by a government body with no restrictive terms, so the text may be reused, including commercially. Every law served with text is of a class that permits reuse; a note saying otherwise describes a record whose text is held back. Free text to show, not an enum to branch on: branch on textStatus.

Example:

"Government public: published by a government body with no restrictive terms, so the text may be reused, including commercially."

updatedAt
string | null

When this law's record last changed in our registry, ISO 8601 UTC with a +00:00 offset, the same form as the statutes routes. Use it with updatedSince on the list to sync only what changed.

Example:

"2026-10-05T09:06:39.998043+00:00"

citationAsPrinted
string | null

The citation exactly as the publisher prints it. Null when none is printed.

Example:

"CHAPTER 1--S.F.No. 1552"

vetoStatusAsPrinted
string | null

The publisher's own words on the governor's action. enactmentOutcome is our normalised reading of it.

Example:

"Signed by the governor March 17, 2025, 10:54 a.m."

pageCount
integer | null

Pages in the source document when it is a PDF. Null for HTML sources.

Example:

162

sourceUrl
string | null

The official page or file the act's text was collected from, on a government publisher's host: the first sources entry whose role is text and whose hostClass is gov. Open it to verify the text against the publisher. Null when we hold no such source (a law we know exists and have not collected) or when the text source is not a government host. Present on a withheld law too: the official copy is always where to go when we hold the text back.

Example:

"https://www.revisor.mn.gov/laws/2025/0/Session+Law/Chapter/1/"

effectiveDates
SessionLawDate · object[]

Every effective date the publisher prints for the act, in printed order. Always a list, never null; empty when none is held. Empty does NOT mean the act is not in force: a date printed as a rule (the day following final enactment) or not printed in the publisher's metadata is not guessed, and the approval date is never substituted for it. An act can take effect in parts, so a date may carry a scopeAsPrinted.

Examples:
otherDates
SessionLawDate · object[]

Every other date printed on the act, each with its kind: the approval date, filing dates and the publisher's own milestones (presentment to the governor).

Example:
codeSectionsAffected
CodeSectionAffected · object[]

The code sections the publisher's own table lists the act as affecting, as printed. Always a list. Empty when the publisher prints no such table, which is common: the title still names sections in prose. We do not read sections out of the act text into this list.

Examples:
sources
SessionLawSource · object[]

The publisher documents the record was collected from, with the hash and fetch time of each: the audit trail from this response back to the official copy.

Example:
publisher
SessionLawPublisher · object | null

What the publisher itself printed or published about the act, beyond the dates and citation above: its own structured fields verbatim (publisherFields: the bill's action history, committees, sponsors, and vote counts where the publisher gives them), its own identifiers, the legislature number and the printed pages. Omitted, not null, when it cannot be read or we only know the act exists.

provenance
SessionLawProvenance · object | null

How we came by the text (the extraction method, the bound volume it was cut from) and the collector's own caveats on the record. Omitted, not null, when it cannot be read or we only know the act exists.

resolvedFrom
SessionLawResolution · object | null

Present only when your input did not match an id as sent: it says what was matched and how. Null when you sent an exact id.

Last modified on October 9, 2026