Skip to main content
AI Chat v2 API (/aichat2/conversations) é a nova geração da interface de diálogo, uma versão totalmente aprimorada da AI Chat API. Ela expande sobre a simplicidade e a hospedagem de diálogos múltiplos da v1:
  • Entrada de usuário multimodal: através do campo estruturado message, é possível enviar texto + imagem + bloco de arquivo diretamente, sem a necessidade de anexar indiretamente com references.
  • Chamadas de ferramentas como Agente: inclui um conjunto de ferramentas para busca na web, captura de páginas, leitura de arquivos, etc., e pode montar servidores MCP autorizados pelo usuário (Google Drive, Notion, Slack, GitHub, etc.), permitindo que o modelo chame ferramentas de forma autônoma em uma única solicitação para completar tarefas complexas.
  • Eventos estruturados em fluxo: através de accept: text/event-stream ou application/x-ndjson, é possível obter eventos como text_delta, tool_use, tool_result, thinking, citation, card, artifact, etc., facilitando a renderização no front-end por tipo correspondente.
  • Interrupção / Recuperação: o modelo emitirá um evento ask_user_question e pausará quando precisar de informações adicionais do usuário; na próxima chamada, basta preencher a resposta com tool_results para continuar.
  • Novas ações CRUD: no mesmo endpoint, é possível realizar retrieve / retrieve_batch / update / delete através do campo action, sem a necessidade de uma API de gerenciamento de sessão adicional.
  • Lista de modelos em constante atualização: por padrão, conecta-se a modelos contemporâneos como GPT-5.4, Claude Opus 4.8, Claude Sonnet 4.6, Gemini 3.1 Pro, GLM 5.1, DeepSeek V4, Kimi K3, entre outros.
Além disso, no nível do corpo da solicitação, é totalmente compatível com a v1: basta enviar model + question (+ opcionalmente stateful / id / references / preset) para obter uma resposta JSON {answer, id} equivalente à v1, portanto, a migração de /aichat/conversations não requer reescrita do cliente, apenas troque o caminho para /aichat2/conversations.
Se você está atualmente usando /aichat/conversations, a interface antiga ainda estará disponível, permitindo que você migre no seu próprio ritmo.

Processo de Solicitação

Para usar a AI Chat v2 API, primeiro acesse o Painel de Controle da Ace Data Cloud para obter seu Token de API, que deve ser guardado. Se você ainda não estiver logado ou registrado, será redirecionado automaticamente para a página de login, onde poderá se registrar e fazer login; após isso, você será retornado à página atual. Um Token de API é suficiente para acessar todos os serviços da plataforma, não sendo necessário solicitar um para cada serviço. A primeira solicitação oferece um crédito gratuito para que você possa experimentar; quando o crédito acabar, você pode recarregar o saldo geral no painel de controle.
📘 Documentação completa: AI Chat v2 API →

Uso Básico

A forma mais simples de uso é idêntica à v1: envie model + question e receba {answer, id}. Exemplo de CURL:
Resultado retornado:
Exemplo em Python:
Os valores disponíveis para model podem ser vistos diretamente no painel de teste à direita, com categorias comuns incluindo:
  • 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-8, 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, etc.
  • DeepSeek: deepseek-v4-flash, deepseek-v3.2-exp, deepseek-r1-0528, etc.
  • Moonshot: kimi-k3, kimi-k2.6, kimi-k2.5, etc.
  • Zhipu: glm-5.1, glm-5, glm-5-turbo, glm-4.7, glm-4.5v, etc.
As regras de cobrança específicas podem ser consultadas no cartão de Preços na página de serviços.

Diálogo Múltiplo

Assim como na v1, envie stateful: true para ativar a preservação da sessão, e a API retornará um id; nas solicitações subsequentes, basta incluir o id para continuar a conversa, sem a necessidade de manter o histórico de mensagens. Primeira solicitação:
Retorno:
Segunda solicitação, incluindo o mesmo id:
stateful é true por padrão, omitir e passar true explicitamente é equivalente. Se você não deseja que o servidor salve esta rodada de conversa, pode definir explicitamente stateful: false.

Resposta em fluxo

v2 suporta dois formatos de fluxo, escolhidos de acordo com o cabeçalho accept:

Exemplo NDJSON

Cada linha do NDJSON é um evento estruturado, o mais comum é text_delta:

Exemplo SSE

No lado do navegador, o EventSource não suporta corpo de requisição personalizado, recomenda-se usar fetch + divisão manual por \n\n:

Tipos de eventos em fluxo

Para clientes que se preocupam apenas com a resposta final, concatenar todos os content de text_delta é equivalente ao answer no modo application/json.

Entrada multimodal

Se a entrada do usuário contiver imagens ou arquivos, passe message (array) em vez de question. Cada elemento do array é um bloco de conteúdo:
Tipos de bloco suportados:
  • text — Texto comum, campo text é obrigatório.
  • image_url — Imagem, campo image_url.url é obrigatório.
  • file_url — Arquivo (PDF, CSV, TXT, etc.), campo file_url.url é obrigatório.

Relação com references da v1

Para compatibilidade com clientes antigos, a v2 ainda reconhece o campo references: ["https://...", ...]:
  • O sufixo da URL é jpg / jpeg / png / gif / bmp / webp / svg / heic / heif, automaticamente se transforma em um bloco image_url;
  • Outros tipos de extensão se transformam em um bloco file_url;
  • Se também for fornecida uma question, ela deve ser colocada como um bloco text na frente.
Portanto, se você deseja migrar apenas do v1 e não quer alterar o corpo da solicitação, basta trocar o caminho para /aichat2/conversations, o uso original de references continuará funcionando. Para um controle mais refinado (por exemplo, colocar várias imagens entre textos, ou se a ordem for muito importante), use diretamente o array message.

Chamada de ferramentas e MCP

O ponto central da v2 é que o modelo pode chamar ferramentas de forma autônoma para completar tarefas em várias etapas, isso está ativado por padrão, não sendo necessário que o cliente faça nenhuma configuração adicional na solicitação. Cenários comuns:
  • O usuário pergunta “Ajude-me a procurar quais novas exposições estão acontecendo em Xangai” → o modelo chama a pesquisa web embutida → organiza os resultados em uma resposta.
  • O usuário pergunta “Leia este PDF e escreva um resumo” → o modelo chama file_read → escreve o resumo.
  • O usuário já autorizou Google Drive / GitHub / Notion, etc., em Connections → o modelo pode chamar as ferramentas MCP correspondentes para ler e escrever seus dados.
No fluxo NDJSON / SSE, a chamada de ferramentas é apresentada através de eventos do tipo tool_use e tool_result, por exemplo:
Se você não quiser exibir os detalhes da chamada de ferramentas na interface, ignore os eventos tool_use / tool_result / card / citation, a saída final do modelo ainda será apresentada através de text_delta. max_turns pode limitar quantas vezes o modelo pode chamar ferramentas em uma única solicitação, o limite padrão é determinado pela plataforma. Defini-lo baixo (por exemplo, max_turns: 1) pode forçar uma única resposta, não permitindo nenhuma chamada de ferramenta.

Execução assíncrona e autorização sem supervisão

Se sua chamada vem de um Webhook de alerta, CI/CD, sistema de monitoramento ou outras tarefas em segundo plano, você pode definir async: true para que a interface retorne imediatamente o ID da tarefa, enquanto o backend continua a execução:
Exemplo de retorno:
Depois, você pode usar action: retrieve + id para consultar o resultado da conversa; também pode fornecer callback_url, e após a conclusão da tarefa, a plataforma enviará { status, answer, usage, error } via POST para o seu endereço de callback. callback_url deve usar http / https, e não pode ser preenchido diretamente com localhost ou endereços IP privados. Tarefas em segundo plano geralmente não têm ninguém para clicar em confirmar. Se você deseja que algumas Skills ou MCP Server executem ações de envio, publicação, escrita, etc., em modo sem supervisão, forneça explicitamente a lista de pré-autorização no corpo da solicitação:
Os valores em allowed_skills são os slugs das Skills conectadas; os valores em allowed_mcp_servers são os slugs dos MCP Servers conectados. Skills / MCP Servers não listados na pré-autorização ainda poderão apenas visualizar, fazer dry-run ou recusar a execução de operações de escrita em modo sem supervisão. Se precisar de um controle mais detalhado, você também pode usar o objeto equivalente unattended_policy:
Nota: A pré-autorização apenas representa “esta solicitação permite que essas capacidades sejam executadas em modo sem supervisão sem confirmação humana”. Skills específicas ainda devem suportar --unattended-confirm ou mecanismos de segurança correspondentes; caso contrário, continuarão a fazer dry-run e não executarão operações de escrita diretamente.

Retomar conversas pausadas

Algumas ferramentas farão com que o modelo “pergunte ao usuário”, e nesse momento o modelo emitirá um evento ask_user_question, congelando a conversa no estado awaiting_user_input:
Na interface, esse evento deve ser renderizado como um cartão para que o usuário escolha uma resposta, e então, usando o mesmo id, inicie a próxima solicitação, preenchendo a resposta através de tool_results:
O tool_use_id no corpo da solicitação deve ser exatamente o mesmo que o tool_id no momento da pausa; se não for, retornará 400. Quando tool_results estiver presente na solicitação, question / message / references serão ignorados. Se o usuário decidir desistir dessa pergunta, basta enviar uma nova question / message, e a plataforma marcará automaticamente a chamada da ferramenta pausada como “pulada pelo usuário”.

Gerenciamento de sessões (CRUD)

A v2 oferece gerenciamento leve de sessões no mesmo endpoint através do campo action, sem necessidade de abrir uma API separada.

action: retrieve — Recuperar uma sessão

Retorna o documento completo da conversa (incluindo o histórico de messages, model, title, tools_used, etc.).

action: retrieve_batch —— Listar resumos de conversas

Retorna { items: [...], total }. O resumo não inclui messages, adequado para uma lista de barra lateral; se o usuário abrir uma conversa, use action: retrieve para buscar suas mensagens completas separadamente. Parâmetros de filtragem opcionais: user_id, application_id, model_group, model.

action: update —— Alterar título ou reescrever histórico

messages também pode ser enviado, mas o servidor fará uma verificação rigorosa do schema (deve estar na forma de ToolUseContent colapsada), não conformidades retornarão 400. Geralmente, recomenda-se usar apenas para alterar o title.

action: delete —— Deletar uma conversa

Retorna { id, success: true }. Após a exclusão, não pode ser recuperado, por favor, confirme antes de chamar.

Migração suave do v1

Se você já está usando /aichat/conversations, a migração para o v2 quase não requer alteração de código:
  1. Altere a URL de https://api.acedata.cloud/aichat/conversations para https://api.acedata.cloud/aichat2/conversations.
  2. Se você estava usando nomes de modelos v1 (como gpt-3.5, gpt-4-browsing, etc.), ao mudar para v2, recomenda-se atualizar para modelos contemporâneos (como gpt-5.4, claude-opus-4-8, gemini-3.1-pro, etc.).
  3. Os campos do fluxo NDJSON permanecem compatíveis: cada evento text_delta ainda traz delta_answer e id, portanto, os clientes que originalmente analisavam delta_answer linha por linha não precisam ser alterados.
Após a migração, você pode ativar as novas capacidades do v2 conforme necessário (entrada multimodal message, SSE, chamadas de ferramentas, CRUD de action), avançando no seu próprio ritmo.

Tratamento de erros

As respostas de erro são unificadas como:
Erros comuns:
  • 400 bad_request: campos obrigatórios ausentes, tool_use_id não correspondente, schema de messages inválido, etc.
  • 401 invalid_token: cabeçalho authorization incorreto.
  • 404 not_found: ao usar action: retrieve / update / delete, a conversa correspondente ao id não existe.
  • 429 too_many_requests: limite de taxa acionado.
  • 500 chat_error: erro do LLM upstream ou completion_tokens=0 nesta rodada (tratado como não consumido, não haverá cobrança).
Em respostas em fluxo, os erros são enviados como {"type":"error","message":"..."} e, em seguida, o fluxo será encerrado.

Conclusão

A API AI Chat v2, ao manter a compatibilidade com o v1, atualiza as conversas de “perguntas e respostas de uma única rodada/múltiplas rodadas” para “conversas observáveis em formato de agente”: entrada multimodal, chamadas de ferramentas, pausáveis/recuperáveis, eventos estruturados em fluxo, CRUD embutido. Recomenda-se que novas integrações usem diretamente o v2; integrações existentes do v1 podem ser migradas suavemente em fases. Se houver qualquer dúvida, entre em contato com nossa equipe de suporte técnico.