URL de base https://snsverify.com/api/v1
Tous les chemins sur cette page y sont relatifs. Les montants sont en dollars américains sous forme de chaînes avec deux décimales, les heures sont en UTC (ISO 8601).
Deux formats, un compte
Cette page décrit l'API REST avec JSON. Si votre outil utilise déjà le format d'activation SMS commun (handler_api.php avec les paramètres action=), utilisez l'API d'activation SMS. Les deux partagent votre clé API, les prix, les activations ouvertes et les remboursements.
Aperçu
Une API de vérification SMS permet à votre logiciel d'acheter un numéro de téléphone pour une application, d'attendre le SMS de vérification et de lire le code, sans ouvrir le site web. Chaque commande est une activation : un service, un pays, un numéro et une fenêtre de 20 minutes. Les commandes sans code sont intégralement remboursées à la fin de la fenêtre.
Les requêtes utilisent GET pour la lecture et POST pour les actions. Les corps POST peuvent être des champs de formulaire ou du JSON. Les réponses réussies sont des objets JSON ; les erreurs ont la même forme partout : {"error":{"code":"...","message":"..."}}.
Authentification
Créez une clé API dans la console sous Clé API. Elle n'est affichée qu'une fois ; nous ne conservons qu'une copie brouillée. Envoyez-la dans l'en-tête Authorization en tant que jeton porteur. Un paramètre key est également accepté pour les outils qui ne peuvent pas définir d'en-têtes.
Authorization: Bearer vfk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
La création d'une nouvelle clé remplace immédiatement l'ancienne. Les points de terminaison des services, des pays et des prix fonctionnent sans clé.
Erreurs
| HTTP | Signification |
|---|---|
| 400 | Champ manquant ou incorrect (missing_filter, bad_json). |
| 401 | Aucune clé ou clé incorrecte (no_key, bad_key). |
| 402 | Crédit insuffisant (no_balance). |
| 404 | Service, pays, commande ou point de terminaison inconnu. |
| 409 | La commande ne peut pas faire cela maintenant (has_code, not_ready, too_many_open, no_numbers). |
| 429 | Plus de 300 requêtes en une minute (rate_limited). |
Démarrage rapide
Commander un numéro WhatsApp UK avec curl, puis interroger la commande toutes les quelques secondes jusqu'à ce que le code arrive.
curl -X POST https://snsverify.com/api/v1/orders \ -H "Authorization: Bearer $SNSVERIFY_KEY" \ -d service=whatsapp -d country=gb
Python
import os, time, requests
API = "https://snsverify.com/api/v1"
H = {"Authorization": f"Bearer {os.environ['SNSVERIFY_KEY']}"}
order = requests.post(f"{API}/orders", headers=H,
data={"service": "whatsapp", "country": "gb"}).json()["order"]
print("Use this number:", order["phone"])
while True:
o = requests.get(f"{API}/orders/{order['id']}", headers=H).json()["order"]
if o["code"] or o["status"] in ("refunded", "canceled"):
break
time.sleep(4)
print("Code:", o["code"])Node.js
const API = "https://snsverify.com/api/v1";
const H = { Authorization: `Bearer ${process.env.SNSVERIFY_KEY}` };
const { order } = await fetch(`${API}/orders`, {
method: "POST", headers: H,
body: new URLSearchParams({ service: "telegram", country: "nl" }),
}).then((r) => r.json());
console.log("Use this number:", order.phone);
let o = order;
while (!o.code && !["refunded", "canceled"].includes(o.status)) {
await new Promise((r) => setTimeout(r, 4000));
({ order: o } = await fetch(`${API}/orders/${order.id}`, { headers: H }).then((r) => r.json()));
}
console.log("Code:", o.code);Limites de taux
300 requêtes par minute par clé, et jusqu'à 20 commandes en cours par compte. Interroger une commande toutes les 3 à 5 secondes est largement suffisant : la plupart des codes arrivent en moins d'une minute.
Statuts de commande
waitingLe numéro est ouvert et aucun code n'est encore arrivé.receivedAu moins un code est arrivé ; demandez-en un autre avec resend tant que la fenêtre est ouverte.finishedFermé après un code, par vous ou à la fin de la fenêtre.refundedLa fenêtre s'est terminée sans code ; le montant total est revenu sur votre crédit.canceledVous avez annulé avant qu'un code n'arrive ; le montant total est revenu sur votre crédit.
Points de terminaison
GET/services
Chaque code de service avec son nom, sa catégorie et son prix le plus bas. Aucune clé nécessaire.
{"services":[{"code":"whatsapp","name":"WhatsApp","category":"social","from":"0.31"}]}GET/countries
Chaque code de pays (ISO, minuscules) avec nom et indicatif. Aucune clé nécessaire.
{"countries":[{"code":"gb","name":"United Kingdom","dial_code":"44"}]}GET/prices?service=whatsapp&country=gb
Prix en USD. Filtrez par service, pays ou les deux. Aucune clé nécessaire.
{"prices":[{"service":"whatsapp","country":"gb","price":"0.94"}]}GET/balance
Votre crédit en USD.
{"balance":"25.00","currency":"USD"}POST/orders
Achète un numéro (HTTP 201). Renvoie la commande avec le numéro de téléphone et l'heure de fin de la fenêtre.
Corps: service=whatsapp&country=gb
{"order":{"id":"AC-7K2M9QX4PB","service":"whatsapp","country":"gb","phone":"+447700900123","price":"0.94","status":"waiting","code":null,"expires_at":"2026-11-04T12:20:00.000Z"},"window_minutes":20}GET/orders/AC-7K2M9QX4PB
Une commande avec son statut et chaque code reçu. Statuts : waiting, received, finished, refunded, canceled.
{"order":{"id":"AC-7K2M9QX4PB","status":"received","code":"482915","sms":"Your WhatsApp code: 482-915"}}GET/orders?status=open
Vos commandes en cours ; status=all renvoie les 100 dernières.
{"orders":[{"id":"AC-7K2M9QX4PB","status":"waiting"}]}POST/orders/AC-7K2M9QX4PB/resend
Demande un autre code sur le même numéro après le premier code, tant que la fenêtre est ouverte. Sans frais supplémentaires.
{"order":{"status":"received","waiting_for_resend":true}}POST/orders/AC-7K2M9QX4PB/finish
Ferme une commande qui a reçu son code.
{"order":{"status":"finished"}}POST/orders/AC-7K2M9QX4PB/cancel
Annule avant qu'un code n'arrive. Le montant total revient sur votre crédit.
{"order":{"status":"canceled","refunded":"0.94"}}