---
title: "Retrieve one copy of a broadcast"
description: "One person's copy: the same row `GET /broadcasts/{id}/recipients` lists, plus the subject, HTML and text exactly as that person received them, with the merge fields filled in and their own unsubscribe link."
url: "https://openemail.uk/docs/api/broadcasts/recipient"
area: "API"
category: "Mailbox"
---

# Retrieve one copy of a broadcast

One person's copy: the same row `GET /broadcasts/{id}/recipients` lists, plus the subject, HTML and text exactly as that person received them, with the merge fields filled in and their own unsubscribe link.

`GET /broadcasts/{id}/recipients/{emailId}`

## GET /broadcasts/{id}/recipients/{emailId}

One person's copy: the same row `GET /broadcasts/{id}/recipients` lists, plus the subject, HTML and text exactly as that person received them, with the merge fields filled in and their own unsubscribe link.

## Example

Needs `emails:read`. `emailId` is the `emailId` of the copy, from the recipients list. The answer is shortened here.

**curl**

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

**Response**

```
{
  "object": "broadcast_recipient",
  "emailId": "msg_01dad25067bc4dac966d515d",
  "email": "ada@example.com",
  "name": "Ada Lovelace",
  "status": "sent",
  "deliveredAt": "2026-09-23T12:00:11.000Z",
  "opens": 3,
  "clicks": 1,
  "unsubscribedAt": null,
  "subject": "Ada, the September release is out",
  "html": "<p>Hi Ada,</p><p>Here is what changed this month.</p>",
  "text": "Hi Ada, here is what changed this month. Unsubscribe: https://…"
}
```

> The HTML is from before open and click tracking was added, so it is what you wrote with the merge fields filled in, not the bytes that carried the tracking pixel and rewritten links.

> An `emailId` that is not a copy of this broadcast is a `404` `recipient_not_found`, even when it names another email in the workspace.

## Refusals

| Status | Code | When |
| --- | --- | --- |
| 400 | `invalid_cursor` | On the recipients list, a `cursor` that list did not hand out. |
| 403 | `insufficient_scope` | The key does not hold `emails:read`. |
| 404 | `broadcast_not_found` | The id names no broadcast in this workspace, or the key is limited to particular addresses or domains and the broadcast was sent from one it does not hold. |
| 404 | `recipient_not_found` | On `GET /broadcasts/{id}/recipients/{emailId}`, an `emailId` that is not a copy of this broadcast. |
