200 HTTP status and an error body. Error responses are not billed. The call is still recorded, and for trial projects it counts toward the monthly limit.
Error response format
Response headers
X-Tx-Id is not sent for requests rejected before the body is read: malformed JSON (400 REQUEST_INVALID) and an oversized body (413 REQUEST_TOO_LARGE). When contacting support, include X-Request-Id and X-Trace-Id along with X-Tx-Id.
Error codes
Request problems (4xx)
The same request returns the same result until you fix it. Do not retry as is.Input image problems (502)
The engine responded normally but could not find what it needed in the image you sent. Sending the same image again returns the same result, so call again with a newly captured image.Server and source problems (5xx)
These are not caused by your request. Retry using the rules below.New error codes can be added within
v1. If you receive an unknown code, handle it by its HTTP status (4xx or 5xx).Duplicate calls and retries
Unit API does not accept idempotency keys. Sending the same request twice is processed and billed as two calls.- A call for which you received no response, or
504 UPSTREAM_TIMEOUT, may have been processed. Before retrying, check whether the call appears in the dashboard call history.- If you received the
X-Tx-Idheader, search by TX ID. - If not, find it in the
referenceIdcolumn of the call history CSV. For this to work, send a differentreferenceIdfor each call.
- If you received the
- Limit 5xx retries to about three, with increasing delays. Example: after 1, 2, and 4 seconds
- Trial projects count error calls toward the monthly limit, so limit retries even more strictly.
Response time
Record checks wait for the source’s response and can take several seconds. For example, a driver’s license check can take 5–12 seconds. Set a generous client timeout (60 seconds or more). A short timeout can make you treat a processed call as failed and retry it, which bills it twice.Versioning policy
Thev1 in the path is the contract version.
Changes applied within the same version: make sure unknown values do not break your code.
- New APIs, new optional request fields, new response fields
- A required request field becoming optional
- New enum values, new error
codes, improvedmessagewording
v1 is not overwritten.
- Removing an API, or changing a path or method
- Adding a required request field, or making an optional field required
- Removing or renaming response fields; removing, renaming, or changing the meaning of enum values or error
codes - Changing field types,
nullrules, success conditions, or HTTP statuses
agency and data.raw, are outside this policy. They can change without notice when the source or engine changes.
When contacting support
Include the following values.- TX ID (
txIdorX-Tx-Id) X-Request-IdandX-Trace-Id- Call time (UTC) and the API you called
- The HTTP status and
codeyou received