SMS-Verifizierungs-API
Zuletzt geändert am 2026/11/03
Abfragen an die API ausführen
Zwei APIs teilen sich einen Schlüssel: eine REST-API mit JSON und das SMS-Aktivierungsformat, das viele Tools bereits verwenden. Erstellen Sie den Schlüssel auf der API-Schlüssel Seite der Konsole; er wird einmal angezeigt. Limit: 300 Anfragen pro Minute pro Schlüssel. Jede Bestellung hat ein 20-minütiges Code-Fenster, das gleiche wie in der Konsole.
# 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"
Service- und Ländercodes
Servicecodes sind die Namen in unseren Service-Seitenadressen, zum Beispiel kakaotalk, line, wechat, zalo, naver, shopee und whatsapp. Ländercodes sind ISO-Codes in Kleinbuchstaben: kr, jp, id, ph, vn, th, us. GET /services und GET /countries geben die vollständigen Listen zurück.
Typischer Ablauf
- Bestellen Sie eine Nummer mit dem Service und dem Land. Speichern Sie die ID.
- Geben Sie die Nummer in der App ein und bitten Sie sie, die SMS zu senden.
- Lesen Sie die Bestellung alle 4 Sekunden, bis ein Code vorhanden ist.
- Benötigen Sie eine weitere SMS? Fordern Sie einen weiteren Code an und lesen Sie erneut. Fertig: Beenden Sie die Bestellung.
- Kein Code? Stornieren Sie für eine vollständige Rückerstattung. Ohne einen Anruf erfolgt die Rückerstattung automatisch, wenn das Fenster endet.
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);Fehlercodes zurückgeben
REST API
Fehler kommen als JSON: {"error":{"code","message"}} mit diesen HTTP-Statuscodes:
| 400 | Fehlendes oder ungültiges Feld (missing_filter, bad_json). |
| 401 | Kein Schlüssel oder ein falscher Schlüssel (no_key, bad_key). |
| 402 | Nicht genug Guthaben (no_balance). |
| 404 | Unbekannter Dienst, Land, Bestellung oder Endpunkt. |
| 409 | Die Bestellung kann das jetzt nicht tun (has_code, not_ready, too_many_open, no_numbers). |
| 429 | Mehr als 300 Anfragen in einer Minute (rate_limited). |
SMS-Aktivierungsformat
| BAD_KEY | Fehlender oder falscher API-Schlüssel. |
| BAD_ACTION | Unbekannte Aktion. |
| BAD_SERVICE | Unbekannter Dienstcode. |
| BAD_COUNTRY | Der Dienst wird in diesem Land nicht verkauft. |
| NO_BALANCE | Nicht genug Guthaben. |
| NO_NUMBERS | Im Moment ist keine Nummer verfügbar. Versuchen Sie es in einem Moment erneut. |
| NO_ACTIVATION | Unbekannte Aktivierungs-ID oder nicht Ihre. |
| EARLY_CANCEL_DENIED | Ein Code ist bereits eingetroffen, daher kann die Aktivierung nicht storniert werden. |
| TOO_MANY_REQUESTS | Mehr als 300 Anfragen in einer Minute. |
| NO_ACTIVATIONS | 20 Aktivierungen sind bereits offen. |
REST API-Methoden
https://virtualsns.com/api/v1
GET/services
Jeder Dienstcode mit seinem Namen, Typ und niedrigsten Preis. Kein Schlüssel benötigt.
curl "https://virtualsns.com/api/v1/services"
{"services":[{"code":"kakaotalk","name":"KakaoTalk","category":"social","from":"0.06"}]}GET/countries
Jeder Ländercode (ISO, Kleinbuchstaben) mit seinem Namen und Vorwahl. Kein Schlüssel benötigt.
curl "https://virtualsns.com/api/v1/countries"
{"countries":[{"code":"kr","name":"South Korea","dial_code":"82"}]}GET/prices
Preise in USD. Fügen Sie Dienst, Land oder beide hinzu. Kein Schlüssel benötigt.
curl "https://virtualsns.com/api/v1/prices?service=line&country=jp"
{"prices":[{"service":"line","country":"jp","price":"5.40"}]}GET/balance
Ihr Guthaben in USD.
curl "https://virtualsns.com/api/v1/balance" \ -H "Authorization: Bearer YOUR_KEY"
{"balance":"25.00","currency":"USD"}POST/orders
Kauft eine Nummer (201). Gibt die Bestellung mit der Telefonnummer und der Zeit zurück, zu der das Fenster endet.
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
Eine Bestellung mit ihrem Status und jedem empfangenen Code. Status: wartend, empfangen, beendet, erstattet, storniert.
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
Ihre offenen Bestellungen (status=all für die letzten 100).
curl "https://virtualsns.com/api/v1/orders?status=open" \ -H "Authorization: Bearer YOUR_KEY"
{"orders":[...]}POST/orders/AC-7K2M9QX4PB/resend
Fordert einen weiteren Code für dieselbe Nummer an, nach dem ersten Code und während das Fenster geöffnet ist. Keine zusätzliche Gebühr.
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
Schließt eine Bestellung ab, die ihren Code erhalten hat.
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
Storniert, bevor ein Code eintrifft. Der volle Preis wird auf Ihr Guthaben zurückerstattet.
curl -X POST https://virtualsns.com/api/v1/orders/AC-7K2M9QX4PB/cancel \ -H "Authorization: Bearer YOUR_KEY"
{"order":{"status":"canceled","refunded":"8.40"}}SMS-Aktivierungsformat-Methoden
https://virtualsns.com/stubs/handler_api.php
Methode getBalance
Ihr Guthaben in USD.
GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getBalance
ACCESS_BALANCE:12.50
Methode getServicesList
Dienstcodes, die Sie kaufen können (JSON).
GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getServicesList
{"status":"success","services":[{"code":"line","name":"LINE"}]}Methode getCountries
Ländercodes (ISO, Kleinbuchstaben) und Vorwahlen (JSON).
GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getCountries
{"jp":{"name":"Japan","dial":"81"}}Methode getPrices
Preise in USD pro Land und Dienst. Beide Filter sind optional.
GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getPrices&service=line&country=jp
{"jp":{"line":{"cost":5.4,"count":100}}}Methode getNumber
Kauft eine Nummer. Gibt die Aktivierungs-ID und die Nummer mit ihrem Ländercode zurück.
GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getNumber&service=line&country=jp
ACCESS_NUMBER:AC-7K2M9QX4PB:819012345678
Methode getStatus
STATUS_WAIT_CODE (noch kein Code), STATUS_OK:<code>, STATUS_WAIT_RETRY:<letzter Code> (ein weiterer Code angefordert), STATUS_CANCEL (storniert oder erstattet).
GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getStatus&id=AC-7K2M9QX4PB
STATUS_OK:482913
Methode setStatus
status=1 bereit (ACCESS_READY), 3 weiterer Code (ACCESS_RETRY_GET), 6 abgeschlossen (ACCESS_ACTIVATION), 8 Stornierung mit voller Rückerstattung, wenn kein Code eingegangen ist (ACCESS_CANCEL).
GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=setStatus&id=AC-7K2M9QX4PB&status=3
ACCESS_RETRY_GET