API Pembangun

Automasi pengesahan pada skala besar

API SNSPhone membolehkan alat anda sendiri memesan nombor bukan-VoIP AS, membaca kod SMS dan mengurus sewaan. Dua format: API REST dengan JSON, dan format pengaktifan SMS biasa untuk skrip sedia ada.

Mulakan Pantas

URL Asas https://snsphone.com/api/v1. Buat kunci pada halaman API konsol dan hantarkannya sebagai Authorization: Bearer spk_... (atau medan kunci). Semua nombor adalah bukan-VoIP Amerika Syarikat. Wang adalah rentetan USD dengan 2 perpuluhan, masa adalah ISO 8601 UTC, 300 permintaan seminit setiap kunci. Harga setakat 2026-11-03.

Python

import os, time, requests

API = "https://snsphone.com/api/v1"
H = {"Authorization": f"Bearer {os.environ['SNSPHONE_KEY']}"}

order = requests.post(f"{API}/orders", headers=H, data={"service": "google"}).json()["order"]
print("Use this US 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://snsphone.com/api/v1";
const H = { Authorization: `Bearer ${process.env.SNSPHONE_KEY}` };

const { order } = await fetch(`${API}/orders`, {
  method: "POST", headers: H, body: new URLSearchParams({ service: "discord" }),
}).then((r) => r.json());
console.log("Use this US 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);

Katalog

GET/services

Setiap kod perkhidmatan dengan namanya, kategori, harga pengesahan dan tempoh sewaan. Tiada kunci diperlukan.

Awam, tiada kunci.

curl "https://snsphone.com/api/v1/services"
{"country":"us","services":[{"code":"whatsapp","name":"WhatsApp","category":"Messaging","verification":"0.90","rentals":[]},{"code":"telegram","name":"Telegram","verification":"0.45","rentals":[{"days":365,"period":"1 year","price":"37.44"}]}]}

GET/prices?service=telegram

Harga dalam USD, secara pilihan untuk satu perkhidmatan. Tiada kunci diperlukan.

Awam, tiada kunci.

curl "https://snsphone.com/api/v1/prices?service=telegram"
{"country":"us","prices":[{"service":"telegram","type":"verification","days":null,"price":"0.45"},{"service":"telegram","type":"rental","days":365,"price":"37.44"}]}

GET/balance

Saldo anda dalam USD.

Memerlukan kunci API anda.

curl "https://snsphone.com/api/v1/balance" \
  -H "Authorization: Bearer $KEY"
{"balance":"25.00","currency":"USD"}

Pengesahan

POST/orders

Membeli pengesahan (201). Mengembalikan nombor AS dan masa tamat tetingkap 20 minit.

Memerlukan kunci API anda.

curl -X POST "https://snsphone.com/api/v1/orders" \
  -H "Authorization: Bearer $KEY" \
  -d "service=whatsapp"
{"order":{"id":"VR-7K2M9QX4PB","service":"whatsapp","country":"us","phone":"+14155550142","number":"4155550142","status":"waiting","code":null,"expires_at":"2026-11-03T12:20:00.000Z"},"window_minutes":20}

GET/orders/VR-7K2M9QX4PB

Satu pengesahan dengan statusnya dan setiap kod yang diterima. Status: menunggu, diterima, selesai, dibayar balik, dibatalkan.

Memerlukan kunci API anda.

curl "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB" \
  -H "Authorization: Bearer $KEY"
{"order":{"id":"VR-7K2M9QX4PB","status":"received","code":"482913","sms":"Your WhatsApp code is 482913"}}

GET/orders?status=open

Pengesahan terbuka anda (status=all untuk 100 terakhir).

Memerlukan kunci API anda.

curl "https://snsphone.com/api/v1/orders?status=open" \
  -H "Authorization: Bearer $KEY"
{"orders":[...]}

POST/orders/VR-7K2M9QX4PB/resend

Meminta kod lain pada nombor yang sama, selepas kod pertama dan semasa tetingkap masih terbuka. Tiada bayaran tambahan.

Memerlukan kunci API anda.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/resend" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"received","waiting_for_resend":true}}

POST/orders/VR-7K2M9QX4PB/finish

Menutup pengesahan yang telah menerima kodnya.

Memerlukan kunci API anda.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/finish" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"finished"}}

POST/orders/VR-7K2M9QX4PB/cancel

Membatalkan sebelum kod tiba. Harga penuh dikembalikan ke saldo anda.

Memerlukan kunci API anda.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/cancel" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"canceled","refunded":"0.90"}}

Sewa

POST/rentals

Menyewa nombor AS untuk satu perkhidmatan dan tempoh (201). days adalah pilihan apabila perkhidmatan mempunyai satu tempoh.

Memerlukan kunci API anda.

curl -X POST "https://snsphone.com/api/v1/rentals" \
  -H "Authorization: Bearer $KEY" \
  -d "service=telegram&days=365"
{"rental":{"id":"RN-4J8T2W6QHM","service":"telegram","phone":"+13125550198","days":365,"period":"1 year","price":"37.44","status":"active","ends_at":"2027-11-03T12:00:00.000Z","messages":[]}}

GET/rentals?status=active

Sewaan aktif anda dengan mesej terkini (status=all untuk 100 terakhir).

Memerlukan kunci API anda.

curl "https://snsphone.com/api/v1/rentals?status=active" \
  -H "Authorization: Bearer $KEY"
{"rentals":[...]}

GET/rentals/RN-4J8T2W6QHM

Satu sewaan dengan setiap SMS yang diterima padanya.

Memerlukan kunci API anda.

curl "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM" \
  -H "Authorization: Bearer $KEY"
{"rental":{"id":"RN-4J8T2W6QHM","status":"active","messages":[{"from":"Telegram","sms":"Telegram code: 57291","code":"57291","received_at":"2026-11-03T12:01:12.000Z"}]}}

POST/rentals/RN-4J8T2W6QHM/renew

Menambah satu lagi tempoh pada harga yang sama.

Memerlukan kunci API anda.

curl -X POST "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM/renew" \
  -H "Authorization: Bearer $KEY"
{"rental":{"renewed":1,"ends_at":"2028-11-02T12:00:00.000Z"}}

POST/rentals/RN-4J8T2W6QHM/cancel

Membatalkan dalam 20 minit pertama semasa tiada SMS tiba. Semua yang dibayar dikembalikan ke saldo anda.

Memerlukan kunci API anda.

curl -X POST "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM/cancel" \
  -H "Authorization: Bearer $KEY"
{"rental":{"status":"canceled","refunded":"37.44"}}

Format pengaktifan SMS

Untuk alat yang sudah memahami format pengaktifan biasa. Satu URL, medan tindakan, jawapan teks biasa. Pengesahan sahaja.

https://snsphone.com/stubs/handler_api.php?api_key=KEY&action=ACTION
TindakanMedan TambahanJawapanMaksud
getBalancetiadaACCESS_BALANCE:12.50Saldo anda dalam USD.
getServicesListtiada{"status":"success","services":[{"code":"whatsapp","name":"WhatsApp"}]}Kod perkhidmatan dengan harga pengesahan (JSON).
getCountriestiada{"us":{"name":"United States","dial":"1"}}Hanya Amerika Syarikat. country mungkin us, 187 atau ditinggalkan.
getPrices&service=whatsapp{"us":{"whatsapp":{"cost":0.9,"count":100}}}Harga dalam USD. Penapis perkhidmatan adalah pilihan.
getNumber&service=whatsapp&country=usACCESS_NUMBER:VR-7K2M9QX4PB:14155550142Membeli pengesahan. Mengembalikan id dan nombor dengan 1 di hadapan.
getStatus&id=VR-7K2M9QX4PBSTATUS_OK:482913STATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<last code> (kod lain diminta), STATUS_CANCEL (dibatalkan atau dibayar balik).
setStatus&id=VR-7K2M9QX4PB&status=3ACCESS_RETRY_GETstatus=1 sedia (ACCESS_READY), 3 kod lain (ACCESS_RETRY_GET), 6 selesai (ACCESS_ACTIVATION), 8 batalkan dengan bayaran balik penuh semasa tiada kod tiba (ACCESS_CANCEL).

Ralat

Ralat REST datang sebagai {"error":{"code","message"}} dengan kod status ini. Format pengaktifan menjawab dengan perkataan biasa.

400Medan hilang atau tidak betul (bad_json, bad_period).
401Tiada kunci atau kunci salah (no_key, bad_key).
402Saldo tidak mencukupi (no_balance).
404Perkhidmatan, pesanan, sewaan atau endpoint tidak diketahui, atau produk yang tidak ditawarkan oleh perkhidmatan (not_sold).
409Tidak boleh dilakukan sekarang (has_code, has_sms, too_late, not_ready, too_many_open, too_many_active, no_numbers).
429Lebih daripada 300 permintaan dalam satu minit (rate_limited).
BAD_KEYKunci API hilang atau salah.
BAD_ACTIONTindakan tidak diketahui.
BAD_SERVICEKod perkhidmatan tidak diketahui.
BAD_COUNTRYBukan Amerika Syarikat, atau perkhidmatan hanya dijual sebagai sewaan.
NO_BALANCESaldo tidak mencukupi.
NO_NUMBERSTiada nombor percuma buat masa ini. Cuba lagi sebentar.
NO_ACTIVATIONID tidak diketahui, atau bukan milik anda.
EARLY_CANCEL_DENIEDKod sudah tiba, jadi tidak boleh dibatalkan.
NO_ACTIVATIONS20 pengesahan sudah dibuka.
TOO_MANY_REQUESTSLebih daripada 300 permintaan dalam satu minit.

Soalan API

Kunci, had dan pengesahan, dijawab.

Adakah SNSPhone mempunyai API pengesahan SMS?

Ya. API REST dengan JSON di /api/v1 untuk perkhidmatan, harga, pengesahan dan sewaan, dan format pengaktifan SMS biasa di /stubs/handler_api.php.

Bagaimana saya mengesahkan permintaan API?

Buat kunci pada halaman API di konsol dan hantarkannya sebagai Authorization: Bearer spk_..., atau sebagai medan kunci. Kunci disimpan hanya sebagai hash dan ditunjukkan sekali sahaja.

Apakah had kadar API?

300 permintaan seminit setiap kunci, sehingga 20 pengesahan terbuka dan 20 sewaan aktif setiap akaun.

Adakah pesanan API lebih mahal daripada pesanan laman web?

Tidak. API menggunakan harga yang sama dan peraturan bayaran balik yang sama seperti konsol.

Bagaimana saya tahu kod telah tiba?

Poll GET /orders/{id} setiap beberapa saat. Status berubah dari waiting ke received dan medan kod mengandungi digit.

API Pengesahan SMS Bukan-VoIP: Nombor AS melalui REST | SNSPhone