A API AI Chat v2 (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) é a nova geração da interface de conversação, uma versão totalmente aprimorada da AI Chat API. Baseando-se na simplicidade e no suporte a diálogos multi-turno da v1, ela expande com:
- Entrada multimodal do usuário: permite enviar diretamente texto + imagens + arquivos via campo estruturado
message, sem necessidade de anexar indiretamente viareferences. - Chamada de ferramentas em modo Agent: inclui um conjunto integrado de ferramentas para busca na web, scraping, leitura de arquivos, etc., e pode conectar servidores MCP autorizados pelo usuário (Google Drive, Notion, Slack, GitHub, etc.). O modelo pode autonomamente chamar várias ferramentas em uma única requisição para realizar tarefas complexas.
- Eventos estruturados em streaming: com
accept: text/event-streamouapplication/x-ndjsoné possível receber eventos token a token comotext_delta,tool_use,tool_result,thinking,citation,card,artifact, facilitando renderização diferenciada no frontend. - Interrupção e retomada: quando o modelo precisa de mais informações do usuário, emite evento
ask_user_questione pausa; na próxima chamada, a resposta pode ser preenchida viatool_resultspara continuar. - Novas ações CRUD: no mesmo endpoint, o campo
actionpermiteretrieve/retrieve_batch/update/delete, eliminando a necessidade de APIs separadas para gerenciamento de sessões. - Lista de modelos atualizada continuamente: acesso padrão a modelos contemporâneos como GPT-5.4, Claude Opus 4.7, Claude Sonnet 4.6, Gemini 3.1 Pro, GLM 5.1, DeepSeek V4, Kimi K2.5, entre outros.
model + question (+ opcional stateful / id / references / preset) para obter uma resposta JSON {answer, id} equivalente à v1. Portanto, migrar de /aichat/conversations para /aichat2/conversations não requer reescrever o cliente, apenas alterar o endpoint.
Se você ainda usa /aichat/conversations, a interface antiga continuará disponível para migração gradual.
Processo de Solicitação
Para usar a API, acesse a página correspondente da AI Chat v2 API e clique no botão “Acquire” para obter as credenciais necessárias para requisições. Se não estiver logado ou registrado, será redirecionado automaticamente para a página de login; após registrar e entrar, retornará à página atual. Na primeira solicitação, há um crédito gratuito para uso da API.Uso Básico
O uso mais simples é idêntico ao da v1: enviemodel + question e receba {answer, id}.
Exemplo CURL:
model podem ser vistos diretamente no painel Try à direita, categorias comuns incluem:
- 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, etc. - 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, etc. - 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, etc. - xAI:
grok-4,grok-4-1-fast,grok-4-1-fast-reasoning,grok-3-mini-fast, etc. - DeepSeek:
deepseek-v4-flash,deepseek-v3.2-exp,deepseek-r1-0528, etc. - Moonshot:
kimi-k2.5,kimi-k2-thinking,kimi-k2-thinking-turbo, etc. - Zhipu:
glm-5.1,glm-5,glm-5-turbo,glm-4.7,glm-4.5v, etc.
Conversação Multi-turno
Como na v1, enviestateful: true para ativar o salvamento da sessão; a API retornará um id. Nas próximas requisições, envie o mesmo id para continuar a conversa, sem precisar manter o histórico de mensagens localmente.
Primeira requisição:
id:
O padrão destatefulétrue, omitir ou enviar explicitamentetruetem o mesmo efeito. Se não quiser que o servidor salve a conversa, definastateful: false.
Resposta em Streaming
A v2 suporta dois formatos de streaming, selecionados pelo cabeçalhoaccept:
| Cenário | accept | Formato dos dados |
|---|---|---|
| Frontend Web / EventSource | text/event-stream | data: {json}\n\n, última linha data: [DONE]\n\n |
| Backend / CLI / Parsing Node | application/x-ndjson | Cada linha é um objeto JSON |
| Sem streaming | application/json (padrão) | Retorna {answer, id} de uma vez |
Exemplo NDJSON
text_delta:
Exemplo SSE
OEventSource do navegador não suporta corpo customizado; recomenda-se usar fetch com parsing manual por \n\n:
Tipos de eventos em streaming
type | Significado |
|---|---|
text_delta | Fragmento incremental da resposta do assistente. content é o conteúdo novo; para compatibilidade com v1, o evento também inclui delta_answer (igual a content) e id. |
thinking | Processo de raciocínio do modelo (aparece apenas em modelos que expõem reasoning). |
tool_use | Modelo decidiu usar uma ferramenta; o evento inclui tool_id, tool_name e input. |
tool_result | Resultado da ferramenta, emparelhado com o tool_use anterior via tool_id; is_error indica falha. |
card | Cartão estruturado gerado pela ferramenta (ex: imagens, pré-visualizações de links), adequado para renderização direta. |
citation | URLs de fontes para citações de trechos de texto. |
ask_user_question | Modelo solicita informação adicional do usuário; a conversa entra em estado awaiting_user_input (veja Retomada de conversas pausadas). |
artifact | Produção independente do modelo (ex: blocos de código, documentos), pode ser salvo ou baixado. |
system_message | Mensagens do sistema (não conteúdo usuário-assistente), para exibição na UI. |
compact | Evento de compressão interna de contexto, sem necessidade de tratamento especial. |
error | Erro ocorrido na rodada; message descreve o problema. |
done | Fim da resposta em streaming, inclui usage (tokens de prompt, completion e total) e terminal_reason. |
content de text_delta para obter o mesmo resultado do modo application/json.
Entrada Multimodal
Se a entrada do usuário incluir imagens ou arquivos, enviemessage (array) em vez de question. Cada elemento do array é um bloco de conteúdo:
text— texto simples, campo obrigatóriotext.image_url— imagem, campo obrigatórioimage_url.url.file_url— arquivo (PDF, CSV, TXT, etc.), campo obrigatóriofile_url.url.
Relação com references da v1
Para compatibilidade com clientes antigos, a v2 ainda reconhece o campo references: ["https://...", ...]:
- URLs com sufixos
jpg / jpeg / png / gif / bmp / webp / svg / heic / heifsão convertidos automaticamente em blocosimage_url; - Outras extensões viram blocos
file_url; - Se
questiontambém for fornecido, ele é convertido em um blocotexte colocado antes.
/aichat2/conversations; o uso original de references continuará funcionando.
Para controle mais detalhado (ex: múltiplas imagens entre textos ou ordem específica), use diretamente o array message.
Chamada de Ferramentas e MCP
O principal avanço da v2 é que o modelo pode autonomamente chamar ferramentas para completar tarefas em múltiplas etapas, isso está ativado por padrão, sem necessidade de configuração extra no cliente. Exemplos comuns:- Usuário pergunta “Me ajude a buscar as novas exposições em Xangai” → modelo usa a ferramenta de busca web integrada → organiza e responde.
- Usuário pede “Leia este PDF e faça um resumo” → modelo usa
file_read→ gera resumo. - Usuário autorizou Google Drive / GitHub / Notion via Connections → modelo pode acessar dados via ferramentas MCP correspondentes.
tool_use e tool_result, por exemplo:
tool_use, tool_result, card e citation; a saída final do modelo continuará vindo via text_delta.
O parâmetro max_turns limita quantas vezes o modelo pode chamar ferramentas numa requisição; o limite padrão é definido pela plataforma. Definir baixo (ex: max_turns: 1) força resposta única sem chamadas de ferramenta.
Retomada de Conversas Pausadas
Algumas ferramentas fazem o modelo “perguntar ao usuário”; nesse caso, o modelo emite um eventoask_user_question e a conversa fica no estado awaiting_user_input:
id, preenchendo a resposta em tool_results:
tool_use_id no corpo da requisição deve ser exatamente igual ao tool_id do evento pausado; caso contrário, retorna erro 400. Quando tool_results está presente, question / message / references são ignorados.
Se o usuário quiser pular a pergunta, basta enviar uma nova question ou message; a plataforma marcará a chamada da ferramenta pausada como “usuário pulou”.
Gerenciamento de Conversas (CRUD)
A v2 oferece gerenciamento leve de sessões via campoaction no mesmo endpoint, sem APIs adicionais.
action: retrieve — Buscar uma conversa
messages, model, title, tools_used, etc.).
action: retrieve_batch — Listar resumos de conversas
{ items: [...], total }. Os resumos não incluem messages, ideal para listas laterais; ao abrir uma conversa, use action: retrieve para obter mensagens completas.
Filtros opcionais: user_id, application_id, model_group, model.
action: update — Alterar título ou reescrever histórico
messages, mas o servidor fará validação rigorosa do schema (deve estar na forma dobrada ToolUseContent); caso contrário, retorna 400. Geralmente, recomenda-se usar apenas para alterar title.
action: delete — Excluir uma conversa
{ id, success: true }. A exclusão é irreversível, confirme antes de chamar.
Migração Suave da v1
Se você já usa/aichat/conversations, migrar para a v2 quase não requer mudanças:
- Altere a URL de
https://api.xhuoapi.ai/v1/aichat/conversationsparahttps://api.xhuoapi.ai/v1/aichat2/conversations. - Se usava nomes de modelos v1 (ex:
gpt-3.5,gpt-4-browsing), recomenda-se atualizar para modelos contemporâneos (ex:gpt-5.4,claude-opus-4-7,gemini-3.1-pro). - O streaming NDJSON mantém compatibilidade: cada evento
text_deltaainda incluidelta_answereid, então clientes que parseavamdelta_answerlinha a linha não precisam mudar.
message, SSE, chamadas de ferramenta, CRUD via action), conforme sua conveniência.
Tratamento de Erros
Respostas de erro seguem o formato:400 bad_request: campos obrigatórios ausentes,tool_use_idincompatível, schema inválido emmessages, etc.401 invalid_token: cabeçalhoauthorizationincorreto.404 not_found:idnão encontrado em açõesretrieve/update/delete.429 too_many_requests: limite de taxa excedido.500 chat_error: erro no LLM upstream oucompletion_tokens=0(não consumido, sem cobrança).
{"type":"error","message":"..."}, seguido do encerramento do stream.

