InfoCheck Solutions

InfoCheck Solutions API

v1.3

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

EnvironmentURL
Productionhttps://api.infochecksolutions.com
Sandboxhttps://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:

FieldDescriptionValues
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, district must be UPPERCASE
  • date_of_birth must be ISO date format: YYYY-MM-DD
  • middle_name is optional
  • ssn is a string (may include dashes), preserve leading zeros
  • All responses include a timestamp in ISO 8601 format

Quick Start

Submit your first order in three steps:

  1. Authenticate โ€” Include your API key in the X-API-Key header
  2. Create Order โ€” POST to /v1/api/create with subject info
  3. Retrieve Results โ€” Poll /v1/api/result or 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
Note: API Key authentication is the default and recommended method. Contact support if you require OAuth2 integration.

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

FieldTypeRequiredDescription
reference_numberstringRequiredClient-supplied unique identifier (max 64 chars). Used for idempotency.
webhook_urlstringOptionalURL to POST results when order completes
parametersobjectRequiredSearch parameters (see below)
optionsobjectOptionalAdditional options (test_mode, search_years, etc.)

Parameters Object

FieldTypeRequiredDescription
service_typeenumRequiredType of search: criminal
service_nameenumRequiredCountyCriminal, StatewideCriminal, NationwideFederalCriminal, StatewideFederalCriminal, DistrictFederalCriminal
service_codestringOptionalClient package code (configured during account setup)
first_namestringRequiredSubject's first name (1-50 chars)
middle_namestringOptionalSubject's middle name
last_namestringRequiredSubject's last name (1-50 chars)
suffixstringOptionalName suffix (Jr., Sr., III, etc.)
date_of_birthstringRequiredFormat: YYYY-MM-DD
ssnstringOptionalSocial Security Number (may include dashes, preserve leading zeros)
driver_license_numberstringOptionalDriver's license number
driver_license_statestringOptionalDriver's license issuing state (2-letter code)
email_addressstringOptionalSubject's email address
addressesarrayOptionalArray of address objects (current/previous addresses)
aliasesarrayOptionalArray of alias objects (max 20)
statestringConditional2-letter UPPERCASE state code. Required for County/Statewide/District searches.
countystringConditionalCounty name UPPERCASE. Required for CountyCriminal.
districtstringConditionalFederal district UPPERCASE. Required for DistrictFederalCriminal.
crim_watchbooleanOptionalEnable continuous monitoring (default: false)
crim_watch_frequencyenumConditionalRequired if crim_watch=true: MONTHLY, EVERY_3_MONTHS, EVERY_6_MONTHS, YEARLY

Address Object

FieldTypeRequiredDescription
street_addressstringOptionalStreet address line
street_address_2stringOptionalAdditional address line (apt, suite, etc.)
citystringOptionalCity name
statestringOptional2-letter state code
zip_codestringOptionalZIP/postal code
countrystringOptionalCountry code (defaults to US)
address_typeenumOptionalcurrent, previous, mailing

Alias Object

FieldTypeRequiredDescription
first_namestringRequiredAlias first name
middle_namestringOptionalAlias middle name
last_namestringRequiredAlias last name

Options Object

FieldTypeDefaultDescription
test_modebooleanfalseEnable test mode for sandbox testing
search_yearsinteger7Years to search (1-99)
special_instructionsstringnullSpecial instructions (max 2000 chars)
court_docs_requestedbooleanfalseRequest court documents if available
rush_requestedbooleanfalseRequest 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

ParameterTypeRequiredDescription
order_idstringRequiredThe order ID returned from create

Status Enums

StatusDescription
PendingOrder received and queued for processing
CompleteOrder completed successfully
FailedOrder completed with error
CancelledOrder was cancelled

Result Status Enums

StatusDescription
NO_RECORDNo records found
RECORDRecords were found
RECORD_AVAILABLERecord exists, documents pending
ERRORSearch encountered an error

Pricing Object

FieldTypeDescription
total_pricenumberTotal price including court fees
total_price_minus_court_feesnumberTotal price excluding court fees
total_court_feesnumberTotal court fees
currencystringCurrency 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

ParameterTypeRequiredDescription
order_idstringRequiredThe 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

ParameterTypeRequiredDescription
order_idstringRequiredOrder ID to cancel
cancellation_messagestringOptionalReason 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

ParameterTypeRequiredDescription
idstringRequiredAttachment 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.

Webhook Security: Contact support to configure a webhook secret for HMAC-SHA256 signature verification.

Errors

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Human-readable error message",
    "details": [{ "field": "parameters.state", "issue": "INVALID_FORMAT" }],
    "request_id": "REQ-7e21..."
  }
}

HTTP Status Codes

CodeDescription
400Malformed JSON
401Invalid/missing auth
403Not authorized
404Not found
409Conflict
422Validation error
429Rate limited
500Server error

Error Codes

CodeDescription
VALIDATION_ERRORRequest validation failed
DUPLICATE_REFERENCE_NUMBERReference number exists
AUTH_REQUIREDAuthentication required
AUTH_INVALIDInvalid credentials
SERVICE_NOT_ENABLEDService not enabled
CRIMWATCH_NOT_ENABLEDCrimWatch not enabled
JURISDICTION_NOT_ALLOWEDJurisdiction not allowed
ORDER_NOT_FOUNDOrder not found
CANNOT_CANCELCannot cancel order
RATE_LIMITEDToo many requests
INTERNAL_ERRORServer error

Schemas

See schemas.json for complete JSON Schema definitions.

Record (Criminal)
FieldTypeDescription
verified_byobjectFields used to verify match (booleans)
on_file_detailsobjectInformation as found on file
case_numberstringCourt case number
courtstringCourt name
arrest_datestringArrest date (YYYY-MM-DD)
file_datestringCase file date
disposition_datestringCase disposition date
offense_datestringDate offense occurred
arresting_agencystringArresting agency name
case_commentsstringComments about the case
countsarrayArray of offense/count details
source_namestringRecord source
matched_byarrayFields used for matching
Offense (Count)
FieldTypeDescription
offensestringOffense description
crime_typestringLevel (FELONY, MISDEMEANOR)
statutestringStatute code
dispositionstringCase disposition
disposition_datestringDisposition date
finenumberFine amount
court_feenumberCourt fee
restitutionstringRestitution details
pleastringPlea entered
sentenceobjectSentence details
offense_commentsstringComments
Sentence
FieldTypeDescription
probationstringProbation sentence
jailstringJail time
prisonstringPrison time
jail_suspended_timestringSuspended jail time
jail_credit_timestringCredited jail time
prison_suspended_timestringSuspended prison time
prison_credit_timestringCredited prison time
community_servicestringCommunity service
sentence_otherstringOther details
Pricing
FieldTypeDescription
total_pricenumberTotal price including court fees
total_price_minus_court_feesnumberTotal price excluding court fees
total_court_feesnumberTotal court fees
currencystringCurrency code (default: USD)

Changelog

v1.3 โ€” December 2025

  • Adopted snake_case naming convention for all fields.
  • Removed civil service type
  • Added StatewideCriminal service
  • Made middle_name optional (no longer required)
  • Extended search_years range to 1-99 (default: 7)
  • Changed status Passed to Complete
  • Added pricing object with total_price, total_price_minus_court_fees, total_court_fees
  • Added timestamp to all responses (ISO 8601 format)
  • Flattened driver's license to driver_license_number and driver_license_state

v1.2 โ€” November 2025

  • Added serviceType field (criminal, civil)
  • Added serviceCode for client packages
  • Made ssn optional
  • Added optional driversLicense object
  • Changed addresses to optional array
  • Added suffix, emailAddress fields
  • 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