---
title: "List + filter the general US law corpus"
method: GET
path: "/us-law"
---

# List + filter the general US law corpus

`GET /us-law`

## Request

- Base URL: `https://ai-law-tracker.com/api/v1`
- URL: `https://ai-law-tracker.com/api/v1/us-law`
- Auth: one of:
  - none
  - API key in header `X-API-Key`
  - HTTP bearer

Statutes, regulations and federal executive instruments at title/chapter/part level, each with its official citation, status, effective date, the official government source URL, and a many-to-many classification into 33 branches and 227 subcategories. Records LINK to the official text; they do not reproduce it.

METERED ON RECORDS SERVED, not just on requests. A request cap stops a fast client; a record cap stops a patient one, and only the second is priced against the size of the corpus. Every response carries `meta.record_budget` with what is left in the day and 30-day windows; exhausting it returns 429 `record_budget_exceeded` (distinct from 429 `rate_limited`).

PRODUCT SCOPE: this endpoint belongs to the US Law Platform. A key licensed only for AI Law Tracker (`product: ai_law`) is NOT refused here — it is served at the PUBLIC (keyless) capability level, the same few records any anonymous caller gets. The response headers say so explicitly: `X-ALT-Product` (what your key holds), `X-ALT-Product-Surface` (`us_law`) and `X-ALT-Product-Scope` (`in_product` | `out_of_product`). Your request rate and daily/monthly quota are NEVER degraded — those are metered per key wherever you call. What degrades is capability: page size, pagination depth, field envelope and the record budget.

## Query parameters

- `branch` string
- `branch_any` string
- `domain` string
- `domain_primary` string
- `jurisdiction` string
- `jurisdiction_level` string
- `instrument_type` string
- `status` string
- `in_force` boolean
- `is_binding` boolean
- `effective_from` string, date
- `effective_to` string, date
- `enacted_from` string, date
- `enacted_to` string, date
- `repealed_from` string, date
- `repealed_to` string, date
- `retrieved_since` string, date-time
- `verified_since` string, date-time
- `citation` string
- `citation_prefix` string
- `identifier` string
- `record_uid` string
- `q` string
- `sort` 'effective_date' | 'enacted_date' | 'repealed_date' | 'retrieved_at' | 'last_verified_at' | 'title' | 'citation'
- `order` 'asc' | 'desc'
- `limit` integer
- `offset` integer

## Response `200`

Matching records, plus the record-budget state.

- object
  - `api_version` string
  - `data` UsLawRecord[]
    - `record_uid` string
    - `jurisdiction_level` 'federal' | 'state'
    - `jurisdiction_slug` string
    - `jurisdiction_name` string
    - `instrument_type` string
    - `instrument_label` string
    - `is_binding` boolean
    - `citation` string: Never withheld at any tier.
    - `identifier` string, nullable
    - `title` string
    - `short_title` string, nullable
    - `summary` string, nullable: Withheld in the trimmed (basic) envelope.
    - `status` string
    - `is_in_force` boolean
    - `enacted_date` string, date, nullable
    - `effective_date` string, date, nullable
    - `repealed_date` string, date, nullable
    - `official_url` string: The official government source. Never withheld at any tier.
    - `full_text_url` string, nullable: Where the text lives. We link it; we do not reproduce it.
    - `source_authority` string, nullable
    - `retrieved_at` string, date-time, nullable
    - `last_verified_at` string, date-time, nullable
    - `primary_branch_id` string, nullable
    - `primary_branch_label` string, nullable
    - `primary_domain_id` string, nullable: `other_unclassified` when not yet substantively classified.
    - `primary_domain_label` string, nullable
    - `domains` object[]: ALL assigned domains, primary and secondary — the many-to-many classification.
    - `edition_year` integer, nullable
    - `edition_label` string, nullable
    - `executive_order_number` integer, nullable
    - `proclamation_number` integer, nullable
    - `presidential_document_number` string, nullable
  - `meta` object
    - `total` integer
    - `count` integer
    - `limit` integer
    - `offset` integer
    - `tier` string: The tier you were SERVED at — `anon` when out of product.
    - `fields` 'basic' | 'full'
    - `gated` string[]: Which parameters your tier clamped.
    - `sampled` boolean: True when the CONTENT gate fired (a scarce instrument type).
    - `sampled_reason` string, nullable
    - `record_budget` object
      - `enforced` boolean
      - `records_remaining_today` integer, nullable
      - `records_remaining_period` integer, nullable
    - `upgrade` string, nullable
  - `attribution` string

## Other responses

- `429`: Rate limited, or `record_budget_exceeded`.
- `503`: Corpus backend unavailable.

---

[API](https://skmtc.dev/ai-law-tracker/apis/ai-law-tracker-public-laws-api.md) · [All operations](https://skmtc.dev/ai-law-tracker/apis/ai-law-tracker-public-laws-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ai-law-tracker/apis/ai-law-tracker-public-laws-api/revisions/25403268a853?raw)
