v1REST · JSON

SNSOTP OTP API

SMS検証用のREST API。182サービスの1つに対して154カ国で番号を注文し、注文からワンタイムコードを読み取り、20分以内にコードが到着しない場合は全額返金されます。

すべてのエンドポイントは、クエリパラメータ(GET)またはフォームフィールドまたはJSON(POST)としてパラメータを受け入れます。回答はJSONです。金額は2桁のUSD文字列で、時間はUTCのISO 8601形式です。

サーバー

https://snsotp.com/api/v1

認証Bearerトークン

コンソールから取得した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
curl https://snsotp.com/api/v1/services
レスポンス200
{
  "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
curl https://snsotp.com/api/v1/countries
レスポンス200
{
  "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
curl "https://snsotp.com/api/v1/prices?service=whatsapp&country=us"
レスポンス200
{
  "prices": [
    { "service": "whatsapp", "country": "us", "price": "0.93" }
  ]
}

GET/balance

USDでのクレジット残高 · キー必須

USDでのクレジット残高。

リクエストcURL
curl https://snsotp.com/api/v1/balance \
  -H "Authorization: Bearer $SNSOTP_KEY"
レスポンス200
{
  "balance": "42.50",
  "currency": "USD"
}

POST/orders

サービスと国の番号を注文 · キー必須

番号を注文し、その価格を請求します。回答には完全な番号(phone)とダイヤルコードなしの番号(number)が含まれます。注文は20分間開いたままです。その間にコードが到着しない場合、価格は自動的にクレジットに戻ります。回答ステータス201。

パラメータ

  • servicestring必須

    GET /servicesからのサービスコード

  • countrystring必須

    GET /countriesからの国コード

リクエストcURL
curl -X POST https://snsotp.com/api/v1/orders \
  -H "Authorization: Bearer $SNSOTP_KEY" \
  -d service=whatsapp -d country=us
レスポンス201
{
  "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
curl https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB \
  -H "Authorization: Bearer $SNSOTP_KEY"
レスポンス200
{
  "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
curl "https://snsotp.com/api/v1/orders?status=open" \
  -H "Authorization: Bearer $SNSOTP_KEY"
レスポンス200
{
  "orders": [
    { "id": "OT-7K2M9QX4PB", "service": "whatsapp", "status": "received", "code": "284913" }
  ]
}

POST/orders/{id}/resend

同じ番号で別のコードを取得 · キー必須

最初のコードの後、ウィンドウ内で同じ番号に対して別のコードを要求します。追加費用はかかりません。その後、アプリで新しいSMSをトリガーします。waiting_for_resendは到着するまでtrueです。

パラメータ

  • idpath必須

    注文ID

リクエストcURL
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/resend \
  -H "Authorization: Bearer $SNSOTP_KEY"
レスポンス200
{
  "order": { "id": "OT-7K2M9QX4PB", "status": "received", "waiting_for_resend": true }
}

POST/orders/{id}/finish

コードを使用した後、注文を閉じる · キー必須

コードを受信した注文を閉じます。finishはオプションです。開いている注文は、ウィンドウが終了すると自動的に閉じます。

パラメータ

  • idpath必須

    注文ID

リクエストcURL
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/finish \
  -H "Authorization: Bearer $SNSOTP_KEY"
レスポンス200
{
  "order": { "id": "OT-7K2M9QX4PB", "status": "finished" }
}

POST/orders/{id}/cancel

コードの前にキャンセル、全額返金 · キー必須

コードが到着する前に注文をキャンセルし、全額をすぐにクレジットに戻します。コードの後、キャンセルはhas_codeを返します。

パラメータ

  • idpath必須

    注文ID

リクエストcURL
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/cancel \
  -H "Authorization: Bearer $SNSOTP_KEY"
レスポンス200
{
  "order": { "id": "OT-7K2M9QX4PB", "status": "canceled", "refunded": "0.93" }
}

注文ステータス

ステータス値
  • waiting番号は準備ができており、SMSはまだ到着していません。キャンセル可能です。
  • received少なくとも1つのコードが到着しました。codeとsmsには最新のものが含まれます。
  • finishedコードの後、finishまたはウィンドウ終了時に閉じられました。
  • refunded20分以内にコードが到着しませんでした。全額がクレジットに戻ります。
  • canceledコードが到着する前にキャンセルされました。全額がクレジットに戻ります。

エラー

エラーはHTTPステータスと、安定したコードと読みやすいメッセージを含む本文を使用します。

HTTPステータスとコード
  • 400missing_filter, bad_json必要な値が欠落しているか、本文を読み取ることができません。
  • 401no_key, bad_keyキーが欠落しているか、間違っているか、削除されています。
  • 402no_balanceこの注文のためのクレジットが不足しています。コンソールでクレジットを追加してください。
  • 404unknown_service, unknown_country, not_sold, not_foundコードまたは注文が存在しないか、ペアが販売されていません。
  • 409too_many_open, has_code, not_ready, no_numbersアクションが注文状態に適合しないか、現在利用可能な番号がありません(何も請求されません)。
  • 429rate_limited1つのキーで1分間に300回以上のリクエストがあります。
エラー本文402
{
  "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と同じです。

アクション
  • getBalance

    ACCESS_BALANCE:42.50

  • getServicesList

    サービスのJSONリスト

  • getCountries

    国のJSONマップ

  • getPricesservice, country (オプション)

    JSON {country: {service: {cost, count}}}

  • getNumberservice, country

    ACCESS_NUMBER:<id>:<phone>

  • getStatusid

    STATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<code>, STATUS_CANCEL

  • setStatusid, status 1 / 3 / 6 / 8

    ACCESS_READY, ACCESS_RETRY_GET, ACCESS_ACTIVATION, ACCESS_CANCEL

リクエストcURL
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 全額返金でキャンセル。

OTP API ドキュメント: SMS検証REST API | SNSOTP