開発者API クイックスタート
自分のソフトウェアから番号を購入し、コードを読み取ります。キーの作成、価格の確認、番号の購入、SMS の待機、完了までを順に説明します。
SmsGrab の開発者API は、アプリと同じ番号を JSON ベースの REST API であなたのソフトウェアに提供します。独自の 開発者価格 を持つ有料サービスで、通常の SmsGrab 残高から支払われ、同じ自動返金で守られています。
利用できる人
- 確認済み のアドレスを持つメールアカウント。ゲストアカウントではキーを作成できません。
- 制限されていないアカウント。
1. API キーを作成する
ウェブサイトの アカウント > 開発者、またはアプリの 設定 > 開発者API を開き、キーを作成します。セキュリティのため、パスワードと、2 段階認証がオンの場合はその認証コードで確認します。読み取りだけのツールにはスコープ read を、番号を購入するには read と purchase を選びます。
キーは sgk_ で始まり、表示されるのは 1 回だけ です。サーバーのシークレット保管場所に保存してください。API キーとセキュリティ をご覧ください。
2. 認証
ベース URL は https://smsgrab.com/api/dev/v1 です。キーは Bearer トークンとして、または X-Api-Key ヘッダーで送信します。
GET /api/dev/v1/balance HTTP/1.1
Host: smsgrab.com
Authorization: Bearer sgk_your_key_here
キーはサーバーに置くものです。ウェブサイト、ブラウザ拡張機能、ほかの人に配布するアプリには絶対に含めないでください。
3. 残高と価格を確認する
export SMSGRAB_KEY="sgk_your_key_here"
curl -s https://smsgrab.com/api/dev/v1/balance \
-H "Authorization: Bearer $SMSGRAB_KEY"
curl -s "https://smsgrab.com/api/dev/v1/prices?service=whatsapp&country=indonesia" \
-H "Authorization: Bearer $SMSGRAB_KEY"
金額は常に USD の 最小単位 で表されるため、18 は 0.18 USD を意味します。price_minor はあなたの開発者価格、retail_price_minor はアプリでの価格です。
{ "currency": "USD", "markup_percent": 80,
"items": [ { "service_id": "whatsapp", "country_id": "indonesia", "price_minor": 18,
"retail_price_minor": 25, "available_numbers": 30412 } ] }
4. 番号を購入する
curl -s -X POST https://smsgrab.com/api/dev/v1/activations \
-H "Authorization: Bearer $SMSGRAB_KEY" \
-H "Idempotency-Key: order-7f3c2a" \
-H "Content-Type: application/json" \
-d '{"service":"whatsapp","country":"indonesia","max_price_minor":20}'
serviceとcountryにはwhatsappやindonesiaのような SmsGrab の ID を指定します。国にはIDのような ISO コードも使えます。max_price_minorがあなたを守ります。価格が上がった場合は何も差し引かれず、409 PRICE_CHANGEDが返ります。Idempotency-Keyで再試行が安全になります。同じキーでリクエストを繰り返すと、二重に購入されず最初の結果が返ります。
応答は 201 Created とアクティベーションです。
{ "id": "5c1d0c2e-8a41-4f7e-9d7a-2f1d9f1b8c11", "compat_id": 100000123, "status": "WAITING_SMS",
"service_id": "whatsapp", "country_id": "indonesia", "phone_number": "+6281234567890",
"price_minor": 18, "currency": "USD",
"created_at": "2026-09-27T10:05:00.000Z", "expires_at": "2026-09-27T10:25:00.000Z",
"refunded": false, "refund_minor": 0, "sms": [] }
5. SMS を待つ
短い間隔のループで問い合わせ続ける代わりに、変化があるまで最大 30 秒間 API にリクエストを保留させます。
curl -s "https://smsgrab.com/api/dev/v1/activations/100000123?wait=25" \
-H "Authorization: Bearer $SMSGRAB_KEY"
メッセージが届くと、status が CODE_RECEIVED になり、sms にそれまでのすべてのメッセージが入ります。
{ "status": "CODE_RECEIVED",
"sms": [ { "code": "482913", "text": "Your WhatsApp code is 482-913", "sender": "WhatsApp",
"received_at": "2026-09-27T10:06:12.004Z" } ] }
ポーリングよりプッシュがよい場合は、Webhook を設定してください。
6. 完了またはキャンセル
curl -s -X POST https://smsgrab.com/api/dev/v1/activations/100000123/finish \
-H "Authorization: Bearer $SMSGRAB_KEY"
curl -s -X POST https://smsgrab.com/api/dev/v1/activations/100000123/cancel \
-H "Authorization: Bearer $SMSGRAB_KEY"
- finish はコードを使ったあとに。コードが届いてからでないと受け付けられません。
- cancel は最初のコードを待っている間に。全額が返金されます。
- 何もしなければ、コードのない番号は 20 分後に期限切れとなり、自動的に返金されます。
ステータスの値
| ステータス | 意味 |
|---|---|
WAITING_SMS |
購入済み、最初のメッセージを待機中 |
CODE_RECEIVED |
1 通以上のメッセージを受信済み |
COMPLETED |
あなたが完了した、またはコード受信後に時間切れになった |
CANCELLED |
コードの前にキャンセル、返金済み |
EXPIRED |
20 分以内にコードなし、返金済み |
エラー
エラーはすべて同じ形式です。code と reason に応じて処理し、まだ知らない理由は無視してください。
{ "code": "NO_NUMBERS_AVAILABLE", "message": "No numbers available for this service and country", "reason": "OUT_OF_STOCK" }
よくあるのは 402 INSUFFICIENT_BALANCE、409 NO_NUMBERS_AVAILABLE、409 PRICE_CHANGED、ACTIVATION_LIMIT_REACHED を伴う 422(1 アカウントで同時に待機できる番号は最大 100 個)、Retry-After ヘッダー付きの 429 RATE_LIMITED です。
詳しいリファレンスは 開発者向けドキュメント にあります。
この記事は役に立ちましたか?
ありがとうございます。お役に立ててうれしいです。