Broadcasts
Send one-off or scheduled broadcasts to every contact in an audience, optionally filtered to a topic's subscribers. /broadcasts API reference with examples.
/broadcastsCreate a broadcastsegment_id (the audience to send to) or the legacy alias audience_id is required — provide one, and if both are given they must match. from and subject are required; at least one of html/text is required. Pass topic_id to restrict sending to that topic's subscribers, and { send: true, scheduled_at? } to send (or schedule) immediately instead of leaving it as a draft.
curl -X POST https://api.irisend.com/broadcasts \
-H "Authorization: Bearer $IRISEND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"segment_id": "919b2edf-a103-4b9f-bde7-731668bdfd5c",
"from": "[email protected]",
"subject": "What shipped this week",
"html": "<p>Three new things this week...</p>"
}'{ "object": "broadcast", "id": "4b673957-c9df-4062-a609-f61ba6eeb296" }/broadcastsList broadcastscurl https://api.irisend.com/broadcasts \
-H "Authorization: Bearer $IRISEND_API_KEY"{
"object": "list",
"has_more": false,
"data": [
{
"id": "4b673957-c9df-4062-a609-f61ba6eeb296",
"name": "What shipped this week",
"audience_id": "919b2edf-a103-4b9f-bde7-731668bdfd5c",
"segment_id": "919b2edf-a103-4b9f-bde7-731668bdfd5c",
"status": "draft",
"created_at": "2026-09-25T09:00:12.481Z",
"scheduled_at": null,
"sent_at": null
}
]
}/broadcasts/:idRetrieve a broadcaststatus is one of draft, scheduled, queued (sending, in progress), sent, or canceled.
curl https://api.irisend.com/broadcasts/4b673957-c9df-4062-a609-f61ba6eeb296 \
-H "Authorization: Bearer $IRISEND_API_KEY"{
"object": "broadcast",
"id": "4b673957-c9df-4062-a609-f61ba6eeb296",
"name": "What shipped this week",
"audience_id": "919b2edf-a103-4b9f-bde7-731668bdfd5c",
"segment_id": "919b2edf-a103-4b9f-bde7-731668bdfd5c",
"from": "[email protected]",
"subject": "What shipped this week",
"reply_to": null,
"preview_text": null,
"html": "<p>Three new things this week...</p>",
"text": null,
"status": "draft",
"created_at": "2026-09-25T09:00:12.481Z",
"scheduled_at": null,
"sent_at": null,
"topic_id": null
}/broadcasts/:idUpdate a broadcastOnly while status is draft.
curl -X PATCH https://api.irisend.com/broadcasts/4b673957-c9df-4062-a609-f61ba6eeb296 \
-H "Authorization: Bearer $IRISEND_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "subject": "What shipped this week (updated)" }'{ "object": "broadcast", "id": "4b673957-c9df-4062-a609-f61ba6eeb296" }/broadcasts/:id/sendSend (or schedule) a broadcastOnly a draft broadcast can be sent. Optional scheduled_at (future, ≤30 days out) schedules it instead of sending immediately. This response is the one place in the API that deliberately omits object — it matches Resend's own Send Broadcast response exactly.
curl -X POST https://api.irisend.com/broadcasts/4b673957-c9df-4062-a609-f61ba6eeb296/send \
-H "Authorization: Bearer $IRISEND_API_KEY"{ "id": "4b673957-c9df-4062-a609-f61ba6eeb296" }/broadcasts/:id/cancelCancel a broadcastA scheduled broadcast cancels back to draft (fully reversible, nothing sent). A queued (sending) broadcast cancels to a terminal canceled — emails already sent stand.
curl -X POST https://api.irisend.com/broadcasts/4b673957-c9df-4062-a609-f61ba6eeb296/cancel \
-H "Authorization: Bearer $IRISEND_API_KEY"{ "object": "broadcast", "id": "4b673957-c9df-4062-a609-f61ba6eeb296" }/broadcasts/:id/duplicateDuplicate a broadcastWorks on any status, including sent — the copy is always a fresh draft.
curl -X POST https://api.irisend.com/broadcasts/4b673957-c9df-4062-a609-f61ba6eeb296/duplicate \
-H "Authorization: Bearer $IRISEND_API_KEY"/broadcasts/:idDelete a broadcastOnly draft or scheduled broadcasts can be deleted.
curl -X DELETE https://api.irisend.com/broadcasts/4b673957-c9df-4062-a609-f61ba6eeb296 \
-H "Authorization: Bearer $IRISEND_API_KEY"{ "object": "broadcast", "id": "4b673957-c9df-4062-a609-f61ba6eeb296", "deleted": true }/broadcasts/:id/recipientsList recipients by outcometype is required — one of sent, delivered, opened, clicked, bounced, complained, unsubscribed, or suppressed. Optional bounce_type (permanent/transient/undetermined) only applies with type=bounced.
curl https://api.irisend.com/broadcasts/4b673957-c9df-4062-a609-f61ba6eeb296/recipients?type=clicked&limit=20 \
-H "Authorization: Bearer $IRISEND_API_KEY"{
"object": "list",
"has_more": false,
"data": [
{ "id": "em_9f2K3mQ1zPr7vT6yB4wL0nC", "contact_id": "919b2edf-a103-4b9f-bde7-731668bdfd5c", "email": "[email protected]", "count": 2, "clicked_links": [{ "url": "https://yourdomain.com/changelog", "clicks": 2 }] }
]
}/broadcasts/:id/clicked-linksList clicked linksRanked by total clicks, descending.
curl https://api.irisend.com/broadcasts/4b673957-c9df-4062-a609-f61ba6eeb296/clicked-links \
-H "Authorization: Bearer $IRISEND_API_KEY"{
"object": "list",
"has_more": false,
"data": [
{ "id": "aHR0cHM6Ly95b3VyZG9tYWluLmNvbS9jaGFuZ2Vsb2c", "url": "https://yourdomain.com/changelog", "clicks": 14, "unique_clicks": 11 }
]
}