SMS Nitro

Errores y límites de uso

Los errores usan códigos HTTP estándar y un cuerpo JSON con el mensaje en detail. Casi siempre te dicen exactamente qué hacer a continuación.

¿Qué significa un 409 en la API de SMS Nitro?

Un 409 indica que ahora no hay número disponible para esa app y ese país. Prueba otro país, o indica el otro servidor en server, y vuelve a comprar. No se cobra nada.

Códigos de estado

HTTPSignificadoQué hacer
400Petición imposible ahora: país no disponible para la app, pedido ya cerrado, número caducado, cancelación demasiado prontoLee detail y ajusta. Cancelación pronta: espera 2 minutos
401Clave de API ausente, inválida o revocadaRevisa la cabecera y la clave en el panel
402Saldo insuficienteRecarga y vuelve a intentarlo
404Pedido no encontrado, o app no disponible en ese servidorRevisa el id, el product y el server
409Ningún número disponible ahoraPrueba otro país u otro servidor
422Cuerpo o parámetro inválido. Aquí detail es una lista de errores por campoCorrige los campos listados en detail
429Límite de peticiones alcanzadoEspera y reintenta con intervalos crecientes
502Suministro no disponible temporalmenteReintenta en unos segundos
Cuerpo del error
HTTP/1.1 402 Payment Required
Content-Type: application/json

{ "detail": "Insufficient balance" }

Límites de uso

  • POST /v1/orders: 500 compras por minuto por cuenta y por IP.
  • POST /v1/orders/{id}/resend: 30 peticiones por minuto.
  • Consulta de estado: basta un GET por pedido cada 3 a 5 segundos. Consultar más rápido no hace que el SMS llegue antes.

Estrategia de reintentos

Reintenta 429 y 502 con intervalos exponenciales. No repitas 400, 401, 402 ni 404 sin cambiar la petición. Una compra que falló con 409 o 502 no se cobró, así que puedes volver a comprar sin riesgo.

Función auxiliar en 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

Preguntas frecuentes

¿Se me cobra cuando una petición falla?

No. Las compras con error nunca generan cobro, y los pedidos sin SMS se reembolsan.

Páginas relacionadas

Recibe tu código de verificación ahora

Recarga desde 5 USD, elige la app y el país y lee el SMS en tu navegador. Se cobra solo cuando llega el código.

Obtener un número