Service-level status model
A case data record has two status fields that, together, describe its current state:- Status (
statusId) — the primary state of the service. The full enumeration is documented in Case data statuses. A service starts inpendingand progresses to a terminal status when it completes. - Pending status (
pendingStatusId) — an optional sub-state. It is most commonly set whilestatus = pendingto communicate what stage of processing the service is in (for example, drug screening scheduled, sent to lab, awaiting medical review). It may also remain set on a terminal status to communicate why the service ended in that state (for example,consider+pending-status-no-show).
casedata.statuschange webhook. Integrations that need fine-grained progress reporting should subscribe to this event and inspect both fields together rather than only statusId.
Statuses
Note: even when a service reaches a terminal status, it may later be reopened and transition back to
pending in certain situations (for example, contested results, corrected source data, or manual reprocessing).Status applicability matrix
The following matrix summarizes which terminal statuses are reachable by each category. Use this to validate that your integration handles the right set of outcomes per service. Note: The status names and service type/category names shown in the tables above are the human-friendly names; the canonical status IDs and service type/category IDs used in the API are documented in detail on the Case data statuses page and Service type/categories page. Be sure to use the IDs when processing API responses and interacting with the API.
Pending Status applicablity matrix
WhilestatusId remains pending, the pendingStatusId field communicates where in the workflow a service is — for example, pending-status-scheduled when an OHS appointment has been booked, or drugtest-sent when a specimen has been shipped to the lab. Long-running services (especially OHS Drug Screening, TB testing, and Vaccination) progress almost entirely through changes to pendingStatusId while statusId stays pending, so consumers that only watch statusId will miss most of the lifecycle.
Notes:
- See Pending status for the complete enumeration of pending statuses.
- If a service type/category/subcategory does not appear in the Pending Status applicablity matrix above, it means that it does not have any pending substates.
- The service type/category names shown in the Pending Status applicability matrix above are human-friendly names; the canonical service type/category IDs used in the API are documented in detail on the Service type/categories page. Be sure to use the IDs when processing API responses and interacting with the API.
Integration guidance
- Subscribe to
casedata.statuschange. Long-running services (especially OHS Drug, TB skin test, Vaccination) communicate progress almost entirely throughpendingStatusIdwhilestatusIdremainspending. PollingstatusIdalone will miss most of the lifecycle. - Treat
(statusId, pendingStatusId)as a tuple. A terminalconsidercarries different meaning when paired withdrugtest-expiredversuspending-status-no-showversus a real positive lab result. The pending substate is preserved on terminal records for exactly this reason. - Use the right “passed” terminal per category. Criminal/MVR/IDV pass with
clear. Verification, Professional License, and most OHS services pass withacknowledge. Payment passes withcomplete. A singlestatusId === 'clear'check is not portable across all services. - Account for non-monotonic transitions. A service can move backwards (for example,
pending-status-scheduled→pending-status-canceled→pending-status-requested) and a terminal status can be re-opened topendingif a result is contested or new information arrives. Build for idempotent processing ofcasedata.statuschangeevents. not_foundis not a failure. It means the source could not produce a record. Treat it as a distinct outcome fromconsiderin your adjudication flow — many customers routenot_foundto manual review rather than auto-decline.- If you are going to generate a Custom Report for a service (or set of services), do so only once the service(s) has reached a terminal status.
Lifecycles by service category
The following sections describe the lifecycle for each category. Substates listed in parentheses are pending substates that can accompanypending (or, where noted, a terminal status).
Identity Verification (service-cat-idv)
Includes SSN trace, SSN validation, CBSV, IDV document/liveness, Death Master, and social media services. Most identity services are “instant” and return a terminal status quickly with no pending substate.
Criminal Check (service-cat-criminal)
Includes county, state, federal, and national criminal searches, civil searches, sex offender registries, FACIS, and global watchlists. These services typically run against multiple jurisdictions and can take several days to complete but do not use pending substates.
Note on multi-jurisdiction searches. County, state, and federal criminal searches may run against multiple jurisdictions. Each jurisdiction has its own sub-status (
clear, consider, pending, canceled) inside the case data details payload, but the top-level statusId is the authoritative roll-up that customers should adjudicate against. Records that are still being reviewed internally before being released to the customer will keep the top-level statusId at pending until review completes.Criminal searches do not use
not_found — a search that returns no records is clear, not not_found.Motor Vehicle Record Check (service-cat-mvr)
Verification (service-cat-verification)
Includes employment and education verification services. These services typically involve outreach to a third party and can have a longer pending lifecycle but do not have pending substates.
For verification services,
acknowledge — not clear — is the canonical “passed” terminal. Customers building credential validity checks should treat acknowledge and consider (with reviewer-approved discrepancies) as the valid terminals.Professional License (service-cat-pro-lic)
Professional License and Certification verification services do not use pending substates.
As with Verification,
acknowledge is the canonical “passed” terminal for Professional License services.Occupational Health Screening (service-cat-ohs)
OHS services share the same case data status model, but each subcategory has its own full lifecycle shape and is documented with a standalone diagram below.
Common OHS patterns across subcategories:
- Services start in
pendingand usually progress through one or more pending substates before reaching a terminal status. - Most OHS subcategories use the
pending-status-*scheduling family, while Drug Screening uses thedrugtest-*pending substate family. - Terminal outcomes vary by subcategory (for example,
acknowledge,clear,consider,not_found,canceled). - A terminal
considermay carrypending-status-no-showorpending-status-refusal, and a terminalcanceledmay carrypending-status-not-performed.
Physical (service-subcat-physical)
Includes DOT physicals, fit-for-duty exams, and respirator clearance.
acknowledge is used when a physical is affirmatively pass/fit (e.g., DOT physical fit-for-duty). clear may be used for portion-style sub-exams that have a simple pass/fail. consider indicates findings the customer needs to review (including no-show or refusal, surfaced via the pending substate).Tuberculosis (service-subcat-tb)
TB tests have two distinct lifecycle shapes depending on the test type:
- TB skin test (PPD) is a two-visit test. After placement, the case data transitions to
pending / pending-status-suspended(“Waiting for TB Read”) while the candidate returns 48–72 hours later for the read. Final terminal isacknowledge(negative read),consider(positive/equivocal), orcanceled. - TB blood (QuantiFERON, T-Spot) and TB chest X-ray follow the standard OHS scheduling preamble and produce
acknowledge/consider/clear/canceledwithoutpending-status-suspended.
Titer (service-subcat-titer)
acknowledge indicates an immune titer. consider indicates a non-immune or equivocal result and typically triggers a follow-up vaccination order. not_found is rare and indicates the specimen could not be processed.Vaccination (service-subcat-vacc)
Vaccination services may require multiple doses spread over weeks or months. Between doses, the case data may surface a partial-style state:
Integrations that surface vaccination progress to customers should treat
pending / pending-status-partial as a long-lived intermediate state and only consider the service finalized when it transitions out of pending.Drug Screening (service-subcat-drug)
Drug screenings use the drug-specific pending substates rather than the generic OHS ones:
A terminal
consider may carry drugtest-expired, pending-status-no-show, or pending-status-refusal to explain the outcome. Drug screenings do not use acknowledge or not_found.