REST・WebSocket・gRPC

API
参照。

312 のエンドポイント、完全な OpenAPI 仕様、すべての変更に対する冪等性、およびパブリック アップタイム契約。ブラックボックスはありません。

ベースURL
api.rozper.com
バージョン
v2026.05
レート制限
1000rps
役職/v2/呼び出し
"color:#22D3EE">curl "color:#22D3EE">-X "カラー:#34D399;フォントの太さ:600">投稿 https://api.rozper.com/v2/calls \
  「カラー:#22D3EE」>-H 「権限:所持者」 $ROZPER_API_KEY" \
  「カラー:#22D3EE」>-H 「コンテンツタイプ: application/json」 \
  「カラー:#22D3EE」>-d '{
    "に":   "+14155551234",
    "から": "+12025550100",
    「URL」:  「https://your.app/voice/answer」
  }'
201応答時間・84ms
{
  "id": "call_01HXY7ZQ9V3J3X8K5N",
  "status": "queued",
  "to":     "+14155551234",
  "from":   "+12025550100",
  "created_at": "2026-05-12T14:23:01Z"
}
§01 · 認証

無記名トークン。
スコープ付き。回転可能。

すべてのリクエストには、ベアラー トークンとしてプロジェクト キーが含まれます。キーはスコープ (読み取り、書き込み、請求) で、ダウンタイムなしでローテーション可能で、ダッシュボードから IP ピンで固定できます。

  • 環境ごとのキー (テスト/ライブ)
  • OAuth 2.0 クライアント認証情報のサポート
  • Enterprise で相互 TLS が利用可能
認可ヘッダー
カールノードパイソン行く
# .env  →  never commit me
ROZPER_API_KEY=sk_live_8FzqQ...XW7p

# request
curl https://api.rozper.com/v2/account \
  -H "Authorization: Bearer $ROZPER_API_KEY"

# 200 OK
{
  "id": "acct_01HXY7ZQ9V3J3X8K5N",
  "scopes": ["calls.write", "messages.write", "numbers.read"],
  "rate_limit": { "limit": 1000, "remaining": 998, "reset": 1715520000 }
}
§02 · リファレンス

すべてのエンドポイントを探索します。

電話通話を作成する

通話を作成する

発信 PSTN 通話を発信します。キューに入れられた呼び出しオブジェクトを使用してすぐに戻ります。Webhook で状態の変化をリッスンします。

役職/v2/呼び出し
パラメータ
to必須

E.164 宛先番号。

from必須

Rozper 番号を確認またはレンタルしました。

url

通話が接続されたときに音声指示を返す HTTPS エンドポイント。

recordブール値

両足をストレージに記録します。デフォルトは false。

timeout整数

呼び出しタイムアウト (秒単位)。デフォルトは 60。

リクエスト ・ ノード●ライブ
const call = await rozper.calls.create({
  to:   "+14155551234",
  from: "+12025550100",
  url:  "https://your.app/voice/answer",
})
応答 · 201 が作成されました84ミリ秒
{
  "id": "call_01HXY7ZQ9V3J3X8K5N",
  "object": "call",
  "created_at": "2026-05-12T14:23:01Z"
}
§03 · エラー

予測可能で機械可読なエラー。

すべての 4xx と 5xx は同じ形状を返します。つまり、安定しています。 code、人間が読めるメッセージ、およびサポートに貼り付けることができるリクエスト ID。

エラーエンベロープ
{
  "error": {
    "code": "invalid_param",
    "message": "to: must be E.164",
    "request_id": "req_01HXY7…",
    "param_errors": [
      { "param": "to", "reason": "format" }
    ]
  }
}
400
bad_request

リクエスト本文の形式が不正であるか、必須フィールドが欠落しています。

401
unauthorized

API キーが欠落しているか、期限切れであるか、取り消されています。

403
forbidden

キーには、このリソースに必要なスコープがありません。

404
not_found

このアカウントにはリソース ID が存在しません。

409
conflict

冪等キーが別のペイロードと衝突します。

422
invalid_param

パラメータの検証に失敗しました。 param_errors[] を調べます。

429
rate_limited

Retry-After ヘッダーを使用したバックオフ。

500
server_error

通知を受けました。冪等な呼び出しを再試行します。

§04 · Webhook

署名済み、再試行済み、リプレイ保護済み。

すべてのイベントは、HMAC 署名、一意のイベント ID、および UTC タイムスタンプとともに配信されます。最大 24 時間、指数バックオフを使用して再試行します。

Rozper-Signature の HMAC-SHA256 署名
最大 8 回の再試行、24 時間のウィンドウ
複数のエンドポイントに同時に送信する
Webhook · ノードを検証する✓ 定数時間比較
import { verify } from "@rozper/sdk/webhooks"

app.post("/webhooks/rozper", (req, res) => {
  const ok = verify({
    payload:   req.rawBody,
    signature: req.header("Rozper-Signature"),
    secret:    process.env.ROZPER_WEBHOOK_SECRET,
  })
  if (!ok) return res.status(401).end()

  const event = JSON.parse(req.rawBody)
  switch (event.type) {
    case "call.completed": /* … */
    case "recording.ready": /* … */
  }
  res.json({ received: true })
})
イベントカタログ・全32件
call.initiated

通信事業者によって発信通話が受け入れられました。

call.ringing

遠端が鳴っています。

call.answered

遠端が応答しました (または AMD が人間を検出しました)。

call.completed

通話が終了しました。期間、請求、レッグのメタデータが含まれます。

recording.ready

録画アセットがアップロードされ、署名された URL が利用可能です。

message.delivered

配送業者の配送受領書 (サポートされている場合)。

agent.handoff

AI エージェントは人間のキューにエスカレーションされました。

number.purchased

番号の取得が完了しました。

§05 · 変更履歴

あらゆる変化をわかりやすい英語で。

  1. 2026-05-10
    v2026.05
    • 偉業音声エージェントは、ストリーミング応答によるツール呼び出しをサポートするようになりました。
    • 偉業プログラムによる LNP 送信用の新しい /v2/numbers/port エンドポイント。
  2. 2026-04-22
    v2026.04
    • 修理冪等性キャッシュは、POST /call で 24 時間の TTL を正しく尊重するようになりました。
    • 雑用非推奨の v1 エンドポイントが削除されました (2025 年 11 月に発表)。
  3. 2026-03-31
    v2026.03
    • 偉業WebSocket メディア ストリームのベータ版が一般公開されました。
    • 偉業WhatsApp テンプレート メッセージが /v2/messages に追加されました。
API リファレンス · Rozper REST および WebSocket ドキュメント |今日のロズパー