AI Chat v2 API(Documentation Index
Fetch the complete documentation index at: https://docs.xhuoapi.ai/llms.txt
Use this file to discover all available pages before exploring further.
/aichat2/conversations)は次世代の対話インターフェースであり、AI Chat API の全面的なアップグレード版です。v1 のシンプルで多回対話管理機能を基盤とし、以下の拡張を行っています:
- マルチモーダルユーザー入力:構造化された
messageフィールドでテキスト+画像+ファイルブロックを直接送信可能で、referencesを介した間接的な添付は不要です。 - エージェント化ツール呼び出し:ネット検索、ウェブスクレイピング、ファイル読み取りなどのツールを内蔵し、ユーザーが認可した MCP サーバー(Google Drive、Notion、Slack、GitHub など)もマウント可能。モデルは1回のリクエストで複数回自律的にツールを呼び出し複雑なタスクを完遂できます。
- 構造化ストリーミングイベント:
accept: text/event-streamまたはapplication/x-ndjsonにより、逐次トークンのtext_delta、tool_use、tool_result、thinking、citation、card、artifactなどのイベントを取得可能で、フロントエンドでタイプ別にレンダリングしやすくなっています。 - 中断・再開可能:モデルがユーザー補足情報を求める際に
ask_user_questionイベントを発し処理を一時停止。次回呼び出し時にtool_resultsで回答を返すことで続行可能です。 - CRUD 操作の追加:同一エンドポイントで
actionフィールドを用い、retrieve/retrieve_batch/update/deleteを実行可能。追加の会話管理 API は不要です。 - 継続的に更新されるモデルリスト:デフォルトで GPT-5.4、Claude Opus 4.7、Claude Sonnet 4.6、Gemini 3.1 Pro、GLM 5.1、DeepSeek V4、Kimi K2.5 などの最新モデルに対応しています。
model + question(+ 任意で stateful / id / references / preset)のみで v1 と同等の {answer, id} JSON レスポンスが得られます。したがって、/aichat/conversations からの移行はクライアントの書き換え不要で、パスを /aichat2/conversations に変えるだけで済みます。
現在 /aichat/conversations を利用中の場合、旧インターフェースは引き続き提供されており、任意のペースで移行可能です。
申請手順
API を利用するには、まず AI Chat v2 API の該当ページでサービスを申請します。ページにアクセス後、「Acquire」ボタンをクリックするとリクエストに必要な認証情報が取得できます。 未ログインまたは未登録の場合は自動的にログインページにリダイレクトされ、登録・ログイン後に元のページに戻ります。 初回申請時には無料利用枠が付与され、無料で API を利用可能です。基本的な使い方
最も簡単な使い方は v1 と完全に同じで、model + question を送信し {answer, id} を受け取ります。
CURL の例:
model は右側の Try パネルのドロップダウンで直接確認可能で、主なカテゴリは以下の通りです:
- OpenAI:
gpt-5.4-mini、gpt-5.4-nano、gpt-5.2-pro、gpt-5.1-all、gpt-5-all、gpt-4.1、gpt-4o、gpt-4o-image、o3、o4-miniなど - Anthropic:
claude-opus-4-7、claude-opus-4-6、claude-opus-4-5-20251101、claude-sonnet-4-6、claude-sonnet-4-5-20250929、claude-haiku-4-5-20251001など - Google:
gemini-3.1-pro、gemini-3.1-pro-preview、gemini-3.1-flash-image-preview、gemini-3-pro-preview、gemini-2.5-flash-liteなど - xAI:
grok-4、grok-4-1-fast、grok-4-1-fast-reasoning、grok-3-mini-fastなど - DeepSeek:
deepseek-v4-flash、deepseek-v3.2-exp、deepseek-r1-0528など - Moonshot:
kimi-k2.5、kimi-k2-thinking、kimi-k2-thinking-turboなど - Zhipu:
glm-5.1、glm-5、glm-5-turbo、glm-4.7、glm-4.5vなど
多回対話
v1 と同様に、stateful: true を送信して会話保存を有効にすると、API は id を返します。以降のリクエストで同じ id を送れば対話を継続でき、メッセージ履歴を自分で管理する必要はありません。
初回リクエスト例:
id を含めます:
statefulのデフォルトはtrueで、省略時も明示的にtrueを送った場合と同じです。サーバー側に対話を保存してほしくない場合は、明示的にstateful: falseを設定してください。
ストリーミングレスポンス
v2 は2種類のストリーミング形式をサポートし、accept ヘッダーで選択します:
| シーン | accept | データ形式 |
|---|---|---|
| Web フロントエンド / EventSource | text/event-stream | data: {json}\n\n、最終行は data: [DONE]\n\n |
| サーバー / CLI / Node ストリーム解析 | application/x-ndjson | 1行ごとに JSON オブジェクト |
| ストリーミング不要 | application/json(デフォルト) | 一括で {answer, id} を返す |
NDJSON の例
text_delta です:
SSE の例
ブラウザ側のEventSource はカスタムリクエストボディをサポートしないため、fetch と手動で \n\n 区切り解析を使うことを推奨します:
ストリーミングイベントタイプ
type | 意味 |
|---|---|
text_delta | アシスタントの回答増分テキスト断片。content は新規追加内容。v1 互換のため、同一イベントに delta_answer(content と同じ)と id を含む。 |
thinking | モデルの思考過程(選択モデルが reasoning を公開している場合のみ)。 |
tool_use | モデルがツール呼び出しを決定したイベント。tool_id、tool_name、input を含む。 |
tool_result | ツール実行結果。直前の tool_use と tool_id で対応付けられ、is_error で失敗判定。 |
card | ツールが生成した構造化カード(画像やリンクプレビューなど)、直接レンダリングに適する。 |
citation | 対応テキスト断片の引用元 URL 補足。 |
ask_user_question | モデルがユーザー補足情報を求めた際に発生し、対話は awaiting_user_input 状態になる。詳しくは後述の 中断対話の再開 を参照。 |
artifact | モデルが生成した独立成果物(コードブロックやドキュメントなど)、保存やダウンロード可能。 |
system_message | システム通知(ユーザーやアシスタントの発言ではない)、UI 表示用。 |
compact | 内部コンテキスト圧縮イベント、特別な処理不要。 |
error | 当該ラウンドでのエラー発生。message にエラー内容を記述。 |
done | ストリーミング終了。usage(prompt_tokens / completion_tokens / total_tokens 含む)と terminal_reason を含む。 |
text_delta の content を連結すれば、application/json モードの answer と同等です。
マルチモーダル入力
ユーザー入力に画像やファイルが含まれる場合は、question の代わりに message(配列)を送信します。各配列要素はコンテンツブロックです:
text— 通常テキスト。必須フィールドはtext。image_url— 画像。必須フィールドはimage_url.url。file_url— ファイル(PDF、CSV、TXT など)。必須フィールドはfile_url.url。
v1 の references との関係
旧クライアント互換のため、v2 は依然として references: ["https://...", ...] フィールドを認識します:
- URL の拡張子が
jpg / jpeg / png / gif / bmp / webp / svg / heic / heifの場合、自動的にimage_urlブロックに変換。 - その他の拡張子は
file_urlブロックに変換。 - 同時に
questionがある場合は、それを先頭のtextブロックとして扱います。
/aichat2/conversations に変えるだけで、従来の references の使い方はそのまま動作します。
より細かい制御(複数画像をテキスト間に挿入したい、順序が重要など)が必要な場合は、直接 message 配列を使ってください。
ツール呼び出しと MCP
v2 のコア強化点は、モデルが自律的にツールを呼び出して多段階タスクを完遂できることです。これはデフォルトで有効で、クライアント側で特別な設定は不要です。典型的なシナリオ:- ユーザーが「最近の上海の新しい展示を調べて」と尋ねる → モデルが内蔵の web search を呼び出し → 結果をまとめて回答。
- ユーザーが「この PDF を読んで要約を書いて」と依頼 → モデルが file_read を呼び出し → 要約を作成。
- ユーザーが Connections で Google Drive / GitHub / Notion などを認可済み → モデルが対応する MCP ツールを呼び出してデータを読み書き。
tool_use と tool_result イベントで表現されます。例:
tool_use / tool_result / card / citation のイベントを無視しても問題ありません。モデルの最終出力は引き続き text_delta で流れます。
max_turns パラメータで、モデルが1回のリクエスト内で自律的にツールを呼び出せる最大回数を制限可能です。デフォルト上限はプラットフォーム側で決定されます。小さく設定(例:max_turns: 1)すると単一回答に強制し、ツール呼び出しを禁止できます。
中断対話の再開
一部ツールはモデルにユーザーへ「質問返し」をさせることがあり、その際モデルはask_user_question イベントを発し、対話は awaiting_user_input 状態で停止します:
id で次のリクエストを送り、回答を tool_results で返します:
tool_use_id は中断時の tool_id と完全に一致する必要があります。不一致の場合は 400 エラーとなります。tool_results がある場合、question / message / references は無視されます。
ユーザーが質問を放棄する場合は、新しい question / message を送信すればよく、プラットフォームは中断中のツール呼び出しを「ユーザースキップ」とマークします。
会話管理(CRUD)
v2 は同一エンドポイントでaction フィールドを使った軽量会話管理を提供し、別途 API を用意しません。
action: retrieve — 会話取得
model、title、tools_used などを含む完全な会話ドキュメントを返します。
action: retrieve_batch — 会話サマリー一覧
{ items: [...], total } を返します。サマリーには messages は含まれません。サイドバーリストなどに適し、ユーザーが特定会話を開く際に action: retrieve で詳細を取得します。
オプションのフィルター:user_id、application_id、model_group、model。
action: update — タイトル変更や履歴書き換え
messages も送信可能ですが、サーバー側で厳密なスキーマ検証(折りたたまれた ToolUseContent 形式であること)が行われ、不適合時は 400 エラーとなります。通常はタイトル変更にのみ使用推奨。
action: delete — 会話削除
{ id, success: true } を返します。削除後は復元不可のため、実行前に十分確認してください。
v1 からのスムーズな移行
既に/aichat/conversations を利用中の場合、v2 への移行はほぼコード変更不要です:
- URL を
https://api.xhuoapi.ai/v1/aichat/conversationsからhttps://api.xhuoapi.ai/v1/aichat2/conversationsに変更。 - 以前の v1 モデル名(例:
gpt-3.5、gpt-4-browsingなど)を使っていた場合は、v2 では最新モデル(例:gpt-5.4、claude-opus-4-7、gemini-3.1-proなど)へのアップグレードを推奨。 - NDJSON ストリームのフィールドは下位互換を保ち、各
text_deltaイベントは引き続きdelta_answerとidを含むため、従来の行単位でdelta_answerを解析するクライアントは変更不要。
message、SSE、ツール呼び出し、action CRUD)を段階的に導入してください。
エラー処理
エラー応答は統一フォーマットです:400 bad_request:必須フィールド不足、tool_use_id不一致、messagesスキーマ不正など。401 invalid_token:authorizationヘッダー不正。404 not_found:action: retrieve / update / delete時に指定idの会話が存在しない。429 too_many_requests:レートリミット超過。500 chat_error:上流 LLM エラーまたは当該ラウンドのcompletion_tokens=0(消費なし扱いで課金なし)。
{"type":"error","message":"..."} イベントとして送信され、直後にストリームが終了します。

