SNSOTP OTP API
SMS検証用のREST API。182サービスの1つに対して154カ国で番号を注文し、注文からワンタイムコードを読み取り、20分以内にコードが到着しない場合は全額返金されます。
すべてのエンドポイントは、クエリパラメータ(GET)またはフォームフィールドまたはJSON(POST)としてパラメータを受け入れます。回答はJSONです。金額は2桁のUSD文字列で、時間はUTCのISO 8601形式です。
https://snsotp.com/api/v1
コンソールから取得したAPIキーをAuthorization: Bearer sok_...として送信
認証
コンソールのAPIページでキーを作成します。sok_で始まり、一度だけ表示されるので、環境変数に保存してください。キーを置き換えると、古いキーはすぐに停止します。/services、/countries、/pricesへの呼び出しはキーなしで動作します。
Authorization: Bearer sok_your_key_here
キーはkeyクエリパラメータまたはフォームフィールドとしても送信できます。これにより、ヘッダーを設定できないツールでも使用できます。
クイックスタート
番号を注文し、アプリに渡してから、コードが到着するまで注文をポーリングします。4つの言語での同じフロー:
# 1. Order a number for whatsapp in US
curl -X POST https://snsotp.com/api/v1/orders \
-H "Authorization: Bearer $SNSOTP_KEY" \
-d service=whatsapp -d country=us
# 2. Read the code (poll every 3 to 5 seconds)
curl https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB \
-H "Authorization: Bearer $SNSOTP_KEY"GET/services
各サービスとそのコードおよび最低価格 · キー不要
注文可能なすべてのサービスとそのコード(他の呼び出しでserviceとして使用)、カテゴリ、および各国の最低価格。キーは不要です。
curl https://snsotp.com/api/v1/services
{
"services": [
{ "code": "whatsapp", "name": "WhatsApp", "category": "social", "from": "0.09" },
{ "code": "telegram", "name": "Telegram", "category": "social", "from": "0.03" }
]
}GET/countries
各国とそのコードおよび市外局番 · キー不要
すべての国とそのコード(ISO 3166 alpha-2小文字、countryとして使用)およびダイヤルコード。キーは不要です。
curl https://snsotp.com/api/v1/countries
{
"countries": [
{ "code": "us", "name": "United States", "dial_code": "1" },
{ "code": "gb", "name": "United Kingdom", "dial_code": "44" }
]
}GET/prices
サービス、国、または両方の価格 · キー不要
1つのサービスに対する各国の注文ごとの価格、1つの国に対するすべてのサービスの価格、または1つのペアの価格。少なくとも1つのフィルタを送信してください。キーは不要です。
パラメータ
servicestring
サービスコード、例:whatsapp
countrystring
国コード、例:us
curl "https://snsotp.com/api/v1/prices?service=whatsapp&country=us"
{
"prices": [
{ "service": "whatsapp", "country": "us", "price": "0.93" }
]
}GET/balance
USDでのクレジット残高 · キー必須
USDでのクレジット残高。
curl https://snsotp.com/api/v1/balance \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"balance": "42.50",
"currency": "USD"
}POST/orders
サービスと国の番号を注文 · キー必須
番号を注文し、その価格を請求します。回答には完全な番号(phone)とダイヤルコードなしの番号(number)が含まれます。注文は20分間開いたままです。その間にコードが到着しない場合、価格は自動的にクレジットに戻ります。回答ステータス201。
パラメータ
servicestring必須
GET /servicesからのサービスコード
countrystring必須
GET /countriesからの国コード
curl -X POST https://snsotp.com/api/v1/orders \ -H "Authorization: Bearer $SNSOTP_KEY" \ -d service=whatsapp -d country=us
{
"order": {
"id": "OT-7K2M9QX4PB",
"service": "whatsapp",
"country": "us",
"phone": "+13475550182",
"number": "3475550182",
"dial_code": "1",
"price": "0.93",
"status": "waiting",
"code": null,
"sms": null,
"codes": [],
"expires_at": "2026-11-03T12:20:00.000Z"
},
"window_minutes": 20
}GET/orders/{id}
1つの注文のステータス、コード、SMSテキスト · キー必須
1つの注文とそのステータス、最新のコード、最新のSMSテキスト、およびこれまでに受信したすべてのコード。ステータスがwaitingの間、3〜5秒ごとにポーリングします。
パラメータ
idpath必須
POST /ordersからの注文ID
curl https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"order": {
"id": "OT-7K2M9QX4PB",
"service": "whatsapp",
"country": "us",
"phone": "+13475550182",
"number": "3475550182",
"price": "0.93",
"status": "received",
"code": "284913",
"sms": "Your WhatsApp code is 284913",
"expires_at": "2026-11-03T12:20:00.000Z"
}
}GET/orders
未処理の注文(またはstatus=allですべての注文) · キー必須
最新のものから順に、開いている注文。status=allを追加すると、すべてのステータスの最近の注文が表示されます。
パラメータ
statusstring
open(デフォルト)またはall
limitnumber
1から100、デフォルト50
curl "https://snsotp.com/api/v1/orders?status=open" \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"orders": [
{ "id": "OT-7K2M9QX4PB", "service": "whatsapp", "status": "received", "code": "284913" }
]
}POST/orders/{id}/resend
同じ番号で別のコードを取得 · キー必須
最初のコードの後、ウィンドウ内で同じ番号に対して別のコードを要求します。追加費用はかかりません。その後、アプリで新しいSMSをトリガーします。waiting_for_resendは到着するまでtrueです。
パラメータ
idpath必須
注文ID
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/resend \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"order": { "id": "OT-7K2M9QX4PB", "status": "received", "waiting_for_resend": true }
}POST/orders/{id}/finish
コードを使用した後、注文を閉じる · キー必須
コードを受信した注文を閉じます。finishはオプションです。開いている注文は、ウィンドウが終了すると自動的に閉じます。
パラメータ
idpath必須
注文ID
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/finish \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"order": { "id": "OT-7K2M9QX4PB", "status": "finished" }
}POST/orders/{id}/cancel
コードの前にキャンセル、全額返金 · キー必須
コードが到着する前に注文をキャンセルし、全額をすぐにクレジットに戻します。コードの後、キャンセルはhas_codeを返します。
パラメータ
idpath必須
注文ID
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/cancel \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"order": { "id": "OT-7K2M9QX4PB", "status": "canceled", "refunded": "0.93" }
}注文ステータス
waiting番号は準備ができており、SMSはまだ到着していません。キャンセル可能です。received少なくとも1つのコードが到着しました。codeとsmsには最新のものが含まれます。finishedコードの後、finishまたはウィンドウ終了時に閉じられました。refunded20分以内にコードが到着しませんでした。全額がクレジットに戻ります。canceledコードが到着する前にキャンセルされました。全額がクレジットに戻ります。
エラー
エラーはHTTPステータスと、安定したコードと読みやすいメッセージを含む本文を使用します。
- 400
missing_filter, bad_json必要な値が欠落しているか、本文を読み取ることができません。 - 401
no_key, bad_keyキーが欠落しているか、間違っているか、削除されています。 - 402
no_balanceこの注文のためのクレジットが不足しています。コンソールでクレジットを追加してください。 - 404
unknown_service, unknown_country, not_sold, not_foundコードまたは注文が存在しないか、ペアが販売されていません。 - 409
too_many_open, has_code, not_ready, no_numbersアクションが注文状態に適合しないか、現在利用可能な番号がありません(何も請求されません)。 - 429
rate_limited1つのキーで1分間に300回以上のリクエストがあります。
{
"error": {
"code": "no_balance",
"message": "Not enough credit. Add credit in the console."
}
}レート制限
- 1つのキーで1分間に300リクエストまで。それを超えると、APIは残りの1分間429 rate_limitedを返します。
- アカウントごとに最大20の開いている注文。別の注文を開くには、1つをfinishまたはcancelしてください。
- 注文を3〜5秒ごとにポーリングしてください。コードは通常1分以内に到着します。
SMSアクティベーション形式
一般的なhandler_api.phpフォーマット用に書かれたスクリプトは、同じAPIキーで動作します。ベースアドレスをhttps://snsotp.com/stubs/handler_api.phpに変更し、アクションをそのまま保持してください。サービスと国コードはREST APIと同じです。
getBalanceACCESS_BALANCE:42.50
getServicesListサービスのJSONリスト
getCountries国のJSONマップ
getPricesservice, country (オプション)JSON {country: {service: {cost, count}}}
getNumberservice, countryACCESS_NUMBER:<id>:<phone>
getStatusidSTATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<code>, STATUS_CANCEL
setStatusid, status 1 / 3 / 6 / 8ACCESS_READY, ACCESS_RETRY_GET, ACCESS_ACTIVATION, ACCESS_CANCEL
curl "https://snsotp.com/stubs/handler_api.php\ ?api_key=$SNSOTP_KEY&action=getNumber\ &service=telegram&country=gb" ACCESS_NUMBER:OT-3QF8ZK2W7M:447700900182
setStatusの値: 1 準備完了, 3 別のコード, 6 完了, 8 全額返金でキャンセル。