RESTful API を使用してキャリアグレードの通信ワークフローを構築します。 HTTPS 上の JSON、ベアラー トークン認証、およびリアルタイム Webhook。
curl -X POST https://api.ajoxi.com/v1/calls \
-H "Authorization: Bearer AJX_LIVE_..." \
-H "Content-Type: application/json" \
-d '{ "to": "+14155551234", "from": "+14155550100", "ai_receptionist": true }'{
"id": "call_8f2a1b3c",
"status": "ringing",
"ai_handler": "receptionist_v2"
}すべてのリクエストは、 Authorization ヘッダ。 Ajoxi コンソールの API タブからキーを生成します — を使用します AJX_LIVE_… 実稼働トラフィック用と AJX_TEST_… サンドボックス用。
curl https://api.ajoxi.com/v1/calls \
-H "Authorization: Bearer AJX_LIVE_XXXXX"音声通話の発信、リスト、転送、取得を行います。
/v1/callsカーソルのページネーションと日付フィルターを使用してすべての通話をリストします。
/v1/calls新しい発信通話を開始するか、ダイヤラー キャンペーンをトリガーします。
/v1/calls/{id}完全なメタデータを含む ID によって単一の通話を取得します。
/v1/calls/{id}/transferアクティブな通話を別のエージェントまたは内線番号に転送します。
電話番号を検索、プロビジョニング、ポート、解放します。
/v1/numbers利用可能な国内番号、フリーダイヤル番号、または国際番号を検索します。
/v1/numbers新しい番号をアカウントにプロビジョニングします。
/v1/numbers/{id}番号のルーティング、発信者番号、または SMS 構成を更新します。
/v1/numbers/{id}番号をプールに戻します。不可逆。
SMS、MMS、会話履歴を送受信します。
/v1/messagesメッセージをリストし、方向、チャネル、または会話でフィルターします。
/v1/messagesSMS または MMS を送信します。メディアの添付ファイルとテンプレートをサポートします。
通話録音、トランスクリプト、AI が生成した洞察にアクセスします。
/v1/recordingsオプションの日付フィルターとエージェントフィルターを使用して通話録音をリストします。
/v1/recordings/{id}トランスクリプトと AI サマリーを含む単一の録音を取得します。
/v1/transcripts/{id}通話または録音の完全なトランスクリプトを取得します。
リアルタイムのプラットフォーム イベントを購読します。
/v1/webhooks構成された Webhook サブスクリプションを一覧表示します。
/v1/webhooks1 つ以上のイベント (call.start、message.received) をサブスクライブします。
/v1/webhooks/{id}Webhook サブスクリプションを削除します。
すべてのエラー応答は、次の JSON を返します。 error.code そして error.message。 HTTP ステータス コードがカテゴリと一致します。
標準アカウントでは、API キーごとに 1 秒あたり 100 リクエストに制限されます。エンタープライズ プランには固定の上限はありません。お客様のトラフィックに合わせて拡張します。すべての応答には、次の 3 つのレート制限ヘッダーが含まれます。
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1715800000制限を超えると、次のような 429 応答が返されます。 Retry-After 数秒でヘッダーが表示されます。 SDK クライアントは、これらのヘッダーに対して指数バックオフを自動的に実装します。
リスト エンドポイントは、デフォルトでページごとに最大 50 個の項目を返します (次の方法で最大 200 個まで構成可能) ?limit=200)。各応答には次の内容が含まれます。 next_cursor — 次のように返します ?cursor=… 次のページを取得します。いつ next_cursor が null の場合、最後まで到達しました。
{
"data": [ ... ],
"next_cursor": "Y3Vyc29yX2FmMmI...",
"has_more": true
}署名された HTTPS POST 経由でプラットフォーム イベントをサブスクライブします。すべての Webhook リクエストには、 X-Ajoxi-Signature ヘッダー — Webhook シークレットを使用して、生のリクエスト本文で HMAC-SHA256 として検証します。
call.started着信または発信の呼び出しが鳴り始めると発生します。call.answered人間または AI の受付担当者が通話に応答すると発生します。call.completed通話が終了すると発生します。ペイロードには、期間、録画 URL、および最終的な処理が含まれます。message.received受信 SMS または MMS がプロビジョニングされた番号に到着すると発生します。message.delivered送信メッセージが通信事業者によって配信されたことが確認されたときに発生します。recording.ready通話録音が処理され、ダウンロードできるようになったときに発生します。transcript.ready録音の AI トランスクリプトの処理が終了したときに発生します。失敗した配信は、最大 24 時間の指数バックオフで再試行されます。最後の試行の後、イベントは配信不能キューに移動され、コンソールから再生できます。
現在の安定版は、 v1。重大な変更は新しいプレフィックス (/v2/など) — 既存のバージョン内では決して使用しないでください。非推奨バージョンは、後継バージョンの出荷後少なくとも 18 か月間利用可能であり、日没前に 6 か月間電子メールで警告が送信されます。
ファーストパーティ SDK は、Node.js、Python、Go、Ruby で利用できます。それぞれに、型指定されたクライアント、再試行ロジック、および verifyWebhook() ヘルパー。
すべてのリクエストはベアラー トークン認証を使用します。 Ajoxi コンソールで API キーを生成し、リクエストごとにそれを「Authorization: Bearer AJX_LIVE_XXXXX」として渡します。サンドボックス トラフィックには別の `AJX_TEST_…` キーを使用します。テスト環境は分離されており、実際の呼び出しは行われません。
はい。テストモード キーを使用して発信された通話は、ライブ キャリア ネットワークではなくシミュレータを通じてルーティングされるため、CI パイプラインや負荷テストに最適です。テストモードのリクエストでは、分単位の割り当てに対して請求が行われることはなく、実際の電話が鳴ることもありません。
標準プランでは 1 秒あたり 100 リクエスト、エンタープライズでは無制限。各応答には「X-RateLimit-Limit」、「X-RateLimit-Remaining」、「X-RateLimit-Reset」ヘッダーが含まれているため、トラフィックのペースを正確に調整できます。制限を超えると、「Retry-After」値を含む 429 を受け取ります。
すべての Webhook リクエストには `X-Ajoxi-Signature` ヘッダーが含まれます。 Webhook シークレットを使用して生のリクエスト本文に対して HMAC-SHA256 を計算し、2 つの値を定数時間比較します。 SDK クライアント (Node、Python、Go、Ruby) には、これを処理する `verifyWebhook()` ヘルパーが付属しています。
安定した API バージョンを壊すことはありません。重大な変更は、新しいバージョン パス (例: `/v2/`) で出荷されます。非推奨バージョンは、後継バージョンの出荷後少なくとも 18 か月間存続し、廃止される前に少なくとも 6 か月間警告メールを受け取ります。
現在はありません。 API は REST + JSON であり、ライブ トランスクリプトなどのストリーミング エンドポイント用のオプションの Server-Sent Events を備えています。 GraphQL が特定のワークフローのブロックを解除してくれる場合は、アカウント チームを通じてリクエストを提出してください。当社は需要を追跡し、それに応じて優先順位を付けます。
サンドボックス キーをスピンアップし、SDK をインストールし、昼食前に最初のプログラム可能な呼び出しを実行します。