Italiano

API di verifica SMS

Ultima modifica il 2026/11/03

Esecuzione di query all'API

Due API condividono una chiave: un'API REST con JSON e il formato di attivazione SMS che molti strumenti già utilizzano. Crea la chiave nella pagina Chiave API della console; viene mostrata una volta. Limite: 300 richieste al minuto per chiave. Ogni ordine ha una finestra di codice di 20 minuti, la stessa della console.

# REST API (JSON)
curl https://virtualsns.com/api/v1/balance -H "Authorization: Bearer YOUR_KEY"

# SMS activation format
curl "https://virtualsns.com/stubs/handler_api.php?api_key=YOUR_KEY&action=getBalance"
Codici di servizio e paese

I codici di servizio sono i nomi negli indirizzi delle pagine del nostro servizio, ad esempio kakaotalk, line, wechat, zalo, naver, shopee e whatsapp. I codici paese sono codici ISO in minuscolo: kr, jp, id, ph, vn, th, us. GET /services e GET /countries restituiscono le liste complete.

Flusso tipico
  1. Ordina un numero con il servizio e il paese. Salva l'id.
  2. Inserisci il numero nell'app e chiedile di inviare l'SMS.
  3. Leggi l'ordine ogni 4 secondi finché non arriva un codice.
  4. Hai bisogno di un altro SMS? Richiedi un altro codice, poi leggi di nuovo. Fatto: completa l'ordine.
  5. Nessun codice? Annulla per un rimborso completo. Senza una chiamata, il rimborso avviene automaticamente quando la finestra termina.

Python

import os, time, requests

API = "https://virtualsns.com/api/v1"
H = {"Authorization": f"Bearer {os.environ['VIRTUALSNS_KEY']}"}

order = requests.post(f"{API}/orders", headers=H,
    data={"service": "kakaotalk", "country": "kr"}).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://virtualsns.com/api/v1";
const H = { Authorization: `Bearer ${process.env.VIRTUALSNS_KEY}` };

const { order } = await fetch(`${API}/orders`, {
  method: "POST", headers: H,
  body: new URLSearchParams({ service: "line", country: "jp" }),
}).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);
Restituisci codici di errore

REST API

Gli errori vengono restituiti come JSON: {"error":{"code","message"}} con questi stati HTTP:

400Campo mancante o errato (missing_filter, bad_json).
401Nessuna chiave o chiave errata (no_key, bad_key).
402Credito insufficiente (no_balance).
404Servizio, paese, ordine o endpoint sconosciuto.
409L'ordine non può eseguire questa operazione ora (has_code, not_ready, too_many_open, no_numbers).
429Più di 300 richieste in un minuto (rate_limited).

Formato di attivazione SMS

BAD_KEYChiave API mancante o errata.
BAD_ACTIONAzione sconosciuta.
BAD_SERVICECodice servizio sconosciuto.
BAD_COUNTRYIl servizio non è venduto in quel paese.
NO_BALANCECredito insufficiente.
NO_NUMBERSNessun numero disponibile al momento. Riprova tra un momento.
NO_ACTIVATIONID di attivazione sconosciuto o non tuo.
EARLY_CANCEL_DENIEDUn codice è già arrivato, quindi l'attivazione non può essere annullata.
TOO_MANY_REQUESTSPiù di 300 richieste in un minuto.
NO_ACTIVATIONSSono già aperte 20 attivazioni.

Metodi REST API

https://virtualsns.com/api/v1

GET/services

Ogni codice servizio con il suo nome, tipo e prezzo più basso. Nessuna chiave necessaria.

curl "https://virtualsns.com/api/v1/services"
{"services":[{"code":"kakaotalk","name":"KakaoTalk","category":"social","from":"0.06"}]}
GET/countries

Ogni codice paese (ISO, minuscolo) con il suo nome e prefisso telefonico. Nessuna chiave necessaria.

curl "https://virtualsns.com/api/v1/countries"
{"countries":[{"code":"kr","name":"South Korea","dial_code":"82"}]}
GET/prices

Prezzi in USD. Aggiungi servizio, paese o entrambi. Nessuna chiave necessaria.

curl "https://virtualsns.com/api/v1/prices?service=line&country=jp"
{"prices":[{"service":"line","country":"jp","price":"5.40"}]}
GET/balance

Il tuo credito in USD.

curl "https://virtualsns.com/api/v1/balance" \
  -H "Authorization: Bearer YOUR_KEY"
{"balance":"25.00","currency":"USD"}
POST/orders

Acquista un numero (201). Restituisce l'ordine con il numero di telefono e l'ora in cui termina la finestra.

curl -X POST https://virtualsns.com/api/v1/orders \
  -H "Authorization: Bearer YOUR_KEY" \
  -d service=kakaotalk -d country=kr
{"order":{"id":"AC-7K2M9QX4PB","service":"kakaotalk","country":"kr","phone":"+821023456789","status":"waiting","code":null,"expires_at":"2026-11-03T12:20:00.000Z"},"window_minutes":20}
GET/orders/AC-7K2M9QX4PB

Un ordine con il suo stato e ogni codice ricevuto. Stati: in attesa, ricevuto, completato, rimborsato, annullato.

curl "https://virtualsns.com/api/v1/orders/AC-7K2M9QX4PB" \
  -H "Authorization: Bearer YOUR_KEY"
{"order":{"id":"AC-7K2M9QX4PB","status":"received","code":"482193","sms":"[Kakao] Verification code [482193]"}}
GET/orders

I tuoi ordini aperti (status=all per gli ultimi 100).

curl "https://virtualsns.com/api/v1/orders?status=open" \
  -H "Authorization: Bearer YOUR_KEY"
{"orders":[...]}
POST/orders/AC-7K2M9QX4PB/resend

Richiede un altro codice sullo stesso numero, dopo il primo codice e mentre la finestra è aperta. Nessun costo aggiuntivo.

curl -X POST https://virtualsns.com/api/v1/orders/AC-7K2M9QX4PB/resend \
  -H "Authorization: Bearer YOUR_KEY"
{"order":{"status":"received","waiting_for_resend":true}}
POST/orders/AC-7K2M9QX4PB/finish

Chiude un ordine che ha ricevuto il suo codice.

curl -X POST https://virtualsns.com/api/v1/orders/AC-7K2M9QX4PB/finish \
  -H "Authorization: Bearer YOUR_KEY"
{"order":{"status":"finished"}}
POST/orders/AC-7K2M9QX4PB/cancel

Annulla prima che arrivi un codice. L'intero prezzo torna al tuo credito.

curl -X POST https://virtualsns.com/api/v1/orders/AC-7K2M9QX4PB/cancel \
  -H "Authorization: Bearer YOUR_KEY"
{"order":{"status":"canceled","refunded":"8.40"}}

Metodi del formato di attivazione SMS

https://virtualsns.com/stubs/handler_api.php

Metodo getBalance

Il tuo credito in USD.

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getBalance
ACCESS_BALANCE:12.50
Metodo getServicesList

Codici servizio che puoi acquistare (JSON).

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getServicesList
{"status":"success","services":[{"code":"line","name":"LINE"}]}
Metodo getCountries

Codici paese (ISO, minuscolo) e prefissi telefonici (JSON).

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getCountries
{"jp":{"name":"Japan","dial":"81"}}
Metodo getPrices

Prezzi in USD per paese e servizio. Entrambi i filtri sono opzionali.

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getPrices&service=line&country=jp
{"jp":{"line":{"cost":5.4,"count":100}}}
Metodo getNumber

Acquista un numero. Restituisce l'ID di attivazione e il numero con il suo codice paese.

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getNumber&service=line&country=jp
ACCESS_NUMBER:AC-7K2M9QX4PB:819012345678
Metodo getStatus

STATUS_WAIT_CODE (nessun codice ancora), STATUS_OK:<code>, STATUS_WAIT_RETRY:<last code> (richiesto un altro codice), STATUS_CANCEL (annullato o rimborsato).

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getStatus&id=AC-7K2M9QX4PB
STATUS_OK:482913
Metodo setStatus

status=1 pronto (ACCESS_READY), 3 altro codice (ACCESS_RETRY_GET), 6 completato (ACCESS_ACTIVATION), 8 annullato con rimborso completo se non è arrivato alcun codice (ACCESS_CANCEL).

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=setStatus&id=AC-7K2M9QX4PB&status=3
ACCESS_RETRY_GET
API di verifica SMS per numeri KakaoTalk, LINE e WeChat