開発者API
SMS認証を あなたのコードから直接
1回のHTTPS呼び出しで、ボットやプラットフォームがWhatsApp、Telegramなど多数のサービス用の実在する番号を取得できます。コードはWebhookまたはロングポーリングで受け取り、コードを受信した番号だけにお支払いいただきます。
- 1,321サービス
- 145か国
- $0.101番号あたりの最低価格
- 自動コードが届かなければ返金
curl
curl -s -X POST https://smsgrab.com/api/dev/v1/activations \
-H "Authorization: Bearer $SMSGRAB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"service":"whatsapp","country":"indonesia"}'
Python
activation = requests.post(
"https://smsgrab.com/api/dev/v1/activations",
headers={"Authorization": f"Bearer {key}"},
json={"service": "whatsapp", "country": "indonesia"},
).json()
Node.js
const activation = await fetch('https://smsgrab.com/api/dev/v1/activations', {
method: 'POST',
headers: { Authorization: `Bearer ${key}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ service: 'whatsapp', country: 'indonesia' }),
}).then((response) => response.json());
PHP
$activation = json_decode((string) $client->post('activations', [
'json' => ['service' => 'whatsapp', 'country' => 'indonesia'],
])->getBody(), true);
Go
order := map[string]any{"service": "whatsapp", "country": "indonesia"}
err := call("POST", "/activations", order, idempotencyKey(), &activation)
{
"id": "5c1d0c2e-9f3a-4b7e-8a61-2f0c9d4e7b10",
"compat_id": 100000123,
"status": "WAITING_SMS",
"service_id": "whatsapp",
"country_id": "indonesia",
"phone_number": "+6281234567890",
"price_minor": 18,
"currency": "USD",
"expires_at": "2026-09-27T10:25:00.000Z",
"sms": []
}
自動化のために設計
アプリと同じ番号在庫、会計、返金で、連携に必要なものがすべて揃っています。
-
シンプルなREST API
予測しやすいJSON、冪等な購入、対処しやすい明確なエラー理由。
-
署名付きWebhook
コードの受信やステータス変化ごとにHMAC署名付きイベントを送信し、24時間まで再試行します。
-
ロングポーリング
リクエストを最大30秒保持し、コードが届いた瞬間に受け取れます。
-
sms-activate互換
既存ツールの接続先を当社のエンドポイントに変えるだけ。アクションとレスポンスはそのままです。
-
細かく制御できるキー
読み取り専用か購入可能か、IP許可リスト、1日の上限、有効期限、無停止のローテーション。
-
自動返金
番号の期限までにコードが届かなければ、すぐに残高へ返金されます。
-
利用状況とリクエストログ
キーごとの日別リクエスト、利用額、エラーに加え、過去7日間の絞り込み可能なログ。
-
ボリューム価格
月間ボリュームが増えるほど自動的に下がる卸売ベースの価格。
成長するほど下がる価格
開発者価格は各番号の卸売コストを基準に、30日間のボリュームに応じて小さくなるマークアップを加えたものです。
- アプリの同じ番号より高くなることはありません
- 1番号あたり最低$0.10
- コードが届かない番号は自動で返金
- 段階は到達から数分で更新
- アプリと同じ残高からUSDで請求
移行
sms-activateから1行の変更で移行
互換エンドポイントは同じプロトコルに対応しているため、sms-activate向けのボットや管理画面はベースURLとキーを変えるだけで動作します。
https://smsgrab.com/api/stubs/handler_api.php
- getNumber、getStatus、setStatus、getPricesなどの標準アクション
- すでに使っている数値のアクティベーションID、サービスコード、国ID
- REST APIと同じキー、制限、価格、返金、Webhook
curl
BASE="https://smsgrab.com/api/stubs/handler_api.php?api_key=$SMSGRAB_API_KEY"
curl -s "$BASE&action=getBalance"
curl -s "$BASE&action=getNumber&service=tg&country=6"
curl -s "$BASE&action=getStatus&id=100000123"
curl -s "$BASE&action=setStatus&id=100000123&status=6"
Python
import os
import requests
BASE = "https://smsgrab.com/api/stubs/handler_api.php"
KEY = os.environ["SMSGRAB_API_KEY"]
def action(name: str, **params) -> str:
response = requests.get(BASE, params={"api_key": KEY, "action": name, **params}, timeout=30)
response.raise_for_status()
return response.text
print(action("getBalance"))
answer = action("getNumber", service="tg", country=6)
if answer.startswith("ACCESS_NUMBER:"):
_, activation_id, number = answer.split(":")
print(activation_id, number)
開発者からの質問
開発者APIの料金は?
サブスクリプションはありません。各番号は卸売価格に80%のマークアップを加えた価格で、30日間の開発者利用額が100、500、2000 USDを超えると70%、60%、50%に下がります。1番号が0.10 USDを下回ることも、アプリより高くなることもありません。
コードが届かなかったら?
番号は20分間有効です。その間にコードが届かなかった場合や、待機中に番号をキャンセルした場合は、自動的に残高へ返金されます。
sms-activate向けの連携をそのまま使えますか?
はい。ベースURLを当社の互換エンドポイントに変更し、SmsGrabのキーを使ってください。標準アクション、レスポンス、数値IDはそのままです。
レート制限は?
標準では、キーごとに毎分600リクエストと60件の購入、アカウントの全キー合計で毎分3000リクエスト、同時にコードを待機できる番号は最大100件です。
キーを安全に保つには?
キーはサーバーにのみ保管し、アプリごとに専用のキーを使い、サーバーのアドレスに制限して1日の利用上限を設定してください。漏洩の可能性があれば、アカウントからローテーションまたは無効化してください。
アプリとAPIの残高は共通ですか?
はい。APIはSmsGrabアカウントの残高を使用し、すべての購入と返金はほかの取引と同じくウォレットに表示されます。
ほかの回答は ヘルプセンター