SENDLY SMS API
Full reference generated from OpenAPI – always in sync with the spec. Endpoints, field schemas, responses and webhooks.
https://api.sendly.linkopenapi.jsonhttps://api.sendly.link/api/smsSMS message sending
The default API operating mode, intended for use with applications that support the REST API.
Request body
fromstringThe SENDLY virtual mobile number (optional field).
pattern: ^[0-9]{9,11}$
tostringrequiredThe destination mobile number.
pattern: ^[0-9]{9,11}$
bodystringrequiredThe message content.
min 1
curl -X POST https://api.sendly.link/api/sms \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"from":"48732129000","to":"48732129001","body":"Test SENDLY"}'Response · 200 – The message has been accepted for sending.
{
"message_id": "a906cff7719bd889"
}Response · 403 – Authorization problem.
{
"errors": {
"token": [
"Invalid token"
]
}
}Response · 422 – Data validation problem.
{
"description": "Data validation problem."
}Response · 429 – Request limit exceeded.
{
"description": "Request limit exceeded."
}https://api.sendly.link/api/sms-multiSending a message to multiple numbers
Sending the same message to multiple numbers. This feature is activated for an access token exclusively by contacting customer service. Number validation works on an "all or nothing" basis – each number must be a valid Polish mobile number and the numbers must be unique; otherwise the request is rejected in its entirety.
Request body
fromstringThe SENDLY virtual mobile number (optional field).
pattern: ^[0-9]{9,11}$
toarray<string>requiredThe destination mobile numbers.
1–100 · unique
bodystringrequiredThe message content.
min 1
curl -X POST https://api.sendly.link/api/sms-multi \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"from":"48732129000","to":["48732129001","48732129002"],"body":"Test SENDLY"}'Response · 200 – The message has been accepted for sending.
{
"message_ids": [
{
"number": "48732129001",
"message_id": "a906cff7719bd889"
}
]
}Response · 403 – Authorization problem.
{
"errors": {
"token": [
"Invalid token"
]
}
}Response · 422 – Data validation problem.
{
"description": "Data validation problem."
}Response · 429 – Request limit exceeded.
{
"description": "Request limit exceeded."
}https://api.sendly.link/api/tcx3CX SMS API
3CX SMS API mode: sending and receiving messages based on the current specification of the 3CX Phone System PBX. Activation: enable both options in the client panel (SMS API and 3CX SMS API); in the SMS section in 3CX, provide the token from the panel and this URL. The request/response format complies with the 3CX specification.
Request body
No request parameters.
Response · 200 – In accordance with the 3CX Phone System PBX specification.
{
"description": "In accordance with the 3CX Phone System PBX specification."
}Webhooks
Events SENDLY sends to your webhook URL – inbound messages and delivery confirmations.
inboundMessageReceiving messages (webhook)
Incoming messages are sent to the webhook specified in the client panel. A single delivery attempt; no redirect following and no authorization. The request originates from the current IP address of the api.sendly.link domain.
typestringThe message type – "MESSAGE" for an incoming message.
= MESSAGE
fromstringThe source number presentation; for an overridden number – the override.
tostringThe destination phone number.
bodystringThe message content.
Payload
{
"type": "MESSAGE",
"from": "48732129000",
"to": "48732129001",
"body": "Test sms"
}deliveryNotificationMessage delivery confirmation (webhook)
Once the option is activated (client panel or customer service), the request is sent to the specified webhook address. A single delivery attempt; no redirect following and no authorization. The request originates from the current IP address of the api.sendly.link domain.
typestringThe message type – "NOTIFICATION" for a status.
= NOTIFICATION
message_idstringThe message identifier returned after acceptance for sending.
statusstringDELIVERED – delivered; ERROR – error.
DELIVERED · ERROR
Payload
{
"type": "NOTIFICATION",
"message_id": "a906cff7719bd889",
"status": "DELIVERED"
}