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
- Mag-order ng numero gamit ang service at bansa. I-save ang id.
- Ilagay ang numero sa app at hilingin itong magpadala ng SMS.
- Basahin ang order tuwing 4 na segundo hanggang may code na.
- Kailangan pa ng isa pang SMS? Humingi ng another code, tapos basahin ulit. Done: tapusin ang order.
- 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:
| 400 | Nawawala o maling field (missing_filter, bad_json). |
| 401 | Walang key o maling key (no_key, bad_key). |
| 402 | Kulang sa credit (no_balance). |
| 404 | Hindi kilalang service, country, order o endpoint. |
| 409 | Hindi magagawa ng order yan ngayon (has_code, not_ready, too_many_open, no_numbers). |
| 429 | Higit sa 300 requests sa isang minuto (rate_limited). |
Format ng SMS activation
| BAD_KEY | Nawawala o maling API key. |
| BAD_ACTION | Hindi kilalang action. |
| BAD_SERVICE | Hindi kilalang service code. |
| BAD_COUNTRY | Hindi ibinebenta ang service sa bansang iyon. |
| NO_BALANCE | Kulang sa credit. |
| NO_NUMBERS | Walang available na number ngayon. Subukan ulit mamaya. |
| NO_ACTIVATION | Hindi kilalang activation id, o hindi sayo. |
| EARLY_CANCEL_DENIED | May dumating na code, kaya hindi na maa-cancel ang activation. |
| TOO_MANY_REQUESTS | Higit sa 300 requests sa isang minuto. |
| NO_ACTIVATIONS | May 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