# Jurisdictions & codes

> Every jurisdiction code the API accepts, how the jurisdictions array scopes a search, and why query.state filters a result rather than selecting registries.

- **HTML:** https://offendersearch.app/docs/jurisdictions
- **Base URL:** https://api.offendersearch.app
- **Authentication:** `X-API-Key` request header
- **OpenAPI:** https://offendersearch.app/openapi.json · https://offendersearch.app/openapi.yaml
- **All documentation as markdown:** https://offendersearch.app/docs.md

## Scoping a search

The `jurisdictions` array controls *which jurisdictions run*. Omit it or send `null` to search the full dataset — the default and the common case. Naming codes narrows the search to exactly those jurisdictions, which reduces both latency and the number of sources reported in `sourceStatus`.

- `jurisdictions: null` → the full dataset (default).
- `["IL"]` → Illinois only.
- `["IL", "IN"]` → Illinois *and* Indiana only.

```json
{
  "query": { "firstName": "Maria", "lastName": "Lopez" },
  "jurisdictions": ["TX", "NM"]
}
```

## query.state filters a result; jurisdictions selects the search

These are two different controls. `jurisdictions` decides which jurisdictions are queried at all. `query.state` does not change that — every jurisdiction is queried and `state` narrows the answer. Set `locationScoped: true` alongside `query.state` when you explicitly want the narrower, cheaper fan-out; the response then reports `counts.sourcesSkippedByScope` and a NARROWED SEARCH warning, so the scope decision is visible in the payload.

**`query.state` filters as a union, not as a plain residence test.** A record is kept when either it has an address in that state *or* that state’s jurisdiction is the one holding it. Those are different populations — 105,028 records are held by a jurisdiction they have no address in, and 70,973 carry no address state at all and are reachable only by the second half. Every record returns `registrationState` and `addressStates` so you can tell which half matched without a second call.

```json
// Filter: query every jurisdiction, keep Texas-connected records.
{ "query": { "lastName": "Doe", "state": "TX" } }

// Scope: query only the jurisdictions covering Texas.
{ "query": { "lastName": "Doe", "state": "TX" }, "locationScoped": true }

// Scope, explicitly: query exactly these jurisdictions.
{ "query": { "lastName": "Doe" }, "jurisdictions": ["TX"] }
```

`state` accepts a 2-letter USPS code or the full state name — identical results. A value that cannot be resolved returns `422` rather than an empty result, so a typo is never mistaken for no matches.

## Jurisdiction codes

Jurisdiction codes are the standard USPS state & territory abbreviations, and they are the same vocabulary that `query.state`, `registrationState`, `addressStates` and `sources[].jurisdiction` use — so a value you read off a record can be sent straight back as a filter.

| Code | Jurisdiction |
| --- | --- |
| `AL` | Alabama |
| `AK` | Alaska |
| `AZ` | Arizona |
| `AR` | Arkansas |
| `CA` | California |
| `CO` | Colorado |
| `CT` | Connecticut |
| `DE` | Delaware |
| `DC` | District of Columbia (territory) |
| `FL` | Florida |
| `GA` | Georgia |
| `HI` | Hawaii |
| `ID` | Idaho |
| `IL` | Illinois |
| `IN` | Indiana |
| `IA` | Iowa |
| `KS` | Kansas |
| `KY` | Kentucky |
| `LA` | Louisiana |
| `ME` | Maine |
| `MD` | Maryland |
| `MA` | Massachusetts |
| `MI` | Michigan |
| `MN` | Minnesota |
| `MS` | Mississippi |
| `MO` | Missouri |
| `MT` | Montana |
| `NE` | Nebraska |
| `NV` | Nevada |
| `NH` | New Hampshire |
| `NJ` | New Jersey |
| `NM` | New Mexico |
| `NY` | New York |
| `NC` | North Carolina |
| `ND` | North Dakota |
| `OH` | Ohio |
| `OK` | Oklahoma |
| `OR` | Oregon |
| `PA` | Pennsylvania |
| `RI` | Rhode Island |
| `SC` | South Carolina |
| `SD` | South Dakota |
| `TN` | Tennessee |
| `TX` | Texas |
| `UT` | Utah |
| `VT` | Vermont |
| `VA` | Virginia |
| `WA` | Washington |
| `WV` | West Virginia |
| `WI` | Wisconsin |
| `WY` | Wyoming |
| `PR` | Puerto Rico (territory) |
| `GU` | Guam (territory) |
| `USVI` | US Virgin Islands (territory) |
| `AS` | American Samoa (territory) |
| `CNMI` | Northern Mariana Islands (territory) |

---

## Related

- Previous: [Freshness tiers & source coverage](https://offendersearch.app/docs/freshness.md)
- Next: [Async search, webhooks & idempotency](https://offendersearch.app/docs/async-and-webhooks.md)
- Index: [Offendersearch API documentation](https://offendersearch.app/docs.md)
