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 para a sua empresa, mas não tem um programador para ajudar? Sem problema. Temos a solução para você. Com a nossa integração com o Zapier você conecta o 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.
