メインコンテンツへスキップ
GET /v1/sessions/{session_id}/events/stream Server-Sent Events (SSE) で Session 内のすべてのイベントをリアルタイムに受信します。接続が確立されると、サーバーはその Session の完全なイベント履歴をプッシュし、新しいイベントが発生するたびに継続的にプッシュします。

パスパラメータ

パラメータ説明
session_idstringSession ID(sess_ プレフィックス)

ヘッダー

名称必須
AuthorizationはいBearer $QODER_PAT
Accept推奨text/event-stream

クエリパラメータ

パラメータ必須説明
after_idstringいいえこのイベント ID 以降のイベントのみ受信

リクエスト例

curl -N -X GET "https://api.qoder.com/api/v1/cloud/sessions/sess_019e392c0d1e74e095d21ea4c6b41def/events/stream" \
  -H "Authorization: Bearer $QODER_PAT" \
  -H "Accept: text/event-stream"

レスポンス例

HTTP 200 OK Content-Type: text/event-stream 各イベントは SSE 標準形式に従います:
id: <event_id>
event: <event_type>
data: <json_payload>

SSE 形式の例

注意: SSE data 行の JSON は完全にフラットな構造です。すべてのフィールド(nameinputtool_use_idcontentis_error など)はトップレベルオブジェクトに直接配置され、追加のネストラッパーはありません。content フィールドは SSE 出力では常に配列形式 [{"type": "text", "text": "..."}] です。
ユーザーメッセージ:
id: evt_019e392c0d787cfaa21bda98e06cd913
event: user.message
data: {"id": "evt_019e392c0d787cfaa21bda98e06cd913", "type": "user.message", "content": "こんにちは", "turn_id": "turn_019e392c0d787ceea6bb62943f9ac3ec", "created_at": "2026-05-18T03:40:48.888851795Z", "session_id": "sess_019e392c0d1e74e095d21ea4c6b41def", "processed_at": "2026-05-18T03:40:48.888851795Z", "schema_version": "1.0"}
Session スケジュール:
id: evt_771c1195bcbd4a07834d4ed4dd6450ca
event: session.status_running
data: {"id": "evt_771c1195bcbd4a07834d4ed4dd6450ca", "type": "session.status_running", "turn_id": "turn_019e392c0d787ceea6bb62943f9ac3ec", "created_at": "2026-05-18T03:40:50.321Z", "session_id": "sess_019e392c0d1e74e095d21ea4c6b41def", "processed_at": "2026-05-18T03:40:50.321Z", "schema_version": "1.0"}
Agent の応答:
id: evt_f8599c68e7784f2d8c490af1b3056716
event: agent.message
data: {"id": "evt_f8599c68e7784f2d8c490af1b3056716", "type": "agent.message", "content": [{"text": "メッセージを受け取りました。", "type": "text"}], "turn_id": "turn_019e392d6aad7158b377c039c6ba5db3", "created_at": "2026-05-18T03:42:41.194Z", "session_id": "sess_019e392c0d1e74e095d21ea4c6b41def", "processed_at": "2026-05-18T03:42:41.194Z", "schema_version": "1.0"}
Agent のツール呼び出し:
id: evt_01JZ6Q3FB6SG8F7J1M2N
event: agent.tool_use
data: {"id": "evt_01JZ6Q3FB6SG8F7J1M2N", "type": "agent.tool_use", "schema_version": "1.0", "session_id": "sess_019e392c0d1e74e095d21ea4c6b41def", "turn_id": "turn_019e392c0d787ceea6bb62943f9ac3ec", "tool_use_id": "toolu_bdrk_01T42NPLcKrBvLJfWgGt3QMt", "name": "Bash", "input": {"command": "echo hello"}, "requires_confirmation": false, "processed_at": "2026-05-18T03:41:05.000Z"}
ツール実行結果:
id: evt_01JZ6Q5Y0S1H2G3F4E5D
event: agent.tool_result
data: {"id": "evt_01JZ6Q5Y0S1H2G3F4E5D", "type": "agent.tool_result", "schema_version": "1.0", "session_id": "sess_019e392c0d1e74e095d21ea4c6b41def", "turn_id": "turn_019e392c0d787ceea6bb62943f9ac3ec", "tool_use_id": "toolu_bdrk_01T42NPLcKrBvLJfWgGt3QMt", "name": "Bash", "content": [{"type": "text", "text": "hello\n"}], "is_error": false, "processed_at": "2026-05-18T03:41:06.000Z"}
Session アイドル(Turn 完了):
id: evt_a289470296c94e7ba8d7ea562efe5925
event: session.status_idle
data: {"id": "evt_a289470296c94e7ba8d7ea562efe5925", "type": "session.status_idle", "usage": {"input_tokens": 150, "output_tokens": 42, "cache_read_input_tokens": 0, "cache_creation_input_tokens": 0}, "status": "idle", "turn_id": "turn_019e392d6aad7158b377c039c6ba5db3", "created_at": "2026-05-18T03:42:41.195Z", "session_id": "sess_019e392c0d1e74e095d21ea4c6b41def", "stop_reason": {"type": "end_turn"}, "processed_at": "2026-05-18T03:42:41.195Z", "schema_version": "1.0"}

イベントタイプ

完全なイベントタイプ一覧:
event (SSE field)説明
user.messageユーザーが送信したメッセージ
session.status_runningAgent が処理を開始
span.model_request_startモデル推論リクエスト開始
agent.thinkingAgent 思考中(内部推論)
agent.messageAgent が生成した応答メッセージ
agent.tool_useAgent が組み込みツールを呼び出し
agent.tool_resultツール実行の返却結果
agent.mcp_tool_useAgent が MCP ツールを呼び出し
agent.mcp_tool_resultMCP ツール実行の返却結果
session.status_idle処理完了、Session がアイドルに戻った
span.model_request_endモデル推論リクエスト終了
session.error処理中にエラー発生
terminatedTurn が終了した

典型的なイベントストリームのライフサイクル

1 回の完全な対話 Turn で、通常は以下の順でイベントを受信します:
  1. user.message - ユーザーメッセージがキューに入る
  2. session.status_running - Agent が実行を開始
  3. span.model_request_start - モデル呼び出し開始
  4. agent.thinking - Agent の内部推論
  5. agent.message - Agent が応答を生成
  6. session.status_idle - Turn 完了、アイドルに戻る(usage 統計を含む)
  7. span.model_request_end - モデル呼び出し終了

クライアント実装の推奨事項

  • EventSource API または SSE をサポートする HTTP クライアントを使用
  • session.status_idle イベントを監視して、対話 1 ラウンドの終了を判定
  • turn_id フィールドで同一ラウンドの全イベントを関連付け
  • 接続はクライアントが切断するまで保持され、サーバーは新しいイベントをプッシュし続けます

エラーレスポンス

HTTPtype説明
401authentication_errorPAT が無効または期限切れ
404not_found_errorSession が存在しない