SMS API para
desenvolvedores.
SMS, mensagens de voz e códigos de verificação via REST
A SMS API da LOX24 conecta seu aplicativo a 880 redes móveis em todo o mundo. Por meio de uma interface REST com JSON, você envia SMS e mensagens de voz, recebe respostas por webhook e envia códigos de verificação, com operação exclusivamente em servidores na Europa.
- REST + JSON
- 99,9% de disponibilidade
- Webhooks
- Servidor na Europa
O que é uma SMS API?
Quais recursos a SMS API oferece?
Quão simples é integrar a SMS API?
Autenticação e endpoints da SMS API da LOX24
Todas as requisições vão para https://api.lox24.eu e são autenticadas pelo header X-LOX24-AUTH-TOKEN . O token é composto pelo seu ID de usuário e por uma chave de API (:), que você cria na área do cliente. Requisições e respostas usam JSON. Após três tentativas de login malsucedidas em um minuto, a API bloqueia o IP solicitante por dez minutos.
URL BASEhttps://api.lox24.euHeader: 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
Todos os endpoints com exemplos estão disponíveis na Documentação da API. Carregue a especificação OpenAPI diretamente no Postman, Insomnia ou em um gerador de código.
Exemplos de código para curl, PHP, Python, Java, Go, C# e 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:
# o timeout é de 100 segundos, o payload é convertido automaticamente para 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();PARÂMETROS DE POST /sms · JSON
phoneNúmero do destinatário em formato internacional, p. ex. +49151…
textTexto da mensagem. Textos mais longos são divididos em vários SMS.
sender_idRemetente: texto com até 11 caracteres ou número de telefone com até 15 dígitos.
service_codeTipo de envio, por exemplo direct (padrão) ou text2speech para mensagens de voz.
delivery_atData e hora de envio como timestamp Unix, para SMS agendados.
is_unicodetrue para emojis e caracteres especiais (UCS-2); caso contrário, conjunto de caracteres GSM.
callback_dataIdentificador próprio, por exemplo, um número de pedido. Retorna no delivery report.
voice_langIdioma da mensagem de voz, por exemplo DE. Sem essa informação, a API detecta o idioma automaticamente (20 idiomas).
Todos os parâmetros, campos obrigatórios e formatos de resposta estão na Documentação da API.
SMS API mesmo sem programador
Você quer aproveitar as vantagens da SMS API da LOX24 na sua empresa, mas não tem um programador para ajudar? Sem problema. Temos a solução para você. Com nossa integração com o Zapier, você conecta seu software à nossa API de forma simples e sem conhecimentos de programação. Você não precisa do apoio do seu departamento de TI.
- Mais de 6.745 aplicativosCom nossa solução de SMS API, você se comunica pelo Zapier com mais de 6.745 aplicativos que utiliza no seu negócio.
- SMS Gateway para o seu appDiversos aplicativos já oferecem suporte nativo ao envio de SMS com a LOX24, como Bitrix24, Theorg e Synology.
- Sem conhecimentos de programaçãoVocê não precisa do apoio do seu departamento de TI.
O que você pode criar com a SMS API da LOX24
Uma API, muitos usos: de códigos de login a avisos de envio e campanhas com rastreamento de cliques, todas as funções usam a mesma interface, a mesma chave de API e o mesmo faturamento.
POST /verify_codesPOST /smsPOST /bulks · /campaignsGET /incomings · WebhookAPI de verificação de fraudeServidor MCPO que mais a SMS API da LOX24 oferece
Além do envio, a SMS API da LOX24 oferece tudo o que uma integração precisa no dia a dia: webhooks, modo de teste, listas de bloqueio e consultas de preços e da conta.
Perguntas frequentes sobre a SMS API da LOX24
Como me autentico na SMS API da LOX24?
Você envia em cada requisição o header X-LOX24-AUTH-TOKEN com o valor :. Você cria a chave de API na conta de cliente da LOX24. Além disso, é possível restringir o acesso aos seus servidores por bloqueio de IP.
Existe uma especificação OpenAPI?
Sim. A especificação completa da LOX24 API v2 está disponível em doc.lox24.eu/openapi-en.json. Você pode importá-la no Postman ou no Insomnia, ou usá-la para gerar um cliente na sua linguagem.
Posso testar a API sem enviar SMS?
Sim, por meio do endpoint POST /sms/dryrun. Ele valida sua requisição como em produção e aciona um delivery report simulado, sem que nenhuma SMS seja enviada.
Em que formato devo informar os números de telefone?
No formato internacional com código do país, por exemplo +49151… para um número de celular alemão.
Como envio mensagens de voz em vez de SMS?
Você define service_code como text2speech. A LOX24 liga para o destinatário e lê o texto em voz alta. O idioma é definido com voice_lang , ou a API o detecta automaticamente a partir do texto (20 idiomas).
Como enviar códigos de verificação com a maior confiabilidade?
Por meio do endpoint /verify_codes. Nele você define uma ordem de canais, por exemplo primeiro Telegram, depois chamada de voz e, por último, SMS. Se o código não chegar em um canal, a LOX24 tenta automaticamente o próximo.
Existem SDKs ou bibliotecas?
Documentação completa da API
Crie agora sua chave de API e envie a primeira SMS
Cadastre-se gratuitamente, crie sua chave de API na conta de cliente e teste a integração com dryrun, com 50 centavos de crédito inicial para as primeiras SMS reais.
