Built for outages. Ready for change.
When to use automatic retries
- KYB checks and back-office reviews: let temporary failures recover without sending a case back to your team or customer.
- Scheduled and overnight verification: give register maintenance, rate limits, and intermittent outages time to clear.
- Incident recovery: let an open request benefit from a fix as soon as a later retry uses it.
Configure your retry window
This example allows retries over a six-hour window. Omittingmode selects verification mode.
The value must be an integer between
60 and 172800, inclusive. Values outside this range, including 0, are rejected with HTTP 400.
Omit the option to keep normal retrieval behavior without an additional request-level retry window. The option cannot be added to a request after it has been created.
Follow the original request
- Submit the
POSTonce and save the returnedrequest.requestId. - Poll
GET /v2/company/{requestId}or processcompany.updatedwebhooks. An item awaiting an automatic retry staysin_progress; successful items remain available and are not retrieved again. - Handle each item when its status becomes
succeededorfailed. A webhook can contain partial results, so inspectrequest.dataStatusrather than treating the first webhook as completion of the whole request.
When retries run and stop
The window starts when request processing begins. It includes the initial attempt, time spent retrieving other items, and waits between attempts. Despite its name,maxRetryDelaySeconds is the total retry window, not the delay between attempts.
Retries wait until all items in the current attempt have finished. The delay increases between attempts and includes a random variation to spread out traffic. The schedule depends on the window and the error; there is no fixed interval or guaranteed number of attempts.
A deployment makes a fix available to subsequent attempts. It does not force an immediate retry or extend your chosen window.
The window limits when another attempt can start. It does not cancel an attempt already running or guarantee that the request finishes within that time. A slow initial attempt can consume the entire window without leaving time for a retry.
Once no further retry is scheduled, an unsuccessful item becomes failed with its error details. An ineligible failure can become failed before the window ends. A successful item is returned as soon as it is available.
Which failures qualify
Only errors markedretryable: true can qualify, and that flag alone does not guarantee an automatic retry. For document retrieval and other operations that can place a register order, Topograph retries only when it can confirm no order was submitted. An uncertain outcome is reported as failed rather than risking a duplicate order.
Permanent errors such as resource_not_found, no_data_available, and invalid_request are not retried. Neither are graph, the legacy companyProfile datapoint, or manually delivered items.
The option is available only in verification mode. Combining it with mode: "prefill", X-Topograph-No-Cache, or agenticEnrichment is rejected with HTTP 400.
Request manual items separately when you want automatic items to retry promptly. A manual item can take days and delay the next attempt for other items in the same request, consuming their retry window.
After a final failure
maxRetryDelaySeconds and retryAfterSeconds serve different purposes:
If an item ultimately fails with
retryAfterSeconds: 300, wait at least another 5 minutes before resubmitting it. The response field does not define the automatic retry schedule or extend the original window.
Check status.topograph.co for an ongoing incident. For the full list of error codes and how to handle them, see Reliability & Errors.