SMS Gateway mit REST API
Integrieren Sie den SMS Versand in Ihre eigene Anwendung über unseren SMS-Gateway. Wir bieten Ihnen eine zuverlässige und schnelle Rest API für den weltweiten SMS Versand. Unkomplizierter geht es nicht.
SMS Gateway mit DSGVO
Zuverlässige SMS Schnittstelle
Ihre SMS soll ankommen und nicht im Nirvana verschwinden. Wir haben es uns zur Aufgabe gemacht, dafür zu sorgen, dass Ihre SMS den Empfänger innerhalb von Sekunden erreichen. Als Marktführer bieten wir die zuverlässigste SMS Gateway API und äußerst attraktive Preise.
Unsere Philosophie
Ein SMS-Gateway ohne Kompromisse
Verschiedene Schnittstellen
Wir bieten Ihnen verschiedene API Schnittstellen wie http/mail/soap/kannel für den SMS-Versand und SMS-Empfang.
Höchste Verfügbarkeit
Durch mehrfache Redundanz garantieren wir eine Verfügbarkeit von 99,9% und einen Durchsatz von 10 SMS pro Sekunde.
Günstige Preise ohne Fixkosten
Der SMS Versand ist bereits ab einem Cent je nach Land möglich und wir berechnen keine Grund- oder Einrichtungsgebühr.
Deutscher Datenschutz
Unsere Server befinden sich alle in Deutschland und wir sind bei der Bundesnetzagentur lizensiertes Telekommunikationsunternehmen.
Statistiken & Zustellberichte
Sie erhalten Zustellberichte und haben jederzeit Zugriff auf Ihren Einzelverbindungsnachweis mit Daten zur Zustellquote.
Hohe Sicherheit
Der SMS Gateway ist "state of the art". Verschlüsselung und IP-Sperren sorgen dafür, dass unbefugte keinen Zugriff auf Ihre Daten haben.
Mit Hilfe von curl können Sie in PHP ganz einfach unsere HTTP Schnittstelle nutzen und SMS verschicken.
Mit Go werden io/ioutil und net/http importiert und schon können die Daten der SMS an die SMS-API übertragen werden.
Mit Python haben Sie eine Reihe von verschiedenen Möglichkeiten mit unserem SMS-Gateway zu interagieren. Sie könnenbeispielsweise urllib, Requests, Octopus oder HTTPie verwenden.
Die WebRequest.Create Methode übernimmt die Arbeit für Sie und überträgt die wichtigsten Daten Ihre SMS an unseren Gateway.
- curl
- php
- go
- c#
- python
- java
- 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"
}'
'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', // or application/ld+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 Newtonsoft.Json.Linq;
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);
Console.WriteLine("Post data: {0}", postdata);
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ReadWriteTimeout = 100000;
httpWebRequest.ContentType = "application/json; charset=utf-8";
httpWebRequest.Accept = "application/json"; // or application/ld+json
httpWebRequest.Method = "POST";
httpWebRequest.KeepAlive = true;
httpWebRequest.Headers.Add("X-LOX24-AUTH-TOKEN", key);
httpWebRequest.Credentials = CredentialCache.DefaultNetworkCredentials;
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(postdata);
streamWriter.Flush();
streamWriter.Close();
}
try
{
using (HttpWebResponse resp = (HttpWebResponse)httpWebRequest.GetResponse())
{
if(resp.StatusCode == HttpStatusCode.Created) {
Console.WriteLine("Success:{0} {1}", (int)resp.StatusCode, "sms resource created");
} else {
Console.WriteLine("Error: wrong response code {0} on create sms", (int)resp.StatusCode);
}
Stream respStream = resp.GetResponseStream();
using (StreamReader sr = new StreamReader(respStream, Encoding.UTF8))
{
string responseText = sr.ReadToEnd();
Console.WriteLine("responseText : {0}", responseText);
}
}
}
catch (System.Net.WebException ex)
{
var webResponse = ex.Response as System.Net.HttpWebResponse;
Console.WriteLine("Error:{0}", webResponse.StatusCode);
switch (webResponse.StatusCode)
{
case HttpStatusCode.BadRequest: // 400
Console.WriteLine("Error:400 Invalid input");
break;
case HttpStatusCode.Unauthorized: // 401
Console.WriteLine("Error:401 Client ID or API key isn't active or invalid!");
break;
case HttpStatusCode.PaymentRequired: // 402
Console.WriteLine("Error:402 There are not enough funds on your account!");
break;
case HttpStatusCode.Forbidden: // 403
Console.WriteLine("Error:403 Account isn't activated. Please wait or contact to support!");
break;
case HttpStatusCode.NotFound: // 404
Console.WriteLine("Error:404 Resource not found");
break;
case HttpStatusCode.InternalServerError: // 500
case HttpStatusCode.BadGateway: //502
case HttpStatusCode.ServiceUnavailable: // 503
case HttpStatusCode.GatewayTimeout: // 504
Console.WriteLine("System error! Please contact to LOX24 support!");
break;
}
}
}
}
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,
}
print("Post data : ", json.dumps(data, indent=4))
try:
# timeout is 100 seconds, the payload is automatically converted to json format
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. Please wait or contact to support!")
elif res.status_code == 404:
print("Error:404 Resource not found")
elif res.status_code in (500, 502, 503, 504):
print("System error! Please contact to LOX24 support!")
else:
print(f"Error: code {res.status_code}")
print(json.dumps(res.json(), indent=4))
package eu.lox24.doc.sms;
import org.json.JSONObject;
import java.io.IOException;
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);
json.put("callback_data", "123456");
json.put("voice_lang", "DE");
var postData = json.toString();
System.out.println("Post data: " + postData);
var httpRequest = HttpRequest.newBuilder(URI.create(url))
.timeout(Duration.ofMillis(100000))
.setHeader("Content-Type", "application/json; charset=utf-8")
.setHeader("Accept", "application/json") // or application/ld+json
.setHeader("X-LOX24-AUTH-TOKEN", key)
.POST(HttpRequest.BodyPublishers.ofString(postData))
.build();
var client = HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_1_1) // Http 1.1 clients are kept alive be default
.build();
try {
var httpResponse = client.send(httpRequest, HttpResponse.BodyHandlers.ofString());
if (httpResponse.statusCode() == HttpURLConnection.HTTP_CREATED) {
System.out.println("Success:" + httpResponse.statusCode() + " " + "sms resource created");
System.out.println("Response text : \n" + httpResponse.body());
} else {
System.out.println("Error: wrong response code " + httpResponse.statusCode() + " on create sms");
switch (httpResponse.statusCode()) {
case HttpURLConnection.HTTP_BAD_REQUEST: // 400
System.out.println("Error:400 Invalid input");
break;
case HttpURLConnection.HTTP_UNAUTHORIZED: // 401
System.out.println("Error:401 Client ID or API key isn't active or invalid!");
break;
case HttpURLConnection.HTTP_PAYMENT_REQUIRED: // 402
System.out.println("Error:402 There are not enough funds on your account!");
break;
case HttpURLConnection.HTTP_FORBIDDEN: // 403
System.out.println("Error:403 Account isn't activated. Please wait or contact to support!");
break;
case HttpURLConnection.HTTP_INTERNAL_ERROR: // 500
case HttpURLConnection.HTTP_BAD_GATEWAY: //502
case HttpURLConnection.HTTP_UNAVAILABLE: // 503
case HttpURLConnection.HTTP_GATEWAY_TIMEOUT: // 504
System.out.println("System error! Please contact to LOX24 support!");
break;
}
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
/*
* Post sms
*/
const token = "7b7c6063bab885ce79814b5ff1ee6885";
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 - Client ID or API key isn't active or invalid!");
else if (res.statusCode == 402) console.log("Error: code = 402 - There are not enough funds on your account!");
else if (res.statusCode == 403) console.log("Error: code = 403 - Account isn't activated. Please wait or contact to support!");
})
req.on('error', error => {
console.error(error)
})
req.write(postdata);
req.end();
SMS Dialoge in beide Richtungen
Nicht nur SMS versenden, sondern auch SMS Emfangen
Über unsere SMS Schnittstelle können Sie auch Inbound-SMS empfangen. Für eine monatliche Grundgebühr von 29,- Euro richten wir Ihnen eine eigene Rufnummer ein. Alle auf dieser Rufnummer eingehenden Nachrichten können wir Ihnen per HTTP-Request oder Mail zustellen.
Massen-SMS-Gateway
Unser SMS Gateway kann nicht nur einzelne SMS verarbeiten, sondern Sie können auch mehrere Tausend SMS gleichzeitig mit nur einem HTTP-Request an uns übertragen. Das spart Ressourcen und beschleunigt den SMS-Versand. Sie können dabei entweder alle Empfänger an uns übermitteln oder auch mit bestehenden Verteilergruppen arbeiten.
Wir haben die Lösung auf Ihre Fragen!
Ist der SMS Gateway DSGVO konform?
Ja, alle gültigen Datenschutzrichtlinien werden eingehalten. Darüber hinaus gilt das strenge deutsche Fernmeldegeheimnis für den Inhalt Ihrer SMS.
Kann man das ganze einmal Testen?
Natürlich, Sie können sich ohne Verpflichtungen bei uns Anmelden und erhalten 50 Cent gratis Testguthaben für Ihre ersten SMS.
Können SMS weltweit verschickt werden?
Ja, wir unterstützen so gut wie jedes Netz weltweit. Der SMS Preis ist meistens sogar günstiger als nach Deutschland.
Wo befinden sich die Server?
Alle unsere Server befinden sich ausschließlich in Deutschland. Wir garantieren die Sicherheit Ihrer Daten.
Gibt es eine Vertragslaufzeit?
Nein, Sie können jederzeit ohne Einhaltung einer Frist kündigen. Wir sind aber sicher, dass Sie zufrieden mit uns sein werden.
Weitere Produkte
SMS-MO: Inbound SMS
Sie können mit uns nicht nur SMS versenden. Ihre Kunden können auf diese SMS auch antworten. Die Antworten können Sie per E-Mail empfangen oder einfach in Ihrem Web-Interface im Posteingang einsehen. Dadurch können Kunden direkt auf Ihre Massen-SMS reagieren und beispielsweise Termine bestätigen, Bestellungen aufgeben oder um einen Rückruf bitten. Treten Sie in einen Dialog mit Ihren Kunden und nutzen Sie die geringe Hemmschwelle des Kunden, eine SMS-Antwort zu schicken.
Einzel-SMS
Über unsere Website und auch über die API können Sie einzelne SMS verschicken. Dabei ist es natürlich möglich auch Vorlagen zu verwenden aber grundsätzlich ist der Inhalt und Absender der SMS individuell und wird bei jedem Versand von Ihnen festgelegt.
Personalisierte SMS
Haben Sie neben der Nummer Ihrer Kunden weitere Daten? Beispielsweise den Namen Ihres Kunden? Diese Daten können Sie automatisch und ohne zusätzlichen Aufwand in den SMS-Text einfügen lassen. Durch diese personalisierten individuellen Massen-SMS erreichen Sie eine noch größere Aufmerksamkeit und vermitteln den Kunden das Gefühl von Ihnen persönlich informiert worden zu sein. Fügen Sie in den Text individuelle Orte, Kundennummern, Termine oder ähnliches ein. Egal um welche Daten es sich handelt, unser System kann Sie an der gewünschten Textstelle, passend zum Empfänger, einfügen.
Mail2SMS
Senden Sie Ihre SMS einfach als normale E-Mail. Unser Mail Server übersetzt die Nachrichten in eine SMS und leitet Sie an Ihre Empfänger als Textnachricht weiter.
Kannel SMPP
Wir unterstützen den SMS Versand via Kannel. Hierzu nutzen wir eine Variante mit integriertem SSL Support, um einige der Nachteile von Kannel zu beheben.
Jetzt SMS API Testen!
Integrieren Sie noch heute unsere SMS-API in Ihre Anwendung. Mit 50 Cent gratis Guthaben können Sie den SMS Gateway ohne Verpflichtungen testen.