Se abre en una pestaña nueva
Nuevo
SMS MCP-Server: permita que su agente de IA envíe SMS y mensajes de voz
Más información
API REST de SMS · Versión 2

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
Los datos más importantes
REST · HTTP · MAIL · SOAP · KANNEL
¿Qué es una SMS API?

¿Qué es una SMS API?

Una SMS API es una interfaz de programación mediante la cual el software envía y recibe SMS de forma automática. Su aplicación envía una solicitud HTTP con el destinatario y el texto, y el proveedor entrega el mensaje a la red móvil a través de su pasarela SMS. Como respuesta recibe una confirmación y, más tarde, un delivery report. Con la SMS API de LOX24 puede controlar además, para cada mensaje, el remitente, la hora de envío, el juego de caracteres y la salida de voz.
02 · FUNCIONES

¿Qué funciones ofrece la SMS API?

Nuestra SMS API permite el envío masivo de mensajes de texto, la creación de mensajes personalizados, la recepción automática de respuestas y el seguimiento de delivery reports. La seguridad y la protección de datos son nuestra máxima prioridad.
03 · INTEGRACIÓN

¿Qué tan fácil es integrar la SMS API?

Nuestra SMS API permite una integración sencilla y rápida en sus sistemas y aplicaciones existentes. Le ofrecemos una documentación clara y multilingüe con ejemplos de código, además de soporte técnico.
REDES
880 redes en todo el mundo
RENDIMIENTO
10SMS / segundo
Compatible con todos los lenguajes de programación modernos
curl
php
go
c#
python
java
javascript
ruby
curl
php
go
c#
python
java
javascript
ruby
Fundamentos

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

Área
Endpoint
Finalidad
SMS

POST/sms

Enviar SMS o mensaje de voz

POST/sms/dryrun

Probar el envío sin enviar

GET/sms

Consultar SMS enviados y su estado
Envío masivo

POST/bulks

Miles de destinatarios en una sola solicitud
Recepción

GET/incomings

Consultar SMS recibidos
Verificación

POST/verify_codes

Código por Telegram, llamada de voz o SMS
Contactos

/groups/phones/blocked_numbers

Gestionar listas de distribución y listas de bloqueo
Campañas

/campaigns/links

Enlaces cortos con seguimiento de clics
Cuenta

GET/me

Información de la cuenta y saldo

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.

Envíe y reciba SMS con solo unas pocas líneas de código

Ejemplos de código para curl, PHP, Python, Java, Go, C# y JavaScript

La SMS API de LOX24 funciona con cualquier lenguaje que pueda enviar solicitudes HTTP. Aquí puede ver el envío de un SMS en siete lenguajes, cada uno con gestión de errores mediante los códigos de estado HTTP.
#!/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

Parámetro
Tipo
Descripción
phone
string

Número del destinatario en formato internacional, p. ej. +49151…

text
string

Texto del mensaje. Los textos más largos se dividen en varios SMS.

sender_id
string

Remitente: texto de hasta 11 caracteres o número de teléfono de hasta 15 dígitos.

service_code
string

Tipo de envío, p. ej. direct (predeterminado) o text2speech para mensajes de voz.

delivery_at
integer

Fecha y hora de envío como marca de tiempo Unix, para SMS programados.

is_unicode
boolean

true para emojis y caracteres especiales (UCS-2); de lo contrario, se usa el juego de caracteres GSM.

callback_data
string

Identificador propio, p. ej. un número de pedido. Se devuelve en el delivery report.

voice_lang
string

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

Documentación de la API
SMS API para su app

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

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.

Autenticación de dos factores

Envíe códigos de verificación para inicio de sesión, registro y pagos. Usted define el orden de los canales, por ejemplo Telegram, luego llamada de voz y después SMS. Si el código no llega, LOX24 prueba automáticamente el siguiente canal.

POST /verify_codes

Notificaciones automáticas

Su software informa a clientes y empleados en el momento en que ocurre algo: pedido enviado, cita mañana, servidor caído. Con delivery_at programa mensajes con antelación, con callback_data asigna cada delivery report a su operación.

POST /sms

SMS masivos y campañas

Envíe miles de SMS personalizados con una sola solicitud, a listas de números o a grupos guardados. Los enlaces cortos con seguimiento de clics le muestran quién ha respondido a su oferta.

POST /bulks · /campaigns

Diálogos en ambas direcciones

Con un número virtual, los destinatarios pueden responder. Cada SMS entrante llega a su aplicación mediante webhook, por ejemplo como confirmación de cita, solicitud de llamada o respuesta a un ticket. Las bajas mediante «STOP» se procesan automáticamente.

GET /incomings · Webhook

Verificación antifraude antes del envío

Compruebe pedidos y registros antes de enviar un SMS. La API antifraude detecta VPN anónimas y datos sospechosos y devuelve una puntuación de riesgo. Esto le protege del fraude y del costoso SMS pumping.

API de verificación antifraude

SMS desde agentes de IA

A través del servidor MCP de LOX24, asistentes de IA como Claude o Cursor utilizan la API directamente: enviar SMS y mensajes de voz, leer SMS entrantes y consultar el saldo. Solo necesita su API key.

Servidor MCP
Para desarrolladores

Qué 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.

Delivery reports mediante webhook
Por cada SMS, LOX24 notifica el estado a su aplicación mediante webhook (sms.delivery), incluyendo su callback_data. Si su servidor no está disponible momentáneamente, LOX24 repite la entrega automáticamente.
SMS entrantes mediante webhook
Las respuestas a su número virtual llegan al instante a su aplicación, con remitente, texto y hora. Como alternativa, consúltelas mediante GET /incomings .
Envío de prueba con Dryrun
Con POST /sms/dryrun pruebe su integración sin enviar un SMS real. La API responde como en producción y envía un delivery report simulado.
Cancelar SMS programados
SMS con delivery_at prográmelos con antelación, por ejemplo recordatorios de citas. Si se cancela la cita, basta con cancelar por API el SMS que aún no se ha enviado.
Listas de bloqueo
A través de /blocked_numbers defina los números que no deben volver a recibir ningún SMS, por ejemplo tras una baja o una reclamación. El gateway los bloquea automáticamente en cada envío.
Altas y bajas automáticas
Cuando un contacto se da de alta o de baja mediante una palabra clave por SMS o un formulario, LOX24 informa a su aplicación por webhook. Así, su CRM y sus listas de distribución se mantienen actualizados sin trabajo manual.
Enlaces cortos con análisis de clics
Los enlaces de sus SMS se envían como enlaces cortos y se rastrean. Mediante la API puede consultar qué SMS se han clicado y cuántas veces.

Precios y cuenta por API
A través de /me/pricelist/{country} consulte sus precios actuales por país, por ejemplo para calcular los costes antes de un envío. Las facturas y los pagos también se pueden consultar por API.

Protección frente a ataques
Tras tres intentos de inicio de sesión fallidos en un minuto, la API bloquea la IP solicitante durante diez minutos (HTTP 429). Además, puede restringir el acceso a sus propios servidores mediante la autorización de IP.

FAQ

Preguntas frecuentes sobre 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.

 

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.

 

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 formato internacional con prefijo del país, por ejemplo +49151… para un número de móvil alemán.

 

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

 

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.

La API es una interfaz REST ligera; los ejemplos de código para siete lenguajes y la especificación OpenAPI bastan para la integración. Para Symfony hay un transporte Notifier ya listo.

Documentación completa de la API

En la documentación de la API de LOX24 encontrará todos los endpoints, parámetros y códigos de estado con ejemplos, además de los formatos de webhook para delivery reports y SMS entrantes. La especificación OpenAPI se puede importar directamente en Postman o Insomnia.
Documentación de la APIespecificación OpenAPI

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.

SIN CUOTA BÁSICA
99,9 % DE DISPONIBILIDAD
PROTECCIÓN DE DATOS ALEMANA
SEGURIDAD SIN CONCESIONES