Skip to main content
Threads

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。
このエンドポイントにクエリパラメーターはなく、type、types、types[]、include_tool_calls、include_thinking、event_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 に使用できる必要があります。
  • 別の Thread に属する cursor、現在の呼び出し元から参照できない cursor、または現在の状態では使用できない cursor の場合は 400 invalid_event_cursor。
  • Thread は存在するが、cursor に対応する Event が利用できなくなっている場合は 404 event_cursor_not_found。
  • Header を省略した場合は、接続時点の Thread イベントストリーム末尾から配信を開始し、接続確立後に新しく生成された Event のみを受信します。履歴 Event は再送されません。履歴または切断中の Event を取得するには、Thread Event の一覧取得でページ単位に取得してから、Last-Event-ID を指定して stream を確立してください。
  • 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 が存在しないか、呼び出し元から参照できません。
404not_found_errorevent_cursor_not_foundThread は存在しますが、Last-Event-ID に対応する Event は利用できません。
502api_errorruntime_unavailableThread ランタイムサービスが利用できません。

Thread の検出と復旧

親 Session の履歴またはストリームでは、session.thread_created、session.thread_status_running、session.thread_status_idle、session.thread_status_rescheduled、session.thread_status_terminated により child Thread の作成と状態変化が公開されます。 親 Session stream で session.thread_created を受信したら、その Event ID を child Thread stream の最初の Last-Event-ID として使用し、Thread の検出から接続までに生成された Event の取りこぼしを防ぎます。 event_cursor_not_found のエラーメッセージは Event '<event_id>' was not found. です。このエラーを受け取った場合は、Thread Event 履歴を再クエリして新しい接続を確立してください。Thread が削除されたことを意味するものではありません。 Thread 一覧からアクティブな child Thread を検出した場合は、先に Thread Event 履歴を取得し、レスポンスの last_id で stream を開始します。Thread のアーカイブ後は child Thread stream を新規作成または再開できません。親 Session の履歴またはストリームからライフサイクル Event を復旧し、Thread 取得エンドポイントで最終状態を確認してください。