Otwiera się w nowej karcie
Nowość
Serwer SMS MCP: pozwól swojemu agentowi AI wysyłać SMS-y i wiadomości głosowe
Dowiedz się więcej
SMS REST API · Wersja 2

SMS API dla
programistów.

SMS-y, wiadomości głosowe i kody weryfikacyjne przez REST

LOX24 SMS API łączy Twoją aplikację z 880 sieciami komórkowymi na całym świecie. Przez interfejs REST z JSON wysyłasz SMS-y i wiadomości głosowe, odbierasz odpowiedzi przez webhook oraz wysyłasz kody weryfikacyjne – wszystko na serwerach działających wyłącznie w Europie.

  • REST + JSON
  • 99,9 % dostępności
  • Webhooki
  • Serwery w Europie
Najważniejsze dane
REST · HTTP · MAIL · SOAP · KANNEL
Czym jest SMS API?

Czym jest SMS API?

SMS API to interfejs programistyczny, za pomocą którego oprogramowanie automatycznie wysyła i odbiera SMS-y. Twoja aplikacja wysyła żądanie HTTP z numerem odbiorcy i treścią, a dostawca doręcza wiadomość do sieci komórkowej przez swoją bramkę SMS. W odpowiedzi otrzymujesz potwierdzenie, a później delivery report. Dzięki LOX24 SMS API dodatkowo kontrolujesz dla każdej wiadomości nadawcę, czas wysyłki, zestaw znaków i odczyt głosowy.
02 · FUNKCJE

Jakie funkcje oferuje SMS API?

Nasze SMS API umożliwia masową wysyłkę wiadomości tekstowych, tworzenie spersonalizowanych wiadomości, automatyczny odbiór odpowiedzi oraz śledzenie delivery reports. Bezpieczeństwo i ochrona danych mają dla nas najwyższy priorytet.
03 · INTEGRACJA

Jak łatwa jest integracja SMS API?

Nasz SMS API umożliwia prostą i szybką integrację z Państwa istniejącymi systemami i aplikacjami. Oferujemy przejrzystą, wielojęzyczną dokumentację z przykładami kodu oraz wsparcie techniczne.
SIECI
880 sieci na świecie
PRZEPUSTOWOŚĆ
10SMS / sekundę
Zgodny ze wszystkimi nowoczesnymi językami programowania
curl
php
go
c#
python
java
javascript
ruby
curl
php
go
c#
python
java
javascript
ruby
Podstawy

Uwierzytelnianie i punkty końcowe LOX24 SMS API

 

Wszystkie żądania trafiają na https://api.lox24.eu i są uwierzytelniane za pomocą nagłówka X-LOX24-AUTH-TOKEN . Token składa się z Państwa identyfikatora użytkownika i klucza API (:), który tworzą Państwo w koncie klienta. Żądania i odpowiedzi mają format JSON. Po trzech nieudanych próbach logowania w ciągu minuty API blokuje adres IP wysyłający żądanie na dziesięć minut.

BAZOWY ADRES URLhttps://api.lox24.euNagłówek: X-LOX24-AUTH-TOKEN

Obszar
Punkt końcowy
Zastosowanie
SMS

POST/sms

Wysyłanie SMS-a lub wiadomości głosowej

POST/sms/dryrun

Test wysyłki bez faktycznego wysyłania

GET/sms

Pobieranie wysłanych SMS-ów i statusu
Wysyłka masowa

POST/bulks

Tysiące odbiorców w jednym żądaniu
Wiadomości przychodzące

GET/incomings

Pobieranie odebranych SMS-ów
Weryfikacja

POST/verify_codes

Kod przez Telegram, połączenie głosowe lub SMS
Kontakty

/groups/phones/blocked_numbers

Zarządzanie listami odbiorców i listami blokad
Kampanie

/campaigns/links

Krótkie linki ze śledzeniem kliknięć
Konto

GET/me

Informacje o koncie i saldo

Wszystkie punkty końcowe z przykładami znajdą Państwo w Dokumentacja API. Plik specyfikacji OpenAPI można wczytać bezpośrednio do Postmana, Insomnii lub generatora kodu.

Wysyłanie i odbieranie SMS-ów za pomocą zaledwie kilku linijek kodu

Przykłady kodu dla curl, PHP, Python, Java, Go, C# i JavaScript

LOX24 SMS API działa z każdym językiem, który potrafi wysyłać żądania HTTP. Poniżej widać wysyłkę SMS-a w siedmiu językach, każdorazowo z obsługą błędów za pomocą kodów statusu HTTP.
#!/usr/bin/env bash
curl -X POST https://api.lox24.eu/sms \
  -H 'Content-Type: application/json' \
  -H 'X-LOX24-AUTH-TOKEN: 1234567:e3f3a759b6677959b6ebfcxxxxxxxxxx' \
  -d '{
    "sender_id": "My Sender",
    "phone": "+49751234567",
    "source": 111,
    "service_code": "direct",
    "text": "Test message",
    "delivery_at": 1573724611,
    "is_unicode": true,
    "callback_data": "123456",
    "voice_lang": "DE"
}'
'My Sender',
    'text' => "First line\nSecond line",
    'service_code' => 'direct',
    'phone' => '+49751234567',
    'delivery_at' => 1573724611,
    'is_unicode' => true,
    'callback_data' => '123456',
    'voice_lang' => 'DE',
];

if(!$body = json_encode($body)) {
    die('JSON encoding error!');
}

$curl = curl_init();
curl_setopt_array($curl, [
    CURLOPT_POST => true,
    CURLOPT_URL => $uri,
    CURLOPT_POSTFIELDS => $body,
    CURLOPT_HTTPHEADER => [
        "X-LOX24-AUTH-TOKEN: {$token}",
        'Accept: application/json',
        'Content-Type: application/json',
    ],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 20,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
]);

$response = curl_exec($curl);
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);

$data = json_decode($response, JSON_OBJECT_AS_ARRAY);

if(201 === $code) {
    echo 'Success: response data = ' . var_export($data, true);
} else {
    echo "Error: code = {$code}, data = " . var_export($data, true);
}
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	const Method = "POST"
	const URL = "https://api.lox24.eu/sms"
	const Token = "1234567:e3f3a759b6677959b6ebfcxxxxxxxxxx"

	payload := map[string]interface{}{
		"sender_id":     "My Sender",
		"phone":         "+49751234567",
		"source":        111,
		"service_code":  "direct",
		"text":          "Test message",
		"delivery_at":   1593724611,
		"is_unicode":    true,
		"callback_data": "123456",
		"voice_lang":    "DE",
	}

	jsonPayload, _ := json.Marshal(payload)
	client := &http.Client{}

	req, err := http.NewRequest(Method, URL, bytes.NewBuffer(jsonPayload))
	if err != nil {
		log.Fatal(err)
	}

	req.Header.Add("X-LOX24-AUTH-TOKEN", Token)
	req.Header.Add("Content-Type", "application/json")

	res, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	defer res.Body.Close()

	body, err := ioutil.ReadAll(res.Body)
	if err != nil {
		log.Fatal(err)
	}

	switch res.StatusCode {
	case 201:
		fmt.Println((string(body)))
	case 400:
		fmt.Println("Error: code = 400 - Invalid input")
	case 401:
		fmt.Println("Error: code = 401 - Client ID or API key isn't active or invalid!")
	case 403:
		fmt.Println("Error: code = 403 - Account isn't activated. Please wait or contact to support!")
	default:
		fmt.Printf("Error: code = %d\n", res.StatusCode)
	}
}
using Newtonsoft.Json;
using System;
using System.IO;
using System.Net;
using System.Text;

namespace Lox24.Api
{
    class client
    {
        static void Main()
        {
            string key = "1234567:e3f3a759b6677959b6ebfcxxxxxxxxxx";
            string url = "https://api.lox24.eu/sms";

            var data = new {
                sender_id = "My Sender",
                text = "Test message",
                service_code = "direct",
                phone = "+49751234567",
                delivery_at = 1573724611,
                is_unicode = true,
                callback_data = "123456",
                voice_lang = "DE"
            };

            string postdata = JsonConvert.SerializeObject(data);

            var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
            httpWebRequest.ContentType = "application/json; charset=utf-8";
            httpWebRequest.Accept = "application/json";
            httpWebRequest.Method = "POST";
            httpWebRequest.Headers.Add("X-LOX24-AUTH-TOKEN", key);

            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
            {
                streamWriter.Write(postdata);
            }

            using (HttpWebResponse resp = (HttpWebResponse)httpWebRequest.GetResponse())
            {
                if (resp.StatusCode == HttpStatusCode.Created)
                    Console.WriteLine("Success: sms resource created");
            }
        }
    }
}
import json
import requests

token = "1234567:e3f3a759b6677959b6ebfcxxxxxxxxxx"
url = 'https://api.lox24.eu/sms'

data = {
    'sender_id': "My Sender",
    'text': "Test message",
    'service_code': "direct",
    'phone': "+49751234567",
    'delivery_at': 1573724611,
    'is_unicode': True,
    'callback_data': '123456',
    'voice_lang': 'DE'
}

headers = {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'X-LOX24-AUTH-TOKEN': token,
}

try:
    # limit czasu wynosi 100 sekund, payload jest automatycznie konwertowany na JSON
    res = requests.post(url, headers=headers, json=data, timeout=100)
    if res.status_code != 201:  # Created
        print("Błąd: Nieprawidłowy kod odpowiedzi podczas tworzenia SMS-a")
        res.raise_for_status()
    else:
        print(f'Sukces: code = {res.status_code} - zasób SMS został utworzony')
        print("Odpowiedź: ", json.dumps(res.json(), indent=4))
except requests.HTTPError:
    if res.status_code == 400:
        print("Błąd:400 Nieprawidłowe dane wejściowe")
    elif res.status_code == 401:
        print("Błąd: code = 401 - Client ID lub klucz API jest nieaktywny albo nieprawidłowy!")
    elif res.status_code == 402:
        print("Błąd:402 Na Twoim koncie brakuje wystarczających środków!")
    elif res.status_code == 403:
        print("Błąd: code = 403 - Konto nie zostało aktywowane!")
package eu.lox24.doc.sms;

import org.json.JSONObject;

import java.net.HttpURLConnection;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

public class PostSmsCollection {

    public static void main(String[] args) {

        var key = "1234567:e3f3a759b6677959b6ebfcxxxxxxxxxx";
        var url = "https://api.lox24.eu/sms";

        var json = new JSONObject();
        json.put("sender_id", "My Sender");
        json.put("text", "Test message");
        json.put("service_code", "direct");
        json.put("phone", "+49751234567");
        json.put("delivery_at", 1573724611);
        json.put("is_unicode", true);

        var httpRequest = HttpRequest.newBuilder(URI.create(url))
                .timeout(Duration.ofMillis(100000))
                .setHeader("Content-Type", "application/json; charset=utf-8")
                .setHeader("Accept", "application/json")
                .setHeader("X-LOX24-AUTH-TOKEN", key)
                .POST(HttpRequest.BodyPublishers.ofString(json.toString()))
                .build();

        var client = HttpClient.newBuilder()
                .version(HttpClient.Version.HTTP_1_1)
                .build();

        try {
            var httpResponse = client.send(httpRequest, HttpResponse.BodyHandlers.ofString());
            if (httpResponse.statusCode() == HttpURLConnection.HTTP_CREATED) {
                System.out.println("Success: sms resource created");
                System.out.println(httpResponse.body());
            } else {
                System.out.println("Error: wrong response code " + httpResponse.statusCode());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
/*
 * Wysyłanie SMS-a (POST)
 */
const token = "1234567:e3f3a759b6677959b6ebfcxxxxxxxxxx";

var postObj = {
    sender_id: 'My Sender',
    text: 'Test message',
    service_code: 'direct',
    phone: '+49751234567',
    delivery_at: 1573724611,
    is_unicode: true,
    callback_data: "123456",
    voice_lang: "DE"
};

var postdata = JSON.stringify(postObj);

const https = require('https');
const options = {
    hostname: 'api.lox24.eu',
    path: '/sms',
    method: 'POST',
    headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
        'Content-Length': postdata.length,
        'X-LOX24-AUTH-TOKEN': token
    }
}

const req = https.request(options, res => {
    if (res.statusCode == 201) {
        console.log("Success: code = 201 - sms resource created");
        res.on('data', d => { process.stdout.write(d) })
    }
    else if (res.statusCode == 400) console.log("Error: code = 400 - Invalid input");
    else if (res.statusCode == 401) console.log("Error: code = 401 - API key isn't active or invalid!");
    else if (res.statusCode == 402) console.log("Error: code = 402 - Not enough funds on your account!");
})

req.on('error', error => { console.error(error) })
req.write(postdata);
req.end();

PARAMETRY DLA POST /sms · JSON

Parametr
Typ
Opis
phone
string

Numer odbiorcy w formacie międzynarodowym, np. +49151…

text
string

Treść wiadomości. Dłuższe teksty są dzielone na kilka SMS-ów.

sender_id
string

Nadawca: tekst do 11 znaków lub numer telefonu do 15 cyfr.

service_code
string

Rodzaj wysyłki, np. direct (domyślnie) lub text2speech dla wiadomości głosowych.

delivery_at
integer

Czas wysyłki jako uniksowy znacznik czasu, dla zaplanowanych SMS-ów.

is_unicode
boolean

true dla emoji i znaków specjalnych (UCS-2), w przeciwnym razie zestaw znaków GSM.

callback_data
string

Własny identyfikator, np. numer zamówienia. Wraca w raporcie doręczenia.

voice_lang
string

Język wiadomości głosowej, np. DE. Jeśli go nie podasz, API rozpozna język automatycznie (20 języków).

Wszystkie parametry, pola wymagane i formaty odpowiedzi znajdziesz w Dokumentacja API.

Dokumentacja API
SMS API dla Twojej aplikacji

SMS API także bez programisty

Chcesz skorzystać z zalet LOX24 SMS API w swojej firmie, ale nie masz programisty, który mógłby Ci pomóc? Nie ma problemu. Mamy dla Ciebie rozwiązanie. Dzięki naszej integracji z Zapier łatwo podłączysz swoje oprogramowanie do naszego API bez znajomości programowania. Nie potrzebujesz wsparcia swojego działu IT.

  • Ponad 6745 aplikacjiDzięki naszemu rozwiązaniu SMS API możesz za pośrednictwem Zapier komunikować się z ponad 6745 aplikacjami, z których korzystasz w swojej firmie.
  • Bramka SMS dla Twojej aplikacjiWiele aplikacji już domyślnie obsługuje wysyłkę SMS-ów z LOX24, na przykład Bitrix24, Theorg i Synology.
  • Bez znajomości programowaniaNie potrzebujesz wsparcia swojego działu IT.
Zastosowania

Co możesz zbudować z LOX24 SMS API

 

Jedno API, wiele zastosowań: od kodów logowania i informacji o wysyłce po kampanie ze śledzeniem kliknięć – wszystkie funkcje działają przez ten sam interfejs, ten sam klucz API i te same rozliczenia.

Uwierzytelnianie dwuskładnikowe

Wysyłaj kody weryfikacyjne do logowania, rejestracji i płatności. Ustalasz kolejność kanałów, na przykład Telegram, potem połączenie głosowe, a na końcu SMS. Jeśli kod nie dotrze, LOX24 automatycznie spróbuje użyć następnego kanału.

POST /verify_codes

Automatyczne powiadomienia

Twoje oprogramowanie informuje klientów i pracowników w chwili, gdy coś się dzieje: zamówienie wysłane, termin jutro, awaria serwera. Za pomocą delivery_at planujesz wiadomości z wyprzedzeniem, za pomocą callback_data przypisujesz każdy raport doręczenia do swojego procesu.

POST /sms

Masowe SMS-y i kampanie

Wysyłaj tysiące spersonalizowanych SMS-ów jednym żądaniem – na listy numerów lub zapisane grupy. Krótkie linki ze śledzeniem kliknięć pokażą Ci, kto zareagował na Twoją ofertę.

POST /bulks · /campaigns

Dialog w obu kierunkach

Dzięki wirtualnemu numerowi odbiorcy mogą odpowiadać. Każdy przychodzący SMS trafia przez webhook do Twojej aplikacji, na przykład jako potwierdzenie terminu, prośba o oddzwonienie lub odpowiedź na zgłoszenie. Wypisania przez „STOP” są obsługiwane automatycznie.

GET /incomings · Webhook

Weryfikacja pod kątem nadużyć przed wysyłką

Sprawdzaj zamówienia i rejestracje, zanim wyślesz SMS. Anti-Fraud API wykrywa anonimowe VPN-y i podejrzane dane oraz zwraca wskaźnik ryzyka (risk score). Chroni to Cię przed oszustwami i kosztownym SMS pumpingiem.

Fraud-Check API

SMS z agentów AI

Za pośrednictwem serwera MCP LOX24 asystenci AI, tacy jak Claude czy Cursor, korzystają bezpośrednio z API: wysyłają SMS-y i wiadomości głosowe, odczytują przychodzące SMS-y i sprawdzają saldo. Potrzebujesz do tego tylko swojego klucza API.

Serwer MCP
Dla programistów

Co jeszcze oferuje LOX24 SMS API

 

Poza wysyłką LOX24 SMS API oferuje wszystko, czego potrzebuje integracja na co dzień: webhooki, tryb testowy, listy blokad oraz zapytania o ceny i konto.

Raporty doręczeń przez webhook
Dla każdego SMS-a LOX24 przekazuje status przez webhook (sms.delivery) do Twojej aplikacji, wraz z Twoim callback_data. Jeśli Twój serwer jest chwilowo niedostępny, LOX24 automatycznie ponawia próbę doręczenia.
Przychodzące SMS-y przez webhook
Odpowiedzi na Twój wirtualny numer trafiają natychmiast do Twojej aplikacji, razem z nadawcą, treścią i czasem. Możesz je też pobrać przez GET /incomings .
Wysyłka testowa w trybie dryrun
Za pomocą POST /sms/dryrun sprawdzisz swoją integrację bez wysyłania prawdziwego SMS-a. API odpowiada jak w trybie produkcyjnym i wysyła symulowany delivery report.
Anulowanie zaplanowanych SMS-ów
SMS-y z parametrem delivery_at planujesz z wyprzedzeniem, na przykład przypomnienia o terminach. Jeśli termin się odwoła, po prostu anuluj niewysłany jeszcze SMS przez API.
Listy blokad
Przez /blocked_numbers określasz numery, które nigdy więcej nie mają otrzymać SMS-a, na przykład po wypisaniu się lub skardze. Gateway automatycznie blokuje je przy każdej wysyłce.
Automatyczne zapisy i wypisy
Gdy kontakt zapisze się lub wypisze przez słowo kluczowe SMS albo formularz, LOX24 informuje Twoją aplikację przez webhook. Dzięki temu CRM i listy odbiorców pozostają aktualne bez ręcznej pracy.
Krótkie linki ze statystykami kliknięć
Linki w Twoich SMS-ach są wysyłane jako krótkie linki i śledzone. Przez API sprawdzisz, które SMS-y zostały kliknięte i ile razy.

Ceny i konto przez API
Przez /me/pricelist/{country} pobierasz aktualne ceny dla poszczególnych krajów, na przykład by obliczyć koszty przed wysyłką. Faktury i płatności również można pobierać przez API.

Ochrona przed atakami
Po trzech nieudanych próbach logowania w ciągu minuty API blokuje adres IP wysyłający żądania na dziesięć minut (HTTP 429). Dodatkowo możesz ograniczyć dostęp do własnych serwerów za pomocą białej listy IP.

FAQ

Często zadawane pytania o LOX24 SMS API

W każdym żądaniu wysyłasz nagłówek X-LOX24-AUTH-TOKEN o wartości :. Klucz API można utworzyć w koncie klienta LOX24. Dodatkowo można ograniczyć dostęp do własnych serwerów za pomocą blokady IP.

 

Tak. Pełna specyfikacja LOX24 API v2 jest dostępna pod adresem doc.lox24.eu/openapi-en.json. Można ją zaimportować do Postman lub Insomnia albo wygenerować na jej podstawie klienta w wybranym języku.

 

Tak, przez endpoint POST /sms/dryrun. Sprawdza on Twoje żądanie jak w trybie produkcyjnym i wywołuje symulowany delivery report, bez wysyłania SMS-a.

 

W formacie międzynarodowym z numerem kierunkowym kraju, na przykład +49151… dla niemieckiego numeru komórkowego.

 

Ustawiasz service_code na text2speech. LOX24 dzwoni do odbiorcy i odczytuje tekst. Język określasz za pomocą voice_lang , albo API rozpoznaje go automatycznie na podstawie tekstu (20 języków).

 

Przez endpoint /verify_codes. Tam ustalasz kolejność kanałów, na przykład najpierw Telegram, potem połączenie głosowe, na końcu SMS. Jeśli kod nie dotrze jednym kanałem, LOX24 automatycznie spróbuje kolejnego.

API to lekki interfejs REST; do integracji wystarczą przykłady kodu w siedmiu językach i specyfikacja OpenAPI. Dla Symfony dostępny jest gotowy transport Notifier.

Pełna dokumentacja API

W dokumentacji LOX24 API znajdziesz wszystkie endpointy, parametry i kody statusu wraz z przykładami, a także formaty webhooków dla raportów doręczenia i przychodzących SMS-ów. Specyfikację OpenAPI możesz zaimportować bezpośrednio do Postmana lub Insomnii.
Dokumentacja APIspecyfikacji OpenAPI

Utwórz klucz API i wyślij pierwszy SMS

Zarejestruj się za darmo, utwórz klucz API w panelu klienta i przetestuj integrację w trybie dryrun. Na pierwsze prawdziwe SMS-y otrzymasz 50 centów na start.

BEZ OPŁATY PODSTAWOWEJ
DOSTĘPNOŚĆ 99,9%
NIEMIECKA OCHRONA DANYCH
BEZKOMPROMISOWE BEZPIECZEŃSTWO