Deutsch

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
  1. Bestellen Sie eine Nummer mit dem Service und dem Land. Speichern Sie die ID.
  2. Geben Sie die Nummer in der App ein und bitten Sie sie, die SMS zu senden.
  3. Lesen Sie die Bestellung alle 4 Sekunden, bis ein Code vorhanden ist.
  4. Benötigen Sie eine weitere SMS? Fordern Sie einen weiteren Code an und lesen Sie erneut. Fertig: Beenden Sie die Bestellung.
  5. 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:

400Fehlendes oder ungültiges Feld (missing_filter, bad_json).
401Kein Schlüssel oder ein falscher Schlüssel (no_key, bad_key).
402Nicht genug Guthaben (no_balance).
404Unbekannter Dienst, Land, Bestellung oder Endpunkt.
409Die Bestellung kann das jetzt nicht tun (has_code, not_ready, too_many_open, no_numbers).
429Mehr als 300 Anfragen in einer Minute (rate_limited).

SMS-Aktivierungsformat

BAD_KEYFehlender oder falscher API-Schlüssel.
BAD_ACTIONUnbekannte Aktion.
BAD_SERVICEUnbekannter Dienstcode.
BAD_COUNTRYDer Dienst wird in diesem Land nicht verkauft.
NO_BALANCENicht genug Guthaben.
NO_NUMBERSIm Moment ist keine Nummer verfügbar. Versuchen Sie es in einem Moment erneut.
NO_ACTIVATIONUnbekannte Aktivierungs-ID oder nicht Ihre.
EARLY_CANCEL_DENIEDEin Code ist bereits eingetroffen, daher kann die Aktivierung nicht storniert werden.
TOO_MANY_REQUESTSMehr als 300 Anfragen in einer Minute.
NO_ACTIVATIONS20 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
SMS-Verifizierungs-API für KakaoTalk-, LINE- und WeChat-Nummern