---
title: "Errors and retries"
url: https://docs.agentsverify.dev/guides/errors-and-retries
---

# Errors and retries

API errors contain `issue.code`, `issue.message` and `request_id`. Keep the request ID when contacting [support](mailto:simon@agentsverify.net), and omit API keys and private upload URLs.

| Response | What to do |
| --- | --- |
| `401` | Check the API key and `X-API-Key` header. |
| `403` | Check the permitted browser origin and requested action. |
| `404` | Check the saved verification ID and workspace. |
| `409` | Read the issue and reconcile the existing request before retrying. |
| `422` | Correct the specified headers, input or CSV defect. |
| `429` or `503` | Respect `Retry-After` before retrying. |

## Recover an uncertain creation

[](https://docs.agentsverify.dev/guides/errors-and-retries#recover-an-uncertain-creation)

Save a UUID before the first creation request and send it as `Idempotency-Key`. If the response is lost, retry the same submission with that same identity and exact file length. The API can recover the existing verification instead of creating another one.

A new request identity creates another verification and can charge again. Resubmitting is not a polling or backend retry mechanism.

## Resume a transfer or cancel work

[](https://docs.agentsverify.dev/guides/errors-and-retries#resume-a-transfer-or-cancel-work)

Storage uploads use a separate resumable protocol. After a confirmed storage `200` or `201`, continue polling the saved verification instead of uploading again. Follow the [quickstart](https://docs.agentsverify.dev/quickstart#resume-an-interrupted-upload) for incomplete transfers.

Use bodyless `POST /v1/verifications/{id}/cancel` to cancel remaining work. Settlement and refunds may continue while the job is `cancelling`. See the [complete workflow](https://docs.agentsverify.dev/guides/verification-workflow) for credit and recovery rules.
