Disputes & reinvestigation
Open a dispute on a furnished record, follow the 30-day clock, and get the outcome.
Base URL https://api.offendersearch.appOpen a dispute
When a consumer disputes a record you received from us, open a reinvestigation on the order. Name the records, the reason, the consumer’s statement, and when the dispute reached you — the 30-day clock runs from that moment (15 U.S.C. § 1681i(a)(1)).
curl -X POST https://api.offendersearch.app/v1/fcra/orders/fo_7c1e9b2a4d3f/disputes \
-H "X-API-Key: $OFFENDERSEARCH_KEY" \
-H "Content-Type: application/json" \
-d '{
"recordIds": ["crim:IL-SANGAMON:2021CR004417"],
"reason": "not_me",
"consumerStatement": "I have never lived in Sangamon County.",
"receivedAt": "2026-10-03T09:12:00Z"
}'| Field | Required | Description |
|---|---|---|
recordIds | yes | One or more furnished recordId values from this order. |
reason | yes | not_me, inaccurate, incomplete, outdated or other. |
consumerStatement | no | What the consumer told you, in their words. |
receivedAt | yes | When the dispute reached you. dueAt is 30 days later. |
The dispute object
{
"id": "fd_9a0e44",
"orderId": "fo_7c1e9b2a4d3f",
"origin": "partner",
"recordIds": ["crim:IL-SANGAMON:2021CR004417"],
"reason": "not_me",
"consumerStatement": "I have never lived in Sangamon County.",
"status": "investigating",
"receivedAt": "2026-10-03T09:12:00Z",
"dueAt": "2026-11-02T09:12:00Z",
"extendedAt": null,
"overdue": false,
"notes": null,
"changes": null,
"resolvedAt": null
}| Status | Meaning |
|---|---|
received | Logged; the clock is running. |
investigating | The record is being checked with the authority that holds it. |
verified | The record was confirmed as furnished. Nothing changes. |
modified | The record was corrected. changes lists what changed. |
deleted | The record was removed, or found not to be the consumer’s. |
unable_to_verify | It could not be verified in time. It is treated as deleted. |
If the consumer sends new information during the investigation, add it with POST /v1/fcra/disputes/{id}/information and { "statement": "…" }. That is the one 15-day extension (15 U.S.C. § 1681i(a)(1)(B)): dueAt moves and extendedAt records when. It returns 409 dispute_not_extendable once the dispute is resolved, already extended or past due. overdue is true for an open dispute past dueAt.
What an outcome does
deletedandunable_to_verifysuppress the record from every later order about the same consumer (disputed_suppressed).modifiedapplies the correction to every later order.- A
record.correctedevent goes to every partner that received the record, not only the one that opened the dispute.
Disputes from the consumer portal
A consumer can also dispute directly through the consumer portal. That creates the same dispute object with origin: "consumer_portal", and you receive dispute.created for your order. A dispute that reaches us through our consumer request form and concerns one of your orders appears with origin: "consumer_request". GET /v1/fcra/disputes?status=&orderId= lists every dispute on your orders.