API de Resumos
Dois tipos de resumos escritos por IA estão disponíveis via API:
-
Resumos de chat — uma breve recapitulação da conversa de um contato, gerada sob demanda. É a mesma coisa que o controle de resumo em um chat (veja Resumo de Chat).
-
Resumos diários — o resumo feito uma vez por dia de todas as suas conversas que os Resumos Diários geram todas as manhãs: estatísticas, um bloco markdown por seção e quaisquer tarefas que a IA tenha criado a partir disso.
-
URL Base —
https://api.dmchamp.com/v1 -
Autenticação — sua chave de API (veja Autenticação). Uma chave com escopo precisa da seção
Summaries. -
Erros e paginação — veja Erros e Paginação
Todos os exemplos abaixo mostram a forma de consulta ?apiKey= em cURL e o cabeçalho X-API-Key em JavaScript e Python — ambos funcionam em todos os endpoints.
Gerar um resumo de chat
POST /summaries — envie o phoneNumber do contato (com código do país) ou o email; um dos dois é obrigatório.
A IA lê a conversa mais recentemente encerrada do contato, ou aquela que ainda está aberta caso nenhuma tenha sido encerrada, e escreve uma recapitulação dela. A recapitulação é armazenada no contato (ela aparece em Resumos no painel do contato no aplicativo) e retornada na resposta, para que você possa encaminhá-la diretamente para um CRM, um canal do Slack ou um e-mail.
Custo: o mesmo que uma resposta de IA no nível de Qualidade de IA do Agente — Pro 1 crédito, Max 0,25, Mini 0,15; com sua própria chave da Anthropic conectada, Pro custa 0. A solicitação é recusada antes que qualquer coisa seja gerada quando o saldo não for suficiente.
cURL
curl -X POST "https://api.dmchamp.com/v1/summaries?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phoneNumber": "+31612345678"}'
JavaScript
const res = await fetch("https://api.dmchamp.com/v1/summaries", {
method: "POST",
headers: { "X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json" },
body: JSON.stringify({ email: "jane@example.com" }),
});
const { summary } = await res.json();
Python
import requests
r = requests.post(
"https://api.dmchamp.com/v1/summaries",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"phoneNumber": "+31612345678"},
)
print(r.json()["summary"])
Resposta
{
"success": true,
"message": "Chat summary generated successfully",
"summary": "Jane asked about the 10-session package for her two children (ages 6 and 9) and preferred Saturday mornings. She booked a trial lesson for Saturday at 10:00 and wants to know whether siblings get a discount."
}
| Status | Significado |
|---|---|
400 |
Nem phoneNumber nem email foram enviados. |
404 |
Nenhum contato corresponde, o contato ainda não tem conversa ou a conversa não tem mensagens. O message do corpo da resposta indica qual. |
500 |
A geração falhou (por exemplo, créditos insuficientes). |
Receita de automação: e-mail de agendamento com recapitulação. Em uma automação no gatilho Agendamento marcado, adicione uma etapa de Requisição HTTP que chama este endpoint com
${trigger.contact.phone_number}(ou o e-mail do contato), depois uma etapa de E-mail que insere osummaryda resposta da etapa HTTP junto com um link para o chat (o endereço do seu aplicativo seguido por/chats/e o ID do contato do gatilho). Sua equipe recebe o contexto do agendamento no mesmo e-mail, sem precisar abrir a caixa de entrada.
Lendo resumos anteriores. Não existe um endpoint que liste resumos de chat armazenados. Guarde o texto da resposta se precisar dele mais tarde, ou gere-o novamente (cada chamada é cobrada).
Alternativa: por ID de contato
POST /summaries/chat-summary com {"contactId": "..."} faz a mesma geração para um contato do qual você já possui o ID. Ele apenas confirma o sucesso ({"success": true, "data": "Chat summary generated successfully"}) e não retorna o texto, portanto, use POST /summaries quando quiser a recapitulação em si. Um membro da equipe cuja chave é limitada aos seus contatos atribuídos recebe 404 para um contato fora desse escopo.
Obter um resumo diário
GET /summaries/daily/{date} — date é YYYY-MM-DD. Retorna o resumo para aquele dia, ou null em summary quando nenhum tiver sido gerado ainda, além da configuração da sua seção.
cURL
curl "https://api.dmchamp.com/v1/summaries/daily/2026-09-08?apiKey=YOUR_API_KEY"
Resposta
{
"success": true,
"data": {
"summary": {
"date": "2026-09-08",
"status": "completed",
"generated_at": "2026-09-09T05:02:11.000Z",
"stats": {
"total_conversations": 42,
"total_messages_sent": 310,
"total_messages_received": 268,
"human_alerts": 3,
"bookings": 5,
"new_contacts": 11,
"sales": 2
},
"sections": {
"wins_losses_improvements": "## Wins\n- ...",
"tasks_action_items": "- Call Jane back about the sibling discount",
"human_alerts_reviews": "...",
"sentiment_analysis": "...",
"booked_meetings_sales": "..."
},
"contact_map": { "Jane Doe": "uid_whatsapp_31612345678" },
"auto_tasks": [],
"created_task_ids": []
},
"section_configs": [
{ "id": "wins_losses_improvements", "name": "Wins, Losses & Improvements", "enabled": true, "position": 0 }
]
}
}
status—pending,generating,completedoufailed(comerrordefinido). Consulte este endpoint após uma regeneração até que ele indiquecompleted.sections— uma string markdown por seção, indexada pelo ID da seção. As cinco seções padrão sãowins_losses_improvements,tasks_action_items,human_alerts_reviews,sentiment_analysisebooked_meetings_sales; seções que você adiciona em Configurar na página de Resumos Diários recebem um IDcustom_…. Nomes e ordem são repetidos emsection_configs.contact_map— nome de exibição para ID de contato, para que você possa transformar os nomes no texto em links.auto_tasks/created_task_ids— os itens de ação que a IA extraiu e as tarefas que ela criou a partir deles (quando Criar cartões de tarefa a partir de itens de ação estiver ativado).
| Status | Significado |
|---|---|
400 |
date não está YYYY-MM-DD, ou está no futuro. |
403 |
Os Resumos Diários estão desativados para a conta. |
Prefere um push em vez de consulta (polling)? O evento de webhook Resumo Diário Criado entrega o mesmo payload no momento em que um resumo matinal é concluído.
Regenerar um resumo diário
POST /summaries/daily/{date}/regenerate — inicia uma nova geração para aquele dia em segundo plano e retorna imediatamente com status: "generating" e sections vazio. Consulte GET /summaries/daily/{date} até que seja concluído. As mesmas regras se aplicam ao link Tentar novamente no aplicativo.
O corpo opcional {"deleteTasks": false} mantém as tarefas que a execução anterior criou; por padrão, elas são excluídas e recriadas a partir do novo resumo. Envie um booleano real — a string "false" é ignorada e tratada como o padrão.
curl -X POST "https://api.dmchamp.com/v1/summaries/daily/2026-09-08/regenerate?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"deleteTasks": false}'
Referência rápida
| Tarefa | Endpoint |
|---|---|
| Gerar um resumo de chat e obter o texto | POST /summaries |
| Gerar um resumo de chat por ID de contato (nenhum texto retornado) | POST /summaries/chat-summary |
| Ler o resumo de um dia | GET /summaries/daily/{date} |
| Regenerar o resumo de um dia | POST /summaries/daily/{date}/regenerate |