Polski

API weryfikacji SMS

Ostatnia modyfikacja 2026/11/03

Wykonywanie zapytań do API

Dwa API współdzielą jeden klucz: REST API z JSON oraz format aktywacji SMS, który wiele narzędzi już używa. Utwórz klucz na stronie Klucz API w konsoli; jest pokazywany tylko raz. Limit: 300 zapytań na minutę na klucz. Każde zamówienie ma 20-minutowe okno na kod, takie samo jak w konsoli.

# 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"
Kody usług i krajów

Kody usług to nazwy w adresach stron naszych usług, na przykład kakaotalk, line, wechat, zalo, naver, shopee i whatsapp. Kody krajów to kody ISO małymi literami: kr, jp, id, ph, vn, th, us. GET /services i GET /countries zwracają pełne listy.

Typowy przepływ
  1. Zamów numer z usługą i krajem. Zapisz id.
  2. Wprowadź numer w aplikacji i poproś o wysłanie SMS.
  3. Czytaj zamówienie co 4 sekundy, aż pojawi się kod.
  4. Potrzebujesz kolejnego SMS? Poproś o kolejny kod, a następnie przeczytaj ponownie. Gotowe: zakończ zamówienie.
  5. Brak kodu? Anuluj, aby otrzymać pełny zwrot pieniędzy. Bez wywołania zwrot nastąpi automatycznie po zakończeniu okna czasowego.

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);
Zwróć kody błędów

REST API

Błędy są zwracane jako JSON: {"error":{"code","message"}} z następującymi statusami HTTP:

400Brakujące lub nieprawidłowe pole (missing_filter, bad_json).
401Brak klucza lub nieprawidłowy klucz (no_key, bad_key).
402Niewystarczające saldo (no_balance).
404Nieznana usługa, kraj, zamówienie lub punkt końcowy.
409Zamówienie nie może teraz tego zrobić (has_code, not_ready, too_many_open, no_numbers).
429Ponad 300 żądań w ciągu minuty (rate_limited).

Format aktywacji SMS

BAD_KEYBrakujący lub nieprawidłowy klucz API.
BAD_ACTIONNieznana akcja.
BAD_SERVICENieznany kod usługi.
BAD_COUNTRYUsługa nie jest sprzedawana w tym kraju.
NO_BALANCENiewystarczające saldo.
NO_NUMBERSBrak dostępnego numeru w tej chwili. Spróbuj ponownie za chwilę.
NO_ACTIVATIONNieznane ID aktywacji lub nie należy do Ciebie.
EARLY_CANCEL_DENIEDKod już dotarł, więc aktywacja nie może zostać anulowana.
TOO_MANY_REQUESTSPonad 300 żądań w ciągu minuty.
NO_ACTIVATIONS20 aktywacji jest już otwartych.

Metody REST API

https://virtualsns.com/api/v1

GET/services

Każdy kod usługi z nazwą, rodzajem i najniższą ceną. Klucz nie jest wymagany.

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

Każdy kod kraju (ISO, małe litery) z nazwą i kodem wybierania. Klucz nie jest wymagany.

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

Ceny w USD. Dodaj usługę, kraj lub oba. Klucz nie jest wymagany.

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

Twoje saldo w USD.

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

Kupuje numer (201). Zwraca zamówienie z numerem telefonu i czasem zakończenia okna czasowego.

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

Jedno zamówienie z jego statusem i każdym otrzymanym kodem. Statusy: oczekiwanie, otrzymane, zakończone, zwrócone, anulowane.

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

Twoje otwarte zamówienia (status=all dla ostatnich 100).

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

Prosi o kolejny kod na tym samym numerze, po pierwszym kodzie i podczas gdy okno czasowe jest otwarte. Bez dodatkowych opłat.

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

Zamyka zamówienie, które otrzymało swój kod.

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

Anuluje przed przybyciem kodu. Pełna kwota wraca na Twoje saldo.

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

Metody formatu aktywacji SMS

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

Metoda getBalance

Twoje saldo w USD.

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

Kody usług, które możesz kupić (JSON).

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

Kody krajów (ISO, małe litery) i kody wybierania (JSON).

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

Ceny w USD za kraj i usługę. Oba filtry są opcjonalne.

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

Kupuje numer. Zwraca ID aktywacji i numer z jego kodem kraju.

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

STATUS_WAIT_CODE (brak kodu), STATUS_OK:<code>, STATUS_WAIT_RETRY:<ostatni kod> (zapytano o kolejny kod), STATUS_CANCEL (anulowane lub zwrócone).

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

status=1 gotowy (ACCESS_READY), 3 kolejny kod (ACCESS_RETRY_GET), 6 zakończone (ACCESS_ACTIVATION), 8 anulowanie z pełnym zwrotem, gdy kod nie dotarł (ACCESS_CANCEL).

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=setStatus&id=AC-7K2M9QX4PB&status=3
ACCESS_RETRY_GET
API weryfikacji SMS dla numerów KakaoTalk, LINE i WeChat