625 ILCS 5/11-601(c) names one subsection of a section that can run to dozens.
Send it to /us/statutes/resolve and the response carries the whole section as before, plus a pinpoint object holding unit (c) itself.
This recipe shows the call, how to read the result, what a miss looks like, and the three other routes that return the same object.
Endpoints used: GET and POST /us/statutes/resolve, POST /us/statutes/extract-citations, GET /us/statutes/section/{actId}/body, POST /us/statutes/search.
The concept page, Pinpoints, has the full field reference, the citation forms that are read, the error table and coverage by state.
This page is the working example.
Resolve a citation with a pinpoint
Put the pinpoint in the citation, exactly as a court or a statute book prints it. A resolve with a pinpoint costs the resolve price, 2 credits per citation.section object is cut to two fields):
subsection still echoes the dot-joined pinpoint (c).
Read pinpoint.path when you need the unit itself.
Read the result
Five fields decide what you do with the answer.
Some units are a few words that finish a sentence started above them.
leadIn carries those parent sentences, outermost first, so you can quote the unit in context.
Here is Mo. Rev. Stat. 565.021.1(1), the first paragraph of the Missouri offense of murder in the second degree:
text is a fragment.
To quote it in full, join the leadIn text and the unit’s text.
Here is what three of the other citations returned.
Each one was an exact match.
The Wisconsin unit has
leadIn text Offenses., which is the heading of subsection (1).
The Iowa unit (b) opens with two numbered paragraphs, so its own text is empty and the content is in its two children.
When text is empty and children is not, read the children.
The Minnesota unit is a whole subdivision, Subd. 2. with the heading Felony.
structure.source says where the outline came from.
artifact means a pre-built outline of this section was used, and request_time means the outline was parsed from the section text on this call.
Neither is a grade.
structure.quality is the grade, so treat a heuristic unit as a pointer to confirm against the text and a none as “unknown”, never as “this section has no subsections”.
Handle a miss
A pinpoint can name a unit the section does not have. The call still succeeds and is charged, because the section resolved. The block says what happened instead of returning the whole section.Minn. Stat. 609.02 subd. 2(1) asks for paragraph (1) inside subdivision 2, which has none.
This is the pinpoint object of that item from POST /us/statutes/resolve:
matched is false while the text is real text.
It is the deepest unit that exists (path is ["2"]), not the one you asked for.
Never present it as the answer to (2)(1).
no_such_subsection: the outline is known and has no such unit.available, when present, lists the labels that do exist where the lookup stopped, so a mistyped pinpoint can be corrected without another call.no_structure: we could not recover the section’s outline. The section text is still available at/body.
pinpointNote and no pinpoint, the unit could not be looked up this time.
The section resolved and is charged as usual, and a retry usually answers.
Pinpoints in a document
POST /us/statutes/extract-citations finds every citation in a block of text and, with resolve: true, resolves each one.
It is priced per distinct citation.
The two citations below cost 4 credits.
pinpoint) and the full citation as printed (raw).
A row also carries pinpointMatch, the same block as pinpoint above, when the unit could be located in the same call.
Read pinpointMatch.matched first, as you would on a resolve.
When a row has no pinpointMatch, resolve its raw to get the unit.
That is one more resolve call at the resolve price, and you can batch up to 50 of them:
Pinpoints from an act ID you already hold
If you already have anactId, ask the body route for the unit.
You get the full section body and the unit side by side.
A body with a pinpoint is the body price, 6 credits.
html and plain carry the whole section and are cut here):
charStart and charEnd index into the plain text of this same response.
Here plain[1634:1659] is 1. 30 miles per hour; and, the unit’s fullText.
structure.textSha256 is the SHA-256 of that plain, so you can check that a copy of the text you stored still matches the offsets:
pinpoint, or a pinpoint sent together with asOf, is a 422 and is not charged.
Which subsection did a search hit match
Search ranks whole sections. SetincludePinpoint: true and each hit also names the subsection it matched, in a pinpoints object keyed by actId.
It adds nothing to the price of the search.
pinpoints entry that goes with it:
citation is ready to paste back into /us/statutes/resolve.
matchedBy: "passage" means the unit lies inside the passage the search matched.
scope: "unit" means one unit matched best.
The second hit in the same response, 625 ILCS 5/11-604, came back with scope: "parent": several sub-units matched about equally, so the block names their common parent, (b), instead of choosing between them.
A hit that cannot be named says why in reason.
That is a verdict about the hit and never changes which sections are returned, their order or their scores.
Related
Pinpoints
Every field, the citation forms that are read, errors and coverage by state.
Resolve and verify a statute citation
Resolve a citation to its section, one at a time or a document at a time.
Citation formats
Which citation strings resolve, and which are refused on purpose.
Ground an LLM answer (RAG)
Feed the unit, not the whole section, to your model as its source.

