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
}
| Campo | Obrigatório | Notas |
|---|---|---|
message | Sim | De 1 a 32.000 caracteres. |
conversationId | Não | Continua uma conversa da API v2. IDs desconhecidos retornam 404. |
userId | Não | ID estável do usuário final para agrupar conversas da API. Letras, números, ., _ e - são permitidos. |
stream | Não | O 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étodo | Endpoint | Descrição | Referência |
|---|---|---|---|
| GET | /api/v2/health | Verifica a saúde da API. | Saúde |
| GET | /api/v2/agents | Lista os agentes. | Agentes e configurações |
| POST | /api/v2/agents | Cria 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}/chat | Envia uma mensagem de chat. | Chat |
| GET | /api/v2/agents/{agentId}/conversations | Lista conversas por fonte. | Conversas |
| GET | /api/v2/agents/{agentId}/conversations/export | Exporta 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}/messages | Lista mensagens em uma conversa da API v2. | Conversas |
| POST | /api/v2/agents/{agentId}/conversations/{conversationId}/retry | Refaz uma resposta do assistente da API v2. | Conversas |
| POST | /api/v2/agents/{agentId}/conversations/{conversationId}/tool-result | Envia um resultado de ferramenta do lado do cliente. | Conversas |
| PATCH | /api/v2/agents/{agentId}/conversations/{conversationId}/messages/{messageId}/feedback | Define ou limpa o feedback da mensagem do assistente. | Conversas |
| GET | /api/v2/agents/{agentId}/users/{userId}/conversations | Lista conversas da API v2 para um usuário final. | Conversas |
| GET | /api/v2/agents/{agentId}/sources | Lista fontes de treinamento. | Fontes e treinamento |
| POST | /api/v2/agents/{agentId}/sources/text | Adiciona uma fonte de texto. | Fontes e treinamento |
| POST | /api/v2/agents/{agentId}/sources/qna | Adiciona uma fonte de Perguntas e Respostas. | Fontes e treinamento |
| POST | /api/v2/agents/{agentId}/sources/url | Adiciona ou retreina uma fonte de URL. | Fontes e treinamento |
| POST | /api/v2/agents/{agentId}/sources/file/upload-url | Cria URLs assinadas para uploads diretos de arquivos. | Fontes e treinamento |
| POST | /api/v2/agents/{agentId}/sources/file | Registra 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}/contacts | Lista contatos. | Contatos |
| POST | /api/v2/agents/{agentId}/contacts | Cria ou atualiza um contato pelo ID externo. | Contatos |
| POST | /api/v2/agents/{agentId}/contacts/import | Faz upsert em massa de contatos. | Contatos |
| GET | /api/v2/agents/{agentId}/leads | Lista leads capturados. | Contatos e leads |
| GET/PATCH | /api/v2/agents/{agentId}/settings/ai | Lê ou atualiza as configurações de IA. | Agentes e configurações |
| GET/PATCH | /api/v2/agents/{agentId}/settings/design | Lê ou atualiza as configurações de design. | Agentes e configurações |
| GET/PATCH | /api/v2/agents/{agentId}/settings/security | Lê ou atualiza as configurações de segurança. | Agentes e configurações |
| GET/PATCH | /api/v2/agents/{agentId}/settings/notifications | Lê ou atualiza as configurações de notificações. | Agentes e configurações |
| GET/PATCH | /api/v2/agents/{agentId}/settings/training | Lê ou atualiza as configurações de treinamento. | Agentes e configurações |
| GET | /api/v2/agents/{agentId}/channels/instagram | Obté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-starters | Lê ou atualiza os iniciadores de conversa do Instagram. | Canal do Instagram |
| GET | /api/v2/agents/{agentId}/train | Obtém o status de treinamento. | Fontes e treinamento |
| POST | /api/v2/agents/{agentId}/train | Inicia 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.
| Consulta | Notas |
|---|---|
limit | O 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. |
cursor | Cursor 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ódigo | Significado |
|---|---|
AUTH_INVALID_API_KEY | A chave de API bearer não pôde ser validada. |
SUBSCRIPTION_PLAN_REQUIRED | O plano da área de trabalho não inclui acesso à API. |
AGENT_NOT_FOUND | O agente não existe ou não pertence à conta da chave de API. |
VALIDATION_INVALID_BODY | Um 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
- Catálogo de erros
- Agentes e configurações
- Conversas, mensagens, retries e feedback
- Fontes e treinamento
- Contatos e leads
- Canal do Instagram