Öffnet in einem neuen Tab
Neu
SMS MCP-Server: Lassen Sie Ihren AI Agenten SMS und Sprachnachrichten versenden
Mehr dazu
SMS REST-API · Version 2

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
Die wichtigsten Daten
REST · HTTP · MAIL · SOAP · KANNEL
Was ist eine SMS API?

Was ist eine SMS API?

Eine SMS-API ist eine Programmierschnittstelle, über die Software automatisch SMS versendet und empfängt. Ihre Anwendung schickt eine HTTP-Anfrage mit Empfänger und Text, und der Anbieter stellt die Nachricht über sein SMS-Gateway ins Mobilfunknetz zu. Zurück kommen eine Bestätigung und später ein Zustellbericht. Mit der LOX24 SMS-API steuern Sie zusätzlich Absender, Versandzeit, Zeichensatz und Sprachausgabe pro Nachricht.
02 · FUNKTIONEN

Welche Funktionen bietet die SMS-API?

Unsere SMS API ermöglicht den Massenversand von Textnachrichten, die Erstellung personalisierter Nachrichten, den automatischen Empfang von Antworten und die Verfolgung von Zustellberichten. Sicherheit und Datenschutz haben höchste Priorität.
03 · INTEGRATION

Wie einfach ist die Integration der SMS-API?

Unsere SMS API ermöglicht eine einfache und schnelle Integration in Ihre bestehenden Systeme und Anwendungen. Wir bieten Ihnen eine klare mehrsprachige Dokumentation mit Codebeispielen und technischen Support.
NETZE
880 Netze weltweit
DURCHSATZ
10SMS / Sekunde
Kompatibel mit allen modernen Programmiersprachen
curl
php
go
c#
python
java
javascript
ruby
curl
php
go
c#
python
java
javascript
ruby
Grundlagen

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

Bereich
Endpunkt
Zweck
SMS

POST/sms

SMS oder Sprachnachricht senden

POST/sms/dryrun

Versand testen, ohne zu senden

GET/sms

Gesendete SMS und Status abrufen
Massenversand

POST/bulks

Tausende Empfänger in einer Anfrage
Eingang

GET/incomings

Empfangene SMS abrufen
Verifizierung

POST/verify_codes

Code per Telegram, Sprachanruf oder SMS
Kontakte

/groups/phones/blocked_numbers

Verteiler und Sperrlisten verwalten
Kampagnen

/campaigns/links

Kurzlinks mit Klick-Tracking
Konto

GET/me

Kontoinformationen und Guthaben

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.

Senden und empfangen Sie SMS mit nur wenigen Zeilen Code

Codebeispiele für curl, PHP, Python, Java, Go, C# und JavaScript

Die LOX24 SMS-API funktioniert mit jeder Sprache, die HTTP-Anfragen senden kann. Hier sehen Sie den Versand einer SMS in sieben Sprachen, jeweils mit Fehlerbehandlung über die HTTP-Statuscodes.
#!/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

Parameter
Typ
Beschreibung
phone
string

Empfängernummer im internationalen Format, z. B. +49151…

text
string

Nachrichtentext. Längere Texte werden auf mehrere SMS verteilt.

sender_id
string

Absender: Text mit bis zu 11 Zeichen oder Rufnummer mit bis zu 15 Ziffern.

service_code
string

Versandart, z. B. direct (Standard) oder text2speech für Sprachnachrichten.

delivery_at
integer

Versandzeitpunkt als Unix-Zeitstempel, für geplante SMS.

is_unicode
boolean

true für Emojis und Sonderzeichen (UCS-2), sonst GSM-Zeichensatz.

callback_data
string

Eigene Kennung, z. B. eine Bestellnummer. Kommt im Zustellbericht zurück.

voice_lang
string

Sprache 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.

API Dokumentation
SMS API für Ihre App

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.
Anwendungen

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.

Zwei-Faktor-Authentifizierung

Versenden Sie Bestätigungscodes für Login, Registrierung und Zahlungen. Sie legen eine Kanal-Reihenfolge fest, zum Beispiel Telegram, dann Sprachanruf, dann SMS. Kommt der Code nicht an, versucht LOX24 automatisch den nächsten Kanal.

POST /verify_codes

Automatische Benachrichtigungen

Ihre Software informiert Kunden und Mitarbeiter in dem Moment, in dem etwas passiert: Bestellung versendet, Termin morgen, Server ausgefallen. Mit delivery_at planen Sie Nachrichten im Voraus, mit callback_data ordnen Sie jeden Zustellbericht Ihrem Vorgang zu.

POST /sms

Massen-SMS und Kampagnen

Senden Sie Tausende personalisierte SMS mit einer einzigen Anfrage, an Nummernlisten oder gespeicherte Gruppen. Kurzlinks mit Klick-Tracking zeigen Ihnen, wer auf Ihr Angebot reagiert hat.

POST /bulks · /campaigns

Dialoge in beide Richtungen

Mit einer virtuellen Rufnummer können Empfänger antworten. Jede eingehende SMS landet per Webhook in Ihrer Anwendung, etwa als Terminbestätigung, Rückrufwunsch oder Ticket-Antwort. Abmeldungen per „STOP“ werden automatisch verarbeitet.

GET /incomings · Webhook

Betrugsprüfung vor dem Versand

Prüfen Sie Bestellungen und Registrierungen, bevor Sie eine SMS auslösen. Die Anti-Fraud-API erkennt anonyme VPNs und verdächtige Angaben und liefert einen Risiko-Score. Das schützt Sie vor Betrug und vor teurem SMS-Pumping.

Fraud-Check-API

SMS aus KI-Agenten

Über den LOX24 MCP-Server nutzen KI-Assistenten wie Claude oder Cursor die API direkt: SMS und Sprachnachrichten senden, eingehende SMS lesen, Guthaben prüfen. Sie brauchen dafür nur Ihren API-Key.

MCP-Server
Für Entwickler

Was 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.

Zustellberichte per Webhook
Für jede SMS meldet LOX24 den Status per Webhook (sms.delivery) an Ihre Anwendung, inklusive Ihrer callback_data. Ist Ihr Server kurz nicht erreichbar, wiederholt LOX24 die Zustellung automatisch.
Eingehende SMS per Webhook
Antworten auf Ihre virtuelle Rufnummer landen sofort in Ihrer Anwendung, mit Absender, Text und Zeitpunkt. Alternativ fragen Sie sie über GET /incomings ab.
Testversand per Dryrun
Mit POST /sms/dryrun prüfen Sie Ihre Integration, ohne eine echte SMS zu versenden. Die API antwortet wie im Echtbetrieb und schickt einen simulierten Zustellbericht.
Geplante SMS stornieren
SMS mit delivery_at planen Sie im Voraus, etwa Terminerinnerungen. Fällt der Termin aus, stornieren Sie die noch nicht gesendete SMS einfach per API.
Sperrlisten
Über /blocked_numbers legen Sie Nummern fest, die nie wieder eine SMS erhalten sollen, zum Beispiel nach einer Abmeldung oder einer Beschwerde. Das Gateway blockiert sie bei jedem Versand automatisch.
An- und Abmeldungen automatisch
Meldet sich ein Kontakt per SMS-Keyword oder Formular an oder ab, informiert LOX24 Ihre Anwendung per Webhook. So bleiben CRM und Verteiler ohne Handarbeit aktuell.
Kurzlinks mit Klickauswertung
Links in Ihren SMS werden als Kurzlinks versendet und getrackt. Per API rufen Sie ab, welche SMS geklickt wurden und wie oft.

Preise und Konto per API
Über /me/pricelist/{country} fragen Sie Ihre aktuellen Preise je Land ab, etwa um Kosten vor einem Versand zu berechnen. Rechnungen und Zahlungen lassen sich ebenfalls per API abrufen.

Schutz vor Angriffen
Nach drei fehlgeschlagenen Anmeldeversuchen innerhalb einer Minute sperrt die API die anfragende IP für zehn Minuten (HTTP 429). Zusätzlich beschränken Sie den Zugriff per IP-Freigabe auf Ihre eigenen Server.

FAQ

Häufige Fragen zur 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.

 

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.

 

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.

 

Im internationalen Format mit Ländervorwahl, zum Beispiel +49151… für eine deutsche Mobilnummer.

 

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

 

Ü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.

Die API ist eine schlanke REST-Schnittstelle; Codebeispiele für sieben Sprachen und die OpenAPI-Spezifikation genügen für die Integration. Für Symfony gibt es einen fertigen Notifier-Transport.

Vollständige API-Dokumentation

In der LOX24 API-Dokumentation finden Sie alle Endpunkte, Parameter und Statuscodes mit Beispielen, dazu die Webhook-Formate für Zustellberichte und eingehende SMS. Die OpenAPI-Spezifikation können Sie direkt in Postman oder Insomnia importieren.
API-DokumentationOpenAPI-Spezifikation

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.

KEINE GRUNDGEBÜHR
99,9% VERFÜGBARKEIT
DEUTSCHER DATENSCHUTZ
KOMPROMISSLOSE SICHERHEIT