API reference
Primary-source verification for licenses, NPI, exclusions, certifications, education and employment. JSON, camelCase, ISO-8601 UTC timestamps, ISO-3166-2 states. Async by default: create returns 201 with claims pending; long-poll with ?wait=25 or subscribe to signed webhooks. One error shape everywhere. Every response carries Request-Id, PrimaryCheck-Version, X-RateLimit-Limit and X-RateLimit-Remaining.
https://api.primarycheck.com · Live (pc_live_… keys)https://sandbox.primarycheck.com · Sandbox (pc_test_… keys; deterministic sources, webhooks fire)openapi.jsonversion 2026-11-03Verifications
Create a verification with one to fifty claims, read it (long-poll with ?wait=), list, cancel, and fetch the consumer report.
/v1/verificationsCreate a verification
Async by default: 201 with every claim pending; work runs on the queue; webhooks fire on completion.
?wait= long-polls up to 25 s so fast checks (boards, datasets) return complete in one call.
| Parameter | In | Type | Description |
|---|---|---|---|
wait | query | integer = 0 | |
Idempotency-Key | header | string (uuid) | UUID. For 24 hours the same key returns the original response without re-running sources or billing. Same key with a different body → 409 idempotency_conflict. The SDKs send one on every POST. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
personobjectrequired8 fields
firstNamestringrequiredmiddleNamestring | nulllastNamestringrequiredsuffixstring | nulldobstring (date) | nullaliasesarray of stringemailstring | nullphonestring | nullclaimsarray of one ofrequireditems: one of 7 shapes
LicenseClaim
claimIdstring | nulltype"license"statestringrequiredprofessionstringrequirednumberstring | nulldeaNumberstring | nullNpiClaim
claimIdstring | nulltype"npi"numberstringrequired^\d{10}$ExclusionScreen
claimIdstring | nulltype"exclusion_screen"npistring | nullHealthcareScreenClaim
claimIdstring | nulltype"healthcare_screen"statestringrequiredprofessionstringrequiredlicenseNumberstring | nullnpistring | null^\d{10}$CertificationClaim
claimIdstring | nulltype"certification"issuerstringrequiredcredentialIdstring | nullEducationClaim
claimIdstring | nulltype"education"schoolstringrequiredschoolStatestring | nulldegreestring | nullmajorstring | nullgraduatedYearinteger | nullattendedFromstring | nullattendedTostring | nullEmploymentClaim
claimIdstring | nulltype"employment"employerstringrequiredemployerCitystring | nullemployerStatestring | nullstartstring | nullendstring | nullsuppliedContactPhonestring | nullsuppliedContactEmailstring | nullconsentConsent | nulloptionsVerificationOptions | nullallowPaidThirdPartybooleandeprecatedoptions.allowPaidThirdParty; options wins when both are sent.maxAgestring | nulldeprecatedoptions.maxAge; options wins when both are sent.referencestring | nullmetadataobjectidstringrequiredstatusenumrequiredpendingcompletecancelledpersonobjectrequired8 fields
firstNamestringrequiredmiddleNamestring | nulllastNamestringrequiredsuffixstring | nulldobstring (date) | nullaliasesarray of stringemailstring | nullphonestring | nullclaimsarray of ClaimResultrequireditems: 8 fields
claimIndexintegerrequiredclaimIdstring | nulltypestringrequiredreasonReason | nullinputobject | nullresultsarray of ConnectorResultitems: 11 fields
sourceCodestringrequiredreasonReason | nullfieldChecksarray of FieldCheckitems: 5 fields
fieldstringrequiredclaimedanyfoundanymatchboolean | nullnotestring | nullevidencearray of Evidenceitems: 8 fields
idstring | nullkindenumrequiredapi_responsepage_capturedataset_rowdocumentrendered_recordoutreach_logcall_transcriptpartner_responsesourceCodestringrequiredsourceUrlstring | nullcapturedAtstring (date-time)sha256string | nullcontentany | nullrefstring | nullrecordobject | nullcheckedAtstring (date-time)dataAsOfstring (date-time) | nulljobIdstring | nullreusedFromstring | nullpartsarray of ClaimResultitems: 8 fields
claimIndexintegerrequiredclaimIdstring | nulltypestringrequiredreasonReason | nullinputobject | nullresultsarray of ConnectorResultitems: 11 fields
sourceCodestringrequiredreasonReason | nullfieldChecksarray of FieldCheckevidencearray of Evidencerecordobject | nullcheckedAtstring (date-time)dataAsOfstring (date-time) | nulljobIdstring | nullreusedFromstring | nullcreatedAtstring (date-time)completedAtstring (date-time) | nullreferencestring | nullmetadataobjectallowPaidThirdPartybooleanmaxAgestring | nullErrors: 400, 401, 403, 409, 429, default — one shape, Error
validation_error, param names the field) or a domain rule (profession_unknown, cadence_invalid, …).missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.idempotency_conflict, already_complete, already_cancelled, consent_already_signed.rate_limited). Wait Retry-After seconds.curl -X POST https://api.primarycheck.com/v1/verifications \
-H "Authorization: Bearer pc_live_…" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"person": {
"firstName": "Amy",
"middleName": "E",
"lastName": "Kowalski",
"dob": "1976-02-14",
"email": "amy@example.com",
"phone": "+1 412 555 0147"
},
"claims": [
{
"claimId": "c1",
"type": "license",
"state": "PA",
"profession": "rn",
"number": "RN353077L"
}
],
"purpose": "employment",
"consent": {
"consentId": "cons_8f1…"
},
"options": {
"maxAge": "P1D",
"deadline": "P7D"
},
"reference": "ATS-48213",
"metadata": {
"key": "value"
}
}'/v1/verificationsList verifications
Cursor-paginated. Filters: status, reference, createdAfter, personLastName.
| Parameter | In | Type | Description |
|---|---|---|---|
status | query | string | null | pending | complete | cancelled |
reference | query | string | null | Your reference, exact match. |
limit | query | integer = 25 | 1–100, default 25. |
startingAfter | query | string | null | Cursor: the last id of the previous page. |
createdAfter | query | string | ISO-8601 timestamp. |
personLastName | query | string | Exact last name. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
dataarray of Verificationrequireditems: 11 fields
idstringrequiredstatusenumrequiredpendingcompletecancelledpersonobjectrequired8 fields
firstNamestringrequiredmiddleNamestring | nulllastNamestringrequiredsuffixstring | nulldobstring (date) | nullaliasesarray of stringemailstring | nullphonestring | nullclaimsarray of ClaimResultrequireditems: 8 fields
claimIndexintegerrequiredclaimIdstring | nulltypestringrequiredreasonReason | nullinputobject | nullresultsarray of ConnectorResultitems: 11 fields
sourceCodestringrequiredreasonReason | nullfieldChecksarray of FieldCheckevidencearray of Evidencerecordobject | nullcheckedAtstring (date-time)dataAsOfstring (date-time) | nulljobIdstring | nullreusedFromstring | nullcreatedAtstring (date-time)completedAtstring (date-time) | nullreferencestring | nullmetadataobjectallowPaidThirdPartybooleanmaxAgestring | nullhasMorebooleanErrors: 401, 403, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/verifications \ -H "Authorization: Bearer pc_live_…"
/v1/verifications/{id}Retrieve a verification
?wait= long-polls up to 25 s for a pending verification to complete.
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The verification id. |
wait | query | integer = 0 | |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
idstringrequiredstatusenumrequiredpendingcompletecancelledpersonobjectrequired8 fields
firstNamestringrequiredmiddleNamestring | nulllastNamestringrequiredsuffixstring | nulldobstring (date) | nullaliasesarray of stringemailstring | nullphonestring | nullclaimsarray of ClaimResultrequireditems: 8 fields
claimIndexintegerrequiredclaimIdstring | nulltypestringrequiredreasonReason | nullinputobject | nullresultsarray of ConnectorResultitems: 11 fields
sourceCodestringrequiredreasonReason | nullfieldChecksarray of FieldCheckitems: 5 fields
fieldstringrequiredclaimedanyfoundanymatchboolean | nullnotestring | nullevidencearray of Evidenceitems: 8 fields
idstring | nullkindenumrequiredapi_responsepage_capturedataset_rowdocumentrendered_recordoutreach_logcall_transcriptpartner_responsesourceCodestringrequiredsourceUrlstring | nullcapturedAtstring (date-time)sha256string | nullcontentany | nullrefstring | nullrecordobject | nullcheckedAtstring (date-time)dataAsOfstring (date-time) | nulljobIdstring | nullreusedFromstring | nullpartsarray of ClaimResultitems: 8 fields
claimIndexintegerrequiredclaimIdstring | nulltypestringrequiredreasonReason | nullinputobject | nullresultsarray of ConnectorResultitems: 11 fields
sourceCodestringrequiredreasonReason | nullfieldChecksarray of FieldCheckevidencearray of Evidencerecordobject | nullcheckedAtstring (date-time)dataAsOfstring (date-time) | nulljobIdstring | nullreusedFromstring | nullcreatedAtstring (date-time)completedAtstring (date-time) | nullreferencestring | nullmetadataobjectallowPaidThirdPartybooleanmaxAgestring | nullErrors: 401, 403, 404, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/verifications/ver_7c1e0b1f2a9d \ -H "Authorization: Bearer pc_live_…"
/v1/verifications/{id}/cancelCancel a verification
Pending claims become unable_to_verify(cancelled); final claims keep their verdicts. Open outreach jobs are closed and a verification.updated webhook fires. 409 already_complete when nothing is pending.
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The verification id. |
Idempotency-Key | header | string (uuid) | UUID. For 24 hours the same key returns the original response without re-running sources or billing. Same key with a different body → 409 idempotency_conflict. The SDKs send one on every POST. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
idstringrequiredstatusenumrequiredpendingcompletecancelledpersonobjectrequired8 fields
firstNamestringrequiredmiddleNamestring | nulllastNamestringrequiredsuffixstring | nulldobstring (date) | nullaliasesarray of stringemailstring | nullphonestring | nullclaimsarray of ClaimResultrequireditems: 8 fields
claimIndexintegerrequiredclaimIdstring | nulltypestringrequiredreasonReason | nullinputobject | nullresultsarray of ConnectorResultitems: 11 fields
sourceCodestringrequiredreasonReason | nullfieldChecksarray of FieldCheckitems: 5 fields
fieldstringrequiredclaimedanyfoundanymatchboolean | nullnotestring | nullevidencearray of Evidenceitems: 8 fields
idstring | nullkindenumrequiredapi_responsepage_capturedataset_rowdocumentrendered_recordoutreach_logcall_transcriptpartner_responsesourceCodestringrequiredsourceUrlstring | nullcapturedAtstring (date-time)sha256string | nullcontentany | nullrefstring | nullrecordobject | nullcheckedAtstring (date-time)dataAsOfstring (date-time) | nulljobIdstring | nullreusedFromstring | nullpartsarray of ClaimResultitems: 8 fields
claimIndexintegerrequiredclaimIdstring | nulltypestringrequiredreasonReason | nullinputobject | nullresultsarray of ConnectorResultitems: 11 fields
sourceCodestringrequiredreasonReason | nullfieldChecksarray of FieldCheckevidencearray of Evidencerecordobject | nullcheckedAtstring (date-time)dataAsOfstring (date-time) | nulljobIdstring | nullreusedFromstring | nullcreatedAtstring (date-time)completedAtstring (date-time) | nullreferencestring | nullmetadataobjectallowPaidThirdPartybooleanmaxAgestring | nullErrors: 400, 401, 403, 404, 409, 429, default — one shape, Error
validation_error, param names the field) or a domain rule (profession_unknown, cadence_invalid, …).missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.idempotency_conflict, already_complete, already_cancelled, consent_already_signed.rate_limited). Wait Retry-After seconds.curl -X POST https://api.primarycheck.com/v1/verifications/ver_7c1e0b1f2a9d/cancel \ -H "Authorization: Bearer pc_live_…" \ -H "Idempotency-Key: $(uuidgen)"
/v1/verifications/{id}/evidenceList evidence for a verification
The evidence index across every claim and source. Use GET /v1/evidence/{id} for a signed download URL.
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The verification id. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
dataarray of EvidenceIndexRowrequireditems: 10 fields
idstring | nullclaimIndexintegersourcestringkindstringsha256string | nullcapturedAtstring (date-time)sourceUrlstring | nullrefstring | nullinlinebooleanindexintegerErrors: 401, 403, 404, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/verifications/ver_7c1e0b1f2a9d/evidence \ -H "Authorization: Bearer pc_live_…"
/v1/verifications/{id}/report.pdfDownload the consumer report PDF
Every claim with its field checks and an evidence index; the FCRA Summary of Rights is appended. Response is application/pdf.
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The verification id. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
Errors: 401, 403, 404, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/verifications/ver_7c1e0b1f2a9d/report.pdf \ -H "Authorization: Bearer pc_live_…" \ -o report.pdf
Evidence
Every source result carries evidence ids. Fetch metadata, hashes and a 15-minute signed download URL.
/v1/evidence/{id}Retrieve evidence
Metadata, sha256, and a signed url that expires at expiresAt (about 15 minutes).
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The object id. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
idstringobjectenumevidenceverificationIdstringsourceCodestringkindenumapi_responsepage_capturedataset_rowdocumentrendered_recordoutreach_logcall_transcriptpartner_responsesourceUrlstring | nullcontentTypestringsha256stringbytesintegercapturedAtstring (date-time)urlstringexpiresAtstring (date-time)Errors: 401, 403, 404, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/evidence/evd_… \ -H "Authorization: Bearer pc_live_…"
/v1/evidence/{id}/contentno authDownload evidence content
The bytes behind an evidence record. Reachable through the signed url (?exp=&sig=, no API key) or with the owning account's key.
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The object id. |
exp | query | string | null | |
sig | query | string | null | |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
Errors: 404, 429, default — one shape, Error
rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/evidence/evd_…/content
Monitors
Re-check a claim on a cadence and receive monitor.changed webhooks.
/v1/monitorsCreate a monitor
| Parameter | In | Type | Description |
|---|---|---|---|
Idempotency-Key | header | string (uuid) | UUID. For 24 hours the same key returns the original response without re-running sources or billing. Same key with a different body → 409 idempotency_conflict. The SDKs send one on every POST. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
personobjectrequired8 fields
firstNamestringrequiredmiddleNamestring | nulllastNamestringrequiredsuffixstring | nulldobstring (date) | nullaliasesarray of stringemailstring | nullphonestring | nullclaimone ofrequiredone of 7 shapes
LicenseClaim
claimIdstring | nulltype"license"statestringrequiredprofessionstringrequirednumberstring | nulldeaNumberstring | nullNpiClaim
claimIdstring | nulltype"npi"numberstringrequired^\d{10}$ExclusionScreen
claimIdstring | nulltype"exclusion_screen"npistring | nullHealthcareScreenClaim
claimIdstring | nulltype"healthcare_screen"statestringrequiredprofessionstringrequiredlicenseNumberstring | nullnpistring | null^\d{10}$CertificationClaim
claimIdstring | nulltype"certification"issuerstringrequiredcredentialIdstring | nullEducationClaim
claimIdstring | nulltype"education"schoolstringrequiredschoolStatestring | nulldegreestring | nullmajorstring | nullgraduatedYearinteger | nullattendedFromstring | nullattendedTostring | nullEmploymentClaim
claimIdstring | nulltype"employment"employerstringrequiredemployerCitystring | nullemployerStatestring | nullstartstring | nullendstring | nullsuppliedContactPhonestring | nullsuppliedContactEmailstring | nullcadenceenumdailyweeklymonthlyconsentConsent | nullidstringobjectenummonitorstatusenumactivestoppedcadenceenumdailyweeklymonthlypersonobject8 fields
firstNamestringrequiredmiddleNamestring | nulllastNamestringrequiredsuffixstring | nulldobstring (date) | nullaliasesarray of stringemailstring | nullphonestring | nullclaimobjectsnapshotobject | nulllastCheckedAtstring (date-time) | nullnextCheckAtstring (date-time) | nullcreatedAtstring (date-time)stoppedAtstring (date-time) | nullErrors: 400, 401, 403, 409, 429, default — one shape, Error
validation_error, param names the field) or a domain rule (profession_unknown, cadence_invalid, …).missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.idempotency_conflict, already_complete, already_cancelled, consent_already_signed.rate_limited). Wait Retry-After seconds.curl -X POST https://api.primarycheck.com/v1/monitors \
-H "Authorization: Bearer pc_live_…" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"person": {
"firstName": "Amy",
"middleName": "E",
"lastName": "Kowalski",
"dob": "1976-02-14",
"email": "amy@example.com",
"phone": "+1 412 555 0147"
},
"claim": {
"claimId": "c1",
"type": "license",
"state": "PA",
"profession": "rn",
"number": "RN353077L"
},
"consent": {
"consentId": "cons_8f1…"
}
}'/v1/monitorsList monitors
| Parameter | In | Type | Description |
|---|---|---|---|
status | query | string | null | |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
dataarray of Monitorrequireditems: 11 fields
idstringobjectenummonitorstatusenumactivestoppedcadenceenumdailyweeklymonthlypersonobject8 fields
firstNamestringrequiredmiddleNamestring | nulllastNamestringrequiredsuffixstring | nulldobstring (date) | nullaliasesarray of stringemailstring | nullphonestring | nullclaimobjectsnapshotobject | nulllastCheckedAtstring (date-time) | nullnextCheckAtstring (date-time) | nullcreatedAtstring (date-time)stoppedAtstring (date-time) | nullhasMorebooleanErrors: 401, 403, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/monitors \ -H "Authorization: Bearer pc_live_…"
/v1/monitors/{id}Retrieve a monitor
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The monitor id. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
idstringobjectenummonitorstatusenumactivestoppedcadenceenumdailyweeklymonthlypersonobject8 fields
firstNamestringrequiredmiddleNamestring | nulllastNamestringrequiredsuffixstring | nulldobstring (date) | nullaliasesarray of stringemailstring | nullphonestring | nullclaimobjectsnapshotobject | nulllastCheckedAtstring (date-time) | nullnextCheckAtstring (date-time) | nullcreatedAtstring (date-time)stoppedAtstring (date-time) | nullErrors: 401, 403, 404, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/monitors/mon_… \ -H "Authorization: Bearer pc_live_…"
/v1/monitors/{id}Stop a monitor
Billing stops at the end of the current period.
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The monitor id. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
idstringstatusenumstoppedErrors: 401, 403, 404, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl -X DELETE https://api.primarycheck.com/v1/monitors/mon_… \ -H "Authorization: Bearer pc_live_…"
/v1/monitors/{id}/eventsList monitor change events
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The monitor id. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
dataarray of MonitorEventrequireditems: 5 fields
idstringkindenumverdictstatusexpiresactionrecorddiffobjectwebhookEventIdstring | nullcreatedAtstring (date-time)hasMorebooleanErrors: 401, 403, 404, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/monitors/mon_…/events \ -H "Authorization: Bearer pc_live_…"
Consents
Hosted FCRA disclosure and authorization: create a link, read its status.
/v1/consentsCreate a hosted consent
Returns a url to send the candidate to. The signed disclosure is stored as evidence.
| Parameter | In | Type | Description |
|---|---|---|---|
Idempotency-Key | header | string (uuid) | UUID. For 24 hours the same key returns the original response without re-running sources or billing. Same key with a different body → 409 idempotency_conflict. The SDKs send one on every POST. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
personobjectrequired8 fields
firstNamestringrequiredmiddleNamestring | nulllastNamestringrequiredsuffixstring | nulldobstring (date) | nullaliasesarray of stringemailstring | nullphonestring | nullpurposeenumemploymentcurrent_staff_monitoringnetwork_credentialingcustomerNamestring | nullstatestring | nullidstringobjectenumconsentstatusenumpendingsignedexpiredpurposestringpersonobject8 fields
firstNamestringrequiredmiddleNamestring | nulllastNamestringrequiredsuffixstring | nulldobstring (date) | nullaliasesarray of stringemailstring | nullphonestring | nulldisclosureVersionstringstateAddonsarray of stringurlstring | nullsignedAtstring (date-time) | nullsignerIpstring | nullevidenceIdstring | nullexpiresAtstring (date-time) | nullcreatedAtstring (date-time)Errors: 400, 401, 403, 409, 429, default — one shape, Error
validation_error, param names the field) or a domain rule (profession_unknown, cadence_invalid, …).missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.idempotency_conflict, already_complete, already_cancelled, consent_already_signed.rate_limited). Wait Retry-After seconds.curl -X POST https://api.primarycheck.com/v1/consents \
-H "Authorization: Bearer pc_live_…" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"person": {
"firstName": "Amy",
"middleName": "E",
"lastName": "Kowalski",
"dob": "1976-02-14",
"email": "amy@example.com",
"phone": "+1 412 555 0147"
},
"customerName": "Mercy Staffing",
"state": "PA"
}'/v1/consents/{id}Retrieve a consent
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The consent id. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
idstringobjectenumconsentstatusenumpendingsignedexpiredpurposestringpersonobject8 fields
firstNamestringrequiredmiddleNamestring | nulllastNamestringrequiredsuffixstring | nulldobstring (date) | nullaliasesarray of stringemailstring | nullphonestring | nulldisclosureVersionstringstateAddonsarray of stringurlstring | nullsignedAtstring (date-time) | nullsignerIpstring | nullevidenceIdstring | nullexpiresAtstring (date-time) | nullcreatedAtstring (date-time)Errors: 401, 403, 404, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/consents/cons_… \ -H "Authorization: Bearer pc_live_…"
Webhooks
Endpoints, signed deliveries, retries and replay.
/v1/webhook_endpointsCreate a webhook endpoint
The signing secret is returned once.
| Parameter | In | Type | Description |
|---|---|---|---|
Idempotency-Key | header | string (uuid) | UUID. For 24 hours the same key returns the original response without re-running sources or billing. Same key with a different body → 409 idempotency_conflict. The SDKs send one on every POST. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
urlstringrequired^https?://eventsarray of enumrequiredidstringrequiredobjectenumwebhook_endpointurlstringrequiredeventsarray of stringrequiredmodeenumliveteststatusstringcreatedAtstring (date-time)secretstringrequiredErrors: 400, 401, 403, 409, 429, default — one shape, Error
validation_error, param names the field) or a domain rule (profession_unknown, cadence_invalid, …).missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.idempotency_conflict, already_complete, already_cancelled, consent_already_signed.rate_limited). Wait Retry-After seconds.curl -X POST https://api.primarycheck.com/v1/webhook_endpoints \
-H "Authorization: Bearer pc_live_…" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"url": "https://ats.example.com/primarycheck",
"events": [
"verification.completed"
]
}'/v1/webhook_endpointsList webhook endpoints
| Parameter | In | Type | Description |
|---|---|---|---|
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
dataarray of WebhookEndpointrequireditems: 7 fields
idstringrequiredobjectenumwebhook_endpointurlstringrequiredeventsarray of stringrequiredmodeenumliveteststatusstringcreatedAtstring (date-time)hasMorebooleanErrors: 401, 403, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/webhook_endpoints \ -H "Authorization: Bearer pc_live_…"
/v1/webhook_endpoints/{id}Delete a webhook endpoint
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The webhook id. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
idstringdeletedenumtrueErrors: 401, 403, 404, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl -X DELETE https://api.primarycheck.com/v1/webhook_endpoints/we_… \ -H "Authorization: Bearer pc_live_…"
/v1/webhook_endpoints/{id}/deliveriesList deliveries
Most recent first, with status code, latency and the next retry time.
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The webhook id. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
dataarray of WebhookDeliveryrequireditems: 9 fields
idstringeventIdstringeventTypestringattemptintegerstatusCodeinteger | nullresponseMsinteger | nulldeliveredAtstring (date-time) | nullnextRetryAtstring (date-time) | nullcreatedAtstring (date-time)hasMorebooleanErrors: 401, 403, 404, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/webhook_endpoints/we_…/deliveries \ -H "Authorization: Bearer pc_live_…"
/v1/webhook_endpoints/{id}/deliveries/{deliveryId}/retryRetry a delivery
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The webhook id. |
deliveryIdreq | path | string | The webhook id. |
Idempotency-Key | header | string (uuid) | UUID. For 24 hours the same key returns the original response without re-running sources or billing. Same key with a different body → 409 idempotency_conflict. The SDKs send one on every POST. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
idstringqueuedenumtrueErrors: 400, 401, 403, 404, 409, 429, default — one shape, Error
validation_error, param names the field) or a domain rule (profession_unknown, cadence_invalid, …).missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.idempotency_conflict, already_complete, already_cancelled, consent_already_signed.rate_limited). Wait Retry-After seconds.curl -X POST https://api.primarycheck.com/v1/webhook_endpoints/we_…/deliveries/dlv_…/retry \ -H "Authorization: Bearer pc_live_…" \ -H "Idempotency-Key: $(uuidgen)"
Coverage and sources
What can be verified where, the profession taxonomy, and every connector's status. Unauthenticated.
/v1/coverageno authCoverage by state and profession
Without filters, every (state, profession) row.
| Parameter | In | Type | Description |
|---|---|---|---|
state | query | string | null | ISO-3166-2 code, e.g. PA. |
profession | query | string | null | Taxonomy key from GET /v1/professions. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
dataarray of CoverageRowrequireditems: 11 fields
statestringprofessionstringlabelstringboardstringboardTypestringsourcestring | nullstatusenumlivedegradedbuildingblockedsearchByarray of stringfieldsarray of stringcompactstring | nulllookupUrlstring | nullErrors: 429, default — one shape, Error
rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/coverage
/v1/professionsno authProfession taxonomy
| Parameter | In | Type | Description |
|---|---|---|---|
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
dataarray of Professionrequireditems: 5 fields
keystringlabelstringcategorystringboardTypestringcompactstring | nullErrors: 429, default — one shape, Error
rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/professions
/v1/sourcesno authSources
Every connector with mode, role, status, last canary and 24-hour error rate.
| Parameter | In | Type | Description |
|---|---|---|---|
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
dataarray of Sourcerequireditems: 14 fields
codestringnamestringclaimTypesarray of stringmodestringrolestringstatusstringrungstring | nulllastCanaryAtstring (date-time) | nulllastCanaryOkboolean | nullerrorRate24hnumber | nullcalls24hintegerdataAsOfstring (date-time) | nulldatasetFreshboolean | nulldatasetsarray of objectitems: 4 fields
codestringdataAsOfstring (date-time) | nullrowsintegermaxAgeDaysintegerErrors: 429, default — one shape, Error
rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/sources
Account
Account settings, usage and spend, team members and invites.
/v1/accountRetrieve the account
| Parameter | In | Type | Description |
|---|---|---|---|
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
idstringnamestring | nullfcraStatusenumnot_appliedpendingenabledcertifiedPurposesarray of stringversionstringcontrolsVersionstringplanstring | nulllimitsobjectauthenumkeysessionrolestring | nulluserobject | null3 fields
idstringemailstringnamestring | nullErrors: 401, 403, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/account \ -H "Authorization: Bearer pc_live_…"
/v1/accountUpdate the account
Owner or admin session.
| Parameter | In | Type | Description |
|---|---|---|---|
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
namestring | nullidstringnamestringplanstring | nullfcraStatusstringErrors: 400, 401, 403, 429, default — one shape, Error
validation_error, param names the field) or a domain rule (profession_unknown, cadence_invalid, …).missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl -X PATCH https://api.primarycheck.com/v1/account \
-H "Authorization: Bearer pc_live_…" \
-H "Content-Type: application/json" \
-d '{
"name": "ATS production"
}'/v1/account/auditExport the audit log
Every key, user and consumer action on this account, newest first.
| Parameter | In | Type | Description |
|---|---|---|---|
since | query | string (date-time) | null | |
limit | query | integer = 1000 | |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
Errors: 401, 403, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/account/audit \ -H "Authorization: Bearer pc_live_…"
/v1/account/membersList team members
| Parameter | In | Type | Description |
|---|---|---|---|
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
dataarray of Memberrequireditems: 6 fields
idstringuserIdstringemailstringnamestring | nullroleenumowneradminmembervieweropscreatedAtstring (date-time)Errors: 401, 403, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/account/members \ -H "Authorization: Bearer pc_live_…"
/v1/account/members/invitesInvite a team member
Owner or admin session. The invite is mailed; valid for 7 days.
| Parameter | In | Type | Description |
|---|---|---|---|
Idempotency-Key | header | string (uuid) | UUID. For 24 hours the same key returns the original response without re-running sources or billing. Same key with a different body → 409 idempotency_conflict. The SDKs send one on every POST. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
emailstringrequiredrolestringidstringemailstringrolestringexpiresAtstring (date-time)acceptUrlstringErrors: 400, 401, 403, 409, 429, default — one shape, Error
validation_error, param names the field) or a domain rule (profession_unknown, cadence_invalid, …).missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.idempotency_conflict, already_complete, already_cancelled, consent_already_signed.rate_limited). Wait Retry-After seconds.curl -X POST https://api.primarycheck.com/v1/account/members/invites \
-H "Authorization: Bearer pc_live_…" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"email": "amy@example.com"
}'/v1/account/members/{id}Change a member's role
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The object id. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
rolestringrequiredidstringuserIdstringemailstringnamestring | nullroleenumowneradminmembervieweropscreatedAtstring (date-time)Errors: 400, 401, 403, 404, 429, default — one shape, Error
validation_error, param names the field) or a domain rule (profession_unknown, cadence_invalid, …).missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl -X PATCH https://api.primarycheck.com/v1/account/members/mem_… \
-H "Authorization: Bearer pc_live_…" \
-H "Content-Type: application/json" \
-d '{
"role": "member"
}'/v1/account/members/{id}Remove a member
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The object id. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
Errors: 401, 403, 404, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl -X DELETE https://api.primarycheck.com/v1/account/members/mem_… \ -H "Authorization: Bearer pc_live_…"
/v1/usageUsage and spend
Counts and spend by claim type for a date range, split by channel (API vs dashboard). groupBy=day (default) or type.
| Parameter | In | Type | Description |
|---|---|---|---|
from | query | string | null | YYYY-MM-DD or ISO-8601; default 30 days before to. |
to | query | string | null | YYYY-MM-DD (inclusive) or ISO-8601; default now. |
groupBy | query | string = day | day (default) or type. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
fromstring (date-time)tostring (date-time)groupByenumdaytypecountsobjectspendCentsintegerbyChannelobject2 fields
apiobject2 fields
countintegerspendCentsintegerdashboardobject2 fields
countintegerspendCentsintegerseriesarray of objectitems: 4 fields
datestringtypestringcountintegerspendCentsintegerErrors: 401, 403, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/usage \ -H "Authorization: Bearer pc_live_…"
API keys
Create, list and revoke keys (dashboard session required).
/v1/api_keysCreate an API key
Session required. The full key is returned once. Live keys need owner or admin.
| Parameter | In | Type | Description |
|---|---|---|---|
Idempotency-Key | header | string (uuid) | UUID. For 24 hours the same key returns the original response without re-running sources or billing. Same key with a different body → 409 idempotency_conflict. The SDKs send one on every POST. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
namestringrequiredmodestringrequired^(live|test)$idstringnamestringmodeenumlivetestprefixstringcreatedAtstring (date-time)lastUsedAtstring (date-time) | nullrevokedAtstring (date-time) | nullkeystringrequiredErrors: 400, 401, 403, 409, 429, default — one shape, Error
validation_error, param names the field) or a domain rule (profession_unknown, cadence_invalid, …).missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.idempotency_conflict, already_complete, already_cancelled, consent_already_signed.rate_limited). Wait Retry-After seconds.curl -X POST https://api.primarycheck.com/v1/api_keys \
-H "Authorization: Bearer pc_live_…" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"name": "ATS production",
"mode": "live"
}'/v1/api_keysList API keys
| Parameter | In | Type | Description |
|---|---|---|---|
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
dataarray of ApiKeyrequireditems: 7 fields
idstringnamestringmodeenumlivetestprefixstringcreatedAtstring (date-time)lastUsedAtstring (date-time) | nullrevokedAtstring (date-time) | nullErrors: 401, 403, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/api_keys \ -H "Authorization: Bearer pc_live_…"
/v1/api_keys/{id}Revoke an API key
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The api key id. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
Errors: 401, 403, 404, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl -X DELETE https://api.primarycheck.com/v1/api_keys/key_… \ -H "Authorization: Bearer pc_live_…"
Sign-up and sessions
Self-serve sign-up and magic-link sessions used by the dashboard.
/v1/invites/{token}/acceptno authAccept an invite
Returns a session.
| Parameter | In | Type | Description |
|---|---|---|---|
tokenreq | path | string | The sign-up and session id. |
Idempotency-Key | header | string (uuid) | UUID. For 24 hours the same key returns the original response without re-running sources or billing. Same key with a different body → 409 idempotency_conflict. The SDKs send one on every POST. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
namestring | nullsessionTokenstringuserobject3 fields
idstringemailstringnamestring | nullaccountobject5 fields
idstringnamestringplanstring | nullfcraStatusstringisStaffbooleanroleenumowneradminmembervieweropsexpiresAtstring (date-time)Errors: 400, 404, 409, 429, default — one shape, Error
validation_error, param names the field) or a domain rule (profession_unknown, cadence_invalid, …).idempotency_conflict, already_complete, already_cancelled, consent_already_signed.rate_limited). Wait Retry-After seconds.curl -X POST https://api.primarycheck.com/v1/invites/…/accept \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"name": "ATS production"
}'/v1/sessionsno authRequest a magic link
Always 202; never reveals whether the email exists.
| Parameter | In | Type | Description |
|---|---|---|---|
Idempotency-Key | header | string (uuid) | UUID. For 24 hours the same key returns the original response without re-running sources or billing. Same key with a different body → 409 idempotency_conflict. The SDKs send one on every POST. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
emailstringrequiredsentenumtrueErrors: 400, 409, 429, default — one shape, Error
validation_error, param names the field) or a domain rule (profession_unknown, cadence_invalid, …).idempotency_conflict, already_complete, already_cancelled, consent_already_signed.rate_limited). Wait Retry-After seconds.curl -X POST https://api.primarycheck.com/v1/sessions \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"email": "amy@example.com"
}'/v1/sessions/currentSign out
| Parameter | In | Type | Description |
|---|---|---|---|
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
Errors: 401, 403, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl -X DELETE https://api.primarycheck.com/v1/sessions/current \ -H "Authorization: Bearer pc_live_…"
/v1/sessions/exchangeno authExchange a login token for a session
| Parameter | In | Type | Description |
|---|---|---|---|
Idempotency-Key | header | string (uuid) | UUID. For 24 hours the same key returns the original response without re-running sources or billing. Same key with a different body → 409 idempotency_conflict. The SDKs send one on every POST. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
tokenstringrequiredsessionTokenstringuserobject3 fields
idstringemailstringnamestring | nullaccountobject5 fields
idstringnamestringplanstring | nullfcraStatusstringisStaffbooleanroleenumowneradminmembervieweropsexpiresAtstring (date-time)Errors: 400, 409, 429, default — one shape, Error
validation_error, param names the field) or a domain rule (profession_unknown, cadence_invalid, …).idempotency_conflict, already_complete, already_cancelled, consent_already_signed.rate_limited). Wait Retry-After seconds.curl -X POST https://api.primarycheck.com/v1/sessions/exchange \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"token": "…"
}'/v1/signupno authSign up
Creates the account, the owner user and a default test key; mails a sign-in link.
| Parameter | In | Type | Description |
|---|---|---|---|
Idempotency-Key | header | string (uuid) | UUID. For 24 hours the same key returns the original response without re-running sources or billing. Same key with a different body → 409 idempotency_conflict. The SDKs send one on every POST. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
emailstringrequirednamestringrequiredcompanystringrequiredaccountobject2 fields
idstringnamestringuserobject3 fields
idstringemailstringnamestring | nullloginUrlstringErrors: 400, 409, 429, default — one shape, Error
validation_error, param names the field) or a domain rule (profession_unknown, cadence_invalid, …).idempotency_conflict, already_complete, already_cancelled, consent_already_signed.rate_limited). Wait Retry-After seconds.curl -X POST https://api.primarycheck.com/v1/signup \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"email": "amy@example.com",
"name": "ATS production",
"company": "Mercy Staffing"
}'Disputes
Consumer-initiated disputes touching this account's reports.
/v1/disputesList disputes
Disputes consumers opened against this account's reports, with status and due dates.
| Parameter | In | Type | Description |
|---|---|---|---|
status | query | string | null | |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
Errors: 401, 403, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/disputes \ -H "Authorization: Bearer pc_live_…"
/v1/disputes/{id}Retrieve a dispute
Status, dueAt, outcome and the corrected verification id when resolved.
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The dispute id. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
Errors: 401, 403, 404, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/disputes/dsp_… \ -H "Authorization: Bearer pc_live_…"
Adverse action
Pre-adverse and final adverse-action notices with the waiting period enforced.
/v1/verifications/{id}/adverse_actionStart adverse action
Sends the pre-adverse notice with the report copy and Summary of Rights; starts the waiting period.
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The object id. |
Idempotency-Key | header | string (uuid) | UUID. For 24 hours the same key returns the original response without re-running sources or billing. Same key with a different body → 409 idempotency_conflict. The SDKs send one on every POST. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
reasonSummarystring | nulldeliverToEmailstring | nullErrors: 400, 401, 403, 404, 409, 429, default — one shape, Error
validation_error, param names the field) or a domain rule (profession_unknown, cadence_invalid, …).missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.idempotency_conflict, already_complete, already_cancelled, consent_already_signed.rate_limited). Wait Retry-After seconds.curl -X POST https://api.primarycheck.com/v1/verifications/ver_7c1e0b1f2a9d/adverse_action \
-H "Authorization: Bearer pc_live_…" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{}'/v1/verifications/{id}/adverse_actionRetrieve adverse-action status
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The object id. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
Errors: 401, 403, 404, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/verifications/ver_7c1e0b1f2a9d/adverse_action \ -H "Authorization: Bearer pc_live_…"
/v1/verifications/{id}/adverse_action/finalSend the final adverse-action notice
Refused until the waiting period has passed.
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The object id. |
Idempotency-Key | header | string (uuid) | UUID. For 24 hours the same key returns the original response without re-running sources or billing. Same key with a different body → 409 idempotency_conflict. The SDKs send one on every POST. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
reasonSummarystring | nulldeliverToEmailstring | nullErrors: 400, 401, 403, 404, 409, 429, default — one shape, Error
validation_error, param names the field) or a domain rule (profession_unknown, cadence_invalid, …).missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.idempotency_conflict, already_complete, already_cancelled, consent_already_signed.rate_limited). Wait Retry-After seconds.curl -X POST https://api.primarycheck.com/v1/verifications/ver_7c1e0b1f2a9d/adverse_action/final \
-H "Authorization: Bearer pc_live_…" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{}'/v1/verifications/{id}/adverse_action/notice.{fmt}Download an adverse-action notice
fmt is pdf or html.
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The object id. |
fmtreq | path | string | The object id. |
stage | query | string = pre_adverse | |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
Errors: 401, 403, 404, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/verifications/ver_7c1e0b1f2a9d/adverse_action/notice.pdf \ -H "Authorization: Bearer pc_live_…"
/v1/verifications/{id}/adverse_action/withdrawWithdraw adverse action
| Parameter | In | Type | Description |
|---|---|---|---|
idreq | path | string | The object id. |
Idempotency-Key | header | string (uuid) | UUID. For 24 hours the same key returns the original response without re-running sources or billing. Same key with a different body → 409 idempotency_conflict. The SDKs send one on every POST. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
Errors: 400, 401, 403, 404, 409, 429, default — one shape, Error
validation_error, param names the field) or a domain rule (profession_unknown, cadence_invalid, …).missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.idempotency_conflict, already_complete, already_cancelled, consent_already_signed.rate_limited). Wait Retry-After seconds.curl -X POST https://api.primarycheck.com/v1/verifications/ver_7c1e0b1f2a9d/adverse_action/withdraw \ -H "Authorization: Bearer pc_live_…" \ -H "Idempotency-Key: $(uuidgen)"
FCRA program
Customer vetting application, notices, and the account's FCRA status.
/v1/account/fcraFCRA status
fcraStatus, certified purposes and the vetting application.
| Parameter | In | Type | Description |
|---|---|---|---|
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
Errors: 401, 403, 429, default — one shape, Error
missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/account/fcra \ -H "Authorization: Bearer pc_live_…"
/v1/account/fcra/applicationApply for FCRA access
Customer vetting (§607(a)). Live keys are issued after approval.
| Parameter | In | Type | Description |
|---|---|---|---|
Idempotency-Key | header | string (uuid) | UUID. For 24 hours the same key returns the original response without re-running sources or billing. Same key with a different body → 409 idempotency_conflict. The SDKs send one on every POST. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
legalNamestringrequiredeinstringrequired^\d{2}-?\d{7}$addressstringrequiredwebsitestringrequired^https?://natureOfBusinessstringrequiredintendedPurposesarray of stringrequiredexpectedMonthlyVolumeintegerrequiredsignerNamestringrequiredsignerTitlestringrequiredagreementAcceptedbooleanrequiredagreementVersionstringrequiredcertificationsobjectErrors: 400, 401, 403, 409, 429, default — one shape, Error
validation_error, param names the field) or a domain rule (profession_unknown, cadence_invalid, …).missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.idempotency_conflict, already_complete, already_cancelled, consent_already_signed.rate_limited). Wait Retry-After seconds.curl -X POST https://api.primarycheck.com/v1/account/fcra/application \
-H "Authorization: Bearer pc_live_…" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"legalName": "…",
"ein": "…",
"address": "…",
"website": "…",
"natureOfBusiness": "…",
"intendedPurposes": [
"…"
],
"expectedMonthlyVolume": 1,
"signerName": "…",
"signerTitle": "…",
"agreementAccepted": true,
"agreementVersion": "…",
"certifications": {
"key": "value"
}
}'/v1/account/fcra/notices/acceptAccept the FCRA notices
Records acceptance of the Notice to Users and related notices.
| Parameter | In | Type | Description |
|---|---|---|---|
Idempotency-Key | header | string (uuid) | UUID. For 24 hours the same key returns the original response without re-running sources or billing. Same key with a different body → 409 idempotency_conflict. The SDKs send one on every POST. |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
acceptedBystringrequiredErrors: 400, 401, 403, 409, 429, default — one shape, Error
validation_error, param names the field) or a domain rule (profession_unknown, cadence_invalid, …).missing_api_key, invalid_api_key, invalid_session).fcra_not_enabled, purpose_not_certified, consent_required, read_only_role, session_required.idempotency_conflict, already_complete, already_cancelled, consent_already_signed.rate_limited). Wait Retry-After seconds.curl -X POST https://api.primarycheck.com/v1/account/fcra/notices/accept \
-H "Authorization: Bearer pc_live_…" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"acceptedBy": "…"
}'/v1/noticesno authList FCRA notice documents
| Parameter | In | Type | Description |
|---|---|---|---|
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
Errors: 429, default — one shape, Error
rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/notices
/v1/notices/{name}no authRetrieve an FCRA notice document
| Parameter | In | Type | Description |
|---|---|---|---|
namereq | path | string | The object id. |
format | query | string = json | |
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
Errors: 404, 429, default — one shape, Error
rate_limited). Wait Retry-After seconds.curl https://api.primarycheck.com/v1/notices/summary_of_rights
Health
Liveness.
/v1/healthno authHealth
| Parameter | In | Type | Description |
|---|---|---|---|
PrimaryCheck-Version | header | string | Pin behavior to an API version date. Defaults to the version pinned on the account. Additive changes never bump it. |
curl https://api.primarycheck.com/v1/health
Schemas
Every object the API sends or accepts. Click a name from any operation to jump here.
AcceptIn
namestring | nullAccount
idstringnamestring | nullfcraStatusenumnot_appliedpendingenabledcertifiedPurposesarray of stringversionstringcontrolsVersionstringplanstring | nulllimitsobjectauthenumkeysessionrolestring | nulluserobject | null3 fields
idstringemailstringnamestring | nullAccountPatch
namestring | nullAccountUpdated
idstringnamestringplanstring | nullfcraStatusstringAccuracyOutcome
outcomestringrequired^(correct|wrong_verified|wrong_discrepancy|wrong_other)$notesstring | nullAdverseIn
reasonSummarystring | nulldeliverToEmailstring | nullApiKey
idstringnamestringmodeenumlivetestprefixstringcreatedAtstring (date-time)lastUsedAtstring (date-time) | nullrevokedAtstring (date-time) | nullApiKeyCreated
idstringnamestringmodeenumlivetestprefixstringcreatedAtstring (date-time)lastUsedAtstring (date-time) | nullrevokedAtstring (date-time) | nullkeystringrequiredApproveIn
certifiedPurposesarray of string | nulladverseActionWaitDaysinteger | nullCertificationClaim
claimIdstring | nulltype"certification"issuerstringrequiredcredentialIdstring | nullChannelUsage
countintegerspendCentsintegerChecklistIn
itemstringrequireddonebooleannotestring | nullClaimResult
claimIndexintegerrequiredclaimIdstring | nulltypestringrequiredreasonReason | nullinputobject | nullresultsarray of ConnectorResultitems: 11 fields
sourceCodestringrequiredreasonReason | nullfieldChecksarray of FieldCheckitems: 5 fields
fieldstringrequiredclaimedanyfoundanymatchboolean | nullnotestring | nullevidencearray of Evidenceitems: 8 fields
idstring | nullkindenumrequiredapi_responsepage_capturedataset_rowdocumentrendered_recordoutreach_logcall_transcriptpartner_responsesourceCodestringrequiredsourceUrlstring | nullcapturedAtstring (date-time)sha256string | nullcontentany | nullrefstring | nullrecordobject | nullcheckedAtstring (date-time)dataAsOfstring (date-time) | nulljobIdstring | nullreusedFromstring | nullpartsarray of ClaimResultitems: 8 fields
claimIndexintegerrequiredclaimIdstring | nulltypestringrequiredreasonReason | nullinputobject | nullresultsarray of ConnectorResultitems: 11 fields
sourceCodestringrequiredreasonReason | nullfieldChecksarray of FieldCheckitems: 5 fields
fieldstringrequiredclaimedanyfoundanymatchboolean | nullnotestring | nullevidencearray of Evidenceitems: 8 fields
idstring | nullkindenumrequiredapi_responsepage_capturedataset_rowdocumentrendered_recordoutreach_logcall_transcriptpartner_responsesourceCodestringrequiredsourceUrlstring | nullcapturedAtstring (date-time)sha256string | nullcontentany | nullrefstring | nullrecordobject | nullcheckedAtstring (date-time)dataAsOfstring (date-time) | nulljobIdstring | nullreusedFromstring | nullpartsarray of ClaimResultitems: 8 fields
claimIndexintegerrequiredclaimIdstring | nulltypestringrequiredreasonReason | nullinputobject | nullresultsarray of ConnectorResultitems: 11 fields
sourceCodestringrequiredreasonReason | nullfieldChecksarray of FieldCheckevidencearray of Evidencerecordobject | nullcheckedAtstring (date-time)dataAsOfstring (date-time) | nulljobIdstring | nullreusedFromstring | nullConnectorResult
sourceCodestringrequiredreasonReason | nullfieldChecksarray of FieldCheckitems: 5 fields
fieldstringrequiredclaimedanyfoundanymatchboolean | nullnotestring | nullevidencearray of Evidenceitems: 8 fields
idstring | nullkindenumrequiredapi_responsepage_capturedataset_rowdocumentrendered_recordoutreach_logcall_transcriptpartner_responsesourceCodestringrequiredsourceUrlstring | nullcapturedAtstring (date-time)sha256string | nullcontentany | nullrefstring | nullrecordobject | nullcheckedAtstring (date-time)dataAsOfstring (date-time) | nulljobIdstring | nullreusedFromstring | nullConsentProof the employer obtained FCRA §604(b)(2) disclosure + authorization.
consentIdstring | nulldisclosureVersionstring | nullsignedAtstring (date-time) | nullsignerIpstring | nullConsentIn
personobjectrequired8 fields
firstNamestringrequiredmiddleNamestring | nulllastNamestringrequiredsuffixstring | nulldobstring (date) | nullaliasesarray of stringemailstring | nullphonestring | nullpurposeenumemploymentcurrent_staff_monitoringnetwork_credentialingcustomerNamestring | nullstatestring | nullConsentRecord
idstringobjectenumconsentstatusenumpendingsignedexpiredpurposestringpersonobject8 fields
firstNamestringrequiredmiddleNamestring | nulllastNamestringrequiredsuffixstring | nulldobstring (date) | nullaliasesarray of stringemailstring | nullphonestring | nulldisclosureVersionstringstateAddonsarray of stringurlstring | nullsignedAtstring (date-time) | nullsignerIpstring | nullevidenceIdstring | nullexpiresAtstring (date-time) | nullcreatedAtstring (date-time)CoverageRow
statestringprofessionstringlabelstringboardstringboardTypestringsourcestring | nullstatusenumlivedegradedbuildingblockedsearchByarray of stringfieldsarray of stringcompactstring | nulllookupUrlstring | nullDeleted
idstringdeletedenumtrueDenyIn
reasonstringrequiredDisputeIn
verificationIdstringrequiredclaimIndexinteger | nullstatementstringrequireddocumentsarray of objectEducationClaim
claimIdstring | nulltype"education"schoolstringrequiredschoolStatestring | nulldegreestring | nullmajorstring | nullgraduatedYearinteger | nullattendedFromstring | nullattendedTostring | nullEmploymentClaim
claimIdstring | nulltype"employment"employerstringrequiredemployerCitystring | nullemployerStatestring | nullstartstring | nullendstring | nullsuppliedContactPhonestring | nullsuppliedContactEmailstring | nullError
errorobjectrequired6 fields
typeenumrequiredauthenticationpermissioninvalid_requestfcrarate_limit_errorconflictnot_foundapi_errorcodestringrequiredmessagestringrequiredparamstring | nullrequestIdstringdocUrlstringEvidence
idstring | nullkindenumrequiredapi_responsepage_capturedataset_rowdocumentrendered_recordoutreach_logcall_transcriptpartner_responsesourceCodestringrequiredsourceUrlstring | nullcapturedAtstring (date-time)sha256string | nullcontentany | nullrefstring | nullEvidenceIndexRow
idstring | nullclaimIndexintegersourcestringkindstringsha256string | nullcapturedAtstring (date-time)sourceUrlstring | nullrefstring | nullinlinebooleanindexintegerEvidenceObject
idstringobjectenumevidenceverificationIdstringsourceCodestringkindenumapi_responsepage_capturedataset_rowdocumentrendered_recordoutreach_logcall_transcriptpartner_responsesourceUrlstring | nullcontentTypestringsha256stringbytesintegercapturedAtstring (date-time)urlstringexpiresAtstring (date-time)ExchangeIn
tokenstringrequiredExclusionScreenNot a claim the person makes; a screen the customer asks for (healthcare bundle).
claimIdstring | nulltype"exclusion_screen"npistring | nullFcraApplication
legalNamestringrequiredeinstringrequired^\d{2}-?\d{7}$addressstringrequiredwebsitestringrequired^https?://natureOfBusinessstringrequiredintendedPurposesarray of stringrequiredexpectedMonthlyVolumeintegerrequiredsignerNamestringrequiredsignerTitlestringrequiredagreementAcceptedbooleanrequiredagreementVersionstringrequiredcertificationsobjectFieldCheck
fieldstringrequiredclaimedanyfoundanymatchboolean | nullnotestring | nullFileRequest
firstNamestringrequiredlastNamestringrequireddobstringrequired^\d{4}-\d{2}-\d{2}$emailstringrequired^[^@\s]+@[^@\s]+\.[^@\s]+$last4string | nullverificationIdstring | nullHealth
okbooleancontrolsstringversionstringHealthcareScreenClaimBundle: expands server-side into license + npi + exclusion_screen (docs/CHECK-TYPES.md §E).
claimIdstring | nulltype"healthcare_screen"statestringrequiredprofessionstringrequiredlicenseNumberstring | nullnpistring | null^\d{10}$InboundEmail
jobIdstring | nulltostring | nullfromstring | nullsubjectstring | nulltextstringInboundFax
jobIdstring | nullfromNumberstring | nulldocumentUrlstring | nullpagesinteger | nullInboundPayroll
event_typestring | nulltracking_infostring | nullpayloadobjectInboundVoice
jobIdstringrequiredtranscriptstringoutcomestring | nullrecordingUrlstring | nullInvite
idstringemailstringrolestringexpiresAtstring (date-time)acceptUrlstringInviteIn
emailstringrequiredrolestringKeyIn
namestringrequiredmodestringrequired^(live|test)$LicenseClaim
claimIdstring | nulltype"license"statestringrequiredprofessionstringrequirednumberstring | nulldeaNumberstring | nullMagicLinkRequested
sentenumtrueMember
idstringuserIdstringemailstringnamestring | nullroleenumowneradminmembervieweropscreatedAtstring (date-time)Monitor
idstringobjectenummonitorstatusenumactivestoppedcadenceenumdailyweeklymonthlypersonobject8 fields
firstNamestringrequiredmiddleNamestring | nulllastNamestringrequiredsuffixstring | nulldobstring (date) | nullaliasesarray of stringemailstring | nullphonestring | nullclaimobjectsnapshotobject | nulllastCheckedAtstring (date-time) | nullnextCheckAtstring (date-time) | nullcreatedAtstring (date-time)stoppedAtstring (date-time) | nullMonitorEvent
idstringkindenumverdictstatusexpiresactionrecorddiffobjectwebhookEventIdstring | nullcreatedAtstring (date-time)MonitorIn
personobjectrequired8 fields
firstNamestringrequiredmiddleNamestring | nulllastNamestringrequiredsuffixstring | nulldobstring (date) | nullaliasesarray of stringemailstring | nullphonestring | nullclaimone ofrequiredone of 7 shapes
LicenseClaim
claimIdstring | nulltype"license"statestringrequiredprofessionstringrequirednumberstring | nulldeaNumberstring | nullNpiClaim
claimIdstring | nulltype"npi"numberstringrequired^\d{10}$ExclusionScreen
claimIdstring | nulltype"exclusion_screen"npistring | nullHealthcareScreenClaim
claimIdstring | nulltype"healthcare_screen"statestringrequiredprofessionstringrequiredlicenseNumberstring | nullnpistring | null^\d{10}$CertificationClaim
claimIdstring | nulltype"certification"issuerstringrequiredcredentialIdstring | nullEducationClaim
claimIdstring | nulltype"education"schoolstringrequiredschoolStatestring | nulldegreestring | nullmajorstring | nullgraduatedYearinteger | nullattendedFromstring | nullattendedTostring | nullEmploymentClaim
claimIdstring | nulltype"employment"employerstringrequiredemployerCitystring | nullemployerStatestring | nullstartstring | nullendstring | nullsuppliedContactPhonestring | nullsuppliedContactEmailstring | nullcadenceenumdailyweeklymonthlyconsentConsent | nullMonitorStopped
idstringstatusenumstoppedMoreInfo
statementstringrequireddocumentsarray of objectNoticesAccept
acceptedBystringrequiredNpiClaim
claimIdstring | nulltype"npi"numberstringrequired^\d{10}$Person
firstNamestringrequiredmiddleNamestring | nulllastNamestringrequiredsuffixstring | nulldobstring (date) | nullaliasesarray of stringemailstring | nullphonestring | nullProfession
keystringlabelstringcategorystringboardTypestringcompactstring | nullPurpose
employmentcurrent_staff_monitoringnetwork_credentialingQueued
idstringqueuedenumtrueReason
no_coveragesource_errorsource_timeoutemployer_policyemployer_uses_third_partyemployer_closedemployer_not_foundno_responseinsufficient_identifiersambiguous_matchsource_not_builtsource_stalesource_degradedcancelledReplyIn
responderNamestringrequiredresponderRolestring | nullconfirmedbooleanrequiredstartstring | nullendstring | nulldegreestring | nullgraduatedYearinteger | nullnotesstring | nullrefusedbooleanthirdPartystring | nullResolve
outcomestringrequiredanswerobject | nullthirdPartystring | nullnotestring | nulloperatorstringrequiredResolveIn
outcomestringrequirednotesstring | nullRolePatch
rolestringrequiredSession
sessionTokenstringuserobject3 fields
idstringemailstringnamestring | nullaccountobject5 fields
idstringnamestringplanstring | nullfcraStatusstringisStaffbooleanroleenumowneradminmembervieweropsexpiresAtstring (date-time)SessionIn
emailstringrequiredSignIn
typedNamestringrequiredagreedbooleanrequiredconsumerCopyRequestedbooleanSignupIn
emailstringrequirednamestringrequiredcompanystringrequiredSignupResult
accountobject2 fields
idstringnamestringuserobject3 fields
idstringemailstringnamestring | nullloginUrlstringSource
codestringnamestringclaimTypesarray of stringmodestringrolestringstatusstringrungstring | nulllastCanaryAtstring (date-time) | nulllastCanaryOkboolean | nullerrorRate24hnumber | nullcalls24hintegerdataAsOfstring (date-time) | nulldatasetFreshboolean | nulldatasetsarray of objectitems: 4 fields
codestringdataAsOfstring (date-time) | nullrowsintegermaxAgeDaysintegerSourcePatch
statusstring | nullconcurrencyinteger | nullratePerSnumber | nullnotesstring | nullreasonstring | nullSourceStatus
okerrortimeoutno_coveragependingnot_builtUsage
fromstring (date-time)tostring (date-time)groupByenumdaytypecountsobjectspendCentsintegerbyChannelobject2 fields
apiobject2 fields
countintegerspendCentsintegerdashboardobject2 fields
countintegerspendCentsintegerseriesarray of objectitems: 4 fields
datestringtypestringcountintegerspendCentsintegerVerdict
verifieddiscrepancynot_foundunable_to_verifypendingVerification
idstringrequiredstatusenumrequiredpendingcompletecancelledpersonobjectrequired8 fields
firstNamestringrequiredmiddleNamestring | nulllastNamestringrequiredsuffixstring | nulldobstring (date) | nullaliasesarray of stringemailstring | nullphonestring | nullclaimsarray of ClaimResultrequireditems: 8 fields
claimIndexintegerrequiredclaimIdstring | nulltypestringrequiredreasonReason | nullinputobject | nullresultsarray of ConnectorResultitems: 11 fields
sourceCodestringrequiredreasonReason | nullfieldChecksarray of FieldCheckitems: 5 fields
fieldstringrequiredclaimedanyfoundanymatchboolean | nullnotestring | nullevidencearray of Evidenceitems: 8 fields
idstring | nullkindenumrequiredapi_responsepage_capturedataset_rowdocumentrendered_recordoutreach_logcall_transcriptpartner_responsesourceCodestringrequiredsourceUrlstring | nullcapturedAtstring (date-time)sha256string | nullcontentany | nullrefstring | nullrecordobject | nullcheckedAtstring (date-time)dataAsOfstring (date-time) | nulljobIdstring | nullreusedFromstring | nullpartsarray of ClaimResultitems: 8 fields
claimIndexintegerrequiredclaimIdstring | nulltypestringrequiredreasonReason | nullinputobject | nullresultsarray of ConnectorResultitems: 11 fields
sourceCodestringrequiredreasonReason | nullfieldChecksarray of FieldCheckevidencearray of Evidencerecordobject | nullcheckedAtstring (date-time)dataAsOfstring (date-time) | nulljobIdstring | nullreusedFromstring | nullcreatedAtstring (date-time)completedAtstring (date-time) | nullreferencestring | nullmetadataobjectallowPaidThirdPartybooleanmaxAgestring | nullVerificationOptions`options` on create (docs/API-V1.md). `maxAge`: ISO-8601 duration; accept a result we produced for the same
claim + person within this window (docs/MASTER-PLAN.md §4 result reuse). Default PT0S = always live.
maxAgestring | nullallowPaidThirdPartyboolean | nulldeadlinestring | nullVerificationRequest
personobjectrequired8 fields
firstNamestringrequiredmiddleNamestring | nulllastNamestringrequiredsuffixstring | nulldobstring (date) | nullaliasesarray of stringemailstring | nullphonestring | nullclaimsarray of one ofrequireditems: one of 7 shapes
LicenseClaim
claimIdstring | nulltype"license"statestringrequiredprofessionstringrequirednumberstring | nulldeaNumberstring | nullNpiClaim
claimIdstring | nulltype"npi"numberstringrequired^\d{10}$ExclusionScreen
claimIdstring | nulltype"exclusion_screen"npistring | nullHealthcareScreenClaim
claimIdstring | nulltype"healthcare_screen"statestringrequiredprofessionstringrequiredlicenseNumberstring | nullnpistring | null^\d{10}$CertificationClaim
claimIdstring | nulltype"certification"issuerstringrequiredcredentialIdstring | nullEducationClaim
claimIdstring | nulltype"education"schoolstringrequiredschoolStatestring | nulldegreestring | nullmajorstring | nullgraduatedYearinteger | nullattendedFromstring | nullattendedTostring | nullEmploymentClaim
claimIdstring | nulltype"employment"employerstringrequiredemployerCitystring | nullemployerStatestring | nullstartstring | nullendstring | nullsuppliedContactPhonestring | nullsuppliedContactEmailstring | nullconsentConsent | nulloptionsVerificationOptions | nullallowPaidThirdPartybooleandeprecatedoptions.allowPaidThirdParty; options wins when both are sent.maxAgestring | nulldeprecatedoptions.maxAge; options wins when both are sent.referencestring | nullmetadataobjectWebhookDelivery
idstringeventIdstringeventTypestringattemptintegerstatusCodeinteger | nullresponseMsinteger | nulldeliveredAtstring (date-time) | nullnextRetryAtstring (date-time) | nullcreatedAtstring (date-time)WebhookEndpoint
idstringrequiredobjectenumwebhook_endpointurlstringrequiredeventsarray of stringrequiredmodeenumliveteststatusstringcreatedAtstring (date-time)WebhookEndpointCreated
idstringrequiredobjectenumwebhook_endpointurlstringrequiredeventsarray of stringrequiredmodeenumliveteststatusstringcreatedAtstring (date-time)secretstringrequiredWebhookEndpointIn
urlstringrequired^https?://eventsarray of enumrequired