The Broadcast API lets you trigger and manage bulk messaging campaigns in DMLY. Use it to create broadcasts, update campaign details, retrieve delivery logs, and manage existing broadcasts.
Base URLhttps://api.dmly.io/api
AuthenticationAll endpoints require the x-api-key header:
x-api-key: YOUR_API_KEY
Endpoints
List / Search BroadcastsGET /v1/broadcastsRetrieve a list of broadcasts with optional filtering and search.
Response: 200 OK — Array of BroadcastResponse
Query ParametersName | In | Type | Required | Description |
workspaceId | query | string | No | Filter by workspace ID |
limit | query | string | No | Max number of results |
page | query | string | No | Page number for pagination |
endDate | query | string | No | Filter by end date |
searchText | query | string | No | Free text search |
Example Requestcurl -X GET "https://api.dmly.io/api/v1/broadcasts?workspaceId=ws_123&page=1&limit=20&searchText=promo" \
-H "x-api-key: YOUR_API_KEY"[
{
"workspace": { "id": "ws_123" },
"name": "February Promo",
"type": "whatsapp"
}
]POST /v1/broadcastsCreate a new broadcast campaign.
Request Body: BroadcastRequest (application/json)
Response: 200 OK — BroadcastResponse
Example Requestcurl -X POST "https://api.dmly.io/api/v1/broadcasts" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"workspace": { "id": "ws_123" },
"name": "New Launch Broadcast",
"type": "whatsapp"
}'{
"workspace": { "id": "ws_123" },
"name": "New Launch Broadcast",
"type": "whatsapp"
}GET /v1/broadcasts/{broadcastId}Retrieve a broadcast by its unique ID.
Response: 200 OK — BroadcastResponse
Path ParametersName | In | Type | Required | Description |
broadcastId | path | string | Yes | Broadcast unique ID |
Example Requestcurl -X GET "https://api.dmly.io/api/v1/broadcasts/bc_001" \
-H "x-api-key: YOUR_API_KEY"{
"workspace": { "id": "ws_123" },
"name": "February Promo",
"type": "whatsapp"
}PUT /v1/broadcasts/{broadcastId}Update an existing broadcast by its unique ID.
Request Body: BroadcastRequest (application/json)
Response: 200 OK — BroadcastResponse
Path ParametersName | In | Type | Required | Description |
broadcastId | path | string | Yes | Broadcast unique ID |
Example Requestcurl -X PUT "https://api.dmly.io/api/v1/broadcasts/bc_001" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"workspace": { "id": "ws_123" },
"name": "February Promo (Updated)",
"type": "whatsapp"
}'{
"workspace": { "id": "ws_123" },
"name": "February Promo (Updated)",
"type": "whatsapp"
}DELETE /v1/broadcasts/{broadcastId}Delete a broadcast by its unique ID.
Response: 200 OK — DeleteResponse
Path ParametersName | In | Type | Required | Description |
broadcastId | path | string | Yes | Broadcast unique ID |
Example Requestcurl -X DELETE "https://api.dmly.io/api/v1/broadcasts/bc_001" \
-H "x-api-key: YOUR_API_KEY"{
"success": true
}GET /v1/broadcasts/{broadcastId}/logsRetrieve logs for a specific broadcast (delivery results per recipient).
Response: 200 OK — Array of BroadcastLog
Path ParametersName | In | Type | Required | Description |
broadcastId | path | string | Yes | Broadcast unique ID |
Query ParametersName | In | Type | Required | Description |
limit | query | string | No | Max number of results |
page | query | string | No | Page number for pagination |
Example Requestcurl -X GET "https://api.dmly.io/api/v1/broadcasts/bc_001/logs?page=1&limit=50" \
-H "x-api-key: YOUR_API_KEY"[
{
"broadcast": { "id": "bc_001", "name": "February Promo" },
"recipientName": "John Doe",
"countryCode": "ng",
"phone": "2348012345678",
"status": "SENT",
"reply": "",
"error": "",
"createdAt": "2026-02-20T10:00:00.000Z",
"updatedAt": "2026-02-20T10:05:00.000Z"
}
]{
"workspace": { "id": "string" },
"name": "string",
"type": "string"
}{
"workspace": { "id": "string" },
"name": "string",
"type": "string"
}{
"broadcast": { "id": "string", "name": "string" },
"recipientName": "string",
"countryCode": "string",
"phone": "string",
"status": "string",
"reply": "string",
"error": "string",
"createdAt": "string",
"updatedAt": "string"
}[
{
// BroadcastResponse object
}
]{
"success": true
}Use workspaceId when listing broadcasts for multi-workspace integrations.
Paginate broadcast logs (page, limit) for large campaigns.
Store broadcastId immediately after creation for future updates and log retrieval.
Use the Logs endpoint to track:
Sent vs failed recipients
Errors returned per recipient
Replies captured (if supported by your workflow)
Security NotesNever expose x-api-key in frontend code.
Validate broadcast ownership by workspace in your integration.
Log all create/update/delete operations for auditing.