Przejdź do treści
SENDLY by ACTIOSENDLY by ACTIO
Specyfikacja

SENDLY SMS API

Specyfikacja v1.2

SENDLY SMS API działa na zasadzie przesyłania komunikatów za pomocą protokołu HTTP. Do obsługi wiadomości SMS dostępne są dwa wzajemnie wykluczające się tryby: SMS API oraz 3CX API

1. SMS API

1.1 Wysyłka wiadomości

Jest to domyślny tryb działania API, przeznaczony do wykorzystania z aplikacjami obsługującymi REST API. Do wysyłki SMS udostępniany jest następujący endpoint:

POST https://api.sendly.link/api/sms

Autoryzacja: Bearer token
Oczekiwany typ zawartości: application/json

Pola ciała żądania:

PoleTyp danychOpis
fromNumeryczny łańcuch znaków, minimum 9 znaków, maksimum 11 znaków (pole opcjonalne)Numer wirtualnego numeru komórkowego w SENDLY
toNumeryczny łańcuch znaków, minimum 9 znaków, maksimum 11 znakówDocelowy numer komórkowy
bodyŁańcuch znaków, minimum 1 znakTreść wiadomości

Przykładowe żądanie:

curl -X POST https://api.sendly.link/api/sms \
     -H "Authorization: Bearer TWOJ_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
           "from": "48732129000",
           "to": "48732129001",
           "body": "Test SENDLY"
         }'

Token możliwy jest do wygenerowania i pobrania z panelu klienta. Alternatywnie istnieje możliwość pozyskania tokena przez biuro obsługi klienta.

Możliwe odpowiedzi:

200 – wiadomość została przyjęta do wysyłki

Ciało odpowiedzi:

PoleTyp danychOpis
message_idŁańcuch znakówUnikalny identyfikator wiadomości (16 znaków hex)

Przykładowa odpowiedź:

{"message_id":"a906cff7719bd889"}

Możliwe odpowiedzi błędu:

403 – problem z autoryzacją
422 – problem z walidacją danych
429 – Przekroczono limit żądań

W przypadku błędów ciało odpowiedzi może zawierać jedno lub więcej pól opisanych w tabeli poniżej:

PoleTyp danychOpis
errors.tokenTablica łańcuchów znakówOpis błędu związanego z przekazanym tokenem dostępowym
errors.fromTablica łańcuchów znakówOpis błędu związanego z numerem źródłowym
errors.toTablica łańcuchów znakówOpis błędu związanego z numerem docelowym
errors.bodyTablica łańcuchów znakówOpis błędu związanego z ciałem wiadomości

Przykładowa odpowiedź:

{"errors":{"token":["Invalid token"]}}

Wiadomości wychodzące kodowane są w UCS-2 i dzielone co 60 znaków. Opcjonalnie istnieje możliwość wysyłania SMS w kodowaniu GSM7 z ograniczeniem do pojedynczej wiadomości o maksymalnej długości 160 znaków. Opcję tę można włączyć w panelu klienta lub po złożeniu dyspozycji przez biuro obsługi klienta.

1.2 Wysyłka wiadomości na wiele numerów

Jest to metoda API pozwalająca na wysyłkę tej samej wiadomości na wiele numerów. Aktywacja tej funkcji dla tokena dostępowego następuje wyłącznie poprzez kontakt z biurem obsługi klienta. Udostępniany jest następujący endpoint:

POST https://api.sendly.link/api/sms-multi

Autoryzacja: Bearer token
Oczekiwany typ zawartości: application/json

Pola ciała żądania:

PoleTyp danychOpis
fromNumeryczny łańcuch znaków, minimum 9 znaków, maksimum 11 znaków (pole opcjonalne)Numer wirtualnego numeru komórkowego w SENDLY
toTablica numeryczny łańcuchów znaków, minimum 9 znaków, maksimum 11 znaków, minimum 1 element, maksimum 100 elementówDocelowe numery komórkowe
bodyŁańcuch znaków, minimum 1 znakTreść wiadomości

Przykładowe żądanie:

curl -X POST https://api.sendly.link/api/sms-multi \
     -H "Authorization: Bearer TWOJ_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
           "from": "48732129000",
           "to": ["48732129001", "48732129002"],
           "body": "Test SENDLY"
         }'

Walidacja przesłanych numerów telefonów następuje na zasadzie „wszystko albo nic” – każdy z przesłanych numerów musi być poprawnym polskim numerem komórkowym lub żądanie zostanie odrzucone w całości. Przesłane numery muszą być unikalne, przesłanie zduplikowanych numerów spowoduje odrzucenie żądania w całości.

Możliwe odpowiedzi:

200 – wiadomość została przyjęta do wysyłki

Ciało odpowiedzi:

PoleTyp danychOpis
message_idsTablica obiektówKażdy ze zwróconych obiektów zawiera pola „number” wskazujący na jeden z podanych numerów docelowych oraz „message_id”, które jest identyfikatorem wiadomości przyjętej do wysyłki

Przykładowa odpowiedź:

{"message_ids":[{"number":"48732129001","message_id":"a906cff7719bd889"}]}

Możliwe odpowiedzi błędu:

403 – problem z autoryzacją
422 – problem z walidacją danych
429 – Przekroczono limit żądań

W przypadku błędów ciało odpowiedzi może zawierać jedno lub więcej pól opisanych w tabeli poniżej:

PoleTyp danychOpis
errors.tokenTablica łańcuchów znakówOpis błędu związanego z przekazanym tokenem dostępowym
errors.fromTablica łańcuchów znakówOpis błędu związanego z numerem źródłowym
errors.toTablica łańcuchów znakówOpis błędu związanego z numerem docelowym
errors.bodyTablica łańcuchów znakówOpis błędu związanego z ciałem wiadomości

Przykładowa odpowiedź:

{"errors":{"token":["Invalid token"]}}

1.3 Odbiór wiadomości

Wiadomości przychodzące wysyłane są na podany w panelu klienta webhook. Webhook można także podać w dyspozycji do biura obsługi klienta. Podjęta zostanie jedna próba dostarczenia wiadomości. Żądanie API nie śledzi przekierowań, nie autoryzuje się także do webhooka. Żądanie pochodzić będzie z aktualnego adresu IP domeny api.sendly.link.

Metoda: POST
Typ zawartości: application/json

Pola ciała żądania:

PoleTyp danychOpis
typeŁańcuch znakówTyp wiadomości. Dla wiadomości przychodzącej przyjmuje wartość „MESSAGE”
fromŁańcuch znakówPrezentacja numeru źródłowego. W przypadku wiadomości z nadpisanym numerem w tym polu znajduje się nadpis.
toNumeryczny łańcuch znakówDocelowy numer telefonu
bodyŁańcuch znakówTreść wiadomości

Przykładowe ciało żądania:

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

1.4 Potwierdzenie dostarczenia wiadomości

W przypadku chęci otrzymywania powiadomień o dostarczeniu wiadomości należy aktywować tę opcję w panelu klienta lub przez dyspozycję dla biura obsługi klienta. Aktywacja tej opcji spowoduje przesyłanie żądania na podany adres webhooka. Podjęta zostanie jedna próba dostarczenia powiadomienia. Żądanie API nie śledzi przekierowań, nie autoryzuje się także do webhooka. Żądanie pochodzić będzie z aktualnego adresu IP domeny api.sendly.link.

Metoda: POST
Typ zawartości: application/json

Pola ciała żądania:

PoleTyp danychOpis
typeŁańcuch znakówTyp wiadomości. Dla wiadomości o statusie przyjmuje wartość „NOTIFICATION”
message_idŁańcuch znakówIdentyfikator wiadomości zwrócony po przyjęciu do wysyłki
statusŁańcuch znakówDELIVERED dla powiadomienia o dostarczeniu. ERROR dla powiadomienia o błędzie.

Przykładowe ciało żądania:

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

2. 3CX SMS API

Ta wersja API obsługuje wysyłkę oraz odbiór wiadomości na podstawie aktualnej specyfikacji centrali 3CX Phone System. Aby aktywować to api, należy w panelu klienta wybrać obie opcje SMS API oraz 3CX SMS API.

Do obsługi połączeń wychodzących konieczne jest podanie w sekcji SMS w 3CX tokenu który można wygenerować w panelu klienta, oraz adresu url:

https://api.sendly.link/api/tcx

Aby obsługiwać wiadomości przychodzące, należy w panelu klienta podać webhook dostępny w centrali 3CX.

Aktywacji może dokonać także biuro obsługi klienta, należy wtedy podać webhook, w odpowiedzi przesłany zostanie token.