Raw schema
{
"type": "object",
"properties": {
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Given name, e.g. 'John'.",
"title": "First Name"
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Surname β the primary match key, e.g. 'Smith'.",
"title": "Last Name"
},
"dob": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date of birth 'YYYY-MM-DD'. Improves match precision; drives dobVerification (dob_match / year_match).",
"title": "Dob"
},
"age": {
"anyOf": [
{
"maximum": 130,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Age filter, used when DOB is unknown. Matched +/-1 year for birthday drift.",
"title": "Age"
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Residence city filter.",
"title": "City"
},
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "2-letter state/territory code (e.g. 'IL', 'PR'), or the full name. A residence FILTER β it does NOT change which registries run; all 58 are still searched. It filters as a UNION: a record is kept when it has an address in that state OR that state's registry is the one holding it. Each record carries `registrationState` and `addressStates` so you can tell which half matched; for the registration half alone, pass `jurisdictions` instead.",
"title": "State"
},
"zipcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Residence ZIP (first 5 digits used).",
"title": "Zipcode"
},
"address": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Fuzzy street-address filter (every token must appear in some record address).",
"title": "Address"
},
"lat": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Latitude for a GIS radius search (pair with lng).",
"title": "Lat"
},
"lng": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Longitude for a GIS radius search (pair with lat).",
"title": "Lng"
},
"radius_miles": {
"anyOf": [
{
"exclusiveMinimum": 0,
"maximum": 100,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "GIS radius in miles around lat/lng. Defaults to 1 when a point is given; capped at 100.",
"title": "Radius Miles"
},
"q": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Free-text search across name/alias/address/city/state/zip (all tokens must appear).",
"title": "Q"
},
"jurisdictions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Registry codes to query (e.g. ['IL','TX']). Omit/null = ALL 58 registries. See get_registry_coverage for codes.",
"title": "Jurisdictions"
},
"match": {
"default": "balanced",
"description": "Fuzzy tolerance: strict=exact; balanced=nicknames/variants/initials/typos on first name, exact last; broad=also prefix/typo on last name.",
"enum": [
"strict",
"balanced",
"broad"
],
"title": "Match",
"type": "string"
},
"freshness": {
"default": "daily",
"description": "Cache/pricing tier: daily=<=24h (default), weekly=<=7d.",
"enum": [
"daily",
"weekly"
],
"title": "Freshness",
"type": "string"
},
"location_scoped": {
"default": false,
"description": "OPT-IN ONLY, and never inferred from `state`. If true AND a state is set, run only the registries covering that state instead of all 58. It is a cost knob that COSTS RECALL: anyone registered by another state's registry while residing in the requested state is excluded (7.0% of records). The response reports counts.sourcesSkippedByScope and a NARROWED SEARCH warning when it applies. Leave it false unless the caller explicitly wants the cheaper, narrower search.",
"title": "Location Scoped",
"type": "boolean"
},
"extensive": {
"default": false,
"description": "If true, request extensive detail (retains offenses[], stateData, images). A light call drops them.",
"title": "Extensive",
"type": "boolean"
},
"deadline_ms": {
"default": 120000,
"description": "Max time to wait, in ms (default 120000 / 2 min). Lower for a faster bounded response; partial results return status='partial'.",
"exclusiveMinimum": 0,
"title": "Deadline Ms",
"type": "integer"
}
},
"title": "search_offendersArguments"
}