/v1/broadcasts/{broadcast_id}betaGet a broadcast
- Needs
- Read your data
(mcp:read) - Plan
- Any plan with API access
- Limits
- 300 a minute per key
- Undo
- Nothing to undo: this only reads.
Returns one broadcast: status, channel, template, audience (contact groups and size), schedule, send rate and delivery numbers (sent, delivered, read, failed, opted out, responded, and the rates).
Try it
This only reads. It uses your real data and changes nothing.
Code and response
curl -X GET 'https://mcp.wa-api.cloud/v1/broadcasts/301' \ -H "Authorization: Bearer $API_KEY"
The code reads your key from $API_KEY.
Parameters
| Field | Type | What it is |
|---|---|---|
| broadcast_idrequired | string | integer · path | The broadcast id. |
Headers
| Field | Type | What it is |
|---|---|---|
| Authorizationrequired | header | Bearer $API_KEY — your API key. |
| Api-Version | header | The API version to use, e.g. 2026-10-01. Default: the version your key is pinned to.one of: 2026-10-01 · pattern ^\d{4}-\d{2}-\d{2}$ |
Response 200
The broadcast.
| Field | Type | What it is |
|---|---|---|
| idrequired | string | |
| namerequired | string or null | |
| statusrequired | string or null | |
| channelrequired | object or null | |
| idrequired | string or null | |
| namerequired | string or null | |
| templaterequired | object or null | |
| namerequired | string or null | |
| languagerequired | string or null | |
| categoryrequired | string or null | |
| audience_sizerequired | number or null | Estimated recipients when set up; stats.total once sending started. |
| scheduled_atrequired | string or null | |
| created_atrequired | string or null | |
| sandboxrequired | boolean | |
| statsrequired | object or null | |
| totalrequired | number | |
| pendingrequired | number | |
| sentrequired | number | |
| deliveredrequired | number | |
| readrequired | number | |
| failedrequired | number | |
| dndrequired | number | Skipped because the contact opted out / is on do-not-disturb. |
| respondedrequired | number | |
| convertedrequired | number | |
| delivery_raterequired | number or null | delivered / sent, 0-1. |
| read_raterequired | number or null | read / delivered, 0-1. |
| contact_groupsrequired | array of object | |
| idrequired | string | |
| namerequired | string or null | |
| timezonerequired | string or null | |
| message_raterequired | string or null | e.g. "100 per minute". |
| stopped_atrequired | string or null | |
| paused_atrequired | string or null | |
| cancelled_atrequired | string or null |
Errors
Errors are application/problem+json. Branch on code.
| Status | Code | When |
|---|---|---|
| 400 | invalid_input | A field is missing or has the wrong format. |
| 401 | unauthenticated | The Authorization header is missing, the key is unknown, expired or revoked. |
| 403 | entitlement_required | The workspace's plan does not include API access ( |
| 403 | insufficient_scope | The key does not have the permission this operation needs. |
| 404 | not_found | No broadcast with this id in your workspace. |
| 429 | rate_limited | The key or workspace went over its rate limit. Wait for |
| 503 | upstream_unavailable | A service behind the API is briefly unavailable. Safe to retry with backoff. |
Examples
Read one broadcast
Response 200
{
"id": "301",
"name": "September sale",
"status": "COMPLETE",
"channel": {
"id": "7",
"name": "Main WhatsApp"
},
"template": {
"name": "summer_sale",
"language": "en",
"category": "MARKETING"
},
"audience_size": 1000,
"scheduled_at": null,
"created_at": "2026-09-10T08:00:00Z",
"sandbox": false,
"stats": {
"total": 1000,
"pending": 0,
"sent": 980,
"delivered": 950,
"read": 600,
"failed": 20,
"dnd": 5,
"responded": 40,
"converted": 10,
"delivery_rate": 0.969,
"read_rate": 0.632
},
"contact_groups": [
{
"id": "5",
"name": "Newsletter"
}
],
"timezone": "Asia/Dubai",
"message_rate": "100 per minute",
"stopped_at": null,
"paused_at": null,
"cancelled_at": null
}Operation path
The same operation is also at POST /v1/ops/messaging_get_broadcast, with every field in the JSON body.