メインコンテンツへスキップ
100+
1,000以上のサービス。暗号通貨で支払い、KYC不要。
番号を購入

SMS認証API — SMSNoKYC

OTP認証を端から端まで自動化しましょう。190超の国で仮想番号を予約し、SMSコードを数秒で読み取り、長期の専用回線をレンタルし、あらゆる注文を単一のRESTインターフェースから操作できます——APIキー不要、KYC不要、暗号資産で支払い。

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

認証が必要です。 各リクエストはセッションクッキーに依存するため、SMSNoKYCアカウントにログイン済みである必要があります。呼び出す前に、ウェブインターフェースまたは認証エンドポイントでセッションを確立してください。

開発者がSMSNoKYC APIを選ぶ理由

SMSNoKYCは、匿名性、グローバルカバレッジ、予測可能な料金体系を必要とする開発者向けの最も柔軟なSMS認証APIです。エンタープライズ契約、月額最低料金、KYCアンケートによってアクセスを制限する旧来のSMS-OTPプロバイダーとは異なり、SMSNoKYCはあらゆるHTTPSクライアントで動作し、番号ごとに厳密に課金し、Bitcoin、Monero、Ethereum、USDT、USDC、Solana、Litecoin、XRP、TRON、Toncoinを含む20種類以上の暗号通貨を受け付けます。

典型的なユースケースには、大規模QA向けのアカウント登録自動化、ヘッドレスエージェントやCIボット向けのワンタイムパスワード取得、継続的インテグレーションにおける電話番号必須フローの検証、SMSを途切れなく受信する必要があるTelegramやWhatsAppアカウント向けの長期専用番号レンタル、そして明示的なオペレーター層制御(バーチャル、フィジカル、プレミアム)による190カ国以上にわたる地理分散認証の実現などが含まれます。

認証

APIはクッキーベースのセッション認証を使用しています。プログラムで認証するには:

  1. シードフレーズを使用して /auth-api.php に POST リクエストを送信してください
  2. レスポンスからセッションクッキーを保存してください
  3. 以降のすべての API リクエストにクッキーを含めてください
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

すべてのAPIエンドポイントは以下を基準とします:

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

すべてのレスポンスはJSON形式です。POSTエンドポイントはapplication/jsonapplication/x-www-form-urlencodedの両方のリクエストボディを受け付けます。

レート制限

APIには以下のレート制限が適用されます:

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

レート制限:認証は15分あたり5回までに制限されています。その他のエンドポイントは現在レート制限がありませんが、過剰な利用はスロットリングされる場合があります。適切なリクエスト間隔を使用してください。

エラー処理

すべてのエラーは<code>error</code>フィールドを含む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

仮想番号が利用可能なすべてのアクティブな国を返します。認証不要。

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}

特定の国で利用可能なサービスを料金・在庫情報とともに返します。国コードなしの場合は、料金なしで全サービスを返します。

パラメーター種類必須説明
countrystring任意ISO 3166-1 alpha-2 国コード(例:usgbde
レスポンス(国指定あり)
[ { "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回限りの SMS 認証用に仮想番号を購入します。番号は20分間有効です。SMS を受信しなかった場合、残高は自動的に返金されます。

パラメーター種類必須説明
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

電話番号と SMS コードを含む直近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 — SMSを待機中。completed — SMS受信済み。cancelled — ユーザーによりキャンセル。refunded — 自動返金済み(タイムアウト前にSMS未受信)。expired — タイムアウト。

レンタル価格を取得する

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

特定のオペレーターから指定期間、専用番号をレンタルする際の料金を取得します。

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

番号をレンタル

POST /api.php?action=rental_buy

専用電話番号を1件以上レンタルできます。番号はレンタル期間中はあなただけのものとなり、受信SMSは無制限です。

パラメーター種類必須説明
countrystring必須国コード
operator_idinteger必須オペレーター ID
durationinteger必須71430、または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

現在のユーザーのアカウント情報と残高を返します。認証ステータスと利用可能残高の確認にご使用ください。

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

完全なワークフロー例

以下は、認証・サービス検索・番号購入・SMS コードのポーリングを行う 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は何のためのものですか?

サイトと同じカタログを、あなた自身のコードに開きます。190超の国の仮想番号を、一度きりのOTP認証と7〜90日のレンタルに使えます。素朴なJSON RESTインターフェースを通じて、アプリの閲覧、ライブ価格の取得、番号の予約、受信コードの取り出し、失敗した有効化の返金ができます——KYC不要、請求は暗号資産のみ。

APIキーやOAuthトークンは必要ですか?

いいえ。認証はセッションクッキーです。16文字のアクセスフレーズを一度だけ/auth-api.phpにPOSTし、以後は返されたクッキーを各呼び出しで持ち回します。用意・ローテーション・失効の手続きは不要——セッションごとに一度ログインすれば、クッキーが生きている間はログインしたままです。

APIの料金はいくらですか?

APIの呼び出しは無料です——月額料金もサブスクも最低数量もありません。支払いは番号単位のみで、一度きりの有効化は0.05ドルから、専用レンタルは7日で数ドルから。すべては前払い残高から引かれ、SMSが一度も届かなかった有効化はひとりでに返金されます。

どの言語やフレームワークから呼び出せますか?

HTTPSリクエストを送れるものなら何でも動きます——Python(requests, httpx)、Node.js(fetch, axios)、Go、PHP、Ruby、Java、C#、BashからのcURLなど。ドキュメントにはcURL、Python、JavaScriptのコピーしてすぐ使える例があり、/openapi.jsonにある完全なOpenAPI 3.0ファイルで、お好みの言語の型付きクライアントを生成できます。

認証コードが一度も届かなかったらどうなりますか?

各有効化には20分の受付枠があります。枠が閉じる前に何も届かなければ、注文はひとりでに取り消され、全額が残高に戻ります——チケットも手動の再試行も不要。戻った残高はすぐ別の番号に使え、より高い成功率のために別の事業者区分(仮想・物理・プレミアム)に振り向けることもできます。

APIにレート制限はありますか?

フレーズの推測を阻むため、ログインはIPごとに15分あたり5回に制限されています。それ以外——カタログ、購入、注文、レンタル——は今のところ厳しい上限はありませんが、妥当な間隔を保ってください。/api.php?action=ordersを3〜5秒ごとに問い合わせればSMSの読み取りには十分すぎ、毎秒およそ10リクエストを超える持続的なバーストはWAFの層で絞られることがあります。