# Jurisdictions & codes

> The two neutral code shapes - ST-COUNTY for a county, ST-RECORD-KIND for a statewide or federal system - and the coverage catalog filtered by state and kind.

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

## A code names a state and a jurisdiction, and nothing else

A **jurisdiction code** is the neutral handle for one place we cover. It is what `sources[].code` reports on a record, what you pass as `live.jurisdictions`, and what the website resolver returns. There is deliberately **no token for how we obtain the data** — no portal, platform or vendor ever appears in a code, a source name, a coverage total, or an error.

## The two shapes

| Shape | For | Form | Examples |
| --- | --- | --- | --- |
| County | a county-level jurisdiction | `<ST>-<COUNTY>` | `AL-BALDWIN`, `TX-DALLAS`, `TX-HARRIS` |
| Statewide / federal | a state or federal system, by the **kind of record** it holds | `<ST>-<RECORD-KIND>` | `TX-DOC`, `OK-COURT`, `US-WARRANT` |

`<ST>` is the two-letter USPS state code (`US` for a federal system). `<COUNTY>` is the county name, upper-cased, spaces hyphenated — `Palm Beach` → `PALM-BEACH` — and it does not carry the word "County".

## The record-kind vocabulary

| Suffix | Means | Example |
| --- | --- | --- |
| `DOC` | a state prison / Department of Corrections inmate system | `TX-DOC` |
| `COURT` | statewide court records / dispositions | `OK-COURT` |
| `WARRANT` | a warrant system | `US-WARRANT` |
| `REGISTRY` | a statewide registry | `FL-REGISTRY` |
| `JAIL` | a statewide jail-roster system | `KY-JAIL` |

## GET /v1/criminal/jurisdictions

The coverage catalog as codes — every jurisdiction the product covers, filterable by `state`, by `recordKind` (`jail-roster`, `court`, `doc-inmate`, `registry`, `warrant`) and by `live=true` for only those reachable for live verification. Requires an API key.

```bash
curl "https://api.offendersearch.app/v1/criminal/jurisdictions?state=TX&live=true" \
  -H "X-API-Key: $OFFENDERSEARCH_KEY"
```

```json
{
  "coverage": { "jurisdictions_total": 1410, "jurisdictions_live_connector": 727,
                "jurisdictions_pending_connector": 683, "states_covered": 50 },
  "jurisdictions": [
    { "code": "TX-DALLAS", "state": "TX", "county": "Dallas",
      "recordKind": "jail-roster", "level": "county", "live": true }
  ],
  "count": 1
}
```

> The `coverage` block reports the true totals from the product's own manifest — covered today vs known-but-pending — so a jurisdiction not yet covered is counted, never silently omitted. **Don't parse a code for meaning beyond state + place**; enumerate the live values from the catalog.

---

## Related

- Previous: [Coverage today & the sources endpoint](https://offendersearch.app/docs/criminal/coverage.md)
- Next: [Resolve a website to a code](https://offendersearch.app/docs/criminal/resolve.md)
- Index: [Criminal Search API reference](https://offendersearch.app/docs/criminal.md)
