SMS Nitro

Errori e limiti d’uso

Gli errori usano codici HTTP standard e un corpo JSON con il messaggio in detail. Quasi sempre dicono esattamente cosa fare dopo.

Cosa significa un 409 dalla API di SMS Nitro?

Il 409 indica che al momento non c’è un numero disponibile per quell’app e quel paese. Prova un altro paese, oppure indica l’altro server in server, e acquista di nuovo. Non viene addebitato nulla.

Codici di stato

HTTPSignificatoCosa fare
400Richiesta non possibile ora: paese non venduto per l’app, ordine già chiuso, numero scaduto, annullamento troppo prestoLeggi detail e correggi. Annullamento presto: attendi 2 minuti
401Chiave API assente, non valida o revocataControlla l’intestazione e la chiave nella dashboard
402Saldo insufficienteRicarica e riprova
404Ordine non trovato, oppure app non disponibile su quel serverControlla id, product e server
409Nessun numero disponibile in questo momentoProva un altro paese o server
422Corpo o parametro non valido. Qui detail è un elenco di errori per campoCorreggi i campi elencati in detail
429Limite di richieste raggiuntoAttendi e riprova con intervalli crescenti
502Fornitura momentaneamente non disponibileRiprova tra qualche secondo
Corpo dell’errore
HTTP/1.1 402 Payment Required
Content-Type: application/json

{ "detail": "Insufficient balance" }

Limiti d’uso

  • POST /v1/orders: 500 acquisti al minuto per account e per IP.
  • POST /v1/orders/{id}/resend: 30 richieste al minuto.
  • Controllo dello stato: basta un GET per ordine ogni 3-5 secondi. Interrogare più spesso non fa arrivare prima l’SMS.

Strategia di nuovi tentativi

Ripeti 429 e 502 con intervalli esponenziali. Non ripetere 400, 401, 402 o 404 senza modificare la richiesta. Un acquisto fallito con 409 o 502 non è stato addebitato, quindi puoi riacquistare senza rischi.

Funzione di supporto in 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

Domande frequenti

Mi viene addebitato qualcosa se una richiesta fallisce?

No. Gli acquisti con errore non generano mai addebiti, e gli ordini senza SMS vengono rimborsati.

Pagine correlate

Ricevi subito il tuo codice di verifica

Ricarica da 5 USD, scegli l'app e il paese e leggi l'SMS nel browser. Paghi solo quando il codice arriva.

Ottieni un numero