SMS Nitro

Erreurs et limites d’utilisation

Les erreurs utilisent les codes HTTP standard et un corps JSON avec le message dans detail. La plupart indiquent précisément quoi faire ensuite.

Que signifie un 409 de l’API SMS Nitro ?

Un 409 indique qu’aucun numéro n’est disponible pour l’instant pour cette application et ce pays. Essayez un autre pays, ou indiquez l’autre serveur dans server, puis achetez à nouveau. Rien n’est débité.

Codes de statut

HTTPSignificationQue faire
400Demande impossible pour l’instant : pays non proposé pour l’application, commande déjà clôturée, numéro expiré, annulation trop tôtLisez detail et corrigez. Annulation trop tôt : attendez 2 minutes
401Clé d’API absente, invalide ou révoquéeVérifiez l’en-tête et la clé dans le tableau de bord
402Solde insuffisantRechargez puis réessayez
404Commande introuvable, ou application indisponible sur ce serveurVérifiez l’id, le product et le server
409Aucun numéro disponible pour l’instantEssayez un autre pays ou serveur
422Corps ou paramètre invalide. Ici, detail est une liste d’erreurs par champCorrigez les champs listés dans detail
429Limite de requêtes atteintePatientez et réessayez avec des délais croissants
502Approvisionnement momentanément indisponibleRéessayez dans quelques secondes
Corps de l’erreur
HTTP/1.1 402 Payment Required
Content-Type: application/json

{ "detail": "Insufficient balance" }

Limites d’utilisation

  • POST /v1/orders : 500 achats par minute par compte et par IP.
  • POST /v1/orders/{id}/resend : 30 requêtes par minute.
  • Suivi du statut : un GET par commande toutes les 3 à 5 secondes suffit. Interroger plus vite ne fait pas arriver le SMS plus tôt.

Stratégie de nouvelles tentatives

Réessayez les 429 et 502 avec des délais exponentiels. Ne répétez pas un 400, 401, 402 ou 404 sans modifier la requête. Un achat qui a échoué en 409 ou 502 n’a pas été débité : vous pouvez racheter sans risque.

Fonction utilitaire 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

Questions fréquentes

Suis-je débité quand une requête échoue ?

Non. Les achats en erreur ne génèrent jamais de débit, et les commandes sans SMS sont remboursées.

Pages associées

Recevez votre code de vérification maintenant

Créditez à partir de 5 USD, choisissez l'application et le pays, lisez le SMS dans votre navigateur. Débité uniquement quand le code arrive.

Obtenir un numéro