API v2

Use a API REST v2 para gerenciamento de agentes, chat com streaming, conversas, feedback, fontes, contatos, leads e configurações.

A API v2 é uma API REST estruturada para gerenciar agentes e construir experiências de chat personalizadas. Ela adiciona gerenciamento de agentes, chat com streaming, histórico de conversas, feedback de mensagens, contatos, leads, fontes, configurações e endpoints de treinamento.

O acesso à API requer um plano Hobby ou superior com faturamento ativo.

URL Base

https://your-domain.com/api/v2

Autenticação

Exceto para a verificação de saúde, envie a chave de API da sua área de trabalho como um bearer token:

Authorization: Bearer YOUR_API_KEY

Crie e revogue chaves de API em Configurações > Chaves de API.

Formato de Resposta

A maioria das respostas bem-sucedidas retorna um objeto de recurso ou um envelope data:

{
  "data": []
}

Os endpoints de listagem incluem paginação por cursor:

{
  "data": [],
  "pagination": {
    "cursor": null,
    "hasMore": false,
    "total": 0
  }
}

Os erros usam um objeto error estruturado:

{
  "error": {
    "code": "VALIDATION_INVALID_BODY",
    "message": "Invalid request body"
  }
}

Toda resposta da v2 inclui um cabeçalho x-request-id. Inclua-o ao entrar em contato com o suporte sobre uma requisição de API.

Escopo de Conversa

Os endpoints somente leitura de conversas usam por padrão source=api_v2. Defina source=widget para retornar conversas do widget e do Playground; as linhas do Playground são armazenadas com a fonte widget. Defina source=all para retornar conversas da API v2, do widget e do Playground. Os resultados sempre permanecem limitados ao agente da conta autenticada. Um valor de source inválido ou mais de um parâmetro de consulta source retorna 400 VALIDATION_INVALID_BODY. A continuação de chat, retry, feedback, listagem de mensagens e leituras por usuário permanecem restritas às conversas da API v2.

Saúde

GET /api/v2/health

A verificação de saúde não requer autenticação.

Sucesso: 200 OK

{
  "status": "ok",
  "timestamp": 1784332800
}

timestamp é o timestamp Unix atual em segundos.

Chat

POST /api/v2/agents/{agentId}/chat

Requisição:

{
  "message": "What plans do you offer?",
  "conversationId": "optional-existing-conversation-id",
  "userId": "optional-user-id",
  "stream": true
}
CampoObrigatórioNotas
messageSimDe 1 a 32.000 caracteres.
conversationIdNãoContinua uma conversa da API v2. IDs desconhecidos retornam 404.
userIdNãoID estável do usuário final para agrupar conversas da API. Letras, números, ., _ e - são permitidos.
streamNãoO padrão é true. Defina false para uma única resposta JSON.

As respostas com streaming usam Server-Sent Events. O stream inclui os eventos message-start, text-start, text-delta, text-end, message-metadata, finish e [DONE]. Uma falha no stream ou no hook de conclusão emite um evento error com error.code definido como CHAT_STREAMING_ERROR; esse código de protocolo exclusivo do SSE é separado do catálogo de erros estruturado da REST. message-metadata contém o ID da mensagem do assistente quando a persistência é bem-sucedida, além do ID da conversa, ID do usuário, motivo de finalização e uso. Seu messageId é null quando nenhuma mensagem do assistente foi persistida. Quando a resposta pausa em uma ação do lado do cliente, o stream também emite um evento tool-call com { "id", "name", "arguments" }; envie o resultado para o endpoint de tool-result para retomar a conversa — a resposta a essa requisição transmite a continuação.

As respostas sem streaming retornam:

{
  "data": {
    "id": "123",
    "role": "assistant",
    "parts": [{ "type": "text", "text": "..." }],
    "pendingToolCall": null,
    "metadata": {
      "userMessageId": "122",
      "conversationId": "abc123",
      "userId": "user_123",
      "finishReason": "stop",
      "usage": { "credits": 1 }
    }
  }
}

Os valores data.id e metadata.userMessageId sem streaming são IDs numéricos de mensagem serializados como strings, ou null quando a mensagem correspondente não foi persistida. metadata.userId é o ID de usuário fornecido/armazenado ou null. pendingToolCall é null, a menos que a resposta tenha pausado em uma chamada de ferramenta no lado do cliente; nesse caso, contém { "id", "name", "arguments" } para o endpoint de resultado de ferramenta.

Resumo dos Endpoints

MétodoEndpointDescriçãoReferência
GET/api/v2/healthVerifica a saúde da API.Saúde
GET/api/v2/agentsLista os agentes.Agentes e configurações
POST/api/v2/agentsCria um agente.Agentes e configurações
GET/api/v2/agents/{agentId}Obtém um agente.Agentes e configurações
PATCH/api/v2/agents/{agentId}Atualiza o nome ou a URL do agente.Agentes e configurações
DELETE/api/v2/agents/{agentId}Exclui um agente.Agentes e configurações
POST/api/v2/agents/{agentId}/chatEnvia uma mensagem de chat.Chat
GET/api/v2/agents/{agentId}/conversationsLista conversas por fonte.Conversas
GET/api/v2/agents/{agentId}/conversations/exportExporta conversas com mensagens.Conversas
GET/api/v2/agents/{agentId}/conversations/{conversationId}Obtém uma conversa por fonte.Conversas
GET/api/v2/agents/{agentId}/conversations/{conversationId}/messagesLista mensagens em uma conversa da API v2.Conversas
POST/api/v2/agents/{agentId}/conversations/{conversationId}/retryRefaz uma resposta do assistente da API v2.Conversas
POST/api/v2/agents/{agentId}/conversations/{conversationId}/tool-resultEnvia um resultado de ferramenta do lado do cliente.Conversas
PATCH/api/v2/agents/{agentId}/conversations/{conversationId}/messages/{messageId}/feedbackDefine ou limpa o feedback da mensagem do assistente.Conversas
GET/api/v2/agents/{agentId}/users/{userId}/conversationsLista conversas da API v2 para um usuário final.Conversas
GET/api/v2/agents/{agentId}/sourcesLista fontes de treinamento.Fontes e treinamento
POST/api/v2/agents/{agentId}/sources/textAdiciona uma fonte de texto.Fontes e treinamento
POST/api/v2/agents/{agentId}/sources/qnaAdiciona uma fonte de Perguntas e Respostas.Fontes e treinamento
POST/api/v2/agents/{agentId}/sources/urlAdiciona ou retreina uma fonte de URL.Fontes e treinamento
POST/api/v2/agents/{agentId}/sources/file/upload-urlCria URLs assinadas para uploads diretos de arquivos.Fontes e treinamento
POST/api/v2/agents/{agentId}/sources/fileRegistra arquivos enviados e inicia o processamento.Fontes e treinamento
DELETE/api/v2/agents/{agentId}/sources/{documentId}Exclui uma fonte.Fontes e treinamento
GET/api/v2/agents/{agentId}/contactsLista contatos.Contatos
POST/api/v2/agents/{agentId}/contactsCria ou atualiza um contato pelo ID externo.Contatos
POST/api/v2/agents/{agentId}/contacts/importFaz upsert em massa de contatos.Contatos
GET/api/v2/agents/{agentId}/leadsLista leads capturados.Contatos e leads
GET/PATCH/api/v2/agents/{agentId}/settings/aiLê ou atualiza as configurações de IA.Agentes e configurações
GET/PATCH/api/v2/agents/{agentId}/settings/designLê ou atualiza as configurações de design.Agentes e configurações
GET/PATCH/api/v2/agents/{agentId}/settings/securityLê ou atualiza as configurações de segurança.Agentes e configurações
GET/PATCH/api/v2/agents/{agentId}/settings/notificationsLê ou atualiza as configurações de notificações.Agentes e configurações
GET/PATCH/api/v2/agents/{agentId}/settings/trainingLê ou atualiza as configurações de treinamento.Agentes e configurações
GET/api/v2/agents/{agentId}/channels/instagramObtém a conexão com o Instagram, as automações e os iniciadores de conversa.Canal do Instagram
GET/PATCH/api/v2/agents/{agentId}/channels/instagram/automations/{key}Lê ou atualiza uma automação do Instagram.Canal do Instagram
GET/PATCH/api/v2/agents/{agentId}/channels/instagram/conversation-startersLê ou atualiza os iniciadores de conversa do Instagram.Canal do Instagram
GET/api/v2/agents/{agentId}/trainObtém o status de treinamento.Fontes e treinamento
POST/api/v2/agents/{agentId}/trainInicia o retreinamento de fontes web.Fontes e treinamento

Feedback

Use o feedback para marcar mensagens do assistente da API v2 como positive, negative ou null. Consulte Conversas, mensagens e feedback para o esquema da requisição, a resposta e o comportamento de erro.

Paginação

Trate os cursores como tokens opacos retornados pela API. Reenvie o valor de pagination.cursor sem alterações na próxima requisição; não o construa nem o decodifique.

ConsultaNotas
limitO padrão é 20. Deve ser um número inteiro de 1 a 100, a menos que um endpoint documente um máximo menor; a exportação de conversas tem um máximo de 20.
cursorCursor opaco retornado da página anterior. Cursores inválidos retornam 400 VALIDATION_INVALID_BODY.

Contatos também aceitam search. Leads aceitam filtros de data/hora ISO 8601 inclusivos createdAfter e createdBefore. Fontes aceitam sourceType com web_crawl, file_upload, text_snippet ou qna_entry.

Os formatos de cursor são um detalhe interno de implementação. Os clientes devem tratar todo cursor como opaco e reenviá-lo sem alterações, sem construí-lo nem decodificá-lo.

Erros Comuns

CódigoSignificado
AUTH_INVALID_API_KEYA chave de API bearer não pôde ser validada.
SUBSCRIPTION_PLAN_REQUIREDO plano da área de trabalho não inclui acesso à API.
AGENT_NOT_FOUNDO agente não existe ou não pertence à conta da chave de API.
VALIDATION_INVALID_BODYUm corpo de requisição, valor de caminho, parâmetro de consulta, limite ou cursor falhou na validação.

Consulte o catálogo completo de erros da API v2 para todos os 27 códigos declarados, status HTTP, gatilhos e códigos reservados.

Referência

Próximos Passos