An API you understand without reading a PDF.
Everything you need to send your first SMS in 5 minutes. Endpoint, request fields, error codes and webhooks – with examples in 5 languages.
Quickstart
1. Create an account
Sign up via email. 100 SMS free on start, no credit card required.
2. Generate Bearer Token
Generate the token in the client panel (or via customer support). Keep it in a safe place.
3. Send the first SMS
POST /api/sms with JSON payload. Code samples below.
Endpoint: POST /api/sms
Main sending endpoint. Bearer token auth, JSON body (application/json). Returns the message identifier (message_id, 16 hex characters).
Base URL
https://api.sendly.linkRequest fields
tostring (9–11 digits)requiredRecipient number – numeric string, 9–11 characters (e.g. 48732129001).
bodystringrequiredMessage content, min. 1 character. UCS-2 encoding split every 60 characters; optionally GSM-7 (single message, max 160 characters) – enabled in the panel.
fromstring (9–11 digits)Optional. The virtual mobile number in SENDLY (numeric string, 9–11 characters).
curl -X POST https://api.sendly.link/api/sms \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"to": "48732129000",
"body": "Twój kod logowania: 482910"
}'Response (200)
{ "message_id": "a906cff7719bd889" }Bulk send: POST /api/sms-multi
The same message to multiple numbers (1 to 100). Enabled only via customer support. All-or-nothing validation – every number must be a valid Polish mobile number and the numbers must be unique; otherwise the whole request is rejected. The response contains a message_ids array with number + message_id pairs.
Base URL
https://api.sendly.linkRequest fields
tostring[] (9–11 digits, 1–100)requiredArray of recipient numbers – each a numeric string of 9–11 characters, 1 to 100 elements, numbers must be unique.
bodystringrequiredMessage content, min. 1 character.
fromstring (9–11 digits)Optional. The virtual mobile number in SENDLY (numeric string, 9–11 characters).
curl -X POST https://api.sendly.link/api/sms-multi \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"to": ["48732129001", "48732129002"],
"body": "Test SENDLY"
}'Response (200)
{
"message_ids": [
{ "number": "48732129001", "message_id": "a906cff7719bd889" }
]
}Error codes
403422429Webhooks
You configure the webhook URL in the client panel. We send a POST (application/json) – one attempt, no redirect following, no authentication, from the current IP address of api.sendly.link.
type: MESSAGEInbound message – fields: from (number or sender ID), to, body.type: NOTIFICATIONStatus confirmation – status field: DELIVERED or ERROR.{
"type": "NOTIFICATION",
"message_id": "a906cff7719bd889",
"status": "DELIVERED"
}3CX SMS API
An alternative mode for sending and receiving SMS, compatible with the current 3CX Phone System specification. To enable it, select both options in the client panel: SMS API and 3CX SMS API. It can also be enabled by customer support.
Outbound
In the SMS section in 3CX, provide the token generated in the client panel and the URL: https://api.sendly.link/api/tcx
Inbound
In the client panel, provide the webhook available in your 3CX system (when enabled via customer support, you provide the webhook and receive a token in return).
Start sending SMS today.
100 free messages. No credit card. No subscription. Activation in 30 seconds.