# POST /auto-queues/:queue_id/retry-failed

**Resource:** [Auto Queues](./auto-queues.md)  
**MCP tool:** `retry_failed_auto_queue_steps`  
**Scopes:** `automations:write`  
**Write operation:** yes

Retry failed steps in an auto queue (drip sequence), in bulk. Use this when steps show status "failed" with a reason saying they were never sent, which happens when the dispatcher stopped part-way through a large batch. Find them first with list_auto_queue_enrollments using status="failed" and read each last_error. Pass queue_id alone to consider every failed step in the queue, or narrow with event_queue_step_id (re-send one step to everyone it missed), contact_id, enrollment_id, or an explicit task_ids list. SAFE TO REPEAT: every step is checked against its automation run record first, and only steps proven never to have reached the send path are requeued, so this cannot message someone twice. Returns retried, skipped_already_sent, skipped_unconfirmed and considered. skipped_already_sent means those recipients did get the message and were deliberately left alone; skipped_unconfirmed means delivery could not be established either way, so they were not re-sent and need a human to check.

## Parameters

| Name | In | Type | Required | Description |
|------|----|------|----------|-------------|
| `queue_id` | path | string | yes | The auto queue UUID. |
| `task_ids` | body | array | no | Optional. Retry only these specific step UUIDs (the "id" values from list_auto_queue_enrollments). Omit to consider every failed step in the queue. |
| `contact_id` | body | string | no | Optional. Only retry failed steps for this contact. |
| `enrollment_id` | body | string | no | Optional. Only retry failed steps for this enrolment. |
| `event_queue_step_id` | body | string | no | Optional. Only retry failed steps for this one step of the queue, e.g. re-send step 1 to everyone it never reached. |
| `limit` | body | number | no | Optional. Maximum steps to retry in this call (default 200, max 500). Steps are taken oldest-scheduled first. |
| `require_approval` | body | boolean | no | Optional. Set true to route this write into the approval queue for human review instead of executing it immediately (returns 202 + an approval_id). Works even when your key/token has permission to execute directly. |

## Request example

```bash
curl -X POST   "https://api.trustpager.com/functions/v1/api/v1/auto-queues/:queue_id/retry-failed"   -H "Authorization: Bearer YOUR_API_KEY"   -H "Content-Type: application/json"   -d '{"task_ids":"...","contact_id":"...","enrollment_id":"..."}'
```

---
Base URL: `https://api.trustpager.com/functions/v1/api/v1` — Auth: `Authorization: Bearer YOUR_API_KEY`