Skip to main content
Errors are returned as JSON. Handle them by the code field: codes don’t change. detail is a readable message that can change.

Error format

Every error also has type, a URI that names the error code. Some errors also include instance, the path of the request.

Request ids

To use your own request id, send an X-Request-Id header of 1–64 letters, digits, -, or _. The API returns it in the X-Request-Id response header and as requestId. If you don’t send one, or it isn’t valid, the API generates one. A few errors, such as a request to an unknown path, may not include a requestId or return your X-Request-Id.

Error codes

Errors in batch requests

Batch endpoints return 200 even when some records fail. Each failed record has its own code in results: A 4xx status on a batch means the API rejected the whole request and wrote nothing. Examples: an empty records list, a repeated id, or an id that isn’t a UUID (malformed_request). A 5xx or a timeout on a batch may have saved some records, because each record is saved on its own. Nothing may be stored under your Idempotency-Key, so a retry with the same key runs every record again. Before you resend a batch create, list your assets and send only the records that don’t exist yet, with a new key. If every record has externalSource and externalAssetId, you can resend the whole batch instead: records that already exist are updated, not created again. See When a batch fails or times out.