POST /agent/runs の delta_v1 は、会話履歴全体ではなく最新のユーザーメッセージだけを送ります。
QAIP は保存済みの現在枝から、モデルの上限に収まる rolling context を再構築します。
API キーには inference:run scope が必要です。すべての delta_v1 request に、一意で非空の
Idempotency-Key を付けてください。
新しい会話を開始する
新規会話ではthreadId と baseRunId を省略します。
202 response の thread_id と run_id を保存します。同じ request の response を受け取れなかった場合は、
body と Idempotency-Key を変えずに再送してください。同じ run に収束します。
current_run_idから継続する
GET /agent/threads で agent_id と current_run_id を取得します。
current_run_id は continuation の権威値です。latest_run_id は最新作成 run の表示情報であり、
baseRunId には使わないでください。
409 THREAD_ADVANCED になります。最新の thread 一覧を取得し、
利用者に競合を示してから再送してください。自動 merge や自動再送はしないでください。
失敗したrunを再試行する
現在の run がFAILED または CANCELLED の場合だけ sibling retry を作れます。retryRunId と
baseRunId に同じ current run ID を指定し、元 run と同じ newUserMessage を送ります。新しい
Idempotency-Key を使ってください。
rolling contextの状態を確認する
Agent run response は次を返します。input_history_mode:legacy_fullまたはdelta_v1context_start_run_id: 再構築した文脈に含まれる最古の run。過去文脈が不要ならnullcontext_truncated: モデルの context budget に合わせて古い run を除外した場合はtrue
context_truncated=true でも保存履歴は削除されません。モデルへ渡す文脈だけが短くなります。
legacy_fullと混在させない
既存 client は、inputHistoryMode を省略して full-history の messages と state を送る
legacy_full を引き続き利用できます。
legacy_fullにbaseRunId、retryRunId、newUserMessage、uiStateDeltaは指定できません。delta_v1にstateまたはparentRunIdは指定できません。messagesを送る場合は空配列だけです。- 異なる mode の field を混在させると
422になります。
Dashboard会話とは分離される
API キーで作成した thread の origin はapi_key です。GET /agent/threads は同じ API key principal と
api_key origin の thread だけを返します。Dashboard で作成した会話は返さず、Dashboard の履歴画面にも
API key の会話は表示されません。Dashboard 専用の履歴検索、snapshot、rename、delete API は API キー向け
公開 API ではありません。

