Forward Session API が返すセッションおよびイベントオブジェクトのリファレンスです。
Session オブジェクト
Create、Get、List、Update、および Archive Session エンドポイントはすべて、このオブジェクトを返します。
{
"id": "sess_xxx",
"type": "session",
"identity_id": "idn_xxx",
"template": {
"id": "tmpl_support",
"type": "template",
"name": "Customer support assistant",
"model": "ultimate",
"version": 3
},
"source_type": "api",
"status": "idle",
"title": "Customer support conversation",
"incremental_streaming_enabled": true,
"metadata": {
"source": "web",
"biz_id": "ticket_123"
},
"config": {
"environment_variables": {
"API_KEY": "sk-xxx"
}
},
"stats": {
"active_seconds": 30,
"duration_seconds": 3600
},
"usage": {
"credits": 12.5
},
"archived_at": null,
"created_at": "2026-06-22T10:00:00Z",
"updated_at": "2026-06-22T11:00:00Z"
}
|
フィールド |
型 |
常に返される |
説明 |
|
|
文字列 |
はい |
|
|
|
文字列 |
はい |
常に |
|
|
文字列 |
はい |
このセッションが属するエンドユーザーの Forward アイデンティティ ID。 |
|
|
オブジェクト |
はい |
Forward テンプレートの概要です。以下の「テンプレートの概要」テーブルをご参照ください。 |
|
|
文字列 |
はい |
セッションソース: |
|
|
文字列 |
はい |
セッションのランタイムステータス: |
|
|
文字列 |
はい |
セッションのタイトルです。 |
|
|
ブール値 |
はい |
このセッションでインクリメンタルストリーミングイベントを有効にするかどうかを指定します。作成時に省略した場合、デフォルトは |
|
|
オブジェクト |
いいえ |
呼び出し元が定義したビジネスメタデータ。 |
|
|
オブジェクト |
いいえ |
セッションの設定。設定が指定されていない場合は省略されます。 |
|
|
オブジェクト |
いいえ |
キーバリューペアとして表されるセッションレベルの環境変数。 |
|
|
オブジェクト |
いいえ |
セッションの使用量統計です。以下の「セッション統計」テーブルをご参照ください。 |
|
|
オブジェクト |
いいえ |
使用量情報。課金モジュールが有効でない場合は省略される可能性があります。 |
|
|
数値 |
いいえ |
消費したクレジット。 |
|
|
文字列 | null |
はい |
アーカイブタイムスタンプ。セッションがアーカイブされていない場合は |
|
|
文字列 |
はい |
RFC 3339 形式の作成日時。 |
|
|
文字列 |
はい |
RFC 3339 形式の最終更新日時。 |
テンプレートの概要
|
フィールド |
タイプ |
常に返却 |
説明 |
|
|
文字列 |
はい |
転送テンプレート ID です。 |
|
|
文字列 |
はい |
常に |
|
|
文字列 |
はい |
テンプレート名です。 |
|
|
文字列 |
はい |
テンプレートが使用するモデルティアまたはモデル識別子です。 |
|
|
整数 |
はい |
テンプレートのバージョン番号です。 |
セッション統計
|
フィールド |
タイプ |
常に返されるか |
説明 |
|
|
整数 |
いいえ |
アクティブ処理時間を秒単位で示します。新しいセッションの場合、通常は |
|
|
整数 |
いいえ |
合計セッション期間を秒単位で示します。新しいセッションの場合、通常は |
イベントオブジェクト
API によって返されるイベントは JSON オブジェクトで、ペイロードは type によって異なります。すべてのイベントには同じ共通フィールドのセットに加え、タイプ固有のペイロードフィールドが含まれます。
{
"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"
}
|
フィールド |
タイプ |
常に返される |
説明 |
|
|
文字列 |
はい |
|
|
|
文字列 |
はい |
イベントタイプです。 |
|
|
文字列 |
はい |
このイベントが属するセッションの ID です。 |
|
|
文字列 |
いいえ |
イベントが処理された時刻です (RFC 3339 フォーマット)。特定のエージェント生成イベントまたはインクリメンタルイベントでは存在しない場合があります。 |
各イベントタイプで使用できるペイロードフィールドは、以下のとおりです。共通フィールドの id、type、session_id、および processed_at は、繰り返しになるため表には記載していません。
|
イベントタイプ |
許可されるフィールド |
|
|
|
|
|
なし |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
なし |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
なし |
|
|
|
|
|
なし |
|
|
|
|
|
|
クライアント書き込み可能なイベントタイプ
POST /api/v1/forward/sessions/{session_id}/events は、以下のイベントタイプのみを受け付けます。
|
タイプ |
必須フィールド |
説明 |
|
|
|
ユーザーメッセージ。 |
|
|
なし |
現在のターンを中断するようリクエストします。 |
|
|
|
ツール呼び出しの確認。 |
|
|
|
組み込みツールの結果を返します。 |
|
|
|
クライアント定義のカスタムツールの結果を返します。 |
|
|
|
望ましい成果と、その評価ルーブリックを定義します。 |
system.message はパブリックイベントタイプですが、Forward クライアント書き込み可能イベントとしては受け付けられません。
パブリックイベントタイプ
イベント履歴をクエリする場合、または SSE ストリームをサブスクライブする場合、以下のいずれかのパブリックイベントタイプを受信することがあります。
user.message 、user.interrupt 、user.tool_confirmation 、user.tool_result 、user.custom_tool_result 、user.define_outcome 、system.message 、agent.message 、agent.thinking 、agent.message_start 、agent.content_block_start 、agent.content_block_delta 、agent.content_block_stop 、agent.message_delta 、agent.message_stop 、agent.tool_use 、agent.tool_result 、agent.custom_tool_use 、agent.mcp_tool_use 、agent.mcp_tool_result 、agent.artifact_delivered 、session.status_running 、session.status_idle 、session.status_terminated 、session.error 、および session.updated 。
インクリメンタルストリーミングイベント
インクリメンタルストリーミングイベントを公開するかどうかは、会話の作成時に設定する incremental_streaming_enabled フィールドによって制御され、履歴クエリや SSE サブスクリプションのリクエストパラメータには依存しません。
-
true:イベントストリームは、最終的なagent.messageの前にアシスタントの部分的な出力を返します。履歴クエリも同じインクリメンタルイベントを返します。 -
falseまたは省略:標準モード。完全な公開イベントのみが返され、インクリメンタルイベントは発行されません。
インクリメンタルストリーミングが有効な場合でも、最終的な完全な agent.message は返されます。クライアントは、即時レンダリングのためにインクリメンタルイベントを使用し、永続化や表示の調整における信頼できる唯一の情報源として、最終的な agent.message に依存できます。
以下の 6 つのトップレベルイベントタイプのみがインクリメンタルです。
|
イベントタイプ |
主要なフィールド |
説明 |
|
|
|
アシスタントメッセージの開始を示します。 |
|
|
|
テキスト、思考、ツールの使用などのコンテンツブロックの開始を示します。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
アシスタントメッセージの終了を示します。 |
text_delta 、 thinking_delta 、 signature_delta 、 input_json_delta 、および tool_output_delta はトップレベルのイベントタイプではありません。これらは agent.content_block_delta.delta.type の値としてのみ現れます。
|
|
フィールド |
説明 |
|
|
|
テキスト出力のフラグメント。クライアントは |
|
|
|
モデルまたはプロバイダーの思考出力のフラグメント。 |
|
|
|
思考ブロックのシグネチャフラグメント。シグネチャが存在する場合にのみ発行されます。 |
|
|
|
ツール入力 JSON のフラグメント。 |
|
|
可変 |
将来のツール出力のストリーミングのために予約されています。現在、完全な |
agent.content_block_delta の例:
{
"id": "evt_delta_xxx",
"type": "agent.content_block_delta",
"session_id": "sess_xxx",
"message_id": "msg_xxx",
"index": 0,
"delta": {
"type": "text_delta",
"text": "Here"
},
"processed_at": "2026-06-22T11:00:01Z"
}
インクリメンタルイベントを解析するためのルール:
-
SSE の
event:行と JSON のdata.typeは、両方とも公開イベントタイプを使用します。 -
agent.content_block_delta.indexは、複数のコンテンツブロックを区別します。 -
processed_atはインクリメンタルイベントに存在しない場合があります。クライアントはこれを任意として扱う必要があります。 -
ネットワークが中断した後は、最後に受信したイベント ID を含む
Last-Event-IDヘッダーを使用して再開します。 -
include_thinking=falseを設定すると、thinking_delta、signature_delta、および認識可能な思考コンテンツブロックの開始/停止イベントが除外されます。 -
include_tool_calls=falseを設定すると、input_json_delta、tool_output_delta、および認識可能なツールコンテンツブロックの開始/停止イベントが除外されます。