# Preview or execute a failed-photo retry wave

> Safely retries one bounded wave of eligible, uncharged terminal batch photos for the authenticated customer. (POST /v1/batches/failed/requeue)

Source: https://sightradar.com/docs/api/batch/preview-or-execute-a-failed-photo-retry-wave

Safely retries one bounded wave of eligible, uncharged terminal batch
photos for the authenticated customer. Only `insufficient_credits`,
`internal_error`, and `retry_exhausted` are retryable. Charged photos,
photos with a live reservation, and photos already covered or in flight
in another batch are excluded.

First send scope fields with `execute` omitted or false. The response is
a ten-minute, one-time preview. Then send only its `preview_id` with
`execute: true`. Execute uses the stored server-side scope and may requeue
fewer photos when eligibility changed after preview.

Preview never reserves or debits credits. `balance_credits` and
`has_estimated_balance` are advisory snapshots. Workers reserve the normal
per-photo batch price when each retried photo is processed.

### Example request

```bash
curl -X POST "https://api.sightradar.com/v1/batches/failed/requeue" \
  -H "Authorization: Bearer $SR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reason_code":"insufficient_credits","limit":500,"created_after":"2026-07-01T00:00:00Z","created_before":"2026-07-18T00:00:00Z","stagger_seconds":1,"execute":false}'
```

### Status codes

| Status | Meaning                                                                                   |
| ------ | ----------------------------------------------------------------------------------------- |
| `200`  | Preview created or one-time retry executed.                                               |
| `400`  | Malformed JSON, non-retryable reason, invalid bounds/date range, or invalid request mode. |
| `401`  | Missing or invalid API key.                                                               |
| `403`  | Read-only tenant-alias accounts cannot preview or execute retries.                        |
| `404`  | Preview missing or owned by another customer.                                             |
| `409`  | Preview expired or was already consumed (`preview_expired` or `preview_consumed`).        |
| `500`  | Preview store or wallet lookup failed.                                                    |
