SMS Nitro

Erros e limites de uso

Os erros usam códigos HTTP padrão e um corpo JSON com a mensagem em detail. Quase sempre eles dizem exatamente o que fazer a seguir.

O que significa um 409 na API da SMS Nitro?

O 409 indica que não há número disponível agora para aquele app e país. Tente outro país, ou informe o outro servidor em server, e compre de novo. Nada é cobrado.

Códigos de status

HTTPSignificadoO que fazer
400Pedido impossível agora: país não vendido para o app, pedido já encerrado, número expirado, cancelamento cedo demaisLeia detail e ajuste. Cancelamento cedo: espere 2 minutos
401Chave de API ausente, inválida ou revogadaConfira o cabeçalho e a chave no painel
402Saldo insuficienteRecarregue e tente de novo
404Pedido não encontrado, ou app indisponível naquele servidorConfira o id, o product e o server
409Nenhum número disponível agoraTente outro país ou servidor
422Corpo ou parâmetro inválido. Aqui detail é uma lista de erros por campoCorrija os campos listados em detail
429Limite de requisições atingidoEspere e tente de novo com intervalo crescente
502Fornecimento temporariamente indisponívelTente de novo em alguns segundos
Corpo do erro
HTTP/1.1 402 Payment Required
Content-Type: application/json

{ "detail": "Insufficient balance" }

Limites de uso

  • POST /v1/orders: 500 compras por minuto por conta e por IP.
  • POST /v1/orders/{id}/resend: 30 pedidos por minuto.
  • Consulta de status: um GET por pedido a cada 3 a 5 segundos basta. Consultar mais rápido não faz o SMS chegar antes.

Estratégia de nova tentativa

Repita 429 e 502 com intervalo exponencial. Não repita 400, 401, 402 ou 404 sem mudar a requisição. Uma compra que falhou com 409 ou 502 não foi cobrada, então pode comprar de novo com segurança.

Função auxiliar em Python
import random, time, requests

def call(method, url, **kw):
    for attempt in range(5):
        r = requests.request(method, url, timeout=30, **kw)
        if r.status_code == 429:
            time.sleep(float(r.headers.get("Retry-After", 2 ** attempt)))
            continue
        if r.status_code in (502, 503, 504):
            time.sleep(2 ** attempt + random.random())
            continue
        return r
    r.raise_for_status()
    return r

Perguntas frequentes

Sou cobrado quando uma requisição falha?

Não. Compras com erro nunca geram cobrança, e pedidos sem SMS são estornados.

Páginas relacionadas

Receba seu código de verificação agora

Recarregue a partir de R$ 15 no Pix, escolha o app e o país e leia o SMS no navegador. Cobrado só quando o código chega.

Pegar um número