SMS認証API
シンプルなHTTP GETまたはPOSTリクエストで番号を購入し、SMSコードを読み取ります。一般的なSMSアクティベーションツールのテキスト形式で応答し、専用番号のコールはJSONで応答します。
はじめに
- アドレス
- https://snscodes.com/stubs/handler_api.php
- 認証
- api_keyパラメータ。アカウントのAPIページでキーを作成してください。一度だけ表示されます。
- レート制限
- キーごとに1分あたり300リクエスト
- 金額
- 価格とクレジットは米ドルで、ウェブサイトと同じクレジットから引き落とされます。
curl "https://snscodes.com/stubs/handler_api.php?api_key=$KEY&action=getNumber&service=telegram&country=us" # ACCESS_NUMBER:N-7KQ2M9XWD4:14155550123 curl "https://snscodes.com/stubs/handler_api.php?api_key=$KEY&action=getStatus&id=N-7KQ2M9XWD4" # STATUS_OK:482913
import time, requests
BASE = "https://snscodes.com/stubs/handler_api.php"
KEY = "YOUR_KEY"
r = requests.get(BASE, params={"api_key": KEY, "action": "getNumber", "service": "telegram", "country": "us"}).text
_, num_id, phone = r.split(":")
print("number", phone)
while True:
s = requests.get(BASE, params={"api_key": KEY, "action": "getStatus", "id": num_id}).text
if s.startswith("STATUS_OK"):
print("code", s.split(":")[1]); break
if s == "STATUS_CANCEL":
break
time.sleep(5)const BASE = "https://snscodes.com/stubs/handler_api.php";
const KEY = process.env.SNSCODES_KEY;
const call = async (q) => (await fetch(BASE + "?" + new URLSearchParams({ api_key: KEY, ...q }))).text();
const [, id, phone] = (await call({ action: "getNumber", service: "telegram", country: "us" })).split(":");
console.log("number", phone);
for (;;) {
const s = await call({ action: "getStatus", id });
if (s.startsWith("STATUS_OK")) { console.log("code", s.split(":")[1]); break; }
if (s === "STATUS_CANCEL") break;
await new Promise((r) => setTimeout(r, 5000));
}クレジットを取得 action=getBalance
アカウントのクレジット残高を米ドルで返します。
回答
ACCESS_BALANCE:42.50
BAD_KEYキーが不足しているか間違っています。
コードの価格 action=getPrices
国とサービスごとのコードの価格。両方のフィルターはオプションです。
| パラメータ | 必須 | 説明 |
|---|---|---|
| service | いいえ | サービスコード、例:telegram |
| country | いいえ | us、gb、またはau |
回答
{"us":{"telegram":{"cost":3,"count":100}}}コード番号を購入 action=getNumber
1つのアプリ用に1つの番号を購入します。価格はすぐにクレジットから引き落とされ、20分以内にコードが届かない場合は返金されます。
| パラメータ | 必須 | 説明 |
|---|---|---|
| service | はい | getPricesからのサービスコード |
| country | はい | us、gb、またはau |
回答
ACCESS_NUMBER:N-7KQ2M9XWD4:14155550123
BAD_SERVICE不明なサービスコード。BAD_COUNTRYこの国ではこのサービスは販売されていません。NO_BALANCEクレジットが不足しています。何も請求されません。NO_NUMBERS現在利用可能な番号はありません。何も請求されません。NO_ACTIVATIONSすでに20のオープンコード番号を持っています。
コードを読み取る action=getStatus
コードが届くまで5〜10秒ごとにポーリングします。
| パラメータ | 必須 | 説明 |
|---|---|---|
| id | はい | getNumberからのid |
回答
STATUS_OK:482913
STATUS_WAIT_CODEまだSMSは届いていません。STATUS_WAIT_RETRY:482913別のコードを待っています。最後のコードが表示されます。STATUS_CANCELキャンセルまたは返金されました。NO_ACTIVATION不明なid。
キャンセル、再試行、または完了 action=setStatus
status=8はコードのない番号をキャンセルします(全額返金)、status=3は同じ番号で別のコードを要求し、status=6はそれを完了します。
| パラメータ | 必須 | 説明 |
|---|---|---|
| id | はい | getNumberからのid |
| status | はい | 8、3、または6 |
回答
ACCESS_CANCEL
EARLY_CANCEL_DENIEDコードはすでに届いています。キャンセルの代わりに完了してください。ACCESS_RETRY_GET別のコードを待っています。ACCESS_ACTIVATION完了しました。
専用番号の価格 action=getRentPrices
国と期間ごとの全期間の価格。JSONを返します。
| パラメータ | 必須 | 説明 |
|---|---|---|
| country | いいえ | 2文字の国コード |
回答
{"us":{"sixMonths":35.99,"twelveMonths":59.99}}専用番号を購入 action=getRentNumber
期間限定で専用番号を購入します。JSONを返します。
| パラメータ | 必須 | 説明 |
|---|---|---|
| country | はい | 2文字の国コード |
| period | はい | oneMonth、threeMonths、sixMonths、twelveMonths、twoYearsまたはthreeYears |
回答
{"status":"success","id":"N-3HV8QZ2K5M","phone":"14155550123","until":"2027-05-02T10:00:00.000Z"}BAD_PERIODこの国では提供されていない期間です。NO_BALANCEクレジットが不足しています。
専用番号のSMSを読む action=getRentStatus
これまでに専用番号で受信したすべてのSMS。JSONを返します。
| パラメータ | 必須 | 説明 |
|---|---|---|
| id | はい | getRentNumberからのID |
回答
{"status":"success","state":"active","messages":[{"code":"482913","text":"Your code is 482913","from":"Telegram","at":"..."}]}専用番号を解約 action=setRentStatus
status=2で、SMSが到着しておらず、20分以内の場合、専用番号を解約して全額返金されます。
| パラメータ | 必須 | 説明 |
|---|---|---|
| id | はい | getRentNumberからのID |
| status | はい | 2 |
回答
{"status":"success"}EARLY_CANCEL_DENIEDSMSが到着したか、20分が経過しました。