Pasarela SMS con API REST
Integre el envío de SMS en su propia aplicación a través de nuestra pasarela SMS. Le ofrecemos una Rest API fiable y rápida para enviar SMS a todo el mundo. Más sencillo imposible.
SMS Gateway con GDPR

Interfaz de SMS confiable
Tu mensaje de texto debe llegar y no desaparecer en el nirvana. Nuestra misión es garantizar que sus mensajes de texto lleguen al destinatario en cuestión de segundos. Como líderes del mercado, ofrecemos la API de pasarela de SMS más fiable y a precios muy atractivos.
Nuestra filosofía
Una API de SMS sin compromiso
Distintas interfaces
Le ofrecemos varias interfaces API como http/mail/soap/kannel para enviar y recibir SMS.
La más alta disponibilidad
A través de múltiples redundancias garantizamos una disponibilidad del 99,9% y un rendimiento de 10 SMS por segundo.
Precios económicos sin costes fijos
Es posible enviar SMS desde tan solo un centavo, según el país, y no cobramos tarifas básicas o de instalación.
Protección de datos
Todos nuestros servidores están ubicados en Alemania y somos una empresa de telecomunicaciones con licencia de la Agencia Federal de Redes.
Estadísticas e informes de entrega
Usted recibe informes de entrega y acceso a su factura desglosada con datos de la tarifa de entrega en cada momento.
Alta seguridad
El SMS Gateway es "de última generación". El cifrado y los bloqueos de IP garantizan que personas no autorizadas no tengan acceso a sus datos.
Con Go, se importan io/ioutil y net/http y los datos SMS pueden transferirse a la API SMS.
Con Python tienes varias formas de interactuar con nuestra pasarela de SMS. Por ejemplo, puede utilizar urllib, Requests, Octopus o HTTPie.
El método WebRequest.Create hace el trabajo por ti y transfiere los datos más importantes de tu SMS a nuestra pasarela.
- 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();
Diálogos SMS en ambas direcciones
No solo enviar SMS, sino también recibir SMS
También puedes recibir mensajes SMS entrantes a través de nuestra interfaz SMS. Por una tarifa básica mensual de 29 EUR, configuraremos su propio número de teléfono para usted. Podemos enviarle todos los mensajes entrantes a este número de teléfono a través de una solicitud HTTP o correo electrónico.
Pasarela de SMS masivos
Nuestra Gateway de SMS no solo puede procesar SMS individuales, sino que también puede enviarnos varios miles de SMS al mismo tiempo con solo una solicitud HTTP. Esto ahorra recursos y acelera el envío de SMS. Puede transferirnos todos los destinatarios o trabajar con grupos de distribución existentes.
¡Tenemos la solución a sus dudas!
¿Cumple SMS Gateway con el RGPD?
Sí, se cumplen todas las directrices de protección de datos aplicables. Además, la estricta confidencialidad alemana de las telecomunicaciones se aplica al contenido de su SMS.
¿Se puede probar todo?
Por supuesto, puede registrarse con nosotros sin ninguna obligación y recibir 50 centavos de crédito de prueba gratis para su primer SMS.
¿Se pueden enviar SMS a todo el mundo?
Sí, admitimos casi todas las redes del mundo. El precio de SMS suele ser incluso más barato que a Alemania.
¿Dónde están ubicados los servidores?
Todos nuestros servidores están ubicados exclusivamente en Alemania. Garantizamos la seguridad de sus datos.
¿Hay un plazo de contrato?
No, se puede cancelar en cualquier momento sin previo aviso. Pero estamos seguros de que estará satisfecho con nosotros.
Otros Productos
SMS-MO: SMS entrantes
Con nosotros no sólo puedes enviar SMS. Sus clientes también pueden responder a estos SMS. Puede recibir las respuestas por correo electrónico o simplemente verlas en su interfaz web en la bandeja de entrada. Esto permite a los clientes responder directamente a tus SMS masivos y, por ejemplo, confirmar citas, hacer pedidos o solicitar que les devuelvas la llamada. Entable un diálogo con sus clientes y aproveche el bajo umbral de inhibición del cliente para enviar una respuesta por SMS.
SMS Individuales
Puede enviar SMS individuales a través de nuestro sitio web y también a través de la API. Por supuesto, también es posible utilizar plantillas, pero el contenido y el remitente del SMS son siempre individuales y los determina usted para cada envío.
SMS personalizados
¿Dispone de otros datos además del número de clientes? Por ejemplo, ¿el nombre de su cliente? Puede hacer que estos datos se inserten automáticamente en el texto del SMS sin ningún esfuerzo adicional. A través de estos mensajes SMS masivos personalizados e individuales, conseguirá una atención aún mayor y dará a los clientes la sensación de que han sido informados personalmente por usted. Inserte en el texto ubicaciones individuales, números de cliente, fechas o similares. Sean cuales sean los datos, nuestro sistema puede insertarlos en la posición de texto deseada, adecuada para el destinatario.
De Mail a SMS
Simplemente envíe su SMS como un correo electrónico normal. Nuestro servidor de correo traduce los mensajes en un SMS y los reenvía a sus destinatarios en forma de mensaje de texto.
Kannel SMPP
Apoyamos el envío de SMS a través de Kannel. Para ello, utilizamos una variante con soporte SSL integrado para superar algunas de las desventajas de Kannel.