Die 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) ist die nächste Generation der Dialogschnittstelle und stellt eine umfassende Weiterentwicklung der AI Chat API dar. Basierend auf der einfachen und gehosteten Mehrfachdialogführung von v1 erweitert sie folgende Funktionen:
- Multimodale Benutzereingaben: Direkte Übermittlung von Text + Bildern + Dateiblöcken über das strukturierte
message-Feld, ohne vorherige indirekte Anhänge überreferences. - Agent-basierte Werkzeugaufrufe: Eingebaute Tools für vernetzte Suche, Web-Scraping, Dateilesen usw. sowie die Möglichkeit, MCP-Server mit Benutzerautorisierung (Google Drive, Notion, Slack, GitHub usw.) anzubinden. Das Modell kann in einer einzigen Anfrage mehrstufig eigenständig Werkzeuge aufrufen, um komplexe Aufgaben zu lösen.
- Strukturierte Streaming-Ereignisse: Über
accept: text/event-streamoderapplication/x-ndjsonerhält man Token-für-Token Events wietext_delta,tool_use,tool_result,thinking,citation,card,artifactusw., was eine differenzierte Darstellung im Frontend erleichtert. - Unterbrechbar / Wiederaufnehmbar: Wenn das Modell weitere Informationen vom Nutzer benötigt, sendet es ein
ask_user_question-Event und pausiert. Beim nächsten Aufruf kann die Antwort übertool_resultszurückgegeben werden, um fortzufahren. - Neue CRUD-Operationen: Über das gleiche Endpoint können mit dem Feld
actionretrieve/retrieve_batch/update/deleteausgeführt werden, ohne separate Sitzungsverwaltungs-APIs. - Kontinuierlich aktualisierte Modellauswahl: Standardmäßig sind GPT-5.4, Claude Opus 4.7, Claude Sonnet 4.6, Gemini 3.1 Pro, GLM 5.1, DeepSeek V4, Kimi K2.5 und weitere zeitgemäße Modelle verfügbar.
model + question (+ optional stateful / id / references / preset) zu senden, um eine äquivalente {answer, id} JSON-Antwort wie in v1 zu erhalten. Daher ist für die Migration von /aichat/conversations keine Neukodierung des Clients erforderlich, lediglich der Pfad ist auf /aichat2/conversations zu ändern.
Wenn Sie aktuell /aichat/conversations verwenden, bleibt die alte Schnittstelle weiterhin verfügbar, sodass Sie in Ihrem eigenen Tempo migrieren können.
Antragsprozess
Um die API zu nutzen, müssen Sie zunächst auf der entsprechenden Seite der AI Chat v2 API den Dienst beantragen. Nach dem Aufruf der Seite klicken Sie auf die Schaltfläche „Acquire“, um die für die Anfrage benötigten Zugangsdaten zu erhalten. Sollten Sie noch nicht angemeldet oder registriert sein, werden Sie automatisch zur Anmeldeseite weitergeleitet. Nach Registrierung und Anmeldung kehren Sie automatisch zur ursprünglichen Seite zurück. Beim ersten Antrag erhalten Sie ein kostenloses Kontingent, mit dem Sie die API kostenfrei nutzen können.Grundlegende Nutzung
Die einfachste Verwendung ist identisch zu v1: Senden Siemodel + question und erhalten Sie {answer, id}.
CURL-Beispiel:
model-Werte sind im rechten Try-Panel Dropdown direkt einsehbar. Häufig genutzte Kategorien umfassen:
- 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-miniusw. - 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-20251001usw. - Google:
gemini-3.1-pro,gemini-3.1-pro-preview,gemini-3.1-flash-image-preview,gemini-3-pro-preview,gemini-2.5-flash-liteusw. - xAI:
grok-4,grok-4-1-fast,grok-4-1-fast-reasoning,grok-3-mini-fastusw. - DeepSeek:
deepseek-v4-flash,deepseek-v3.2-exp,deepseek-r1-0528usw. - Moonshot:
kimi-k2.5,kimi-k2-thinking,kimi-k2-thinking-turbousw. - Zhipu:
glm-5.1,glm-5,glm-5-turbo,glm-4.7,glm-4.5vusw.
Mehrstufige Dialoge
Wie in v1 kann durch Setzen vonstateful: true die Sitzung gespeichert werden. Die API gibt eine id zurück; bei folgenden Anfragen wird diese id mitgesendet, um den Dialog fortzusetzen, ohne dass der Client die Nachrichtenhistorie verwalten muss.
Erste Anfrage:
id:
statefulist standardmäßigtrue. Das Weglassen entspricht einer expliziten Übergabe vontrue. Wenn Sie nicht möchten, dass der Server den Dialog speichert, setzen Siestateful: false.
Streaming-Antworten
v2 unterstützt zwei Streaming-Formate, die über denaccept-Header gewählt werden:
| Szenario | accept | Datenformat |
|---|---|---|
| Web-Frontend / EventSource | text/event-stream | data: {json}\n\n, letzte Zeile data: [DONE]\n\n |
| Server / CLI / Node Streaming Parsing | application/x-ndjson | Jede Zeile ein JSON-Objekt |
| Kein Streaming benötigt | application/json (Standard) | Einmalige Rückgabe von {answer, id} |
NDJSON-Beispiel
text_delta:
SSE-Beispiel
Browserseitig unterstütztEventSource keine benutzerdefinierten Request-Bodies. Es wird empfohlen, fetch mit manueller Aufteilung nach \n\n zu verwenden:
Streaming-Eventtypen
type | Bedeutung |
|---|---|
text_delta | Inkrementelle Textfragmente der Antwort. content enthält den neuen Inhalt; zur v1-Kompatibilität enthält das Event auch delta_answer (gleich content) und id. |
thinking | Denkprozess des Modells (erscheint nur bei Modellen mit aktiviertem Reasoning). |
tool_use | Das Modell entscheidet, ein Tool aufzurufen; Event enthält tool_id, tool_name, input. |
tool_result | Ergebnis des Toolaufrufs, zugeordnet über tool_id zum vorherigen tool_use. is_error zeigt Fehlerstatus an. |
card | Strukturierte Karten, z.B. Bilder oder Linkvorschauen, geeignet zur direkten Darstellung. |
citation | Quellen-URL zur Ergänzung von Textabschnitten. |
ask_user_question | Das Modell bittet um weitere Nutzerinformationen, Dialog pausiert im Status awaiting_user_input (siehe Abschnitt Dialogwiederaufnahme). |
artifact | Vom Modell generierte eigenständige Artefakte (z.B. Codeblöcke, Dokumente), speicher- oder downloadbar. |
system_message | Systemhinweise (nicht Nutzer- oder Assistenteninhalt), nur für UI-Anzeigen. |
compact | Intern komprimierte Kontext-Events, keine spezielle Behandlung nötig. |
error | Fehler in der aktuellen Runde, message beschreibt den Fehler. |
done | Streaming-Antwort beendet, enthält usage (mit prompt_tokens / completion_tokens / total_tokens) und terminal_reason. |
text_delta-content-Felder zusammenfügen, was dem answer im application/json-Modus entspricht.
Multimodale Eingaben
Wenn Benutzereingaben Bilder oder Dateien enthalten, senden Siemessage (Array) anstelle von question. Jedes Element ist ein Inhaltsblock:
text— normaler Text, erforderliches Feldtext.image_url— Bild, erforderliches Feldimage_url.url.file_url— Datei (PDF, CSV, TXT usw.), erforderliches Feldfile_url.url.
Beziehung zu v1 references
Zur Kompatibilität mit alten Clients erkennt v2 weiterhin das Feld references: ["https://...", ...]:
- URLs mit Endungen
jpg / jpeg / png / gif / bmp / webp / svg / heic / heifwerden automatisch inimage_url-Blöcke umgewandelt; - andere Erweiterungen werden in
file_url-Blöcke umgewandelt; - falls zusätzlich ein
questionübergeben wird, wird diese alstext-Block vorangestellt.
/aichat2/conversations zu ändern. Die bisherige Verwendung von references funktioniert weiterhin.
Für feinere Steuerung (z.B. mehrere Bilder zwischen Texten oder wichtige Reihenfolge) verwenden Sie direkt das message-Array.
Werkzeugaufrufe und MCP
Das Kernfeature von v2 ist, dass das Modell eigenständig Werkzeuge für mehrstufige Aufgaben aufrufen kann. Dies ist standardmäßig aktiviert und erfordert keine zusätzliche Konfiguration im Request. Typische Szenarien:- Nutzer fragt: „Suche bitte nach aktuellen Ausstellungen in Shanghai“ → Modell ruft integrierte Websuche auf → Ergebnisse werden in Antwort verarbeitet.
- Nutzer fragt: „Lies dieses PDF und schreibe eine Zusammenfassung“ → Modell ruft
file_readauf → schreibt Zusammenfassung. - Nutzer hat in Connections Google Drive / GitHub / Notion usw. autorisiert → Modell kann entsprechende MCP-Tools zum Lesen und Schreiben der Daten verwenden.
tool_use und tool_result Events dargestellt, z.B.:
tool_use / tool_result / card / citation. Die finale Ausgabe des Modells erfolgt weiterhin über text_delta.
Mit max_turns können Sie die maximale Anzahl der Werkzeugaufrufe pro Anfrage begrenzen. Die Standardobergrenze wird von der Plattform bestimmt. Ein kleiner Wert (z.B. max_turns: 1) erzwingt eine Einzelantwort ohne Werkzeugaufrufe.
Wiederaufnahme eines pausierten Dialogs
Einige Werkzeuge lassen das Modell den Nutzer „nachfragen“. Dann sendet das Modell einask_user_question-Event und der Dialog pausiert im Status awaiting_user_input:
id eine neue Anfrage gesendet, wobei die Antwort über tool_results zurückgegeben wird:
tool_use_id im Request-Body muss exakt mit dem tool_id des pausierten Events übereinstimmen; andernfalls wird ein 400-Fehler zurückgegeben. Wenn tool_results übermittelt werden, werden question / message / references ignoriert.
Wenn der Nutzer die Frage überspringen möchte, kann er einfach eine neue question oder message senden; die Plattform markiert den pausierten Werkzeugaufruf automatisch als „vom Nutzer übersprungen“.
Sitzungsverwaltung (CRUD)
v2 bietet über das gleiche Endpoint mit dem Feldaction eine leichte Sitzungsverwaltung, ohne separate API öffnen zu müssen.
action: retrieve — Eine Sitzung abrufen
messages-Historie, model, title, tools_used usw.).
action: retrieve_batch — Sitzungsübersichten auflisten
{ items: [...], total } zurück. Die Übersicht enthält keine messages, eignet sich für Seitenleistenlisten. Wenn ein Nutzer eine Sitzung öffnet, kann mit action: retrieve die vollständige Nachrichtengeschichte geladen werden.
Optionale Filterparameter: user_id, application_id, model_group, model.
action: update — Titel ändern oder Verlauf neu schreiben
messages können ebenfalls übergeben werden, jedoch führt der Server eine strenge Schema-Prüfung durch (muss die gefaltete ToolUseContent-Form haben), andernfalls wird ein 400-Fehler zurückgegeben. In der Regel wird dies nur zum Ändern des title empfohlen.
action: delete — Eine Sitzung löschen
{ id, success: true } zurück. Gelöschte Sitzungen können nicht wiederhergestellt werden. Bitte bestätigen Sie vor dem Aufruf.
Sanfte Migration von v1
Wenn Sie bereits/aichat/conversations nutzen, ist die Migration zu v2 nahezu ohne Codeänderungen möglich:
- Ändern Sie die URL von
https://api.xhuoapi.ai/v1/aichat/conversationszuhttps://api.xhuoapi.ai/v1/aichat2/conversations. - Wenn Sie bisher v1-Modellnamen (z.B.
gpt-3.5,gpt-4-browsingusw.) verwendet haben, empfehlen wir bei v2 ein Upgrade auf zeitgemäße Modelle (z.B.gpt-5.4,claude-opus-4-7,gemini-3.1-prousw.). - Die NDJSON-Stream-Felder bleiben rückwärtskompatibel: Jedes
text_delta-Event enthält weiterhindelta_answerundid, sodass Clients, diedelta_answerzeilenweise parsen, keine Änderungen benötigen.
message, SSE, Werkzeugaufrufe, action CRUD) nach Bedarf aktivieren und schrittweise einführen.
Fehlerbehandlung
Fehlerantworten haben ein einheitliches Format:400 bad_request: Fehlende Pflichtfelder, nicht übereinstimmendetool_use_id, ungültigesmessages-Schema usw.401 invalid_token: Ungültigerauthorization-Header.404 not_found: Beiaction: retrieve / update / deleteexistiert die angegebene Sitzung nicht.429 too_many_requests: Rate-Limiting wurde ausgelöst.500 chat_error: Fehler im Upstream-LLM odercompletion_tokens=0in der Runde (wird als nicht verbraucht behandelt, keine Kosten).
{"type":"error","message":"..."}-Event gesendet, danach endet der Stream.

