Filipino

API para sa SMS verification

Huling binago noong 2026/11/03

Pagpapatakbo ng mga query sa API

Dalawang API ang nagbabahagi ng isang key: isang REST API na may JSON, at ang SMS activation format na ginagamit na ng maraming tool. Gumawa ng key sa API key page ng console; ito ay ipapakita minsan. Limit: 300 requests kada minuto kada key. Bawat order ay may 20 minute code window, pareho sa 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"
Service at country codes

Ang service codes ay ang mga pangalan sa aming service page addresses, halimbawa kakaotalk, line, wechat, zalo, naver, shopee, at whatsapp. Ang country codes ay ISO codes sa lower case: kr, jp, id, ph, vn, th, us. Ang GET /services at GET /countries ay nagbabalik ng buong listahan.

Karaniwang flow
  1. Mag-order ng numero gamit ang service at bansa. I-save ang id.
  2. Ilagay ang numero sa app at hilingin itong magpadala ng SMS.
  3. Basahin ang order tuwing 4 na segundo hanggang may code na.
  4. Kailangan pa ng isa pang SMS? Humingi ng another code, tapos basahin ulit. Done: tapusin ang order.
  5. Walang code? I-cancel para sa full refund. Kung walang tawag, awtomatikong magre-refund kapag tapos na ang window.

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);
Ibalik ang error codes

REST API

Ang errors ay darating bilang JSON: {"error":{"code","message"}} kasama ang mga HTTP status na ito:

400Nawawala o maling field (missing_filter, bad_json).
401Walang key o maling key (no_key, bad_key).
402Kulang sa credit (no_balance).
404Hindi kilalang service, country, order o endpoint.
409Hindi magagawa ng order yan ngayon (has_code, not_ready, too_many_open, no_numbers).
429Higit sa 300 requests sa isang minuto (rate_limited).

Format ng SMS activation

BAD_KEYNawawala o maling API key.
BAD_ACTIONHindi kilalang action.
BAD_SERVICEHindi kilalang service code.
BAD_COUNTRYHindi ibinebenta ang service sa bansang iyon.
NO_BALANCEKulang sa credit.
NO_NUMBERSWalang available na number ngayon. Subukan ulit mamaya.
NO_ACTIVATIONHindi kilalang activation id, o hindi sayo.
EARLY_CANCEL_DENIEDMay dumating na code, kaya hindi na maa-cancel ang activation.
TOO_MANY_REQUESTSHigit sa 300 requests sa isang minuto.
NO_ACTIVATIONSMay 20 nang bukas na activations.

Mga method ng REST API

https://virtualsns.com/api/v1

GET/services

Lahat ng service code kasama ang pangalan, uri at pinakamababang presyo. Hindi kailangan ng key.

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

Lahat ng country code (ISO, lower case) kasama ang pangalan at dial code. Hindi kailangan ng key.

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

Mga presyo sa USD. Magdagdag ng service, country o pareho. Hindi kailangan ng key.

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

Ang iyong credit sa USD.

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

Bumili ng number (201). Ibabalik ang order kasama ang phone number at oras ng pagtatapos ng window.

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

Isang order kasama ang status at lahat ng code na natanggap. Mga status: waiting, received, finished, refunded, canceled.

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

Ang iyong bukas na orders (status=all para sa huling 100).

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

Humingi ng another code sa parehong number, pagkatapos ng unang code at habang bukas pa ang window. Walang dagdag na bayad.

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

Isara ang order na nakatanggap na ng code.

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

I-cancel bago dumating ang code. Ang buong presyo ay ibabalik sa iyong credit.

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

Mga method ng SMS activation format

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

Method getBalance

Ang iyong credit sa USD.

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

Mga service code na maaari mong bilhin (JSON).

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

Mga country code (ISO, lower case) at dial codes (JSON).

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

Mga presyo sa USD bawat country at service. Parehong filters ay 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}}}
Method getNumber

Bumili ng number. Ibabalik ang activation id at number kasama ang country code nito.

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

STATUS_WAIT_CODE (wala pang code), STATUS_OK:<code>, STATUS_WAIT_RETRY:<last code> (humingi ng another code), STATUS_CANCEL (kinansela o binawi).

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

status=1 handa (ACCESS_READY), 3 another code (ACCESS_RETRY_GET), 6 tapos (ACCESS_ACTIVATION), 8 kanselahin na may buong refund habang walang code na dumating (ACCESS_CANCEL).

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=setStatus&id=AC-7K2M9QX4PB&status=3
ACCESS_RETRY_GET
SMS Verification API para sa KakaoTalk, LINE, at WeChat Numbers