---
title: "List the broadcasts blocking a template delete"
method: GET
path: "/v1/email/templates/{template_ref}/broadcasts"
tags: ["email-templates"]
---

# List the broadcasts blocking a template delete

`GET /v1/email/templates/{template_ref}/broadcasts`

## Request

- Base URL: `https://us1.platform.bird.com`
- URL: `https://us1.platform.bird.com/v1/email/templates/{template_ref}/broadcasts`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `bird_session`

Returns the broadcasts that block deleting this template, as a cursor page, newest first. Those are the ones that have not started sending, so they have not pinned the content they will send: `scheduled` and `accepted`. Clear every one of them and the delete goes through. Canceling clears either status; repointing at another template only works while the broadcast is `scheduled`, because an `accepted` broadcast is committed to send and an edit returns a conflict. A broadcast that is already sending is not listed and does not block the delete, because it froze its version when it started.

## Query parameters

- `limit` integer
- `starting_after` string
- `ending_before` string

## Headers

- `X-Workspace-Id` string
- `X-Organization-Id` string

## Response `200`

The broadcasts blocking a delete of the template.

- EmailTemplateBroadcastList
  - `data` EmailTemplateBroadcastSummary[], required: Page of broadcasts blocking a delete of the template, newest first.
    - `id` string, required
    - `status` 'draft' | 'scheduled' | 'accepted' | 'sending' | 'sent' | 'canceling' | 'canceled' | 'failed', required: Where the broadcast itself has got to. This is separate from what happened to individual recipients, which the broadcast's own `sent_count`, `delivered_count`, `bounced_count` and `complained_count` tell you. Those four are fields on the broadcast, not on everything that carries this status, and reading the broadcast's recipients or its events gives the same outcomes one recipient at a time. - `draft`: Created, and not sent or scheduled yet. - `scheduled`: Due to send at `scheduled_at`. You can still edit it, and you can still change the time, right up until sending starts. - `accepted`: Taken for immediate sending. Nothing has gone out yet. - `sending`: On its way. Some recipients have been sent to and some have not. - `sent`: Every recipient has been sent to. - `canceling`: A cancellation is under way and the remaining sends are stopping. - `canceled`: The cancellation finished. Anything already on its way to a recipient when you canceled cannot be pulled back. - `failed`: The broadcast could not be sent. Reading the broadcast gives `failure_reason`, which says why. If it had already started sending, the recipients it reached keep their delivery status and carry on producing events. A draft is deleted rather than canceled, because it was never sent.
    - `scheduled_at` string, date-time, nullable: When the broadcast is due to send, or null when it is not scheduled.
    - `created_at` string, date-time, required: When the broadcast was created.
  - `next_cursor` string, nullable, required: Cursor for the next page. Pass back as `starting_after` to advance forward. `null` when no next page exists.
  - `prev_cursor` string, nullable, required: Cursor for the previous page. Pass back as `ending_before` to step backward. `null` when no previous page exists.
  - `refresh_cursor` string, nullable, required: Refresh anchor, the first row of this response. Pass back as `ending_before` to fetch what precedes it in the current sort order. On a newest-first sort those are the items that have appeared since; on any other sort they are the items that sort earlier, so refreshing such a list means re-fetching it instead. Non-`null` whenever `data` is non-empty; `null` only on an empty page. Distinct from `prev_cursor`.

## Other responses

- `400`: Bad request
- `401`: Authentication required
- `403`: Insufficient permissions
- `404`: Resource not found
- `422`: The request has invalid field values, violates a business rule, or carries a query parameter the endpoint does not declare. Field validation errors use `type: validation_error` and include the affected fields in `details`. Business-rule errors identify the failed rule in `type`.
- `429`: Rate limit exceeded
- `500`: Internal server error

---

[API](https://skmtc.dev/messagebird/apis/bird-api.md) · [All operations](https://skmtc.dev/messagebird/apis/bird-api/llms.txt) · [OpenAPI document](https://skmtc.dev/messagebird/apis/bird-api/revisions/6dfce1179799?raw)
