Transactional SMS Send
Send personalized SMS to one or more recipients with variable text, tracked links and scheduling.
POST
/api/v1/{account_code}/sms/transactional/send/
Authorization
Bearer {token} — 56 characters
The request consists of two main sections:
default (parameters shared by all recipients) and
specific (array of recipients with individual overrides).
Parameters in specific override those in default for each individual message.
Credit note
The response can be positive even if the account has insufficient credit.
Always verify your account balance before sending.
Parameters (JSON)
| Parameter | Required | Type | Description |
|---|---|---|---|
| account_code | YES | string (UUID) | Account code — passed in the URL path |
| default | YES | object | Default parameters shared by all recipients |
| specific | YES | array<object> | List of recipients with per-recipient overrides |
default Object
| Parameter | Required | Type | Description |
|---|---|---|---|
| sender_id | YES | string (max 11) | Pre-authorized sender associated with the account pre-authorized |
| text | YES | string | Message text (may contain variable placeholders) |
| sending_time | NO | string (ISO 8601) | Scheduled send time (e.g. 2025-01-30T14:13:24.679Z) |
| validity_time | NO | string (ISO 8601) | Message validity expiry |
| expire_time_rcs | NO | string (ISO 8601) | RCS expiry time |
| ph_delimiter | NO | string |
Variable delimiters in the text (e.g. "# #" → #name#,
or "{{ }}" → {{name}})
|
| meta | NO | object | Shared variables to substitute in the text (e.g. {"company": "Acme"}) |
Items in specific Array
| Parameter | Required | Type | Description |
|---|---|---|---|
| phone_number | YES | string | Recipient number with international prefix (e.g. "+393xxxxxxxxx") |
| meta | NO | object | Per-recipient variables (override default.meta) |
| text | NO | string | Per-recipient text (overrides default.text) |
| ph_delimiter | NO | string | Per-recipient delimiter (overrides default.ph_delimiter) |
| validity_time | NO | string (ISO 8601) | Per-recipient validity expiry |
| expire_time_rcs | NO | string (ISO 8601) | Per-recipient RCS expiry |
Tracked Links
To track click counts on a link included in the message text, use this format:
Syntax
{{ TRACKED_LINK_https://example.com }}
The platform will automatically replace the tracked link in the message text with a shortlink.
The TRACKED_LINK_ prefix must precede the URL, and the entire expression must be
wrapped in {{ }}.
The
{{ }} delimiters for tracked links are independent from the ph_delimiter
used for text variables. You can use both in the same request.
Example Request
JSON
{
"default": {
"sender_id": "SENDER",
"text": "Hello #name# #surname#, you contacted #company#. Click here: {{ TRACKED_LINK_https://example.com }}",
"sending_time": "2025-01-30T14:13:24.679Z",
"validity_time": "2025-02-28T14:13:24.679Z",
"ph_delimiter": "# #",
"meta": {
"company": "My Company"
}
},
"specific": [
{
"phone_number": "+393331234567",
"meta": {
"name": "Mario",
"surname": "Rossi"
}
},
{
"phone_number": "+393407654321",
"ph_delimiter": "{{ }}",
"text": "Hello {{name}} {{surname}}, welcome to {{company}}! {{ TRACKED_LINK_https://example.com }}",
"meta": {
"company": "Another Company",
"name": "Carlo",
"surname": "Bianchi"
}
}
]
}
Success Response
200 OK
An array with one object per recipient, in the same order as the specific array.
JSON
[
{
"success": true,
"uuid": "9a53f419-6475-a191-9b86-xxxxxxxxxxxx",
"index": 0,
"receiver": "393331234567",
"shortlink": "https://l2l.biz/cgRBB8",
"error": null
},
{
"success": true,
"uuid": "a5562ac9-54f7-3c1c-7006-xxxxxxxxxxxx",
"index": 1,
"receiver": "393407654321",
"shortlink": "https://l2l.biz/0vhiZj",
"error": null
}
]
Response Fields
| Field | Type | Description |
|---|---|---|
| success | boolean | Delivery outcome for this recipient |
| uuid | string | Unique message identifier |
| index | integer | Position in the specific array (0-based) |
| receiver | string | Recipient number (without the +) |
| shortlink | string|null | Generated short URL if a tracked link was included |
| error | string|null | Error description (if any) |