SMS-API für
Entwickler.
SMS, Sprachnachrichten und Verifizierungscodes per REST
Die LOX24 SMS-API verbindet Ihre Anwendung mit 880 Mobilfunknetzen weltweit. Über eine REST-Schnittstelle mit JSON senden Sie SMS und Sprachnachrichten, empfangen Antworten per Webhook und verschicken Verifizierungscodes, betrieben auf Servern ausschließlich in Deutschland.
- REST + JSON
- 99,9 % Verfügbarkeit
- Webhooks
- Server in Deutschland
Was ist eine SMS API?
Welche Funktionen bietet die SMS-API?
Wie einfach ist die Integration der SMS-API?
Authentifizierung und Endpunkte der LOX24 SMS-API
Alle Anfragen gehen an https://api.lox24.eu und werden über den Header X-LOX24-AUTH-TOKEN authentifiziert. Der Token setzt sich aus Ihrer Benutzer-ID und einem API-Key zusammen (<Benutzer-ID>:<API-Key>), den Sie im Kundenkonto erstellen. Anfragen und Antworten sind JSON. Nach drei fehlgeschlagenen Anmeldeversuchen innerhalb einer Minute sperrt die API die anfragende IP für zehn Minuten.
BASIS-URLhttps://api.lox24.euHeader: X-LOX24-AUTH-TOKEN
POST/sms
POST/sms/dryrun
GET/sms
POST/bulks
GET/incomings
POST/verify_codes
/groups/phones/blocked_numbers
/campaigns/links
GET/me
Alle Endpunkte mit Beispielen finden Sie in der API-Dokumentation. Die OpenAPI-Spezifikation können Sie direkt in Postman, Insomnia oder einen Code-Generator laden.
Codebeispiele für curl, PHP, Python, Java, Go, C# und JavaScript
#!/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"
}'<?php
$uri = 'https://api.lox24.eu/sms';
$token = '1234567:e3f3a759b6677959b6ebfcxxxxxxxxxx';
$body = [
'sender_id' => '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:
# timeout is 100 seconds, the payload is automatically converted to json
res = requests.post(url, headers=headers, json=data, timeout=100)
if res.status_code != 201: # Created
print("Error: Wrong response code on create sms")
res.raise_for_status()
else:
print(f'Success: code = {res.status_code} - sms resource created')
print("Response: ", json.dumps(res.json(), indent=4))
except requests.HTTPError:
if res.status_code == 400:
print("Error:400 Invalid input")
elif res.status_code == 401:
print("Error: code = 401 - Client ID or API key isn't active or invalid!")
elif res.status_code == 402:
print("Error:402 There are not enough funds on your account!")
elif res.status_code == 403:
print("Error: code = 403 - Account isn't activated!")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();
}
}
}/*
* Post sms
*/
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();PARAMETER FÜR POST /sms · JSON
phoneEmpfängernummer im internationalen Format, z. B. +49151…
textNachrichtentext. Längere Texte werden auf mehrere SMS verteilt.
sender_idAbsender: Text mit bis zu 11 Zeichen oder Rufnummer mit bis zu 15 Ziffern.
service_codeVersandart, z. B. direct (Standard) oder text2speech für Sprachnachrichten.
delivery_atVersandzeitpunkt als Unix-Zeitstempel, für geplante SMS.
is_unicodetrue für Emojis und Sonderzeichen (UCS-2), sonst GSM-Zeichensatz.
callback_dataEigene Kennung, z. B. eine Bestellnummer. Kommt im Zustellbericht zurück.
voice_langSprache der Sprachnachricht, z. B. DE. Ohne Angabe erkennt die API die Sprache automatisch (20 Sprachen).
Alle Parameter, Pflichtfelder und Antwortformate finden Sie in der API-Dokumentation.
SMS API auch ohne Programmierer
Sie möchten die Vorteile der LOX24 SMS-API für Ihr Unternehmen nutzen, haben aber keinen Programmierer, der Ihnen dabei helfen kann? Kein Problem. Wir haben die Lösung für Sie. Mit unserer Zapier-Integration können Sie Ihre Software ganz einfach und ohne Programmierkenntnisse an unsere API anbinden. Sie benötigen keine Unterstützung durch Ihre IT-Abteilung.
- Mehr als 6.745 AnwendungenMit unserer SMS-API-Lösung können Sie über Zapier mit mehr als 6.745 Anwendungen kommunizieren, die Sie für Ihr Geschäft nutzen.
- SMS Gateway für Ihre AppEine Vielzahl von Anwendungen unterstützt den SMS Versand mit LOX24 bereits von Haus aus, so z.B. Bitrix24, Theorg und Synology.
- Ohne ProgrammierkenntnisseSie benötigen keine Unterstützung durch Ihre IT-Abteilung.
Was Sie mit der LOX24 SMS-API bauen können
Eine API, viele Einsatzzwecke: Von Login-Codes über Versandinfos bis zu Kampagnen mit Klick-Tracking laufen alle Funktionen über dieselbe Schnittstelle, denselben API-Key und dieselbe Abrechnung.
POST /verify_codesPOST /smsPOST /bulks · /campaignsGET /incomings · WebhookFraud-Check-APIMCP-ServerWas die LOX24 SMS-API außerdem kann
Neben dem Versand bietet die LOX24 SMS-API alles, was eine Integration im Alltag braucht: Webhooks, Testmodus, Sperrlisten und Abfragen zu Preisen und Konto.
Häufige Fragen zur LOX24 SMS-API
Wie authentifiziere ich mich an der LOX24 SMS-API?
Sie senden bei jeder Anfrage den Header X-LOX24-AUTH-TOKEN mit dem Wert <Benutzer-ID>:<API-Key>. Den API-Key erstellen Sie im LOX24-Kundenkonto. Zusätzlich können Sie den Zugriff per IP-Sperre auf Ihre Server beschränken.
Gibt es eine OpenAPI-Spezifikation?
Ja. Die vollständige Spezifikation der LOX24 API v2 steht unter doc.lox24.eu/openapi-en.json bereit. Sie können sie in Postman oder Insomnia importieren oder damit einen Client in Ihrer Sprache generieren.
Kann ich die API testen, ohne SMS zu versenden?
Ja, über den Endpunkt POST /sms/dryrun. Er prüft Ihre Anfrage wie im Echtbetrieb und löst einen simulierten Zustellbericht aus, ohne dass eine SMS versendet wird.
In welchem Format gebe ich Telefonnummern an?
Im internationalen Format mit Ländervorwahl, zum Beispiel +49151… für eine deutsche Mobilnummer.
Wie versende ich Sprachnachrichten statt SMS?
Sie setzen service_code auf text2speech. LOX24 ruft den Empfänger an und liest den Text vor. Die Sprache legen Sie mit voice_lang fest, oder die API erkennt sie automatisch aus dem Text (20 Sprachen).
Wie verschicke ich Verifizierungscodes am zuverlässigsten?
Über den Endpunkt /verify_codes. Dort legen Sie eine Reihenfolge von Kanälen fest, zum Beispiel erst Telegram, dann Sprachanruf, zuletzt SMS. Kommt der Code auf einem Kanal nicht an, versucht LOX24 automatisch den nächsten.
Gibt es SDKs oder Bibliotheken?
Vollständige API-Dokumentation
Jetzt API-Key erstellen und erste SMS senden
Registrieren Sie sich kostenlos, erstellen Sie im Kundenkonto Ihren API-Key und testen Sie die Integration per Dryrun, mit 50 Cent Startguthaben für die ersten echten SMS.
