Skip to main content
Sessions

セッションイベントのストリーミング

SSE で Forward セッションのイベントストリームを購読します。

GET /api/v1/forward/sessions/{session_id}/events/stream Server-Sent Events でセッションイベントをストリーミングします。ストリーミング出力が必要な新規統合では event_deltas[] で購読してください。

Headers

HeaderRequiredDescription
AuthorizationYesBearer <PAT または SAT>
AcceptYestext/event-stream
Last-Event-IDNoこの Event ID の後から再開します。

Path parameters

ParameterTypeRequiredDescription
session_idstringYesSession ID。

Query parameters

ParameterTypeRequiredDefaultDescription
event_deltas[]stringNo-指定されたパブリックイベントタイプのストリーミングデルタイベントを購読します。繰り返しパラメータをサポートします。許可値: agent.messageagent.thinkingEvent delta streaming を参照。
include_tool_callsbooleanNotrueツール呼び出しイベントを含めるかどうか。
include_thinkingbooleanNotruethinking イベントを含めるかどうか。

Example request

curl -s -X GET 'https://api.qoder.com/api/v1/forward/sessions/sess_xxx/events/stream' \
  -H "Authorization: Bearer $QODER_ACCESS_TOKEN" \
  -H "Accept: text/event-stream"
テキストと thinking のストリーミングデルタイベントを購読:
curl -s -G 'https://api.qoder.com/api/v1/forward/sessions/sess_xxx/events/stream' \
  -H "Authorization: Bearer $QODER_ACCESS_TOKEN" \
  -H "Accept: text/event-stream" \
  --data-urlencode 'event_deltas[]=agent.message' \
  --data-urlencode 'event_deltas[]=agent.thinking'

Example response

HTTP 200 OK
id: evt_xxx
event: agent.message
data: {"id":"evt_xxx","type":"agent.message","session_id":"sess_xxx","content":[{"type":"text","text":"Here is the analysis result."}],"processed_at":"2026-06-22T11:00:03Z"}

Event delta streaming の例

event_deltas[] を使用してストリーミングデルタイベントを購読した場合、ストリームには event_startevent_delta フレームが含まれます。
id: evt_xxx
event: event_start
data: {"id":"evt_xxx","type":"event_start","session_id":"sess_xxx","event":{"id":"evt_xxx","type":"agent.message"}}

id: evt_xxx
event: event_delta
data: {"id":"evt_xxx","type":"event_delta","session_id":"sess_xxx","event_id":"evt_xxx","delta":{"type":"content_delta","index":0,"content":{"type":"text","text":"Here"}}}

モデル使用量イベントの例

id: evt_xxx
event: span.model_request_end
data: {"id":"evt_xxx","type":"span.model_request_end","is_error":false,"model_request_start_id":"evt_yyy","model_usage":{"credits":0.42},"processed_at":"2026-06-22T11:00:01Z"}

Response fields

FieldDescription
idSSE イベント ID。Event ID と等しくなります。
eventEvent の種類。
dataフィルタリング済みの Forward Event JSON。標準パブリックイベントは List Session Events に記載された Event type マトリクスに従います。event delta ストリームフレームは Event delta streaming を参照してください。

接続の切断と再接続

SSE 接続は、ゲートウェイのタイムアウトやサーバーの再起動などにより切断されることがあります。サーバーは接続が長時間維持されることを保証しないため、クライアント側で再接続とリトライを実装してください。
  • 最後に受信した SSE frame の id(Event ID)を継続的に記録します。
  • 切断後、その ID を Last-Event-ID リクエストヘッダーに指定して再接続すると、続きから購読を再開でき、Event の取りこぼしを防げます。
  • 再接続時に Last-Event-ID を省略すると、その Session の最初の Event から再生されます。Event は欠落しませんが、すでに処理した Event が再送されるため、Event ID に基づいて冪等に処理してください。

Errors

HTTPTypeCodeTrigger
404not_found_errornot_found_errorLast-Event-ID がこの Session に属していない。
401authentication_errorauthentication_requiredPAT または SAT が無効または期限切れ。
404not_found_errorsession_not_foundSession が存在しない。

Notes

  • event_deltas[] は推奨のストリーミング方法です。このパラメータが提供されない場合、標準のパブリックイベントのみ返されます。
  • モデル呼び出しが完了するたびに、ストリームは span.model_request_end モデル使用量イベントを出力します。model_usage.credits はその呼び出し単体の増分使用量です。Session の累積使用量は Get Session から usage.total_credits を読み取ってください。フィールドの詳細はデータ構造ドキュメントのモデル使用量イベントを参照してください。
  • 不明な Event タイプは利用可能な場合、エンベロープのみのイベントとして転送されます。
  • include_thinking=false は thinking イベント、レガシー thinking デルタ、および新しいストリーム agent.thinking event start シグナルと delta.content.type=thinking フラグメントをフィルタリングします。
  • include_tool_calls=false はツール使用イベントとレガシーツール input/output デルタをフィルタリングします。
ベストプラクティス