# Resume a broadcast

`POST /v1/broadcasts/{id}/resume`

Restarts a paused broadcast and returns it in the status it moves to.

Needs `broadcasts:write`.

## Path parameters

- `id` (string, uuid): The broadcast's ID.

## Headers

- `Idempotency-Key` (string): Makes this request safe to retry. See [Retrying safely](/reference/api/#retrying-safely). 1 to 255 characters.

## Before it restarts

Soosh runs the start checks again first. If one fails, the broadcast stays paused. The request takes no body: send none, or `{}`.

## Who runs it

From then on the broadcast runs as the key that resumed it. A broadcast paused because its key was revoked ("API access for this broadcast was removed") needs another key, or a person in the app.

## Where it goes next

- `processing`, if it sends now.
- `scheduled`, if its `send_at` is still to come.
- `preparing`, if it was paused before its audience was collected.

## Example

```sh
curl -X POST https://app.soosh.io/v1/broadcasts/3f5a7c9e-1b4d-4d27-a6e8-0a2c4e6b8d15/resume \
  -H "Authorization: Bearer $SOOSH_API_KEY" \
  -H "Idempotency-Key: resume-broadcast-example-1"
```

Response 200:

```json
{
  "id": "3f5a7c9e-1b4d-4d27-a6e8-0a2c4e6b8d15",
  "name": "Diwali offer",
  "status": "processing",
  "template": {
    "id": "8d2f4c1e-7a3b-4e59-b0c6-1f2e3d4c5b6a",
    "name": "diwali_offer",
    "language": "en"
  },
  "number_id": "0f6d3c1e-5b7a-4c52-9a55-3f6a2d5c8b10",
  "send_at": null,
  "started_at": "2026-10-14T09:38:22.860Z",
  "completed_at": null,
  "paused_reason": null,
  "counts": {
    "total": 250,
    "sent": 140,
    "delivered": 118,
    "read": 42,
    "failed": 2,
    "replied": 5,
    "clicked": 3
  },
  "skipped": {
    "opted_out": 6,
    "duplicate": 2,
    "invalid_phone": 1
  },
  "created_by": {
    "type": "api_key",
    "id": "5e1d2c3b-4a59-4f68-8e7d-6c5b4a392817",
    "name": "Order system"
  },
  "created_at": "2026-10-14T09:38:21.504Z"
}
```

## Returns

200. The broadcast.

## Errors

Besides the ones every request can get (https://docs.soosh.io/reference/api/errors/):

- 409 `invalid_state`: The broadcast isn't `paused`, or its template was deleted.
- 422 `template_not_approved`: The template is no longer approved.
- 422 `limit_reached`: The messages still to send don't fit in `broadcast_messages_per_month`.
- 404 `not_found`: There is no broadcast with this ID in your workspace.
- 409 `idempotency_in_progress`: A request with the same `Idempotency-Key` is still running.
- 422 `idempotency_mismatch`: The `Idempotency-Key` was used before for a different request, or by another of your API keys.