Broadcast APIs
Overview
Create, launch, and analyze outbound broadcasts.
Broadcast properties
| Property | Type | Description |
|---|---|---|
workspaceId | number | The workspace ID. |
id | string | The broadcast ID. |
name | string | The broadcast name. |
integrationId | string | The integration (Channel) ID. |
state | string | The broadcast state, it can be 'draft', 'scheduled', 'inProgress', 'completed', or 'failed'. |
templateName | string | The WhatsApp template name used to send the broadcast. |
templateLang | string | The WhatsApp template language. |
templateComponents | json | The WhatsApp template components. |
clientTags | string[] | The client tags used to target a specific group of clients. |
clientStageId | string | The client stage ID used to target a specific stage of clients. |
country | string | The country used to target clients. |
scheduledAt | DateTime | The scheduled timestamp. If it's empty, the broadcast will be sent in case it's launched. |
startedAt | DateTime | The started timestamp. |
completedAt | DateTime | The completed timestamp. If it's empty, the broadcast is still in progress. |
createdAt | DateTime | The created timestamp. |
totalCount | number | The total number of clients that will receive the broadcast. |
failedCount | number | The number of failed deliveries. |
error | string | The error message if the broadcast failed. |
List Broadcasts API
List the broadcasts in a workspace using supported filters.
This endpoint supports pagination. See Pagination for more information.
| Attribute | Type | Description |
|---|---|---|
workspaceId | number | Required. The workspace ID. |
name | string | The name. |
integrationId | string | The integration (Channel) ID. |
state | BroadcastState | Filter by broadcast state. |
templateName | string | The template name. |
Request & Response
POST https://gateway.bcrumbs.net/core/gqquery broadcasts($input: BroadcastsInput!) {
broadcasts(input: $input) {
nodes {
id
name
state
templateName
integrationId
createdAt
}
pageInfo {
hasNextPage
endCursor
count
}
}
}
input BroadcastsInput {
workspaceId: Int! # Workspace ID.
name: String # Filter by broadcast name.
integrationId: ID # Filter by integration/channel ID.
state: BroadcastState # Filter by broadcast state.
templateName: String # Filter by template name.
}The query above returns JSON structured like this:
{
"data": {
"broadcasts": {
"nodes": [
{
"id": "id_123",
"name": "sample",
"state": "draft",
"templateName": "sample",
"integrationId": "id_123",
"createdAt": "2026-03-16T00:00:00.000Z"
}
],
"pageInfo": {
"hasNextPage": false,
"endCursor": "cursor_123",
"count": 1
}
}
}
}Programming language examples
curl -X POST 'https://gateway.bcrumbs.net/core/gq' \
-H 'authorization: API-KEY' \
-H 'content-type: application/json' \
-d '{"operationName":"broadcasts","variables":{"input":{"workspaceId":12,"name":"sample","integrationId":"id_123","state":"VALUE","templateName":"sample"}},"query":"query broadcasts($input: BroadcastsInput!) {\\n broadcasts(input: $input) {\\n nodes {\\n id\\n name\\n state\\n templateName\\n integrationId\\n createdAt\\n }\\n pageInfo {\\n hasNextPage\\n endCursor\\n count\\n }\\n }\\n}"}'Create Broadcast API
Create a broadcast.
| Attribute | Type | Description |
|---|---|---|
workspaceId | number | Required. The workspace ID. |
name | string | Required. The name. |
integrationId | string | Required. The integration (Channel) ID. |
clientTags | string[] | Target tags. |
clientStageId | string | Target stage. |
country | string | Target country. |
templateName | string | Required. The template name. |
templateLang | string | The template language. |
templateComponents | JSON | The template component variables. |
scheduledAt | DateTime | Schedule date/time (optional). |
Request & Response
POST https://gateway.bcrumbs.net/core/gqmutation createBroadcast($input: BroadcastCreateInput!) {
createBroadcast(input: $input) {
id
name
state
templateName
integrationId
createdAt
}
}
input BroadcastCreateInput {
workspaceId: Int! # Workspace ID.
name: String! # Broadcast name.
integrationId: ID! # Integration/channel ID.
clientTags: [String!] # Target tags.
clientStageId: String # Target stage.
country: String # Target country.
templateName: String! # Template name.
templateLang: String # Template language.
templateComponents: JSON # Template component variables.
scheduledAt: DateTime # Schedule date/time (optional).
}The mutation above returns JSON structured like this:
{
"data": {
"createBroadcast": {
"id": "id_123",
"name": "sample",
"state": "draft",
"templateName": "sample",
"integrationId": "id_123",
"createdAt": "2026-03-16T00:00:00.000Z"
}
}
}Programming language examples
curl -X POST 'https://gateway.bcrumbs.net/core/gq' \
-H 'authorization: API-KEY' \
-H 'content-type: application/json' \
-d '{"operationName":"createBroadcast","variables":{"input":{"workspaceId":12,"name":"sample","integrationId":"id_123","clientTags":["sample"],"clientStageId":"sample","country":"sample","templateName":"sample","templateLang":"sample","templateComponents":{"key":"value"},"scheduledAt":"2026-03-16T00:00:00.000Z"}},"query":"mutation createBroadcast($input: BroadcastCreateInput!) {\\n createBroadcast(input: $input) {\\n id\\n name\\n state\\n templateName\\n integrationId\\n createdAt\\n }\\n}"}'Launch Broadcast API
Launch a broadcast.
| Attribute | Type | Description |
|---|---|---|
workspaceId | number | Required. The workspace ID. |
id | string | Required. The ID. |
Request & Response
POST https://gateway.bcrumbs.net/core/gqmutation launchBroadcast($input: BroadcastLaunchInput!) {
launchBroadcast(input: $input) {
id
name
state
startedAt
completedAt
failedCount
}
}
input BroadcastLaunchInput {
workspaceId: Int! # Workspace ID.
id: ID! # Broadcast ID.
}The mutation above returns JSON structured like this:
{
"data": {
"launchBroadcast": {
"id": "id_123",
"name": "sample",
"state": "inProgress",
"startedAt": "2026-03-16T00:00:00.000Z",
"completedAt": null,
"failedCount": 0
}
}
}Programming language examples
curl -X POST 'https://gateway.bcrumbs.net/core/gq' \
-H 'authorization: API-KEY' \
-H 'content-type: application/json' \
-d '{"operationName":"launchBroadcast","variables":{"input":{"workspaceId":12,"id":"id_123"}},"query":"mutation launchBroadcast($input: BroadcastLaunchInput!) {\\n launchBroadcast(input: $input) {\\n id\\n name\\n state\\n startedAt\\n completedAt\\n failedCount\\n }\\n}"}'Broadcast Report API
Get daily broadcast usage per integration (UTC calendar days). Each node is one workspace + integration + reportDate. Counts aggregate messages for broadcasts that started that UTC day (with an edge case for immediate failures without startedAt). successCount equals sentCount + deliveredCount + readCount (read includes played).
| Attribute | Type | Description |
|---|---|---|
workspaceId | number | Required. The workspace ID. |
integrationId | string | The integration (Channel) ID. |
startDate | DateTime | Required. Range start (inclusive), interpreted as UTC start-of-day. |
endDate | DateTime | Required. Range end (inclusive), interpreted as UTC start-of-day. |
Request & Response
POST https://gateway.bcrumbs.net/core/gqquery broadcastReport($input: BroadcastReportInput!) {
broadcastReport(input: $input) {
nodes {
id
reportDate
sentCount
deliveredCount
readCount
pendingCount
successCount
failedCount
integrationId
createdAt
}
}
}
input BroadcastReportInput {
workspaceId: Int! # Workspace ID.
integrationId: ID # Filter by integration/channel ID.
startDate: DateTime! # Start date of report range.
endDate: DateTime! # End date of report range.
}The query above returns JSON structured like this:
{
"data": {
"broadcastReport": {
"nodes": [
{
"id": "id_123",
"reportDate": "2026-03-16T00:00:00.000Z",
"sentCount": 5,
"deliveredCount": 30,
"readCount": 5,
"pendingCount": 0,
"successCount": 40,
"failedCount": 2,
"integrationId": "id_123",
"createdAt": "2026-03-17T00:05:12.000Z"
}
]
}
}
}Programming language examples
curl -X POST 'https://gateway.bcrumbs.net/core/gq' \
-H 'authorization: API-KEY' \
-H 'content-type: application/json' \
-d '{"operationName":"broadcastReport","variables":{"input":{"workspaceId":12,"integrationId":"id_123","startDate":"2026-03-16T00:00:00.000Z","endDate":"2026-03-16T00:00:00.000Z"}},"query":"query broadcastReport($input: BroadcastReportInput!) {\\n broadcastReport(input: $input) {\\n nodes {\\n id\\n reportDate\\n sentCount\\n deliveredCount\\n readCount\\n pendingCount\\n successCount\\n failedCount\\n integrationId\\n createdAt\\n }\\n }\\n}"}'