Send Batch Triggered SMS
The Send Batch Triggered SMS method allows sending bulk SMS messages to contacts, but no more than 100 contacts, added to our system and saved to a list. The SMS messages are sent from the domain on which the list was created.
IMPORTANT: In a single request, you can send communications to no more than 100 contacts at once.
Request
IMPORTANT: Do not send more than 10 concurrent API requests.
Body Example
{
"contactListId": "YOUR_CONTACT_LIST_ID",
"templateId": "YOUR_TEMPLATE_ID",
"fromName": "DOCS",
"contacts": [
{
"contact": "contact1PhoneNumber",
"variables": [
{
"name": "contactVar",
"value": "contactVarValue"
}
]
},
{
"contact": "contact2PhoneNumber"
},
{
"contact": "contact3PhoneNumber"
}
],
"variables": [
{
"name": "templateVar",
"value": "templateVarValue"
}
],
"tag": [
"YOUR_BATCH_TAGS",
],
}
Parameters
Title | Type | Default | Description |
---|---|---|---|
contactListId required
|
string |
ID of the contact list to which the contact belongs. |
|
contacts required
|
array |
An array of objects that includes the contacts to which the messages will be sent, as well as an array of objects with unique variables for each contact. |
|
contacts.contact required
|
string |
The |
|
contacts.variables optional
|
array |
An array of unique variables for each contact. Please, take in account variables usage priorities is case of conflicting variables:
Important! Variables passed to the contact have the highest priority when used in the template. |
|
contacts.variables.name required
|
string |
The name of the contact's unique variable.
|
|
contacts.variables.value required
|
string|integer|boolean |
The value of the contact's unique variable. Variable value in |
|
templateId required
|
string |
The template you want to send. The template should be already created in your account on Templates page: https://app.wooxy.com/templates. |
|
fromName optional
|
string |
Sender “From Name” linked to sending phone number that recipients will see on their phones. If not defined – default “From Name” linked to contactList will be used. |
|
tags optional
|
array |
An array of strings that can be used to tag a message. Statistics are accumulated using tags, and the number of tags available depends on the plan. All tags you want to use must be created in advance on the platform in the tags section. Tags should be 50 characters or less. Any tags starting with an underscore are reserved for internal use and will cause errors. |
|
variables optional
|
array |
An array of common variables that will be applied to the sending for each individual recipient. Please, take in account variables usage priorities is case of conflicting variables:
|
|
variables.name required
|
string |
The name of the variable that will be applied in the template for each contact.
|
|
variables.value required
|
string|integer|boolean |
The value of the variable that will be applied in the template for each contact. Variable value in |
Response
{
"result": true,
"success": {
"phoneNumber": "Message ID"
},
"failed": {
"phoneNumber": "Error description"
}
}
Parameters
Title | Type | Description |
---|---|---|
result |
boolean |
Indicated that the query was successful or not:
|
success |
object |
An object containing all successful phone number sends, including the contacts to whom the phone number were sent and the |
success.phoneNumber |
string |
The phone number of the contact to whom the successful send was made. |
success[messageId] |
string |
The Message ID of a successful send to a specific contact. |
failed |
object |
An object with failed phone number sends, including the contact phone number that could not receive the communication and the reason why the send was unsuccessful. |
failed.phoneNumber |
string |
The phone numberof the contact to whom the communication could not be sent. |
failed[error] |
string |
The error that prevented the sending to a specific contact. |
Method Errors
{
"result": false,
"errors": [
"Error description"
]
}
Error |
---|
"Argument contactListId must be a string" |
"Argument contactListId must be a non-empty string" |
"Contact list with id {contactListId} not found" |
"Each contact must contain contact field" |
"Argument contacts must be an array of objects" |
"Amount of contacts must be less or equal 100" |
"No contacts to handle" |
"Duplicated as {contact}", |
"Contact not found" |
"Contact is not active" |
"name of variable can not be empty" |
"Argument templateId must be a non-empty string" |
"Template with id {templateId} not found" |
"Argument tags must be an array" |
"Tag name must be a non-empty string" |
"Tags should be 50 characters or less" |
"Any tags starting with an underscore are reserved for internal use and will cause errors" |
"Tag %s is not registered in account tags" |
"Argument variables must be an array of arrays with \"name\" and \"value\" fields" |
"name of variable must be a string" |
"variable \"{name}\" is reserved and can not be added as custom variable" |
"invalid name of variable {name}" |
"Payment required" |
"Fail to publish message" |
"Domain {domainId} not found" |
"Twig syntax error: {error}" |
"Invalid authorization token!" |
"Internal server error" |
"Bad Request" |
"no matches found for access token {accessToken}" |
"user {id} not enabled" |
"no data found for key {userId}" |
"access token check failed for key/secret $key/$accessToken" |
"Argument {argument} required" |
"Contact is not subscribed to SMS" |
"Invalid E.164 phone number {phone}" |
"SMS service is not activated for account {accountName}" |
"Contact {contact} has no phone number" |
"Phone number {phoneNumber} is blacklisted" |
"Insufficient balance. You need at least {cost} to send this message" |
"Argument fromName must be a non-empty string" |
"Argument fromName must contain 11 and less A-Z, a-z, 0-9 symbols and spaces or be a valid phoneNumber" |
Code Examples
$accessToken = 'YOUR_API_KEY';
$url = 'https://api.wooxy.com/v3/sms/batch';
$body = json_encode([
'contactListId' => 'YOUR_CONTACT_LIST_ID',
'templateId' => 'YOUR_TEMPLATE_ID',
'fromName' => 'DOCS',
'contacts' => [
[
'contact' => 'contact1PhoneNumber',
'variables' => [
[
'name' => 'contactVar',
'value' => 'contactVarValue'
]
]
],
[
'contact' => 'contact2PhoneNumber'
],
[
'contact' => 'contact3PhoneNumber'
]
],
'variables' => [
[
'name' => 'templateVar',
'value' => 'templateVarValue'
]
],
'tag' => [
'YOUR_BATCH_TAGS'
]
]);
/** * Request Example */
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_INFILESIZE, null);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Access-Token: $accessToken",
'Content-Type: application/json',
'Content-Length: ' . strlen($body),
]);
$result = curl_exec($ch);
if ($result === false) {
echo 'cURL error:' . curl_error($ch) . PHP_EOL;
} else {
echo strval($result) . PHP_EOL;
}
curl_close($ch);