SNSOTP OTP API
Un'API REST per la verifica via SMS. Ordina un numero per uno dei 182 servizi in uno dei 154 paesi, leggi il codice monouso dall'ordine e ottieni il rimborso completo se nessun codice arriva entro 20 minuti.
Ogni endpoint accetta parametri come parametri di query (GET) o come campi di form o JSON (POST). Le risposte sono in JSON; i soldi sono una stringa USD con due decimali e gli orari sono ISO 8601 in UTC.
https://snsotp.com/api/v1
La tua chiave API dalla console, inviata come Authorization: Bearer sok_...
Autenticazione
Crea una chiave nella pagina API della console. Inizia con sok_ e viene mostrata una sola volta, quindi conservala in una variabile d'ambiente. Sostituire la chiave interrompe immediatamente quella vecchia. Le chiamate a /services, /countries e /prices funzionano senza chiave.
Authorization: Bearer sok_your_key_here
La chiave può anche essere inviata come parametro di query o campo di form key, utile per strumenti che non possono impostare gli header.
Guida rapida
Ordina un numero, dagli all'app, quindi controlla l'ordine fino a quando il codice è presente. Lo stesso flusso in quattro linguaggi:
# 1. Order a number for whatsapp in US
curl -X POST https://snsotp.com/api/v1/orders \
-H "Authorization: Bearer $SNSOTP_KEY" \
-d service=whatsapp -d country=us
# 2. Read the code (poll every 3 to 5 seconds)
curl https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB \
-H "Authorization: Bearer $SNSOTP_KEY"GET/services
Ogni servizio con il suo codice e il prezzo più basso · senza chiave
Ogni servizio che puoi ordinare, con il suo codice (usalo come service in altre chiamate), la sua categoria e il prezzo più basso tra i paesi. Non è necessaria la chiave.
curl https://snsotp.com/api/v1/services
{
"services": [
{ "code": "whatsapp", "name": "WhatsApp", "category": "social", "from": "0.09" },
{ "code": "telegram", "name": "Telegram", "category": "social", "from": "0.03" }
]
}GET/countries
Ogni paese con il suo codice e prefisso telefonico · senza chiave
Ogni paese con il suo codice (ISO 3166 alpha-2 in minuscolo, usalo come country) e il suo prefisso telefonico. Non è necessaria la chiave.
curl https://snsotp.com/api/v1/countries
{
"countries": [
{ "code": "us", "name": "United States", "dial_code": "1" },
{ "code": "gb", "name": "United Kingdom", "dial_code": "44" }
]
}GET/prices
Prezzi per un servizio, un paese o entrambi · senza chiave
Il prezzo per ordine per un servizio in ogni paese, un paese per ogni servizio o una coppia. Invia almeno un filtro. Non è necessaria la chiave.
Parametri
servicestring
Codice del servizio, ad esempio whatsapp
countrystring
Codice del paese, ad esempio us
curl "https://snsotp.com/api/v1/prices?service=whatsapp&country=us"
{
"prices": [
{ "service": "whatsapp", "country": "us", "price": "0.93" }
]
}GET/balance
Il tuo credito in USD · chiave richiesta
Il tuo credito in USD.
curl https://snsotp.com/api/v1/balance \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"balance": "42.50",
"currency": "USD"
}POST/orders
Ordina un numero per un servizio e un paese · chiave richiesta
Ordina un numero e addebita il suo prezzo. La risposta contiene il numero completo (phone) e senza il prefisso (number). L'ordine rimane aperto per 20 minuti; se nessun codice arriva in quel tempo, il prezzo viene restituito automaticamente al tuo credito. Risposta stato 201.
Parametri
servicestringrequired
Codice del servizio da GET /services
countrystringrequired
Codice del paese da GET /countries
curl -X POST https://snsotp.com/api/v1/orders \ -H "Authorization: Bearer $SNSOTP_KEY" \ -d service=whatsapp -d country=us
{
"order": {
"id": "OT-7K2M9QX4PB",
"service": "whatsapp",
"country": "us",
"phone": "+13475550182",
"number": "3475550182",
"dial_code": "1",
"price": "0.93",
"status": "waiting",
"code": null,
"sms": null,
"codes": [],
"expires_at": "2026-11-03T12:20:00.000Z"
},
"window_minutes": 20
}GET/orders/{id}
Stato, codice e testo SMS di un ordine · chiave richiesta
Un ordine con il suo stato, l'ultimo codice, l'ultimo SMS e ogni codice ricevuto finora. Controlla ogni 3-5 secondi mentre lo stato è waiting.
Parametri
idpathrequired
ID ordine da POST /orders
curl https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"order": {
"id": "OT-7K2M9QX4PB",
"service": "whatsapp",
"country": "us",
"phone": "+13475550182",
"number": "3475550182",
"price": "0.93",
"status": "received",
"code": "284913",
"sms": "Your WhatsApp code is 284913",
"expires_at": "2026-11-03T12:20:00.000Z"
}
}GET/orders
I tuoi ordini aperti (o tutti con status=all) · chiave richiesta
I tuoi ordini aperti, dal più recente. Aggiungi status=all per gli ordini recenti in ogni stato.
Parametri
statusstring
open (default) o all
limitnumber
Da 1 a 100, default 50
curl "https://snsotp.com/api/v1/orders?status=open" \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"orders": [
{ "id": "OT-7K2M9QX4PB", "service": "whatsapp", "status": "received", "code": "284913" }
]
}POST/orders/{id}/resend
Un altro codice sullo stesso numero · chiave richiesta
Richiede un altro codice sullo stesso numero dopo il primo codice, all'interno della finestra, senza costi aggiuntivi. Quindi attiva un nuovo SMS nell'app; waiting_for_resend è vero fino al suo arrivo.
Parametri
idpathrequired
ID ordine
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/resend \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"order": { "id": "OT-7K2M9QX4PB", "status": "received", "waiting_for_resend": true }
}POST/orders/{id}/finish
Chiudi un ordine dopo aver utilizzato il codice · chiave richiesta
Chiude un ordine che ha ricevuto un codice una volta che lo hai usato. Il completamento è opzionale: gli ordini aperti si chiudono da soli quando la finestra termina.
Parametri
idpathrequired
ID ordine
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/finish \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"order": { "id": "OT-7K2M9QX4PB", "status": "finished" }
}POST/orders/{id}/cancel
Annulla prima di ricevere un codice, rimborso completo · chiave richiesta
Annulla un ordine prima che arrivi un codice e restituisce immediatamente l'intero prezzo al tuo credito. Dopo un codice, l'annullamento risponde has_code.
Parametri
idpathrequired
ID ordine
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/cancel \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"order": { "id": "OT-7K2M9QX4PB", "status": "canceled", "refunded": "0.93" }
}Stato dell'ordine
waitingIl numero è pronto e nessun SMS è ancora arrivato. L'annullamento è possibile.receivedÈ arrivato almeno un codice. code e sms contengono l'ultimo.finishedChiuso dopo un codice, per completamento o quando la finestra è terminata.refundedNessun codice è arrivato in 20 minuti. L'intero prezzo è tornato nel tuo credito.canceledAnnullato prima di un codice. L'intero prezzo è tornato nel tuo credito.
Errori
Gli errori utilizzano lo stato HTTP e un corpo con un codice stabile e un messaggio leggibile.
- 400
missing_filter, bad_jsonManca un valore richiesto o il corpo non può essere letto. - 401
no_key, bad_keyLa chiave manca, è errata o è stata eliminata. - 402
no_balanceCredito insufficiente per questo ordine. Aggiungi credito nella console. - 404
unknown_service, unknown_country, not_sold, not_foundIl codice o l'ordine non esiste, o la coppia non è venduta. - 409
too_many_open, has_code, not_ready, no_numbersL'azione non corrisponde allo stato dell'ordine, o nessun numero è disponibile al momento (nessun addebito). - 429
rate_limitedPiù di 300 richieste in un minuto con una chiave.
{
"error": {
"code": "no_balance",
"message": "Not enough credit. Add credit in the console."
}
}Limiti di velocità
- 300 richieste al minuto per chiave. Oltre questo limite, l'API risponde 429 rate_limited per il resto del minuto.
- Fino a 20 ordini aperti per account. Completa o annulla uno per aprirne un altro.
- Interroga un ordine ogni 3-5 secondi; i codici di solito arrivano entro un minuto.
Formato di attivazione SMS
Gli script scritti per il formato comune handler_api.php funzionano con la stessa chiave API: cambia l'indirizzo di base in https://snsotp.com/stubs/handler_api.php e mantieni le azioni. I codici di servizio e paese sono gli stessi dell'API REST.
getBalanceACCESS_BALANCE:42.50
getServicesListLista JSON dei servizi
getCountriesMappa JSON dei paesi
getPricesservice, country (opzionale)JSON {country: {service: {cost, count}}}
getNumberservice, countryACCESS_NUMBER:<id>:<phone>
getStatusidSTATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<code>, STATUS_CANCEL
setStatusid, status 1 / 3 / 6 / 8ACCESS_READY, ACCESS_RETRY_GET, ACCESS_ACTIVATION, ACCESS_CANCEL
curl "https://snsotp.com/stubs/handler_api.php\ ?api_key=$SNSOTP_KEY&action=getNumber\ &service=telegram&country=gb" ACCESS_NUMBER:OT-3QF8ZK2W7M:447700900182
Valori di setStatus: 1 pronto, 3 altro codice, 6 termina, 8 annulla con rimborso completo.