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.json
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)

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.

  • 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)

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.

  • 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"
}