Retrieve a broadcast
Returns one broadcast with its configuration, current status and freshly counted stats. Poll it while a broadcast runs to follow progress, or subscribe to the broadcast.updated WebSocket event.
curl --request GET \
--url https://api.vobiz.ai/api/v1/sms/broadcasts/{id} \
--header 'X-Auth-ID: <api-key>' \
--header 'X-Auth-Token: <api-key>'from vobiz import Vobiz
client = Vobiz(api_key="MA_XXXXXXXX", auth_token="YOUR_AUTH_TOKEN")
client.sms.broadcasts.get_broadcast(
id="3f8d2a6e-5b1c-4e7f-a9d0-2c4b6e8f1a35",
)
const options = {
method: 'GET',
headers: {'X-Auth-ID': '<api-key>', 'X-Auth-Token': '<api-key>'}
};
fetch('https://api.vobiz.ai/api/v1/sms/broadcasts/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "3f8d2a6e-5b1c-4e7f-a9d0-2c4b6e8f1a35",
"accountId": "MA_XXXXXXXX",
"name": "October pricing update",
"from": "+14155550100",
"channel": "sms",
"template": "Hi {{name}}, your refund of {{amount}} is on its way.",
"status": "running",
"scheduledAt": null,
"ratePerSecond": 5,
"tag": "pricing-oct",
"dltEntityId": "",
"dltHeaderId": "",
"dltTemplateId": "",
"columns": [
"phone",
"name",
"amount"
],
"stats": {
"total": 3,
"pending": 1,
"sent": 2,
"delivered": 0,
"failed": 0,
"optedOut": 0,
"skipped": 0
},
"createdAt": "2026-10-12T10:30:00Z",
"updatedAt": "2026-10-12T11:05:11Z",
"startedAt": "2026-10-12T11:05:10Z",
"completedAt": null
}{
"error": "missing or invalid credentials"
}{
"error": "broadcast not found"
}Authorizations
Your Vobiz account Auth ID (MA_XXXXXXXX).
Your Vobiz account Auth Token.
Path Parameters
The broadcast's id (UUID), as returned by POST /broadcasts or GET /broadcasts. An id that is not a UUID, or that belongs to another account, returns 404 with broadcast not found.
Response
The broadcast.
A bulk SMS send that renders one template for every recipient of an uploaded list and sends at a controlled rate. Its status moves from draft through scheduled or running to completed, cancelled or failed, and stats counts recipients by state.
Unique identifier of the broadcast (UUID). Use it in every /broadcasts/{id} path.
"3f8d2a6e-5b1c-4e7f-a9d0-2c4b6e8f1a35"
Your Vobiz account ID (MA_...) that owns the broadcast.
"MA_XXXXXXXX"
The label you gave the broadcast, shown in the console and in listings.
"October pricing update"
The sender every message goes out from, as stored: an E.164 number, a short code or an alphanumeric sender ID.
"+14155550100"
The channel the broadcast sends on. Always sms.
sms "sms"
The message body with {{variable}} placeholders, filled per recipient from the columns of the upload. Empty until you set it.
"Hi {{name}}, your refund of {{amount}} is on its way."
Lifecycle state. draft until you launch, then scheduled (waiting for scheduledAt) or running. paused after a pause call or when pauseReason is set; completed once every recipient is processed; cancelled after a cancel call; failed when the run stopped on an error.
draft, scheduled, running, paused, completed, cancelled, failed "draft"
Present only while the broadcast is paused for a reason other than your own pause call. insufficient_balance means the balance ran out; top up and call POST /broadcasts/{id}/resume.
insufficient_balance When sending starts after launch, in UTC (ISO 8601). null means sending starts as soon as you launch.
null
Maximum messages sent per second while running, from 1 to 50.
5
Your label, copied onto every message the broadcast sends. Empty string when not set.
""
India (TRAI DLT). The Principal Entity ID copied onto every message. Empty string when not set.
""
India (TRAI DLT). The registered sender header ID copied onto every message. Empty string when not set.
""
India (TRAI DLT). The registered content template ID copied onto every message. Empty string when not set.
""
Column names from the latest recipient upload, as written in your file header. The first is the phone column and the rest are available as template variables. Empty until you upload recipients.
null
Recipient counts by state, recounted on every read.
Show child attributes
Show child attributes
When the broadcast was created (ISO 8601, UTC).
"2026-10-12T10:30:00Z"
When the broadcast last changed, including status changes (ISO 8601, UTC).
"2026-10-12T10:30:00Z"
When sending began (ISO 8601, UTC). null until the broadcast runs.
null
When the broadcast finished, either because the last recipient was processed or because it was cancelled (ISO 8601, UTC). null until then.
null
Was this page helpful?
curl --request GET \
--url https://api.vobiz.ai/api/v1/sms/broadcasts/{id} \
--header 'X-Auth-ID: <api-key>' \
--header 'X-Auth-Token: <api-key>'from vobiz import Vobiz
client = Vobiz(api_key="MA_XXXXXXXX", auth_token="YOUR_AUTH_TOKEN")
client.sms.broadcasts.get_broadcast(
id="3f8d2a6e-5b1c-4e7f-a9d0-2c4b6e8f1a35",
)
const options = {
method: 'GET',
headers: {'X-Auth-ID': '<api-key>', 'X-Auth-Token': '<api-key>'}
};
fetch('https://api.vobiz.ai/api/v1/sms/broadcasts/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "3f8d2a6e-5b1c-4e7f-a9d0-2c4b6e8f1a35",
"accountId": "MA_XXXXXXXX",
"name": "October pricing update",
"from": "+14155550100",
"channel": "sms",
"template": "Hi {{name}}, your refund of {{amount}} is on its way.",
"status": "running",
"scheduledAt": null,
"ratePerSecond": 5,
"tag": "pricing-oct",
"dltEntityId": "",
"dltHeaderId": "",
"dltTemplateId": "",
"columns": [
"phone",
"name",
"amount"
],
"stats": {
"total": 3,
"pending": 1,
"sent": 2,
"delivered": 0,
"failed": 0,
"optedOut": 0,
"skipped": 0
},
"createdAt": "2026-10-12T10:30:00Z",
"updatedAt": "2026-10-12T11:05:11Z",
"startedAt": "2026-10-12T11:05:10Z",
"completedAt": null
}{
"error": "missing or invalid credentials"
}{
"error": "broadcast not found"
}