Quickstart
Use sandbox to validate your integration, then move the same request shapes to production credentials andhttps://api.theary.ai.
1. Configure environment
tenant claim configured for your account. See Authentication.
2. Verify connectivity
GET /health requires no authentication:
200 with a JSON health payload.
Then confirm your token and tenant claim are accepted against an authenticated endpoint:
200 confirms auth is working; a 401 means the token is missing/expired or the tenant claim is invalid (see Authentication).
3. Create an employment order
See Create order — field reference for all required and optional fields. Applicant home address (applicant.addresses) is optional.
Set searchTypes[].externalSearchId to your own stable correlation ID. It is echoed back on searches and webhook events and is the key you use to reconcile duplicates — order creation is not idempotent (see Production readiness).
Minimal order (no home address)
Full example (with home address)
Copy this JSON body as-is to the Create order page, or save it asorder.json and send it with cURL. It includes aliases, home address, a questionnaire link, employment history with fax, and per-search webhook routing.
searchTypes[].questionnaireUrl/questionnaireAccessCode— direct link and access code for the applicant’s online questionnaire, passed through to outbound verification.applicant.applicantAlias[]— AKA / former names (firstNameandlastNamerequired per entry;middleName,suffixoptional). See Applicant alias.history.employment[].employerFax— fax contact used when policy allows fax outreach.webhookConfig.closeoutEndpoints— per-search-type routing with optionalheaders,basicAuth, andeventsfilters;fallbackEndpointcovers anything not matched. See Webhook config.
Education order
Education orders use the same envelope with anEDUCATION search type and history.education records.
Send the request
Save either JSON example above asorder.json, then:
4. Track progress
Capture theverificationOrderId from the create response, then poll that order’s searches (this example uses jq to extract the ID):
Optional: attach a signed release
If you want a signed release PDF attached to outbound verification requests, setapplicant.signedReleaseFileUrl using one of these options:
GCS upload (recommended)
- Call Generate upload URL.
PUTthe PDF to the returnedsignedUrlwithContent-Type: application/pdf.- Put the returned
fileUriinapplicant.signedReleaseFileUrl.
Inline base64
Send the PDF as raw base64 or adata:application/pdf;base64,... data URL in applicant.signedReleaseFileUrl. The API uploads it to cloud storage at order creation and stores a gs:// URI on each search.
See Applicant schema — Signed release file for validation rules and examples.
Optional: ban a third-party vendor
If a client does not want a search routed to a specific third-party vendor, addthirdPartyBan inside searchConfig.
Production readiness
Before you leave sandbox, confirm your integration handles these cases:- Duplicate prevention — Always send a stable
externalSearchIdper search. If a create call fails without a response, look up byexternalSearchIdbefore resending to avoid duplicates. - Transient errors and retries — Retry
5xxand network failures with exponential backoff. Do not retry4xx— fix the request instead. See Errors. - Async timing — A
201means SNH AI accepted the order, not that verification finished. Turnaround depends on employer responsiveness and channel — typical results arrive within hours, though some verifications take longer. Prefer webhooks for completion and use polling only as a fallback. See Webhook integration. - Webhook security — Always verify the
X-Webhook-Signatureheader with your shared secret before you process an event. See Webhook integration. - SLA and escalation — Searches that cannot finish automatically escalate on organization-configurable timers. See SLA and escalation.
- Batching —
POST /batchescreates each order independently. Record every returnedverificationOrderIdand track work with individual order endpoints. See Background Check overview.
Next steps
- Create order for field-level reference
- Get order searches to inspect search state
- Third-party ban to suppress specific vendor routing
- Webhook integration for production event handling
- Environments for sandbox-specific limits

