交換機をソフトウェアの一部に。
APIキー1つ、通常のHTTP、JSONのレスポンス。クリックで発信や通話制御から自動発信キャンペーン、音声アシスタントのタスク、音声確認コードまで、すべてREST。結果はHMAC署名付きWebhookで返ります。
クイックスタート
最初のリクエストまで2分
パネル > 自動発信 > APIタブ(または交換機設定)でキーを取得し、Bearerヘッダー、X-Api-Key、または?key=で送信してください。
- キーはお客様のアカウントに紐づいており、他のお客様のデータにはアクセスできません。
- 読み取り操作はGET、変更を伴う操作はPOST。本文はJSONまたはフォームです。
- エラーレスポンスは常に
{"ok":false,"error":"…","code":"…"}形式です。 - レート制限:キーごとに1分あたり120リクエスト。超過時は429。
# クリックで発信:内線 1001 がまず鳴り、応答すると宛先に発信されます
curl "https://api.buluthat.com/api/begin_call.php?key=K1234-…&extension=1001&destination=905321234567"
# キャンペーンを作成
curl -X POST "https://api.buluthat.com/api/autocall.php?action=create_campaign" \ -H "Authorization: Bearer bt_xxxxxxxx" \ -H "Content-Type: application/json" \ -d '{"name":"Ödeme hatırlatma","campaign_type":"ivr", "tts_template":"Merhaba {sayin}, {tutar} tutarındaki ödemeniz…", "digit_labels":{"1":"Ödedim","2":"Yetkili"}}'
# 音声確認コードを送信
curl -X POST "https://api.buluthat.com/api/voice_otp.php?action=send" \ -H "X-Api-Key: bt_xxxxxxxx" -d "phone=905321234567"
→ {"ok":true,"id":8812,"code":"472915","expires_in":300}
ドキュメント
APIヘッダー
各見出しにエンドポイント、パラメータ、リクエストとレスポンスの例。
概要
認証、リクエスト形式、エラーコード、レート制限
読み取りAPIセキュリティ
キーとスコープ、許可IP、HMACリクエスト署名、キーのローテーション、リクエストログ
読み取り通話管理
クリックで発信、終了、転送、ミュート
読み取り列
列の一覧、待機中、メンバーの追加/削除
読み取り担当者のステータス
内線のステータスと列のメンバー
読み取りブラックリスト
ブロック番号の一覧、追加、削除
読み取り音声ファイル
アナウンス一覧、アップロード、更新、削除
読み取り自動発信
キャンペーン設定、番号追加、結果取得、Webhook
読み取り音声アシスタント
通話、メモ、予約、タスク発信、埋め込み
読み取り音声確認(OTP)
コード送信、検証、ステータス、Webhook
読み取りSMS API
一括 / 個別メッセージSMS、OTP SMS、配信レポート、受信SMS、ブラックリスト
読み取りWebhook
署名検証、再試行ポリシー、イベントスキーマ
読み取り埋め込み(CRM iframe)
PBX画面とWeb電話ソフトウェアで:コード、署名付きリンク、JavaScriptイベント
読み取りWebhook
Webhookドキュメント 結果はお客様に届けます。お客様から問い合わせる必要はありません。
自動発信の結果、音声アシスタントの通話要約、確認コードのステータス — すべてのイベントがJSONでお客様のアドレスにPOSTされます。X-Buluthat-SignatureヘッダーはHMAC-SHA256署名です。配信に失敗した場合は1分 → 6時間の間隔で再試行されます。
// PHP:署名検証
$raw = file_get_contents('php://input'); $sig = $_SERVER['HTTP_X_BULUTHAT_SIGNATURE'] ?? ''; $calc = hash_hmac('sha256', $raw, $secret); if (!hash_equals($calc, $sig)) { http_response_code(401); exit; } $event = json_decode($raw, true);
// $event['event'] = 'call_finished' | 'session_ended' | 'otp_result' …
