FCRA Partner API · v1.0.0 · approved partners

FCRA API reference

Every endpoint and every object, each linked to its request and response fields.

Livehttps://api.offendersearch.appSandboxhttps://sandbox.offendersearch.app

Every endpoint of the FCRA API and every object it sends and returns, in one index. Each endpoint links to its Request and Response tables — every field, its type, whether it is required, its default and an example — and each object links to the one place it is defined. Every partner call authenticates with the X-API-Key header on an account with FCRA Partner Access; the receipt and the consumer request are public, and the consumer portal routes take the portal session token. Refusals return { "detail": { "code", "message" } } (see Errors).

FCRA background check API endpoints

Every endpoint, with a link to its Request and Response tables. Partner routes take X-API-Key; the receipt and the consumer request are public; the consumer portal routes take the portal session token.

EndpointWhat it does
GET /v1/fcra/partnerPartner status. Whether this account can place FCRA orders, the purposes its agreement covers, and whether a webhook endpoint is set. Never 403: an account without access gets enabled: false.
POST /v1/fcra/end-usersRegister an end user. Registers the employer, landlord or other business a report is for, once, with the permissible purposes it holds and your certification.
GET /v1/fcra/end-usersList end users. Every end user on this account.
GET /v1/fcra/end-users/{end_user_id}Retrieve an end user. One end user.
PATCH /v1/fcra/end-users/{end_user_id}Update an end user. Changes an end user's purposes, or suspends or reinstates it.
POST /v1/fcra/ordersCreate an order. Creates an order for one consumer with a sex offender search, a criminal search or both. Returns 202 with the order at received; the searches run in the background and report by webhook.
GET /v1/fcra/ordersList orders. Your orders, newest first, one page at a time.
GET /v1/fcra/orders/{order_id}Retrieve an order. The order, its status, and the status and result of each search.
POST /v1/fcra/orders/{order_id}/cancelCancel an order. Cancels an order that has not finished. Its queued searches become cancelled; a search already running finishes.
GET /v1/fcra/orders/{order_id}/searches/{search_id}Retrieve a search. One search with its coverage and every furnished record.
POST /v1/fcra/searches/{search_id}/reverifyRe-verify a search. Adds a new search of the same type to the order and marks this one superseded, with supersededBy pointing at the new one. The order returns to in_progress.
GET /v1/fcra/orders/{order_id}/reportGet the report. The furnished report in one document: as JSON, or as the PDF rendered once when the order completed and stored, so its bytes and hash stay the same unless a re-verify completes the order again with a new report.
GET /v1/fcra/receipts/{order_id}Get the signed receipt. Public, no API key: the Ed25519-signed receipt for a completed order. It contains no personal data.
GET /v1/fcra/orders/{order_id}/evidenceList evidence. Every official-source capture taken for the order, with its hash. Only the account that placed the order can read them.
GET /v1/fcra/orders/{order_id}/evidence/{capture_id}Get one capture. One capture's stored bytes, exactly as kept, as a file download.
POST /v1/fcra/orders/{order_id}/disputesOpen a dispute. Opens a reinvestigation of records furnished in this order. You receive dispute.created, and our team is notified.
GET /v1/fcra/disputesList disputes. Every dispute on your orders, opened by you or in the consumer portal, earliest due first.
GET /v1/fcra/disputes/{dispute_id}Retrieve a dispute. A dispute, its due date and its outcome.
POST /v1/fcra/disputes/{dispute_id}/informationAdd information. Adds the consumer's new information to an open dispute. This is the one 15-day extension: dueAt moves 15 days and extendedAt records when.
GET /v1/fcra/webhook-endpointGet the webhook endpoint. Whether a webhook endpoint is configured, and where. The secret is never returned here.
PUT /v1/fcra/webhook-endpointSet the webhook endpoint. Sets your webhook URL. The response carries the signing secret when the endpoint is created and when rotateSecret is true — store it then. From the dashboard, only an account admin can call it.
DELETE /v1/fcra/webhook-endpointRemove the webhook endpoint. Removes your webhook endpoint. Events are still recorded, with delivery status no_endpoint, and listed by GET /v1/fcra/events.
GET /v1/fcra/eventsList events. Every event for your account in the order it happened, each with its delivery status, so a missed delivery is never lost.
POST /v1/fcra/events/{event_id}/resendResend an event. Delivers one event to your webhook again, now, and returns it with the result of that attempt.
POST /v1/consumer/portal/sessionOpen a portal session. The consumer opens their file for one order with its access code, their last name and their date of birth. Returns a token valid for 30 minutes.
GET /v1/consumer/portal/reportPortal report. Exactly what was furnished about the consumer in this order, in plain language. Withheld records, other orders and anything not furnished are never shown.
POST /v1/consumer/portal/disputesDispute from the portal. The consumer disputes records in this report. It creates the same dispute you would open through the API, with origin: "consumer_portal", and you receive dispute.created.
GET /v1/consumer/portal/disputesPortal disputes. Every dispute on this order — the consumer's and yours — with status, due date and outcome.
POST /v1/consumer/requestsConsumer file or dispute request. Public: a consumer without an access code requests their file or disputes information. Identity is verified separately before anything is disclosed. It is what the /consumer page sends.

FCRA API objects — request and response fields

Every object the FCRA API sends or returns, linked to the one place its fields are defined. A furnished record is the sex offender Record or the criminal record with the FCRA fields added.

ObjectWhat it is
AddressAn end user's business address. Every field is optional; state is a two-letter code and is returned upper-cased.
CertificationThe certification the end user gave you that it holds the stated purposes, recorded as you hold it.
EndUserAn employer, landlord or other business your orders are for. Every order names one by id.
ConsentYour attestation that you obtained the consumer's disclosure and authorization, recorded on the order and in its evidence record.
SubjectThe consumer the order is about. A full date of birth is required: the FCRA controls furnish exact date-of-birth matches only.
AliasAnother name the consumer has used. Every alias is searched in addition to the subject's name.
SubjectAddressOne address in the consumer's history. Each state listed here is searched live (except a registry withheld for the order's purpose) and brings its reporting limits to the criminal search.
UseLocationWhere the job or the housing is. Its state is searched live (except a registry withheld for the order's purpose) and its reporting limits apply.
SearchSpecOne search to run in the order.
OrderAn FCRA order: its status, its end user and purpose, every search it carries, and the consumer portal access code.
SearchOne search in an order: its status, its result, the source-by-source coverage behind it, and the counts of records withheld by reason.
CoverageRowOne source a search covered: whether it was searched live or in our data, when, whether it answered, and what it produced. A clear is exactly the sum of these rows.
FurnishedRecordA record that passed every control. It is the product's own record object — the sex offender Record object or the criminal record object — with the FCRA fields below added. On a sex offender record recordId and matchBasis replace the Record object's own fields of those names.
CaptureOne piece of official-source evidence taken during a live check: what it is, where it came from, when, and its SHA-256. The bytes are at GET /v1/fcra/orders/{order_id}/evidence/{capture_id}.
DisputeA reinvestigation of furnished records, on the 30-day clock from receivedAt.
PortalRecordOne furnished record as the consumer sees it: a plain-language summary and the full record.
PortalDisputeA dispute as the consumer sees it in the portal.
WebhookEndpointYour FCRA webhook endpoint. secret appears only in the response that created it or rotated it.
EventOne FCRA event on your account, with its delivery status. GET /v1/fcra/events lists them, oldest first.
EventDataThe identifiers and statuses an event carries — never personal data. Which keys are present depends on the event type (see the table under Events).
WebhookDeliveryThe JSON body POSTed to your webhook URL (or the order's callbackUrl), signed in X-Offendersearch-Signature.
ErrorEvery refusal the FCRA API raises itself. Switch on detail.code; show detail.message. A body that fails field validation returns the standard validation body instead, where detail is an array of { loc, msg, type } entries.

Product overview