Skip to main content
Sessions

Session Thread Event Stream の購読

Forward Session Thread の公開 Event を Server-Sent Events でストリーミングします。

GET /api/v1/forward/sessions/{session_id}/threads/{thread_id}/stream

リクエストパラメーター

場所パラメーター必須説明
HeaderAuthorizationstringはいBearer <PAT または SAT>
HeaderAcceptstringいいえtext/event-stream を推奨します。省略しても接続できます。
HeaderLast-Event-IDstringいいえこの Thread Event の後から購読を再開します。
Pathsession_idstringはいsess_ プレフィックス付きの Session ID。
Paththread_idstringはいsthr_ プレフィックス付きの Thread ID。
このエンドポイントにクエリパラメーターはなく、typetypestypes[]include_tool_callsinclude_thinkingevent_deltas[] をサポートしません。空の値であっても指定すると 400 invalid_request が返され、ストリームは開始されません。

リクエスト例

curl -N -X GET 'https://api.qoder.com/api/v1/forward/sessions/sess_xxx/threads/sthr_child_xxx/stream' \
  -H "Authorization: Bearer $QODER_ACCESS_TOKEN" \
  -H "Accept: text/event-stream" \
  -H "Last-Event-ID: evt_cursor_xxx"

ストリーム形式

id: evt_xxx
event: agent.message
data: {"id":"evt_xxx","type":"agent.message","session_id":"sess_xxx","content":[{"type":"text","text":"タスクを受信しました"}],"processed_at":"2026-06-22T11:05:00Z"}
サーバーは接続維持のため : heartbeat コメント行を定期送信します。すべての frame を受信し、表示上のフィルタリングはローカルで行い、再接続用に最後の SSE id を保存してください。

Last-Event-ID

Last-Event-ID は現在の Thread に属している必要があります。
  • 別の Session または Thread の cursor の場合は 404 thread_not_found
  • ランタイムが現在の Thread に対して無効と判断した Event cursor の場合は 400 invalid_event_cursor
  • Header を省略した場合は、その Thread の最初の Event から再生されます。Event は欠落しませんが、すでに処理した Event が再送されるため、Event ID に基づいて冪等に処理してください。
  • SSE 接続は、ゲートウェイのタイムアウトやサーバーの再起動などにより切断されることがあります。サーバーは接続が長時間維持されることを保証しないため、クライアント側で再接続とリトライを実装してください。再接続時は、最後に受信した Event ID を Last-Event-ID に指定して、続きから購読を再開します。

エラー

HTTPTypeCode条件
400invalid_requestinvalid_requestサポートされていない selector を指定しました。
400invalid_request_errorinvalid_event_cursorLast-Event-ID が現在の Thread では無効です。
401authentication_errorauthentication_requiredPAT または SAT が無効または期限切れです。
404not_foundsession_not_foundSession が存在しないか、呼び出し元から参照できません。
404not_found_errorthread_not_foundThread が存在しない、Session に属していない、または cursor が別の Session/Thread を指しています。
502api_errorruntime_unavailableThread ランタイムサービスが利用できません。

Thread の検出と復旧

親 Session の履歴またはストリームでは、session.thread_createdsession.thread_status_runningsession.thread_status_idlesession.thread_status_rescheduledsession.thread_status_terminated により child Thread の作成と状態変化が公開されます。 親 Session stream で session.thread_created を受信したら、その Event ID を child Thread stream の最初の Last-Event-ID として使用し、Thread の検出から接続までに生成された Event の取りこぼしを防ぎます。 Thread 一覧からアクティブな child Thread を検出した場合は、先に Thread Event 履歴を取得し、レスポンスの last_id で stream を開始します。Thread のアーカイブ後は child Thread stream を新規作成または再開できません。親 Session の履歴またはストリームからライフサイクル Event を復旧し、Thread 取得エンドポイントで最終状態を確認してください。
ベストプラクティス