メインコンテンツへスキップ
100+
1,000以上のサービス対応。暗号通貨払い、KYCなし。
番号を購入する

SMS認証 API — SimNoKYC

OTP 認証を大規模に自動化できます。190以上の国で仮想電話番号を購入し、数秒で SMS コードを受信。専用の長期番号をレンタルし、すべての注文を単一の REST エンドポイントで管理 — API キー不要、KYCなし、暗号通貨での請求。

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

認証が必要です。 すべてのAPIリクエストはCookieベースのセッション認証を使用します。APIを利用するにはSimNoKYCアカウントにログインしている必要があります。Webインターフェース経由でログインするか、authエンドポイントを使用してセッションを確立してください。

デベロッパーが SimNoKYC API を選ぶ理由

SimNoKYC は、匿名性、グローバルカバレッジ、予測可能な料金を必要とするデベロッパー向けの最も柔軟な SMS認証 API です。エンタープライズ契約、月次最低利用額、KYC アンケートでアクセスを制限するレガシーの SMS-OTP プロバイダーとは異なり、SimNoKYC は任意の HTTPS クライアントで動作し、番号単位での課金を行い、Bitcoin、Monero、Ethereum、USDT、USDC、Solana、Litecoin、XRP、TRON、Toncoin を含む20以上の暗号通貨を受け付けます。

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

認証

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

  1. シードフレーズを含むPOSTリクエストを/auth-api.phpに送信
  2. レスポンスからセッションCookieを保存
  3. 以降のすべてのAPIリクエストに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://simnokyc.com/auth-api.php \ -d "action=login&seed=AbC3-dEf4-gHj5-kLm6" \ -c cookies.txt
import requests session = requests.Session() resp = session.post("https://simnokyc.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://simnokyc.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://simnokyc.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成功(アプリケーションレベルのエラーはレスポンスボディを確認してください)
403無効なCSRFトークン
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://simnokyc.com/api.php?action=countries
resp = session.get("https://simnokyc.com/api.php", params={"action": "countries"}) countries = resp.json() for c in countries: print(c["code"], c["name"])
const resp = await fetch("https://simnokyc.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

ワンタイムSMS認証用の仮想電話番号を購入します。番号は20分間有効です。SMSが届かない場合、残高は自動的に返金されます。

パラメータータイプ必須説明
countrystring必須国コード(例:us
service_idinteger必須サービス一覧から取得したサービスID
operator_idinteger任意オペレーター一覧から取得したオペレーターID。省略するとデフォルトオペレーターが使用されます。
cURL
Python
JavaScript
curl -X POST https://simnokyc.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://simnokyc.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://simnokyc.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://simnokyc.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")

よくある質問

SimNoKYC SMS認証 API で何ができますか?

SimNoKYC API により、デベロッパーは190以上の国の仮想電話番号に、ワンタイム SMS認証(OTP コード)および長期番号レンタル(7日、14日、30日、90日)向けにプログラマティックにアクセスできます。サービス一覧、リアルタイム料金照会、番号割り当て、受信 SMS コードの取得、失敗したアクティベーションの返金がすべて JSON REST インターフェース経由で行えます。KYCなし、クリプト専用請求。

API を使用するには API キーや OAuth トークンが必要ですか?

いいえ。SimNoKYC API は Cookie ベースのセッション認証を使用しています。16文字のアクセスシードを含む POST リクエストを /auth-api.php に一度送信し、その後のすべての呼び出しで返されたセッション Cookie を再利用してください。プロビジョニング、ローテーション、失効が必要な API キーはありません。セッションごとに一度認証すれば、Cookie の有効期間中は認証済みの状態が維持されます。

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

API 自体は無料です。月額費用、サブスクリプション、最低リクエスト数はありません。番号単位でのお支払いのみです。ワンタイム SMS アクティベーションは $0.05 から、専用長期レンタルは7日間で $4.79 からです。すべての操作はプリペイド残高から引き落とされ、SMS を受信できなかったアクティベーションは自動的に返金されます。

どのプログラミング言語やフレームワークに対応していますか?

HTTPS リクエストを発行できる言語またはプラットフォームであれば API を呼び出せます — Python(requests、httpx)、Node.js(fetch、axios)、Go、PHP、Ruby、Java、C#、cURL を使った Bash などがあります。ドキュメントには cURL、Python、JavaScript のすぐに実行できるサンプルが付属しており、/openapi.json に完全な OpenAPI 3.0 仕様が公開されているため、お好みの言語で型付きクライアントを自動生成できます。

SMS認証コードが届かない場合はどうなりますか?

すべてのアクティベーションには20分の配信ウィンドウがあります。その期間内に SMS が届かない場合、注文は自動的にキャンセルされ、全額がアカウント残高に返金されます。サポートチケットも手動リトライも不要です。返金された残高を即座に使用して別の番号を割り当てることができます。配信成功率を高めるために異なるオペレータークラス(バーチャル、フィジカル、プレミアム)を選ぶことも可能です。

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

認証は IP ごとに15分あたり5回に制限されており、ブルートフォースによるシード列挙を防ぎます。カタログ、購入、注文、レンタルなどその他のエンドポイントには現在ハードなレート制限はありませんが、リクエスト間隔を適切に保つようにお願いします。SMS 取得には /api.php?action=orders を3〜5秒ごとにポーリングすれば十分であり、約10 req/s を超える持続的なバーストは WAF レイヤーでスロットリングされる場合があります。