Skip to content
SENDLY by ACTIOSENDLY by ACTIO
API Reference

SENDLY SMS API

Full reference generated from OpenAPI – always in sync with the spec. Endpoints, field schemas, responses and webhooks.

https://api.sendly.linkopenapi.jsonDownload PDF v1.3
POSThttps://api.sendly.link/api/sms

SMS message sending

The default API operating mode, intended for use with applications that support the REST API.

Request body

  • fromstring

    The SENDLY virtual mobile number (optional field).

    pattern: ^[0-9]{9,11}$

  • tostringrequired

    The destination mobile number.

    pattern: ^[0-9]{9,11}$

  • bodystringrequired

    The 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."
}
POSThttps://api.sendly.link/api/sms-multi

Sending 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

  • fromstring

    The SENDLY virtual mobile number (optional field).

    pattern: ^[0-9]{9,11}$

  • toarray<string>required

    The destination mobile numbers.

    1–100 · unique

  • bodystringrequired

    The 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."
}
POSThttps://api.sendly.link/api/tcx

3CX 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.

POSTinboundMessage

Receiving messages (webhook)

Inbound messages go to the webhook from the panel (SMS Gateway → Service settings: deliveries and URL, both required). POST application/json from the IP of api.sendly.link, up to 36 attempts, no redirect following and no extra auth. A 200 OK response stops retries; 404 and 418 also stop them.

  • typestring

    The message type – "MESSAGE" for an incoming message.

    = MESSAGE

  • fromstring

    The source number presentation; for an overridden number – the override.

  • tostring

    The destination phone number.

  • bodystring

    The message content.

Payload

{
  "type": "MESSAGE",
  "from": "48732129000",
  "to": "48732129001",
  "body": "Test sms"
}
POSTdeliveryNotification

Message delivery confirmation (webhook)

After you enable deliveries and enter the URL in the panel (both steps required), Sendly POSTs the status. Up to 36 attempts, no redirect following and no extra auth, from the IP of api.sendly.link. A 200 OK response stops retries; 404 and 418 also stop them. Store message_id from the API response to match the NOTIFICATION to the SMS you sent.

  • typestring

    The message type – "NOTIFICATION" for a status.

    = NOTIFICATION

  • message_idstring

    The message identifier returned after acceptance for sending.

  • statusstring

    DELIVERED – delivered; ERROR – error.

    DELIVERED · ERROR

Payload

{
  "type": "NOTIFICATION",
  "message_id": "a906cff7719bd889",
  "status": "DELIVERED"
}