開発者向けAPI

大規模な認証を自動化

SNSPhone APIを使用すると、独自のツールで米国非VoIP番号を注文し、SMSコードを読み取り、レンタルを管理できます。2つの形式: JSONを使用したREST APIと、既存のスクリプト用の一般的なSMSアクティベーション形式。

クイックスタート

ベースURL https://snsphone.com/api/v1。コンソールのAPIページでキーを作成し、Authorization: Bearer spk_...として送信します(またはキーフィールド)。すべての番号は米国非VoIPです。金額は2桁のUSD文字列、時間はISO 8601 UTC、1分あたり300リクエスト/キー。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);

カタログ

GET/services

各サービスのコード、名前、カテゴリ、認証価格、レンタル期間。キー不要。

公開、キー不要。

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

USDでの価格、オプションで1サービス分。キー不要。

公開、キー不要。

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

USDでのクレジット残高。

APIキーが必要。

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

ワンタイム認証

POST/orders

認証を購入(201)。米国番号と20分間のウィンドウ終了時間を返します。

APIキーが必要。

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

1回の認証とそのステータス、受信したすべてのコード。ステータス: waiting, received, finished, refunded, canceled。

APIキーが必要。

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

未完了の認証(status=allで過去100件)。

APIキーが必要。

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

POST/orders/VR-7K2M9QX4PB/resend

最初のコード受信後、ウィンドウが開いている間に同じ番号で別のコードを要求。追加料金なし。

APIキーが必要。

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

コードを受信した認証を終了。

APIキーが必要。

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

POST/orders/VR-7K2M9QX4PB/cancel

コード到着前にキャンセル。全額がクレジットに戻ります。

APIキーが必要。

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

番号レンタル

POST/rentals

1つのサービスと期間で米国番号をレンタル(201)。サービスに1期間がある場合、daysはオプション。

APIキーが必要。

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

アクティブなレンタルと最新メッセージ(status=allで過去100件)。

APIキーが必要。

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

GET/rentals/RN-4J8T2W6QHM

1つのレンタルとそのすべての受信SMS。

APIキーが必要。

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

同じ価格でさらに1期間追加。

APIキーが必要。

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

SMS到着前の最初の20分間にキャンセル。支払った全額がクレジットに戻ります。

APIキーが必要。

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

SMSアクティベーション形式

一般的なアクティベーション形式に対応したツール向け。1つのURL、アクションフィールド、プレーンテキスト回答。認証のみ。

https://snsphone.com/stubs/handler_api.php?api_key=KEY&action=ACTION
アクション追加フィールド回答意味
getBalanceなしACCESS_BALANCE:12.50USDでのクレジット残高。
getServicesListなし{"status":"success","services":[{"code":"whatsapp","name":"WhatsApp"}]}認証価格付きサービスコード(JSON)。
getCountriesなし{"us":{"name":"United States","dial":"1"}}米国のみ。countryはus、187、または省略可能。
getPrices&service=whatsapp{"us":{"whatsapp":{"cost":0.9,"count":100}}}USDでの価格。サービスフィルターはオプション。
getNumber&service=whatsapp&country=usACCESS_NUMBER:VR-7K2M9QX4PB:14155550142認証を購入。idと先頭に1が付いた番号を返します。
getStatus&id=VR-7K2M9QX4PBSTATUS_OK:482913STATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<last code>(別のコード要求時), STATUS_CANCEL(キャンセルまたは返金済み)。
setStatus&id=VR-7K2M9QX4PB&status=3ACCESS_RETRY_GETstatus=1 準備完了(ACCESS_READY), 3 別のコード(ACCESS_RETRY_GET), 6 終了(ACCESS_ACTIVATION), 8 コード到着前の全額返金キャンセル(ACCESS_CANCEL)。

エラー

RESTエラーは{"error":{"code","message"}}形式でこれらのステータスコードと共に返されます。アクティベーション形式はプレーンな単語で回答します。

400フィールドが不足しているか不正です (bad_json, bad_period)。
401APIキーが不足しているか不正です (no_key, bad_key)。
402クレジットが不足しています (no_balance)。
404不明なサービス、注文、レンタル、またはエンドポイント、またはそのサービスが提供していない製品です (not_sold)。
409現在処理できません (has_code, has_sms, too_late, not_ready, too_many_open, too_many_active, no_numbers)。
4291分間に300回以上のリクエストがあります (rate_limited)。
BAD_KEYAPIキーが不足しているか不正です。
BAD_ACTION不明なアクションです。
BAD_SERVICE不明なサービスコードです。
BAD_COUNTRYアメリカ合衆国以外、またはレンタル専用のサービスです。
NO_BALANCEクレジットが不足しています。
NO_NUMBERS現在利用可能な番号がありません。しばらくしてから再度お試しください。
NO_ACTIVATION不明なID、またはあなたのものではありません。
EARLY_CANCEL_DENIEDすでにコードが到着しているため、キャンセルできません。
NO_ACTIVATIONSすでに20件の検証が開かれています。
TOO_MANY_REQUESTS1分間に300回以上のリクエストがあります。

APIに関する質問

キー、制限、ポーリングについての回答。

SNSPhoneはSMS検証APIを提供していますか?

はい。/api/v1でサービス、価格、検証、レンタル用のJSON REST APIと、/stubs/handler_api.phpで一般的なSMSアクティベーション形式を提供しています。

APIリクエストを認証するにはどうすればよいですか?

コンソールのAPIページでキーを作成し、Authorization: Bearer spk_...として送信するか、keyフィールドとして送信します。キーはハッシュ化されて保存され、一度しか表示されません。

APIのレート制限はどうなっていますか?

キーごとに1分あたり300リクエスト、アカウントごとに20件の開かれた検証と20件のアクティブなレンタルが上限です。

API注文はウェブサイト注文よりも高くなりますか?

いいえ。APIはコンソールと同じ価格と返金ルールを使用します。

コードが到着したことをどうやって知ればよいですか?

数秒ごとにGET /orders/{id}をポーリングしてください。ステータスがwaitingからreceivedに変わり、codeフィールドに数字が入ります。

非VoIP SMS検証API: RESTによる米国番号 | SNSPhone