API
Retrieve a broadcast
One broadcast with `counts` read live from its copies, which makes this the call to poll while it sends.
GETapi.openemail.uk/broadcasts/{id}
Runs the real call against your workspace, with your own key.
GET /broadcasts/{id}
One broadcast with counts read live from its copies, which makes this the call to poll while it sends.
Example
Needs emails:read.
curl "$OE/broadcasts/brd_5a8c1e3f7b2d94a06c8e1f3b" -H "$AUTH"{ "object": "broadcast", "id": "brd_5a8c1e3f7b2d94a06c8e1f3b", "status": "sending", "mode": "live", "source": "api", "audienceIds": ["aud_4c1b8e2a7d9f05c36b4e8a71"], "from": "Acme <[email protected]>", "subject": "{{firstName|Hello}}, the September release is out", "counts": { "recipients": 412, "created": 250, "skipped": 1, "failedToQueue": 0, "queued": 38, "sending": 2, "sent": 209, "failed": 1, "cancelled": 0 }, "lastError": null, "scheduledAt": null, "startedAt": "2026-09-23T12:00:02.000Z", "completedAt": null, "cancelledAt": null, "createdAt": "2026-09-23T12:00:00.000Z", "updatedAt": "2026-09-23T12:00:41.000Z"}An id from another workspace is a 404 broadcast_not_found.
For who each copy went to and what happened to it, list the copies with GET /emails?broadcastId= and read one with GET /emails/{id}.
Statuses
| Status | Means |
|---|---|
| scheduled | Waiting for scheduledAt. |
| queued | Waiting for the sending to start. |
| sending | Walking the audiences, or finished walking them while copies are still waiting to go. completedAt is set once the last person was reached. |
| sent | Every copy handed over has gone out or failed. |
| cancelled | Stopped by POST /broadcasts/{id}/cancel. |
| failed | The whole broadcast stopped: the from address can no longer be sent from, the template stopped resolving, the plan ran out part way, the sending itself kept failing, or not one copy could be written. lastError says which. |
Counts
| Count | Means |
|---|---|
| recipients | The estimate taken when the broadcast was created. It does not move afterwards. |
| created | Copies written so far, one per person reached. |
| skipped | People passed over because their address was suppressed by the time the sending reached them. |
| failedToQueue | People whose copy could not be written. lastError names the most recent one. |
| queued, sending, sent, failed, cancelled | The copies by the state each one is in now, counted live. |