actId from the results, fetch that section’s metadata and full text, and discover what is queryable.
Every path is prefixed with /api/v1 and every request needs an Authorization: Bearer vq_key_... header.
1
Get an API key
Create a key in your dashboard under API Keys. Copy it once, it will not be shown again. See Authentication for details.
2
Make your first search
Send a natural language query to A trimmed response looks like this. The top-level fields describe the page, and each
POST /us/statutes/search. Scope it with corpusType and state for tighter results.results entry carries a citation, an excerpt, and links to the official source.count is how many results came back on this page, not a corpus-wide match count. No such total exists, because the API ranks a bounded candidate set rather than scoring the whole corpus. Use hasMore to decide whether to fetch the next page. See Pagination.The response also carries total, a deprecated alias for count kept for backward compatibility. Its name reads as a corpus-wide total, which it never was. Read count in new code.creditsConsumed is what this call actually cost. Read it rather than assuming a list price: failed and refunded work bills 0, and includeBody: true bills each row that returns text on top of the search. GET /api-credits/pricing returns the live matrix.3
Fetch the section and its body
Take an
actId from the results (for example USC_T42_C21_S1983). Call GET /us/statutes/section/{actId} for metadata, and GET /us/statutes/section/{actId}/body for the full text.4
Discover coverage
The corpus grows weekly. Call
GET /us/statutes/coverage to see the corpus legend and, for each jurisdiction, which corpusType tokens have data. Pass one of those tokens back into /us/statutes/search.Next steps
Pagination
Page through search results with
limit, offset, and hasMore.Best practices
Scope queries, cache coverage, and handle errors well.

