URL di base https://snsverify.com/api/v1
Ogni percorso in questa pagina è relativo a esso. Gli importi sono in dollari USA come stringhe con due decimali, gli orari sono in UTC (ISO 8601).
Due formati, un account
Questa pagina descrive l'API REST con JSON. Se il tuo strumento utilizza già il formato comune di attivazione SMS (handler_api.php con parametri action=), usa l'API di attivazione SMS. Entrambi condividono la tua chiave API, i prezzi, le attivazioni aperte e i rimborsi.
Panoramica
Un'API di verifica SMS permette al tuo software di acquistare un numero di telefono per un'app, attendere l'SMS di verifica e leggere il codice, senza aprire il sito web. Ogni ordine è un'attivazione: un servizio, un paese, un numero e una finestra di 20 minuti. Gli ordini senza codice vengono rimborsati integralmente alla fine della finestra.
Le richieste usano GET per la lettura e POST per le azioni. I corpi POST possono essere campi modulo o JSON. Le risposte di successo sono oggetti JSON; gli errori hanno la stessa forma ovunque: {"error":{"code":"...","message":"..."}}.
Autenticazione
Crea una chiave API nella console sotto Chiave API. Viene mostrata una volta; conserviamo solo una copia cifrata. Inviarla nell'header Authorization come bearer token. È accettato anche un parametro key per strumenti che non possono impostare header.
Authorization: Bearer vfk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Creare una nuova chiave sostituisce immediatamente la vecchia. Gli endpoint di servizi, paesi e prezzi funzionano senza chiave.
Errori
| HTTP | Significato |
|---|---|
| 400 | Campo mancante o errato (missing_filter, bad_json). |
| 401 | Nessuna chiave o chiave errata (no_key, bad_key). |
| 402 | Credito insufficiente (no_balance). |
| 404 | Servizio, paese, ordine o endpoint sconosciuto. |
| 409 | L'ordine non può eseguire quell'azione ora (has_code, not_ready, too_many_open, no_numbers). |
| 429 | Più di 300 richieste in un minuto (rate_limited). |
Guida rapida
Ordina un numero WhatsApp UK con curl, poi interroga l'ordine ogni pochi secondi finché il codice non è disponibile.
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);Limiti di frequenza
300 richieste al minuto per chiave e fino a 20 ordini aperti per account. Interrogare un ordine ogni 3-5 secondi è sufficiente: la maggior parte dei codici arriva entro un minuto.
Stati degli ordini
waitingIl numero è aperto e nessun codice è ancora arrivato.receivedÈ arrivato almeno un codice; richiedine un altro con resend mentre la finestra è aperta.finishedChiuso dopo un codice, da te o alla fine della finestra.refundedLa finestra è terminata senza codice; l'intero importo è tornato al tuo credito.canceledHai annullato prima che arrivasse un codice; l'intero importo è tornato al tuo credito.
Endpoint
GET/services
Ogni codice servizio con il suo nome, categoria e prezzo più basso. Nessuna chiave necessaria.
{"services":[{"code":"whatsapp","name":"WhatsApp","category":"social","from":"0.31"}]}GET/countries
Ogni codice paese (ISO, minuscolo) con nome e prefisso. Nessuna chiave necessaria.
{"countries":[{"code":"gb","name":"United Kingdom","dial_code":"44"}]}GET/prices?service=whatsapp&country=gb
Prezzi in USD. Filtra per servizio, paese o entrambi. Nessuna chiave necessaria.
{"prices":[{"service":"whatsapp","country":"gb","price":"0.94"}]}GET/balance
Il tuo credito in USD.
{"balance":"25.00","currency":"USD"}POST/orders
Acquista un numero (HTTP 201). Restituisce l'ordine con il numero di telefono e l'ora di fine finestra.
Corpo: 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
Un ordine con il suo stato e ogni codice ricevuto. Stati: waiting, received, finished, refunded, canceled.
{"order":{"id":"AC-7K2M9QX4PB","status":"received","code":"482915","sms":"Your WhatsApp code: 482-915"}}GET/orders?status=open
I tuoi ordini aperti; status=all restituisce gli ultimi 100.
{"orders":[{"id":"AC-7K2M9QX4PB","status":"waiting"}]}POST/orders/AC-7K2M9QX4PB/resend
Richiede un altro codice sullo stesso numero dopo il primo codice, mentre la finestra è aperta. Nessun costo aggiuntivo.
{"order":{"status":"received","waiting_for_resend":true}}POST/orders/AC-7K2M9QX4PB/finish
Chiude un ordine che ha ricevuto il suo codice.
{"order":{"status":"finished"}}POST/orders/AC-7K2M9QX4PB/cancel
Annulla prima che arrivi un codice. L'intero importo torna al tuo credito.
{"order":{"status":"canceled","refunded":"0.94"}}