Overview
The InfoCheck Solutions API provides a modern JSON-based interface for submitting and retrieving background check orders including County Criminal, Statewide Criminal, and Federal Criminal searches.
Base URLs
| Environment | URL |
|---|---|
| Production | https://api.infochecksolutions.com |
| Sandbox | https://sandbox.infochecksolutions.com |
Format
All requests and responses use JSON format with snake_case field naming. Include these headers with every request:
Content-Type: application/json
Accept: application/json
Services / Products
The API uses a three-part service identification system:
| Field | Description | Values |
|---|---|---|
service_type |
Type of search to perform | criminal |
service_name |
Specific service/product name | CountyCriminal StatewideCriminal NationwideFederalCriminal StatewideFederalCriminal DistrictFederalCriminal |
service_code |
Client-specific package code (configured during account setup) | Account-specific codes |
Data Normalization Rules
state,county,districtmust be UPPERCASEdate_of_birthmust be ISO date format: YYYY-MM-DDmiddle_nameis optionalssnis a string (may include dashes), preserve leading zeros- All responses include a
timestampin ISO 8601 format
Quick Start
Submit your first order in three steps:
- Authenticate โ Include your API key in the
X-API-Keyheader - Create Order โ POST to
/v1/api/createwith subject info - Retrieve Results โ Poll
/v1/api/resultor receive via webhook
Example: Create a County Criminal Order
curl -X POST https://api.infochecksolutions.com/v1/api/create \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"reference_number": "REF-001",
"parameters": {
"service_type": "criminal",
"service_name": "CountyCriminal",
"service_code": "PKG-STANDARD",
"first_name": "JOHN",
"middle_name": "A",
"last_name": "DOE",
"date_of_birth": "1985-04-12",
"state": "AZ",
"county": "MARICOPA"
}
}'
Authentication
API Key (Primary)
Include your API key in the request header:
X-API-Key: your_api_key_here
OAuth2 (Optional)
For clients requiring OAuth2, use the Client Credentials flow:
Authorization: Bearer your_access_token
Idempotency
The reference_number field serves as a client-supplied idempotency key. It must be unique per account. Duplicate submissions return HTTP 422 with code DUPLICATE_REFERENCE_NUMBER.
Endpoints
POST /v1/api/create Create a new order
Creates a new background check order and returns an order_id. Optionally specify a webhook_url to receive results when complete.
Request Body โ CreateOrderRequest
| Field | Type | Required | Description |
|---|---|---|---|
reference_number | string | Required | Client-supplied unique identifier (max 64 chars). Used for idempotency. |
webhook_url | string | Optional | URL to POST results when order completes |
parameters | object | Required | Search parameters (see below) |
options | object | Optional | Additional options (test_mode, search_years, etc.) |
Parameters Object
| Field | Type | Required | Description |
|---|---|---|---|
service_type | enum | Required | Type of search: criminal |
service_name | enum | Required | CountyCriminal, StatewideCriminal, NationwideFederalCriminal, StatewideFederalCriminal, DistrictFederalCriminal |
service_code | string | Optional | Client package code (configured during account setup) |
first_name | string | Required | Subject's first name (1-50 chars) |
middle_name | string | Optional | Subject's middle name |
last_name | string | Required | Subject's last name (1-50 chars) |
suffix | string | Optional | Name suffix (Jr., Sr., III, etc.) |
date_of_birth | string | Required | Format: YYYY-MM-DD |
ssn | string | Optional | Social Security Number (may include dashes, preserve leading zeros) |
driver_license_number | string | Optional | Driver's license number |
driver_license_state | string | Optional | Driver's license issuing state (2-letter code) |
email_address | string | Optional | Subject's email address |
addresses | array | Optional | Array of address objects (current/previous addresses) |
aliases | array | Optional | Array of alias objects (max 20) |
state | string | Conditional | 2-letter UPPERCASE state code. Required for County/Statewide/District searches. |
county | string | Conditional | County name UPPERCASE. Required for CountyCriminal. |
district | string | Conditional | Federal district UPPERCASE. Required for DistrictFederalCriminal. |
crim_watch | boolean | Optional | Enable continuous monitoring (default: false) |
crim_watch_frequency | enum | Conditional | Required if crim_watch=true: MONTHLY, EVERY_3_MONTHS, EVERY_6_MONTHS, YEARLY |
Address Object
| Field | Type | Required | Description |
|---|---|---|---|
street_address | string | Optional | Street address line |
street_address_2 | string | Optional | Additional address line (apt, suite, etc.) |
city | string | Optional | City name |
state | string | Optional | 2-letter state code |
zip_code | string | Optional | ZIP/postal code |
country | string | Optional | Country code (defaults to US) |
address_type | enum | Optional | current, previous, mailing |
Alias Object
| Field | Type | Required | Description |
|---|---|---|---|
first_name | string | Required | Alias first name |
middle_name | string | Optional | Alias middle name |
last_name | string | Required | Alias last name |
Options Object
| Field | Type | Default | Description |
|---|---|---|---|
test_mode | boolean | false | Enable test mode for sandbox testing |
search_years | integer | 7 | Years to search (1-99) |
special_instructions | string | null | Special instructions (max 2000 chars) |
court_docs_requested | boolean | false | Request court documents if available |
rush_requested | boolean | false | Request expedited processing |
Example A: County Criminal with Full Details
{
"reference_number": "CLIENT-REF-000123",
"webhook_url": "https://client.example.com/webhook",
"parameters": {
"service_type": "criminal",
"service_name": "CountyCriminal",
"service_code": "PKG-CRIMINAL-STD",
"first_name": "JANE",
"middle_name": "A",
"last_name": "DOE",
"suffix": "",
"date_of_birth": "1985-04-12",
"ssn": "123-45-6789",
"driver_license_number": "D12345678",
"driver_license_state": "AZ",
"email_address": "[email protected]",
"addresses": [
{
"street_address": "123 Main St",
"street_address_2": "Apt 4B",
"city": "Phoenix",
"state": "AZ",
"zip_code": "85001",
"country": "US",
"address_type": "current"
}
],
"aliases": [
{ "first_name": "JANE", "last_name": "SMITH" }
],
"state": "AZ",
"county": "MARICOPA",
"crim_watch": true,
"crim_watch_frequency": "EVERY_3_MONTHS"
},
"options": {
"test_mode": false,
"search_years": 7,
"special_instructions": "Include maiden name variations if found.",
"court_docs_requested": true
}
}
Example B: Nationwide Federal (Minimal)
{
"reference_number": "CLIENT-REF-000124",
"parameters": {
"service_type": "criminal",
"service_name": "NationwideFederalCriminal",
"first_name": "JOHN",
"last_name": "SMITH",
"date_of_birth": "1990-01-15"
}
}
Example C: Statewide Criminal
{
"reference_number": "CLIENT-REF-000128",
"parameters": {
"service_type": "criminal",
"service_name": "StatewideCriminal",
"first_name": "EMILY",
"middle_name": "R",
"last_name": "THOMPSON",
"date_of_birth": "1988-03-15",
"state": "NY"
}
}
Example D: County Criminal with Extended Search (15 years)
{
"reference_number": "CLIENT-REF-000129",
"parameters": {
"service_type": "criminal",
"service_name": "CountyCriminal",
"first_name": "DAVID",
"last_name": "MARTINEZ",
"date_of_birth": "1970-07-04",
"state": "FL",
"county": "MIAMI-DADE"
},
"options": {
"search_years": 15
}
}
Response โ Success (200/201)
{
"order_id": "ORD-9f8c2a1b",
"reference_number": "CLIENT-REF-000123",
"message": "Successfully created order",
"timestamp": "2025-12-05T14:30:00Z"
}
Response โ Duplicate Reference (422)
{
"error": {
"code": "DUPLICATE_REFERENCE_NUMBER",
"message": "Duplicate reference number: CLIENT-REF-000123"
}
}
GET /v1/api/result Get order status and results
Returns the order status and, when complete, the full results including pricing information.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
order_id | string | Required | The order ID returned from create |
Status Enums
| Status | Description |
|---|---|
Pending | Order received and queued for processing |
Complete | Order completed successfully |
Failed | Order completed with error |
Cancelled | Order was cancelled |
Result Status Enums
| Status | Description |
|---|---|
NO_RECORD | No records found |
RECORD | Records were found |
RECORD_AVAILABLE | Record exists, documents pending |
ERROR | Search encountered an error |
Pricing Object
| Field | Type | Description |
|---|---|---|
total_price | number | Total price including court fees |
total_price_minus_court_fees | number | Total price excluding court fees |
total_court_fees | number | Total court fees |
currency | string | Currency code (default: USD) |
Example: No Record Found
{
"order_id": "ORD-9f8c2a1b",
"reference_number": "CLIENT-REF-000123",
"status": "Complete",
"status_message": "Search completed.",
"timestamp": "2025-12-05T15:45:30Z",
"report_link": "https://api.infochecksolutions.com/reports/ORD-9f8c2a1b",
"recommendation": "ACCEPT",
"alerts": [],
"pricing": {
"total_price": 12.50,
"total_price_minus_court_fees": 12.50,
"total_court_fees": 0,
"currency": "USD"
},
"result": {
"result_type": "RecordSearchResult",
"result_status": "NO_RECORD",
"service_type": "criminal",
"service_name": "CountyCriminal",
"jurisdiction": { "state": "AZ", "county": "MARICOPA" },
"subject": {
"first_name": "JANE",
"middle_name": "A",
"last_name": "DOE",
"date_of_birth": "1985-04-12"
},
"case_count": 0,
"records": [],
"closing_comments": ""
}
}
Example: Criminal Record Found
{
"order_id": "ORD-9f8c2a1b",
"reference_number": "CLIENT-REF-000123",
"status": "Complete",
"status_message": "Search completed.",
"timestamp": "2025-12-05T16:22:15Z",
"report_link": "https://api.infochecksolutions.com/reports/ORD-9f8c2a1b",
"recommendation": "REVIEW",
"alerts": ["ORD-9f8c2a1b"],
"pricing": {
"total_price": 17.50,
"total_price_minus_court_fees": 12.50,
"total_court_fees": 5.00,
"currency": "USD"
},
"result": {
"result_type": "RecordSearchResult",
"result_status": "RECORD",
"service_type": "criminal",
"service_name": "CountyCriminal",
"jurisdiction": { "state": "AZ", "county": "MARICOPA" },
"subject": {
"first_name": "JANE",
"middle_name": "A",
"last_name": "DOE",
"date_of_birth": "1985-04-12"
},
"case_count": 1,
"closing_comments": "Court records verified.",
"records": [
{
"verified_by": {
"first_name": true,
"middle_name": false,
"last_name": true,
"date_of_birth": true
},
"on_file_details": {
"first_name": "JANE",
"middle_name": "A",
"last_name": "DOE",
"date_of_birth": "1985-04-12",
"ssn": "XXX-XX-6789",
"ethnicity": "",
"address": "123 Main St, Phoenix, AZ 85001",
"aliases": "JANE SMITH",
"additional_id_info": ""
},
"case_number": "CR-2020-12345",
"court": "MARICOPA COUNTY SUPERIOR COURT",
"arrest_date": "2020-02-15",
"file_date": "2020-03-01",
"disposition_date": "2020-06-10",
"offense_date": "2020-02-14",
"arresting_agency": "PHOENIX POLICE DEPARTMENT",
"case_comments": "",
"counts": [
{
"offense": "THEFT",
"crime_type": "MISDEMEANOR",
"statute": "ARS 13-1802",
"disposition": "CONVICTED",
"disposition_date": "2020-06-10",
"fine": 500.00,
"court_fee": 150.00,
"restitution": "200.00",
"plea": "GUILTY",
"sentence": {
"probation": "12 Months",
"jail": "",
"prison": "",
"jail_suspended_time": "",
"jail_credit_time": "",
"prison_suspended_time": "",
"prison_credit_time": "",
"community_service": "40 Hours",
"sentence_other": ""
},
"offense_comments": ""
}
],
"source_name": "MARICOPA COUNTY CLERK OF COURT",
"matched_by": ["first_name", "last_name", "date_of_birth"]
}
],
"fees": [
{ "fee_type": "SearchFee", "description": "County Criminal Search", "amount": 12.50, "currency": "USD" }
],
"crim_watch": {
"enabled": true,
"frequency": "EVERY_3_MONTHS",
"monitor_id": "MON-33aa91",
"next_run_date": "2025-03-01"
}
}
}
GET /v1/api/status Get order status only (lightweight)
Returns only the order status without full results. Use this for efficient polling.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
order_id | string | Required | The order ID |
Example Response
{
"order_id": "ORD-9f8c2a1b",
"reference_number": "CLIENT-REF-000123",
"status": "Pending",
"status_message": "In progress.",
"timestamp": "2025-12-05T14:35:00Z"
}
POST /v1/api/cancel Cancel an order
Cancels a pending order. Cannot cancel completed orders.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
order_id | string | Required | Order ID to cancel |
cancellation_message | string | Optional | Reason for cancellation |
Response โ Success (200)
{
"order_id": "ORD-9f8c2a1b",
"reference_number": "CLIENT-REF-000123",
"status": "Cancelled",
"status_message": "Cancelled by client: duplicate submission",
"timestamp": "2025-12-05T14:40:00Z"
}
Response โ Cannot Cancel (409)
{
"error": {
"code": "CANNOT_CANCEL",
"message": "Order already completed and cannot be cancelled."
}
}
GET /v1/api/attachment Get attachment (base64)
Retrieves an attachment as base64-encoded content.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Required | Attachment ID |
Response
{
"id": "ATT-9911",
"file_name": "court_document.pdf",
"mime_type": "application/pdf",
"content_base64": "JVBERi0xLjcKJc...",
"timestamp": "2025-12-05T16:00:00Z"
}
Webhooks
When webhook_url is provided at order creation, results are automatically POSTed to that URL when the order completes.
Webhook Request
POST https://client.example.com/webhook
Content-Type: application/json
X-InfoCheck-Event: order.completed
X-InfoCheck-OrderId: ORD-9f8c2a1b
X-InfoCheck-Signature: sha256=abc123...
The request body is identical to GET /v1/api/result response. Your endpoint should respond with 2xx to acknowledge receipt.
Errors
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Human-readable error message",
"details": [{ "field": "parameters.state", "issue": "INVALID_FORMAT" }],
"request_id": "REQ-7e21..."
}
}
HTTP Status Codes
| Code | Description |
|---|---|
| 400 | Malformed JSON |
| 401 | Invalid/missing auth |
| 403 | Not authorized |
| 404 | Not found |
| 409 | Conflict |
| 422 | Validation error |
| 429 | Rate limited |
| 500 | Server error |
Error Codes
| Code | Description |
|---|---|
VALIDATION_ERROR | Request validation failed |
DUPLICATE_REFERENCE_NUMBER | Reference number exists |
AUTH_REQUIRED | Authentication required |
AUTH_INVALID | Invalid credentials |
SERVICE_NOT_ENABLED | Service not enabled |
CRIMWATCH_NOT_ENABLED | CrimWatch not enabled |
JURISDICTION_NOT_ALLOWED | Jurisdiction not allowed |
ORDER_NOT_FOUND | Order not found |
CANNOT_CANCEL | Cannot cancel order |
RATE_LIMITED | Too many requests |
INTERNAL_ERROR | Server error |
Schemas
See schemas.json for complete JSON Schema definitions.
Record (Criminal)
| Field | Type | Description |
|---|---|---|
verified_by | object | Fields used to verify match (booleans) |
on_file_details | object | Information as found on file |
case_number | string | Court case number |
court | string | Court name |
arrest_date | string | Arrest date (YYYY-MM-DD) |
file_date | string | Case file date |
disposition_date | string | Case disposition date |
offense_date | string | Date offense occurred |
arresting_agency | string | Arresting agency name |
case_comments | string | Comments about the case |
counts | array | Array of offense/count details |
source_name | string | Record source |
matched_by | array | Fields used for matching |
Offense (Count)
| Field | Type | Description |
|---|---|---|
offense | string | Offense description |
crime_type | string | Level (FELONY, MISDEMEANOR) |
statute | string | Statute code |
disposition | string | Case disposition |
disposition_date | string | Disposition date |
fine | number | Fine amount |
court_fee | number | Court fee |
restitution | string | Restitution details |
plea | string | Plea entered |
sentence | object | Sentence details |
offense_comments | string | Comments |
Sentence
| Field | Type | Description |
|---|---|---|
probation | string | Probation sentence |
jail | string | Jail time |
prison | string | Prison time |
jail_suspended_time | string | Suspended jail time |
jail_credit_time | string | Credited jail time |
prison_suspended_time | string | Suspended prison time |
prison_credit_time | string | Credited prison time |
community_service | string | Community service |
sentence_other | string | Other details |
Pricing
| Field | Type | Description |
|---|---|---|
total_price | number | Total price including court fees |
total_price_minus_court_fees | number | Total price excluding court fees |
total_court_fees | number | Total court fees |
currency | string | Currency code (default: USD) |
Changelog
v1.3 โ December 2025
- Adopted snake_case naming convention for all fields.
- Removed
civilservice type - Added
StatewideCriminalservice - Made
middle_nameoptional (no longer required) - Extended
search_yearsrange to 1-99 (default: 7) - Changed status
PassedtoComplete - Added
pricingobject withtotal_price,total_price_minus_court_fees,total_court_fees - Added
timestampto all responses (ISO 8601 format) - Flattened driver's license to
driver_license_numberanddriver_license_state
v1.2 โ November 2025
- Added
serviceTypefield (criminal, civil) - Added
serviceCodefor client packages - Made
ssnoptional - Added optional
driversLicenseobject - Changed
addressesto optional array - Added
suffix,emailAddressfields - Enhanced criminal record response with
verifiedBy,onFileDetails - Full offense/sentence details in
counts
v1.1 โ October 2025
- Added CrimWatch monitoring support
- Added webhook signature verification
v1.0 โ September 2025
- Initial release