Documentação da API

Guia · Inteligência artificial

Integre a SMS Nexo com IA

Coloque um assistente para comprar números e ler os códigos por você, ou peça para uma IA escrever a integração do seu sistema em minutos. Tudo usa a mesma chave da API e o seu saldo.

Você vai precisar de

  • Uma chave nx_live_…, criada em Painel → API.
  • A especificação OpenAPI: https://smsnexo.com/api/v1/openapi.json

Opção 1

Pedir para a IA escrever a integração

Cole este texto no ChatGPT, Claude, Gemini ou Cursor. A IA lê a especificação e entrega o código pronto, com webhook e tratamento de erros.

Quero integrar a API da SMS Nexo no meu sistema.
A especificação OpenAPI está em https://smsnexo.com/api/v1/openapi.json
e a documentação em https://smsnexo.com/docs/api.

Crie em [Node.js / Python / PHP] um módulo que:
1. compra um número com POST /orders (service e country);
2. espera o código com GET /orders/{id}?wait=30, repetindo até chegar ou expirar;
3. cancela com POST /orders/{id}/cancel se eu desistir;
4. recebe o webhook "sms.received" e valida o header X-Nexo-Signature
   (HMAC-SHA256 do corpo com o meu segredo whsec_...).
A chave fica na variável de ambiente NEXO_KEY. Trate os erros 402, 409 e 429.

Opção 2

GPT personalizado no ChatGPT

Um assistente seu dentro do ChatGPT: você escreve “quero um número para o Telegram” e ele compra, espera e mostra o código.

  1. No ChatGPT, abra Explorar GPTs → Criar → Configurar.
  2. Em Ações, clique em Criar nova ação → Importar de URL e cole https://smsnexo.com/api/v1/openapi.json.
  3. Em Autenticação, escolha Chave de API → Bearer e cole a sua chave.
  4. Nas instruções do GPT, cole o texto abaixo e salve como “Somente eu”.
Você compra números virtuais na SMS Nexo para receber códigos de verificação.
- Para "número para X": use listServices (country 73 = Brasil) para achar o code do app
  e o preço, confirme o preço com o usuário e então chame createOrder.
- Depois chame getOrder com wait=30 até o status ser "received" e mostre o código.
- Se o usuário desistir antes do SMS, chame cancelOrder (o valor volta ao saldo).
- Sempre informe o saldo com getBalance quando pedirem.

Deixe o GPT privado: quem tiver acesso a ele compra com o seu saldo.

Opção 3

Agentes com function calling

Para bots e agentes próprios (OpenAI Agents, LangChain, CrewAI, Claude, Gemini), registre estas funções como ferramentas. O docstring de cada uma já explica para a IA quando usar.

import os, requests

API = "https://smsnexo.com/api/v1"
H = {"Authorization": f"Bearer {os.environ['NEXO_KEY']}"}

# Funções prontas para registrar como "tools" no seu agente
# (OpenAI Agents, LangChain, CrewAI, Claude, Gemini...).

def buscar_servicos(pais: int = 73) -> list:
    """Lista apps disponíveis no país, com preço em reais e estoque."""
    return requests.get(f"{API}/services", params={"country": pais}, headers=H).json()["services"]

def comprar_numero(servico: str, pais: int = 73) -> dict:
    """Compra um número para o app (ex.: 'wa' WhatsApp, 'tg' Telegram)."""
    return requests.post(f"{API}/orders", json={"service": servico, "country": pais}, headers=H).json()

def esperar_codigo(order_id: str) -> dict:
    """Espera até 30 s pelo SMS e devolve status e código."""
    return requests.get(f"{API}/orders/{order_id}", params={"wait": 30}, headers=H, timeout=40).json()["order"]

def cancelar(order_id: str) -> dict:
    """Cancela antes de chegar SMS; o valor volta ao saldo."""
    return requests.post(f"{API}/orders/{order_id}/cancel", headers=H).json()

Opção 4

n8n, Make ou Zapier (sem programar)

  1. Crie um nó HTTP Request: método POST, URL https://smsnexo.com/api/v1/orders, header Authorization: Bearer SUA_CHAVE e corpo JSON {"service":"wa","country":73}.
  2. Para receber o código, crie um fluxo com gatilho Webhook, copie a URL dele e cole em Painel → API → Webhook. Cada SMS chega ali em segundos.
  3. Ou, sem webhook, use outro HTTP Request em GET /orders/{id}?wait=30: ele responde assim que o código chega.

Receber o SMS na hora (webhook)

Com o webhook configurado, enviamos um POST para a sua URL assim que o código chega, com o evento sms.received e a ativação completa. Valide a assinatura antes de confiar no conteúdo:

import crypto from "node:crypto";
import express from "express";

const app = express();
// Use o corpo cru: a assinatura é calculada sobre os bytes exatos.
app.post("/nexo-webhook", express.raw({ type: "application/json" }), (req, res) => {
  const expected = "sha256=" + crypto.createHmac("sha256", process.env.NEXO_WEBHOOK_SECRET).update(req.body).digest("hex");
  const got = req.get("X-Nexo-Signature") || "";
  if (got.length !== expected.length || !crypto.timingSafeEqual(Buffer.from(got), Buffer.from(expected))) return res.sendStatus(401);

  const { event, order } = JSON.parse(req.body);
  if (event === "sms.received") console.log("Código", order.code, "para", order.phone);
  res.sendStatus(200); // responda rápido (até 5 s)
});
app.listen(3000);

Boas práticas

  • Nunca coloque a chave no navegador, no app ou em prompt público. Ela fica no servidor ou no cofre da ferramenta.
  • Peça para o agente confirmar o preço antes de comprar e defina um teto de gasto no seu código.
  • Crie uma chave por integração e revogue no painel a que não usar mais.