---
title: "Retrieve a broadcast"
description: "One broadcast with `counts` read live from its copies, which makes this the call to poll while it sends."
url: "https://openemail.uk/docs/api/broadcasts/get"
area: "API"
category: "Mailbox"
---

# Retrieve a broadcast

One broadcast with `counts` read live from its copies, which makes this the call to poll while it sends.

`GET /broadcasts/{id}`

## 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**

```
curl "$OE/broadcasts/brd_5a8c1e3f7b2d94a06c8e1f3b" -H "$AUTH"
```

**Response**

```
{
  "object": "broadcast",
  "id": "brd_5a8c1e3f7b2d94a06c8e1f3b",
  "status": "sending",
  "mode": "live",
  "source": "api",
  "audienceIds": ["aud_4c1b8e2a7d9f05c36b4e8a71"],
  "from": "Acme <news@acme.com>",
  "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. |
