バイブコーダー向けSMSゲートウェイAPI

SMS8は、ご自身のAndroidの上に構築された開発者向けSMSゲートウェイです。Claude Code、Cursor、Windsurf、あるいはcurlからSMS、MMS、OTP、USSDを送信できます。1つのキー、1つのベースURL、入出力はJSONです。

REST · form-urlencoded JSONレスポンス MCP対応 A2P 10DLC不要 Twilio不要

プレイグラウンド

ここから直接SMSゲートウェイを試せます。APIキーを貼り付け、電話番号とメッセージを入力し、送信を押してください。/services/send.phpへPOSTを行い、実際のJSONレスポンスを表示します。タブを切り替えると、curlPHPJavaScriptPythonClaude Code / Cursor用プロンプトとして同じリクエストを取得できます。

テスト & コピー

実際のSMSを1件送信します。1クレジットを消費します。APIキーはブラウザから出ません。リクエストはapp.sms8.ioに直接送信されます。

app.sms8.io/api.phpから取得 · ブラウザ内のみ保持

空欄でプライマリ。2|0はデバイス2、SIMスロット0を意味します。

準備完了

          

          

          

          

          

          

概要

SMS8のSMSゲートウェイは、機能ごとに1つのエンドポイントを持つ単一のホストを公開しています。パスパラメータもネストされたリソースもありません。すべてのアクションは、フォームエンコードされたフィールドを持つフラットなPOSTです。

  • ベースURL: https://app.sms8.io/services/
  • メソッド: すべてのエンドポイントでPOST
  • ボディ: application/x-www-form-urlencoded
  • レスポンス: application/json
  • 認証: ボディにkey=YOUR_SMS8_API_KEY
バイブコーディング向けショートカット。 Claude Code、Cursor、Windsurfで作業しているなら、curlを飛ばしてmcp.sms8.ioのMCPサーバーを追加し、AIアシスタントにこれらのエンドポイントを呼び出してもらいましょう。AIツールを参照してください。

認証

すべてのリクエストはPOSTボディでAPIキーを送信します。キーはアカウント単位で、すべてのエンドポイントを認可します。ダッシュボードのAPIページapp.sms8.io/api.phpから取得でき、いつでも再発行できます。古いキーは即座に無効化されます。

# すべてのリクエスト
key=YOUR_SMS8_API_KEY
ヒント。 mcp.sms8.ioのMCPサーバーは同じキーをBearerヘッダー(Authorization: Bearer YOUR_SMS8_API_KEY)として受け付けます。ヘッダーベース認証のみをサポートするツールで便利です。

最初のSMS

プライマリ端末を使ってペアリングされたAndroidから1つの番号へメッセージを送信します。YOUR_SMS8_API_KEYと宛先番号を置き換えてください。

curl https://app.sms8.io/services/send.php \
  -d "key=YOUR_SMS8_API_KEY" \
  -d "number=+81901234567" \
  -d "message=SMS8からこんにちは"

レスポンス形式

すべてのエンドポイントはペイロードをsuccessエンベロープでラップします。

{
  "success": true,
  "data": {
    "messages": [
      {
        "ID": "1",
        "number": "+81901234567",
        "message": "SMS8からこんにちは",
        "deviceID": "1",
        "simSlot": "0",
        "status": "Pending",
        "type": "sms",
        "sentDate": "2026-05-24T10:30:00+00:00",
        "deliveredDate": null,
        "groupID": "…"
      }
    ]
  }
}

エラー

失敗時、successfalseで、ボディに構造化されたerrorを含みます。

{
  "success": false,
  "error": {
    "code": 401,
    "message": "Invalid API key"
  }
}
コード意味
400パラメータの欠落または形式不正
401APIキーが欠落または無効
402メッセージクレジット不足
403このアカウントまたはプランでは許可されていないアクション
404リソースが見つかりません(例: 不明なメッセージID)
429レート制限に到達、ペースを落として再試行してください
500サーバーエラー、再試行してください

SMS & MMS送信

POST /services/send.php 単一送信、バッチ、リスト一斉配信、MMS

1つのエンドポイントが4つの送信モードをカバーします: 単一メッセージ、バッチ(番号ごとに異なるメッセージ)、連絡先リストへの一斉配信、添付付きMMS。どのフィールドを送るかでモードを選びます。

フィールド備考
keystringAPIキー、必須
numberstringE.164電話番号、または単一/一斉モードのカンマ区切りリスト
messagestringメッセージ本文、numberまたはlistIDと必須
messagesJSON真のバッチモード用の{number, message, type, attachments}の配列
listIDintこのリスト内のすべての連絡先に送信
devicesJSON|int単一ID、JSON配列、またはSIM指定形式"2|0"
option0|1|2ルーティングを参照: 指定、全端末、全SIM
useRandomDevice0|1選択肢からランダムに1端末を選ぶ
prioritize0|1キューを飛び越える(OTP、返信用)
typesms|mmsデフォルトはsms
attachmentsstringカンマ区切りの画像URL(MMSのみ)
scheduleunix tsこの未来のタイムスタンプに送信

1回の呼び出しでバッチ送信

curl https://app.sms8.io/services/send.php \
  -d "key=YOUR_SMS8_API_KEY" \
  -d 'messages=[{"number":"+81...","message":"こんにちは 1"},{"number":"+81...","message":"こんにちは 2"}]' \
  -d "option=2"

連絡先リストへ一斉配信

curl https://app.sms8.io/services/send.php \
  -d "key=YOUR_SMS8_API_KEY" \
  -d "listID=1" \
  -d "message=本日中限定セール"

メッセージ取得

POST /services/read-messages.php ID、グループ、ステータス、端末、時間で取得
フィールド備考
keystringAPIキー、必須
idintIDで1件取得
groupIdstring送信時に返されるグループID、バッチで有用
statusstringReceivedSentPendingFailed
deviceIDint端末でフィルタ
simSlotint0は第一SIM、1は第二SIM
startTimestampunix ts下限(含む)
endTimestampunix ts上限(含む)
# デバイス8のSIM 0で過去24時間の受信SMS
curl https://app.sms8.io/services/read-messages.php \
  -d "key=YOUR_SMS8_API_KEY" \
  -d "status=Received" \
  -d "deviceID=8" \
  -d "simSlot=0" \
  -d "startTimestamp=$(( $(date +%s) - 86400 ))"

再送信

POST /services/resend.php ID、グループ、ステータスで再試行

read-messagesと同じフィルタ形式。1つのID、グループ内のすべてのメッセージ、または時間枠内の特定ステータスのすべてのメッセージを再試行します。

連絡先

POST /services/manage-contacts.php 追加、再購読、購読解除
フィールド備考
keystringAPIキー、必須
listIDint対象連絡先リスト、必須
numberstring連絡先電話、必須
namestring表示名(追加時のみ)
resubscribe0|1以前購読解除されていた場合に再購読
unsubscribe0|1リストから削除

デバイス

POST /services/get-devices.php ペアリング済みAndroid端末を一覧表示

モデル、SIMスロット、プライマリフラグを含むすべての有効な端末を返します。送信呼び出しでdevicesを構築する前に有用です。

USSD

POST /services/send-ussd-request.php 例: 残高確認の*150#
POST /services/read-ussd-requests.php 送信済みUSSDリクエストを参照

ペアリングされた端末上でキャリアUSSDコードを実行し、レスポンスを読み戻します。プリペイド残高確認やキャリアメニューに便利です。

受信Webhook

ダッシュボードのAPIページでWebhook URLを設定してください。SMS8は受信したすべてのSMSをHMAC-SHA256署名付きでそのURLにPOSTします。受信側はペイロードがSMS8から来たもので改ざんされていないことを検証できます。

AIツールからは、MCPのcreate_webhookツール経由でWebhookを登録します。保存前にSSRFブロックリストに対してURLを検証します。

デバイス & SIMルーティング

すべての送信エンドポイントは同じルーティング制御を取ります。組み合わせて電話とSIMで負荷分散できます。

option動作
0devicesのIDだけを正確に使用。SIMスロットは"2|0"(端末2、SIM 0)形式。
1すべての有効な端末、各デフォルトSIMを使用。バッチはそれらに分散。
2すべての有効な端末とすべてのSIMを使用。デュアルSIM電話で最大スループット。

選択肢からランダムに1つの送信元を選ぶにはuseRandomDevice=1を設定します。OTPに便利です。

スケジューリング

送信を遅延させるにはscheduleをunixタイムスタンプとして渡します。同じメッセージを多くの番号にスケジュールしたり、未来の日付にバッチを送信したりできます。どちらも動作します。

残高

/services/send.phpkeyフィールドのみで呼び出します。レスポンスのcreditsフィールドは残りクレジットまたは"Unlimited"を返します。

Claude Code、Cursor & Windsurfから使う

SMS8はmcp.sms8.ioにMCPサーバーを提供しており、上記のすべてのRESTエンドポイントをJSON-RPCツールでラップします。同じAPIキー、別アカウント不要です。

// ~/.config/claude/mcp-servers.json (Claude Code)
// ~/.cursor/mcp.json (Cursor)
// ~/.codeium/windsurf/mcp_config.json (Windsurf)
{
  "mcpServers": {
    "sms8": {
      "url": "https://mcp.sms8.io",
      "transport": "http",
      "headers": {
        "Authorization": "Bearer YOUR_SMS8_API_KEY"
      }
    }
  }
}
MCPツールラップ対象
send_sms/services/send.php
send_otpOTPストア + /services/send.php
verify_otpOTPストア、定数時間比較
get_messages/services/read-messages.php
list_devices/services/get-devices.php
create_webhookユーザーWebhook URL(SSRFチェック済み)
setup_sms8アカウント + 端末ハンドシェイク

PHP SDK

ダッシュボードのapp.sms8.io/api.phpでは、APIキーが事前入力された完全なPHPクラスがレンダリングされます。sendSingleMessagesendMessagessendMessageToContactsListgetMessageByIDgetMessagesByStatusresendMessageByIDaddContactunsubscribeContactgetBalancesendUssdRequestgetDevicesを含みます。

$msg = sendSingleMessage("+81901234567", "SMS8からこんにちは");

$msg = sendSingleMessage("+81901234567", "デバイス1から", 1);

$msg = sendSingleMessage("+81901234567", "SIM 0から", "1|0");

$msg = sendSingleMessage("+81901234567", "2分後", null, strtotime("+2 minutes"));

C# SDK

完全なC#のAPIクラスもダッシュボードに事前入力されています。PHP SDKと同じ機能で、.NET / Unity / Xamarinプロジェクトですぐに使えます。

SMS.API.SendSingleMessage("+81901234567", "SMS8からこんにちは");

var msg = SMS.API.SendSingleMessage("+81901234567", "デバイス1から", "1");

var msgs = SMS.API.SendMessages(messages, SMS.API.Option.USE_ALL_SIMS);

curlレシピ

# OTPスタイルのメッセージを優先送信
curl https://app.sms8.io/services/send.php \
  -d "key=YOUR_SMS8_API_KEY" \
  -d "number=+81901234567" \
  -d "message=認証コード: 482910" \
  -d "prioritize=1" \
  -d "devices=1"

# メッセージクレジットを取得
curl https://app.sms8.io/services/send.php \
  -d "key=YOUR_SMS8_API_KEY"

# 連絡先を追加、存在すれば再購読
curl https://app.sms8.io/services/manage-contacts.php \
  -d "key=YOUR_SMS8_API_KEY" \
  -d "listID=1" \
  -d "number=+81901234567" \
  -d "name=山田" \
  -d "resubscribe=1"

FAQ

SMS8のSMSゲートウェイAPIとは何ですか?

SMSとMMSの送信、連絡先管理、USSD実行、受信箱読み取りを行うHTTP APIです。すべてのエンドポイントはhttps://app.sms8.io/services/配下のPOSTで、keyパラメータで認証します。メッセージはペアリングされたAndroid端末経由でルーティングされるため、A2P 10DLCもメッセージごとの料金もありません。

Claude Code、Cursor、WindsurfからこれをどうやってAIで使いますか?

AIツールにmcp.sms8.ioのMCPサーバーを追加し、SMS8 APIキーをBearerトークンとして指定します。MCPはsend_smssend_otpverify_otpといった同じRESTエンドポイントをJSON-RPCツールでラップします。AIツールセクションを参照してください。

Twilio番号なしで送信できますか?

はい。SMS8はご自身のAndroid端末とSIMカードをゲートウェイとして使用します。Twilio番号も、A2P 10DLC登録も、メッセージごとのキャリア料金も不要です。

受信SMSはどうやって受け取りますか?

ダッシュボードのAPIページでWebhook URLを設定してください。SMS8は受信したすべてのSMSをHMAC署名付きでそのURLにPOSTするので、ペイロードを検証できます。

どのようなレート制限がありますか?

SMSスループットはペアリングされた端末の速度とプランの月間ボリュームで制限されます。OTPフローでは番号あたり24時間で5コードのハードな上限と、設定可能な再送クールダウンが追加されます。

APIキーはどうやってローテーションしますか?

ダッシュボードのapp.sms8.io/api.phpから再生成してください。古いキーは即座に無効化されます。

最初の連携を構築しよう

無料登録、Androidをペアリング、キーを取得、出荷。

無料アカウント作成   OTPドキュメントを読む