Skip to main content
This guide walks through a first search, then fetches one section’s metadata and full text using the actId from the results, and finally checks what is queryable. Every path is prefixed with /api/v1 and every request needs an Authorization: Bearer vq_key_... header.
Prefer a GUI? The public Postman collection has every endpoint as a ready-to-run request. Fork it, set your API key as the bearer token, and send.
1

Get an API key

Create a key in your dashboard under API Keys. Copy it right away, because it is not shown again. See Authentication for details.
2

Make your first search

Send a natural language query to POST /us/statutes/search. Scope it with corpusType and state for tighter results.
A trimmed response looks like this (captured 2026-10-22; fields that were null are left out of this sample, the live response lists them as null, and only the first of five results is shown). The top-level fields describe the page. Each results entry has a citation, an excerpt, and links to the official source.
count is the number of results on this page. It is not a corpus-wide match count, and 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 suggests a corpus-wide total, but it never was one. Read count in new code.
creditsConsumed is what this call actually cost. Failed and refunded work bills 0, and includeBody: true bills each row that returns text on top of the search, so read the field instead of assuming a list price. 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.
The body endpoint returns html and plain text plus an available flag and a source.
4

Discover coverage

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

Postman collection

Try every endpoint without writing code.

SDKs

Prefer a client library? The official Python and TypeScript SDKs wrap these calls with retries, typed errors and a spend guard.
Last modified on October 29, 2026