SMS API para
desarrolladores.
SMS, mensajes de voz y códigos de verificación por REST
La SMS API de LOX24 conecta su aplicación con 880 redes móviles en todo el mundo. Mediante una interfaz REST con JSON, envíe SMS y mensajes de voz, reciba respuestas por webhook y envíe códigos de verificación, todo operado en servidores ubicados exclusivamente en Europa.
- REST + JSON
- 99,9 % de disponibilidad
- Webhooks
- Servidor en Europa
¿Qué es una SMS API?
¿Qué funciones ofrece la SMS API?
¿Qué tan fácil es integrar la SMS API?
Autenticación y endpoints de la SMS API de LOX24
Todas las solicitudes se envían a https://api.lox24.eu y se envían con el encabezado X-LOX24-AUTH-TOKEN para autenticarse. El token se compone de su ID de usuario y una API key (:), que usted crea en su cuenta de cliente. Las solicitudes y respuestas son JSON. Tras tres intentos de inicio de sesión fallidos en el plazo de un minuto, la API bloquea la IP solicitante durante diez minutos.
URL BASEhttps://api.lox24.euEncabezado: 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
Encontrará todos los endpoints con ejemplos en la Documentación de la API. La especificación OpenAPI puede cargarla directamente en Postman, Insomnia o en un generador de código.
Ejemplos de código para curl, PHP, Python, Java, Go, C# y 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',
'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:
# el tiempo de espera es de 100 segundos, el payload se convierte automáticamente a json
res = requests.post(url, headers=headers, json=data, timeout=100)
if res.status_code != 201: # Creado
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();PARÁMETROS DE POST /sms · JSON
phoneNúmero del destinatario en formato internacional, p. ej. +49151…
textTexto del mensaje. Los textos más largos se dividen en varios SMS.
sender_idRemitente: texto de hasta 11 caracteres o número de teléfono de hasta 15 dígitos.
service_codeTipo de envío, p. ej. direct (predeterminado) o text2speech para mensajes de voz.
delivery_atFecha y hora de envío como marca de tiempo Unix, para SMS programados.
is_unicodetrue para emojis y caracteres especiales (UCS-2); de lo contrario, se usa el juego de caracteres GSM.
callback_dataIdentificador propio, p. ej. un número de pedido. Se devuelve en el delivery report.
voice_langIdioma del mensaje de voz, p. ej. DE. Si no se indica, la API detecta el idioma automáticamente (20 idiomas).
Encontrará todos los parámetros, campos obligatorios y formatos de respuesta en la Documentación de la API.
SMS API también sin programadores
¿Quiere aprovechar las ventajas de la SMS API de LOX24 para su empresa, pero no tiene ningún programador que le ayude? No hay problema. Tenemos la solución para usted. Con nuestra integración con Zapier puede conectar su software a nuestra API de forma muy sencilla y sin conocimientos de programación. No necesita la ayuda de su departamento de TI.
- Más de 6.745 aplicacionesCon nuestra solución de SMS API puede comunicarse a través de Zapier con más de 6.745 aplicaciones que utiliza en su negocio.
- Pasarela SMS para su appMuchas aplicaciones ya admiten de serie el envío de SMS con LOX24, como Bitrix24, Theorg y Synology.
- Sin conocimientos de programaciónNo necesita la ayuda de su departamento de TI.
Qué puede crear con la SMS API de LOX24
Una API, muchos usos: desde códigos de acceso y avisos de envío hasta campañas con seguimiento de clics, todas las funciones se ejecutan a través de la misma interfaz, la misma API key y la misma facturación.
POST /verify_codesPOST /smsPOST /bulks · /campaignsGET /incomings · WebhookAPI de verificación antifraudeServidor MCPQué más puede hacer la SMS API de LOX24
Además del envío, la SMS API de LOX24 ofrece todo lo que una integración necesita en el día a día: webhooks, modo de prueba, listas de bloqueo y consultas de precios y de cuenta.
Preguntas frecuentes sobre la SMS API de LOX24
¿Cómo me autentico en la SMS API de LOX24?
En cada solicitud envía el encabezado X-LOX24-AUTH-TOKEN con el valor :. La API key se crea en la cuenta de cliente de LOX24. Además, puede restringir el acceso a sus servidores mediante el bloqueo de IP.
¿Existe una especificación OpenAPI?
Sí. La especificación completa de la LOX24 API v2 está disponible en doc.lox24.eu/openapi-en.json. Puede importarla en Postman o Insomnia, o usarla para generar un cliente en su lenguaje.
¿Puedo probar la API sin enviar SMS?
Sí, mediante el endpoint POST /sms/dryrun. Comprueba su solicitud como en producción y activa un delivery report simulado, sin que se envíe ningún SMS.
¿En qué formato debo indicar los números de teléfono?
En formato internacional con prefijo del país, por ejemplo +49151… para un número de móvil alemán.
¿Cómo envío mensajes de voz en lugar de SMS?
Configure service_code como text2speech. LOX24 llama al destinatario y lee el texto en voz alta. El idioma se define con voice_lang , o bien la API lo detecta automáticamente a partir del texto (20 idiomas).
¿Cuál es la forma más fiable de enviar códigos de verificación?
A través del endpoint /verify_codes. Allí define un orden de canales, por ejemplo primero Telegram, después llamada de voz y por último SMS. Si el código no llega por un canal, LOX24 prueba automáticamente con el siguiente.
¿Hay SDK o bibliotecas?
Documentación completa de la API
Cree ahora su API key y envíe su primer SMS
Regístrese gratis, cree su API key en la cuenta de cliente y pruebe la integración con dryrun, con 50 céntimos de saldo inicial para los primeros SMS reales.
