Criminal Records API · v1.0.0

Understanding record types

A developer must never be left guessing whether a record is an arrest, a charge, a conviction, a warrant or something else. Here is how to tell.

Two fields: the source's label and the closed category

FieldVocabularyUse
recordCategoryClosed: court, jail, prison, warrant, registry, exclusion, otherBranch on this. It is also a filter (filters.recordCategory) and a facet.
recordTypeOpen — the source's own label. Most common today: jail, court_case, jail_booking, arrest, doc_inmate, registry, criminal_record, warrant, wanted_fugitive, federal_wanted, healthcare_exclusion, plus rarer registry-specific labelsShow it to a reviewer; never branch on exact strings.
currentStatusOpen — the source's status text passed through. Usually one of in_custody, released, on_parole, on_probation, active_warrant, wanted, registered, disposed, absconder, deceased, excluded, unknown; sources also write booked, scheduled, arrested, incarcerated, filed, indicted, pendingDisplay. For logic use normalized.custodyStatus.
normalized.custodyStatusClosed: the twelve values above (unknown when the source said nothing)Branch and filter on this (filters.custodyStatus).
Important. The normalized object is where every closed vocabulary lives: recordCategory, custodyStatus, topSeverity, hasConviction, convictionCount, chargeCategories[], outcomes[] and a per-case, per-charge classification. The top-level fields keep the source's own words. Read Record normalization.

The record categories

`recordCategory`Comes fromWhat one record isKey fields
jailCounty jail rosters and booking logsOne person booked into a jail: when, on what charges, and release where published. An arrest-stage record.booking (bookingNumber, bookingDate, arrestDate, arrestingAgency, bond, holds[]), dateIncarcerated, releaseDate, custodyFacility, charges usually without a disposition, mugshotUrl
prisonState departments of corrections and the Federal Bureau of PrisonsA person serving or having served a sentence. Charges on a prison record are offenses of conviction.sentence, parole, custody, custodyFacility, releaseDates, supervision, normalized.hasConviction
courtCriminal court dockets and dispositionsOne case: filing, charges, pleas, dispositions, sentence. The record kind that decides conviction.cases[].caseNumber, court, filedDate, status, charges[].disposition, normalized.outcomes[]
warrantWarrant and wanted-person systemsAn open matter: an active warrant or a wanted notice.warrant (issuedDate, issuedBy, type, outstanding, captured), normalized.custodyStatus active_warrant / wanted
registryStatewide registries published through this productA registration.registry (name, registeredOn, compliance, offenderType), custodyStatus: "registered"
exclusionFederal and state exclusion listsAn administrative or conviction-based exclusion; returned with include: ["exclusions"] when the basis is administrative.exclusion (program, authority, convictionBased, excludedOn, reinstatedOn)
otherAnything the category map does not placeRead recordType and the fields present.—

Four vocabularies that all say "kind"

WhereFieldVocabularyMaps to `recordCategory`
A recordrecordCategoryClosed: the seven values above—
A recordrecordTypeOpen: the source's label (jail_booking, court_case, doc_inmate, wanted_fugitive, healthcare_exclusion, …)Via the category map; normalized.recordCategory is the same value
GET /v1/criminal/jurisdictionsrecordKindjail-roster, court, doc-inmate, warrant, registry, exclusionjail, court, prison, warrant, registry, exclusion
GET /v1/criminal/sourcesrecordTypeHuman labels: County jail roster, Court records, Prison system, Warrant system, Statewide registry, Exclusion list, RecordsSame order; Records → other

When normalized is null the record could not be classified: treat its outcome as unknown, keep recordCategory (always present) and read the source words.

Reading one record

{
  "recordType": "court_case",
  "recordCategory": "court",
  "currentStatus": "disposed",
  "matchConfidence": 0.82,
  "matchState": "dob_match",
  "name": { "first": "Jordan", "middle": "", "last": "Rivera", "suffix": "" },
  "dob": { "date": "1988-04-12", "birthYear": 1988, "birthMonth": 4, "age": 38, "ageAsOf": "2026-10-24", "dobPrecision": "full" },
  "state": "TX", "county": "Harris",
  "cases": [
    { "caseNumber": "123456701010", "court": "Harris County District Court", "county": "Harris", "state": "TX", "level": "county",
      "filedDate": "2021-03-02", "status": "closed",
      "charges": [ { "statute": "31.03", "description": "THEFT PROP >=$2,500<$30K", "severity": "felony",
                     "disposition": "convicted", "dispositionDate": "2021-11-18", "offenseDate": "2021-02-20", "plea": "", "counts": 1 } ] }
  ],
  "normalized": {
    "recordCategory": "court", "custodyStatus": "disposed", "topSeverity": "felony",
    "hasConviction": true, "convictionCount": 1, "chargeCategories": ["theft"], "outcomes": ["convicted"],
    "cases": [ { "stage": "closed", "caseClass": "felony",
                 "charges": [ { "category": "theft", "severity": "felony", "severityBasis": "published", "outcome": "convicted", "convicted": true } ] } ]
  },
  "sources": [ { "code": "TX-HARRIS", "level": "county", "recordUrl": "https://…", "lastCheckedAt": "2026-10-24T03:10:00+00:00", "live": false } ],
  "lifecycle": { "firstSeen": "…", "lastSeen": "…", "presentInLastSweep": true, "droppedOut": false, "droppedOutDetected": null, "dropInterpretation": "unknown", "sourceLastUpdated": null }
}

A court record (recordCategory: "court"), decided (custodyStatus: "disposed"), one charge, convicted (normalized.hasConviction: true). A jail record for the same arrest would carry booking.*, dateIncarcerated and a custodyFacility, its charges usually with an empty disposition, and normalized.hasConviction: null or false. Every field: the Record object.

Product overview