メインコンテンツへスキップ
116
国
133サービス、400のキャリア回線、15,400以上のリアルタイム価格。決済は暗号資産のみ、本人確認は一切なし。
番号をレンタルする

開発者向けSmsNoKYC:スクリプト化できるSMS認証

認証ループ全体を1つのJSONインターフェースでスクリプト化できます。116か国、133サービス、400のキャリアルート、15,400件以上のリアルタイム価格が、わずかなエンドポイントの背後に用意されています:番号を割り当てる、受信コードを取得する、最大90日間レンタルを保持する、暗号資産で決済する。ここにAPIキーは存在しません——提示する認証情報はシードフレーズのみです。

読了時間:5分 REST · JSON · OpenAPI 3.0 OpenAPI仕様 →

認証が必要です。 セッションはCookieに乗って動作します。サイト経由、または以下に示す認証エンドポイントへ直接、シードフレーズでサインインすると、以降のすべてのリクエストが自動的にそのセッションを引き継ぎます。

スクリプト、パイプライン、自律エージェントのために設計

従来のOTPベンダーは、最初のリクエストを送る前に契約締結、コンプライアンス審査、月額最低利用料のコミットを求めます。SmsNoKYCはその順序を逆転させます。シードフレーズを保有し、Bitcoin、Monero、Ethereum、Litecoin、TRON、USDT、SOLなど8種類の暗号資産のいずれかで$25から残高をチャージし、既存のHTTPSクライアントからすぐに呼び出しを開始できます。課金は番号ごとに従量制で$0.01から、15,400件以上のライブ価格ポイントにわたります。

日々のエンドポイントは、CI内でサインアップフローを検証し、ヘッドレスブラウザやスクレイパー群にOTPコードを供給し、Telegramや WhatsApp のアカウントを7日から90日の専用レンタルで維持し、virtual・physical・premiumの3階層、400のキャリアルートを明示的に制御しつつ116か国にわたって検証を分散させます。AIエージェントも同一のカタログにネイティブMCPサーバー経由でアクセスでき、agentsページで解説の通り、ツールを使うモデルが独自の連携コードなしに番号を購入しコードを読み取れます。

認証

セッションはCookieベースです——発行やローテーションが必要なベアラーキーはありません。プログラムによるログインは3ステップです:

  1. シードフレーズを /auth-api.php にPOSTする
  2. レスポンスに設定されたCookieを取得してください
  3. 以降のすべての呼び出しにそのCookieを添付してください
POST /auth-api.php

シードフレーズを有効なセッションと交換します。

パラメーター種類必須説明
actionstring必須"login" である必要があります
seedstring必須アカウントに紐づく16文字のシード(形式:AbC3-dEf4-gHj5-kLm6)
cURL
Python
JavaScript
# Login and save session cookie curl -X POST https://smsnokyc.com/auth-api.php \ -d "action=login&seed=AbC3-dEf4-gHj5-kLm6" \ -c cookies.txt
import requests session = requests.Session() resp = session.post("https://smsnokyc.com/auth-api.php", data={ "action": "login", "seed": "AbC3-dEf4-gHj5-kLm6" }) data = resp.json() print(data) # {"success": true, "user": {...}} # session object now holds the cookie for all future requests
const resp = await fetch("https://smsnokyc.com/auth-api.php", { method: "POST", credentials: "include", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: "action=login&seed=AbC3-dEf4-gHj5-kLm6" }); const data = await resp.json(); console.log(data); // {success: true, user: {...}}
成功レスポンス
{ "success": true, "user": { "id": 42, "prefix": "AbC3", "balance": "74.50" } }
エラーレスポンス
{ "success": false, "error": "Invalid seed." }

ベースURL

すべてのエンドポイントは一つのURLパターンにぶら下がっています。

https://smsnokyc.com/api.php?action={action}

レスポンスは常にJSON形式で返されます。POSTボディは application/json または application/x-www-form-urlencoded のいずれでも送信できます。

レート制限

リクエスト量を管理する2つのルール:

エンドポイント制限ウィンドウ
認証5回の試行15分
その他すべてのエンドポイント上限なし—

レート制限: ログインは15分あたり5回まで。他のエンドポイントには現時点で固定の上限はありませんが、継続的な乱用は上流で制限される場合があります。呼び出し間隔は常識的に空けてください。

エラー処理

すべてのエラーはerrorフィールドを含むJSONオブジェクトとして返されます。

{ "error": "Description of what went wrong" }
HTTP コード意味
200成功(アプリケーションレベルのエラーはレスポンスボディをご確認ください)
403CSRF トークンが無効です
405HTTPメソッドが不正です(例:POSTのみのエンドポイントへのGETリクエスト)
429レート制限を超えました

最も頻繁に遭遇するアプリケーションレベルのエラーは以下の通りです。

エラー原因
"Login required"セッションが期限切れ、または認証されていません
"Insufficient balance"残高不足 — need および have フィールドを含みます
"Service not available for this country"選択した国の在庫がないか、サービスが無効です
"Missing country or service"必須パラメーターが指定されていません

国一覧

GET /api.php?action=countries

現在在庫を保有するすべての国を一覧表示します — 直近の集計では116か国。公開エンドポイントで、セッションは不要です。

cURL
Python
JavaScript
curl https://smsnokyc.com/api.php?action=countries
resp = session.get("https://smsnokyc.com/api.php", params={"action": "countries"}) countries = resp.json() for c in countries: print(c["code"], c["name"])
const resp = await fetch("https://smsnokyc.com/api.php?action=countries"); const countries = await resp.json();
レスポンス
[ { "id": 1, "code": "us", "name": "USA" }, { "id": 2, "code": "gb", "name": "UK" }, { "id": 3, "code": "de", "name": "Germany" } ]

サービス一覧

GET /api.php?action=services&country={code}

1つの国のサービス一覧を、価格・在庫情報付きで取得します。country パラメータを省略すると、価格情報なしの133サービス全カタログを取得できます。

パラメーター種類必須説明
countrystring任意ISO 3166-1 alpha-2 国コード(例:us、gb、de)
レスポンス(国指定あり)
[ { "id": 12, "name": "WhatsApp", "slug": "whatsapp", "icon_code": "WA", "icon_color": "#25d366", "category": "social", "price": "0.35", "stock": 847 } ]

オペレーター一覧

GET /api.php?action=operators&country={code}

ある国の背後にあるキャリアルートを一覧化します。各オペレーターには階層と、基本サービス価格に適用される倍率が設定されています。

パラメーター種類必須説明
countrystring必須ISO 3166-1 alpha-2 国コード
レスポンス
[ { "id": 5, "name": "T-Mobile", "type": "physical", "price_multiplier": "1.50", "icon_slug": "tmobile", "icon_domain": "t-mobile.com" } ]

キャリアの種類: virtual — VoIPベースで最も安価、厳格なプラットフォームには稀に拒否される場合あり。physical — 実物SIMハードウェアで受理率が高い。premium — 受理率が最も高く配信も最速、約10秒。

番号を購入(SMS有効化)

POST /api.php?action=buy

1回の認証用に番号を確保します。番号は20分間あなたのものとして保持され、その間にメッセージが届かなければ料金は自動的に残高へ返還されます。

パラメーター種類必須説明
countrystring必須国コード(例:us)
service_idinteger必須サービス一覧のサービス ID
operator_idinteger任意オペレーター一覧のオペレーター ID。デフォルトオペレーターを使用する場合は省略してください。
cURL
Python
JavaScript
curl -X POST https://smsnokyc.com/api.php?action=buy \ -b cookies.txt \ -H "Content-Type: application/json" \ -d '{"country":"us","service_id":12,"operator_id":5}'
resp = session.post("https://smsnokyc.com/api.php?action=buy", json={ "country": "us", "service_id": 12, "operator_id": 5 }) order = resp.json() print(f"Order #{order['order_id']} — ${order['price']}")
const resp = await fetch("https://smsnokyc.com/api.php?action=buy", { method: "POST", credentials: "include", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ country: "us", service_id: 12, operator_id: 5 }) }); const order = await resp.json();
成功レスポンス
{ "success": true, "order_id": 1847, "price": 0.53, "balance": "73.97" }
エラー:残高不足
{ "error": "Insufficient balance", "need": 0.53, "have": "0.10" }

注文一覧

GET /api.php?action=orders

直近50件の注文を、番号と取得済みコードとともに返します。有効化がSMS待ちの間は、こちらをポーリングしてください。

レスポンス
[ { "id": 1847, "price": "0.53", "status": "completed", "phone_number": "+12025551234", "sms_code": "847293", "created_at": "2026-04-09 14:32:00", "country_code": "us", "country_name": "USA", "service_name": "WhatsApp", "operator_name": "T-Mobile" } ]

注文ステータス: active — メッセージ待機中。completed — コード受信済み。cancelled — ユーザーによりキャンセル済み。refunded — 無応答タイムアウト後に自動返金済み。expired — 有効期限切れ。

レンタル価格を取得する

GET /api.php?action=rental_price&country={code}&operator_id={id}&duration={days}

指定したオペレーターで、指定期間専用番号を保有する場合の料金を見積もります。

パラメーター種類必須説明
countrystring必須国コード
operator_idinteger必須オペレーター ID
durationinteger必須レンタル期間(日数):7、14、30、または 90
レスポンス
{ "price": "12.50", "duration": 30, "operator": "T-Mobile", "type": "physical", "country": "USA" }

番号をレンタル

POST /api.php?action=rental_buy

1つ以上の専用番号を確保します。各番号は7日から90日の全期間、あなただけのものとして留保され、あらゆるサービスからのSMSを無制限に受信できます。

パラメーター種類必須説明
countrystring必須国コード
operator_idinteger必須オペレーター ID
durationinteger必須7、14、30、または90日間
qtyinteger任意レンタルする番号の数(1〜10、デフォルト:1)
成功レスポンス
{ "success": true, "order_ids": [1848, 1849], "total": 25.00, "qty": 2, "unit_price": 12.50, "duration": 30, "balance": "49.50" }

ユーザー情報を取得する

GET /api.php?action=user

現在のセッションに紐づくアカウント情報を、残高も含めて返します。1回の呼び出しでログイン確認と残高確認を同時に行えます。

認証済み
{ "logged_in": true, "id": 42, "prefix": "AbC3", "balance": "74.50" }
未認証
{ "logged_in": false }

エンドツーエンドスクリプト

以下のスクリプトはPythonで一連の流れ全体を実行します——セッション作成、カタログ照会、購入、そしてコードが届くまでのポーリング:

Python
import requests, time BASE = "https://smsnokyc.com" SEED = "AbC3-dEf4-gHj5-kLm6" s = requests.Session() # 1. Authenticate s.post(f"{BASE}/auth-api.php", data={"action": "login", "seed": SEED}) # 2. Check balance user = s.get(f"{BASE}/api.php?action=user").json() print(f"Balance: ${user['balance']}") # 3. Get services for USA services = s.get(f"{BASE}/api.php?action=services&country=us").json() whatsapp = next(svc for svc in services if svc["name"] == "WhatsApp") print(f"WhatsApp: ${whatsapp['price']} ({whatsapp['stock']} in stock)") # 4. Buy a number order = s.post(f"{BASE}/api.php?action=buy", json={ "country": "us", "service_id": whatsapp["id"] }).json() print(f"Order #{order['order_id']} created") # 5. Poll for SMS code for _ in range(60): orders = s.get(f"{BASE}/api.php?action=orders").json() my_order = next(o for o in orders if o["id"] == order["order_id"]) if my_order["sms_code"]: print(f"SMS code: {my_order['sms_code']}") print(f"Phone: {my_order['phone_number']}") break print("Waiting for SMS...") time.sleep(5) else: print("Timeout — balance will be refunded automatically")

開発者からのよくある質問

SmsNoKYC開発者APIはどのような操作を提供していますか?

ダッシュボードが行うことはすべてスクリプトでも実行できます。116か国133サービスのカタログを取得し、400のキャリアルートに広がる15,400件以上のライブ価格ポイントを調べ、ワンタイムOTP用に番号を割り当て、届いたコードを即座に読み取り、7日・14日・30日・90日の専用レンタルを保有し、すべての注文を監査できます。すべてHTTPS上のプレーンなJSONで行われ、暗号資産で課金され、フロー内のどこにも身元確認の手順はありません。

最初のリクエストの前に生成すべきAPIキーはありますか?

生成するものも、ローテーションするものもありません。あなたのシードフレーズがそのまま認証情報です。一度/auth-api.phpにPOSTし、サーバーが返すセッションクッキーを保持し、それ以降の各呼び出しでそのクッキーを送信するだけです。キー管理画面もOAuthハンドシェイクも有効期限のカレンダーもありません — 一つのシードが一つのセッションを開く、それがすべてのモデルです。

APIへのアクセス自体にいくらかかりますか?

利用開始に費用はかかりません — 月額料金も、プランのランクも、最低呼出量もありません。支払いは番号ごとのみ: 単発の認証コードは$0.01からで、通常$0.20〜$1の範囲に収まり、専用レンタルは7日間の期間で$4.20から始まります。残高は8種類の暗号資産でチャージでき(最低チャージ額$25)、SMSを一度も受信しなかった認証は、何もしなくても自動的に返金されます。

任意の言語、あるいはAIエージェントから連携できますか?

HTTPSを話せる環境であれば何でも対応します: Python、Node.js、Go、Rust、PHP、Ruby、Java、C#、あるいはシェルスクリプト内の生のcURLでも構いません。リファレンスにはcURL・Python・JavaScriptで実行可能なコード例が付属し、/openapi.json では型付きクライアントを生成できる完全なOpenAPI 3.0ドキュメントを公開しています。自律的なエージェントにもネイティブに対応しており、専用のMCPサーバーによってツールを使うモデルが自ら番号を購入しコードを取得できます。設定手順は /agents ページで解説しています。

購入した番号に応答がない場合どうなりますか?

何も失われません。すべてのアクティベーションには20分間の受信ウィンドウがあり、メッセージが届かないまま終了すると、プラットフォームが自動的に注文をキャンセルし、全額が残高に返金されます。チケットも申請書もサポート待ちも不要です。すぐに再購入でき、物理またはプレミアムの運用ティアに切り替えると通常配信率が上がります。

制限がかかるまでどのくらいポーリングできますか?

厳密な上限があるのはログインのみで、IPごとに15分間で5回までです。これはシードフレーズの総当たりを防ぐためのものです。カタログ、購入、注文、レンタルの各エンドポイントには現時点で固定のクォータはありません。ペースは常識的な範囲に保ってください——orders エンドポイントを3〜5秒間隔で確認すればすべてのコードを取りこぼしません——また持続的なトラフィックは秒間おおむね10リクエスト以下に抑えてください。それを超える大量バーストはエッジ層で制限される場合があります。

実装して公開する

ホームページでシードを取得し、暗号資産で$25以上をチャージすれば、最初の認証コードまであと5回のリクエストです。スクリプトではなくLLMで構築していますか?モデルをSmsNoKYC MCPサーバーに接続するか、AIエージェント統合ガイドに従ってください — 116か国133サービスの全カタログが1回のツール呼び出しになります。

リファレンスで解決しない疑問はヘルプセンターで補足し、SMS用語集が専門用語を解説し、ライブアクティビティではネットワークの動きをリアルタイムで確認できます。サインイン後はアプリ内チケットでサポートを受けられます。