Routeon Broadcast API
Authentication
API authentication is implemented using the API key, which must be added to the X-API-Key header.
The API key will be generated in your personal account in the API Accesses interface. Specify recipients (for contacts) and/or broadcast (for broadcasts) for Scopes.
Response
If the request is successful, the API will respond with a 200 OK code, with the details in the response body.
If the request is unsuccessful, the API will respond with the appropriate HTTP code, with details in the response body.
Working with templates
Connection
API URL path:
https://{{URL}}/api/v1/broadcast/templates
Template Operations
Get Template List
GET /api/v1/broadcast/templates
Description
Retrieves a paginated list of available broadcast templates for the authenticated company.
Parameters
| Field | Type | Reqd. | Description |
|---|---|---|---|
| limit | integer | No | Maximum number of entries. Default value: 10. |
| offset | integer | No | Offset for the list (which entry to start output from). Default value: 0. |
Response
Possible responses:
200- OK - Successful. The body contains ListResource«ExtApiTemplateDto» data model.400- Bad Request - Invalid request. The body contains ApiError data model.401- Unauthorized - Request lacks valid authentication credentials.403- Forbidden - Access denied.500- Internal Server Error - Server-side error.
Example
Request
GET https://{{URL}}/api/v1/broadcast/templates?limit=2
Response
200 OK + Body
{
"resourceList": [
{
"id": 1670,
"name": "Test_template",
"createdAt": "2024-08-09T12:27:55.893652Z",
"updatedAt": "2024-08-09T12:27:57.81028Z",
"channel": 4,
"fullRecordCount": 0,
"content": "[]"
},
{
"id": 1669,
"name": "new_template",
"createdAt": "2024-08-27T13:01:08.252762Z",
"updatedAt": "2024-08-27T13:01:08.11515Z",
"channel": null,
"fullRecordCount": 0,
"content": "[{"order":0,"channelType":1,"senderId":"4930609859535","contentPattern":"{\"preview_url\":true,\"recipient_type\":\"individual\",\"type\":\"text\",\"text\":{\"body\":\"{{attribute.phoneNumber}}\"}}","deliveryCondition":"DELIVERY_SUCCESS","timeout":600}]"
}
],
"size": 634,
"limit": 2,
"offset": 0
}
Get Template Details
GET /api/v1/broadcast/templates/{id}
Description
Retrieves detailed information about a specific template.
Parameters
| Field | Type | Reqd. | Description |
|---|---|---|---|
| id | string | Yes | ID of the template |
Response
Possible responses:
200- OK - Successful. The body contains ExtApiTemplateDto data model.400- Bad Request - Invalid ID format.401- Unauthorized - Request lacks valid authentication credentials.403- Forbidden - Access denied or company mismatch.404- Not Found - Template not found.500- Internal Server Error - Server-side error.
Example
Request
GET https://{{URL}}/api/v1/broadcast/templates/1670
Response
200 OK + Body
{
"id": 1670,
"name": "Summer promotion",
"description": "Summer promotion template",
"extraRecipientList": [
"4915735987904"
],
"filterList": [],
"tags": [],
"contentType": 1,
"rcsCheckFlag": false,
"content": {
"flowSteps": [
{
"order": 0,
"channelType": 1,
"senderId": "sms_sender",
"contentPattern": "I am just a simple template for online documentation",
"deliveryCondition": "DELIVERY_SUCCESS",
"timeout": 259200
}
]
},
"createdAt": "2024-08-09T12:27:55.893652Z",
"updatedAt": "2024-08-09T12:27:57.81028Z"
}
Create Template
POST /api/v1/broadcast/templates
Description
Creates a new broadcast template. Content may require moderation depending on company policies.
Request Body
ExtApiTemplateDto object with required fields:
| Field | Type | Reqd. | Description |
|---|---|---|---|
| name | string | Yes | Template name |
| contentType | integer | Yes | 1: Fallback, 2: Chat Bot, 3: RCS Capability Check |
| content | object | Yes | Content configuration (flowSteps, scenario, rcsCapabilityCheck) |
| rcsCheck | boolean | No | Whether to perform RCS capability check (for Fallback content type only) |
| description | string | No | Optional description |
| tags | array | No | List of tags for categorization |
| filterList | array | No | List of filters to apply |
| extraRecipientList | array | No | List of exact recipient phone numbers |
Response
Possible responses:
200- OK - Successful creation. The body contains the created ExtApiTemplateDto.400- Bad Request - Invalid input data or missing required fields.401- Unauthorized - Request lacks valid authentication credentials.403- Forbidden - Access denied.500- Internal Server Error - Server-side error.
Example
Request
POST https://{{URL}}/api/v1/broadcast/templates
Request Body
{
"name": "Summer promotion",
"description": "Template for summer product line promotion",
"extraRecipientList": [],
"filterList": [],
"tags": ["promo"],
"contentType": 1,
"content": {
"flowSteps": [
{
"channelType": 1,
"senderId": "sms_sender",
"contentPattern": "I am just a simple template for online documentation",
"deliveryCondition": "DELIVERY_SUCCESS",
"timeout": 259200
}
]
}
}
Response
200 OK + Body
{
"id": 1671,
"name": "Summer promotion",
"description": "Template for summer product line promotion",
"extraRecipientList": [],
"filterList": [],
"tags": ["promo"],
"contentType": 1,
"rcsCheckFlag": false,
"content": {
"flowSteps": [
{
"order": 0,
"channelType": 1,
"senderId": "sms_sender",
"contentPattern": "I am just a simple template for online documentation",
"deliveryCondition": "DELIVERY_SUCCESS",
"timeout": 259200
}
]
},
"createdAt": "2024-08-09T12:27:55.893652Z",
"updatedAt": "2024-08-09T12:27:55.893652Z"
}
Update Template
PUT /api/v1/broadcast/templates/{id}
Description
Updates an existing template. Partial updates are supported (null fields are ignored). Changing content type requires full content specification. May trigger moderation.
Parameters
| Field | Type | Reqd. | Description |
|---|---|---|---|
| id | string | Yes | ID of the template |
Request Body
ExtApiTemplateDto object with fields to update (null fields will be ignored):
Same fields as Create Template, all optional for partial updates.
Response
Possible responses:
200- OK - Successful update. The body contains the updated ExtApiTemplateDto.400- Bad Request - Invalid input data or content type change without content.401- Unauthorized - Request lacks valid authentication credentials.403- Forbidden - Access denied or company mismatch.404- Not Found - Template not found.500- Internal Server Error - Server-side error.
Example
Request
PUT https://{{URL}}/api/v1/broadcast/templates/1670
Request Body
{
"name": "Summer Promotion 2024",
"description": "Updated template for summer campaign"
}
Response
200 OK + Body
{
"id": 1670,
"name": "Summer promotion 2024",
"description": "Updated template for summer campaign",
"extraRecipientList": [],
"filterList": [],
"tags": ["promo"],
"contentType": 1,
"rcsCheckFlag": false,
"content": {
"flowSteps": [
{
"order": 0,
"channelType": 1,
"senderId": "sms_sender",
"contentPattern": "I am just a simple template for online documentation",
"deliveryCondition": "DELIVERY_SUCCESS",
"timeout": 259200
}
]
},
"createdAt": "2024-08-09T12:27:55.893652Z",
"updatedAt": "2024-08-10T10:20:30.456789Z"
}
Delete Template
DELETE /api/v1/broadcast/templates/{id}
Description
Deletes a template from the system. This action is irreversible.
Parameters
| Field | Type | Reqd. | Description |
|---|---|---|---|
| id | string | Yes | ID of the template |
Response
Possible responses:
204- No Content - Successful deletion.400- Bad Request - Invalid ID format.401- Unauthorized - Request lacks valid authentication credentials.403- Forbidden - Access denied.404- Not Found - Template not found.500- Internal Server Error - Server-side error.
Example
Request
DELETE https://{{URL}}/api/v1/broadcast/templates/1670
Response
204 No Content
Working with broadcasts
Connection
API URL path:
https://{{URL}}/api/v1/broadcast/broadcasts
Requests to API are sent using the POST method.
Webhook
To receive notifications containing the results of sending, delivering and reading messages, you need to register the URL where your equipment expects these notifications as the Webhook URL of the corresponding connection in your personal account in the API Accesses.
Webhook-call body
| Field | Type | Reqd. | Description |
|---|---|---|---|
| status | string | Yes | Updated broadcast status. |
| webhook | string | Yes | Webhook URL to which broadcast status reports will be sent. |
| broadcastId | integer | Yes | Broadcast ID. |
| message | string | No | Error description. Returns null if no errors were detected during the broadcast. |
Launching broadcast
Method and endpoint
POST /api/v1/broadcast/broadcasts
Description
It is used to launch a broadcast.
Parameters
ExtApiBroadcastRequestDto data model.
Response
Possible responses:
- 200 — OK — Successful. The body will be empty.
- 400 — Bad Request — Invalid request. The body contains ApiError data model.
- 401 — Unauthorized — Request lacks valid authentication credentials. The body contains ApiError data model.
- 403 — Forbidden — Access denied. The body contains ApiError data model.
- 404 — Not Found — Templates not found. The body contains ApiError data model.
- 500 — Internal Server Error — Server-side error. The body contains ApiError data model.
Example 1
Request to immediately launch a broadcast using template target filters.
Request
POST https://{{URL}}/api/v1/broadcast/broadcasts
Body
{
"templateId": 3091,
"launchTime": "",
"webhook": "https://webhook.site/9a9a9a9a-9a9a-9a9a-9a9a-9a9a9a9a9a9a"
}
Response
200 OK
Example 2
Request to create a broadcast list planned for the future, indicating the recipient's phone number.
Request
POST https://{{URL}}/api/v1/broadcast/broadcasts
Body
{
"templateId": 3091,
"launchTime": "2024-08-30T09:14:45.410958Z",
"webhook": "https://webhook.site/9a9a9a9a-9a9a-9a9a-9a9a-9a9a9a9a9a9a",
"recipientsList": [
{
"phoneNumber": "4915735987904"
}
]
}
Response
200 OK
Example 3
If the required parameter phoneNumber is not specified in the request, the API will respond with code 400.
Request
POST https://{{URL}}/api/v1/broadcast/broadcasts
Body
{
"templateId": 3091,
"launchTime": "2024-08-30T09:14:45.410958Z",
"webhook": "https://webhook.site/9a9a9a9a-9a9a-9a9a-9a9a-9a9a9a9a9a9a",
"recipientsList": [
{
"name": "Alice"
}
]
}
Response
400 Bad Request + Body
{
"execId": null,
"key": null,
"code": null,
"message": "Phone number can't be null or empty",
"args": null
}
Example 4
To immediately launch a broadcast without using a template, the API caller must specify the broadcast's content in the payload element of the request body.
Request:
POST https://{{URL}}/api/v1/broadcast/broadcasts
Request body for SMS broadcast:
{
"name": "Summer sale",
"description": "Summer product line sale",
"launchTime": "2025-08-30T09:14:45.410958Z",
"webhook": "https://webhook.site/9a9a9a9a-9a9a-9a9a-9a9a-9a9a9a9a9a9a",
"recipientsList": [
{"phoneNumber": "4915735987904"},
{"phoneNumber": "4948735987296"}
],
"payload": {
"contentType": 1,
"contentSettings": {
"flowSteps": [
{
"channelType": 1,
"senderId": "smsGate",
"timeout": 172800,
"deliveryCondition": "SUBMIT_SUCCESS",
"contentPattern": "Hello and welcome to our summer sale starting today!"
}
]
}
}
}
Response:
200 OK
Notes:
nameanddescriptionare optional fields for immediate broadcasts without templates.- If the
nameattribute is not provided, the system will automatically generate a value for the broadcast name. launchTimeis an optional field used when the broadcast must be scheduled for a future time.- The
webhookattribute must be set to a webhook URL to receive the broadcast results. - The
recipientsListattribute must contain one or more recipient objects with thephoneNumberattribute containing the recipient's phone number as a value.
For SMS broadcasts, the payload object must include the following elements:
contentTypeattribute with value1(Fallback)contentSettingsobject containing a nestedflowStepsarray
The flowSteps array must contain at least one object with these required attributes:
channelType: Set to1(SMS)senderId: Identifier of the sender for this steptimeout: Number of seconds to wait for delivery (in this example, 172800 seconds = 2 days)deliveryCondition: EitherSUBMIT_SUCCESS(for successful SMS submission) orDELIVERY_SUCCESS(for successful delivery)contentPattern: The broadcast message content
ExtAPI Broadcasts
Broadcast Controller
ExtAPI Templates
Provides operations for managing templates in the system.