DM Champ Docs

API de Resumos

Estão disponíveis dois tipos de resumos escritos por IA através da API:

  • Resumos de chat — uma breve recapitulação da conversa de um contacto, gerada a pedido. É a mesma funcionalidade que o controlo de resumo num chat (ver Resumo de Chat).

  • Resumos diários — o resumo diário de todas as suas conversas que os Resumos Diários criam todas as manhãs: estatísticas, um bloco markdown por secção e quaisquer tarefas que a IA tenha criado a partir dele.

  • URL Base — https://api.dmchamp.com/v1

  • Autenticação — a sua chave de API (ver Autenticação). Uma chave com âmbito definido necessita da secção Summaries.

  • Erros e paginação — ver Erros e Paginação

Todos os exemplos abaixo mostram o formato de consulta ?apiKey= em cURL e o cabeçalho X-API-Key em JavaScript e Python — qualquer um funciona em todos os endpoints.


Gerar um resumo de chat

POST /summaries — envie o phoneNumber do contacto (com código de país) ou o email; um dos dois é obrigatório.

A IA lê a conversa mais recentemente fechada do contacto, ou aquela que ainda está aberta caso nenhuma tenha sido fechada, e escreve um resumo da mesma. O resumo é guardado no contacto (aparece em Resumos no painel do contacto na aplicação) e devolvido na resposta, para que o possa reencaminhar diretamente para um CRM, um canal do Slack ou um e-mail. A resposta apresenta-o de três formas: summary está escrito com títulos e marcas de lista (## STATE, - ) da forma como a aplicação o mostra, summary_text é o mesmo resumo em texto simples, para um campo que mostra o texto exatamente como foi escrito (um campo de texto de CRM, uma descrição de tarefa, um SMS), e summary_html é o mesmo resumo formatado para um campo que mostra formatação (um corpo de e-mail, uma nota do HubSpot).

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 a sua própria chave Anthropic ligada, o Pro custa 0. O pedido é recusado antes de qualquer geração se o saldo não for suficiente.

Os membros do Champions Circle pagam a Tarifa Insider: 0,20 em vez de 0,25 no Max, e 0,12 em vez de 0,15 no Mini. Ver Champions Circle

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: "[email protected]" }),
});
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": "## STATE\nJane asked whether siblings get a discount.\n\n## SETTLED\n- Trial lesson booked for Saturday at 10:00",
  "summary_text": "STATE\nJane asked whether siblings get a discount.\n\nSETTLED\n• Trial lesson booked for Saturday at 10:00",
  "summary_html": "<p><strong>STATE</strong></p><p>Jane asked whether siblings get a discount.</p><p><strong>SETTLED</strong></p><ul><li>Trial lesson booked for Saturday at 10:00</li></ul>"
}
Estado Significado
400 Nem phoneNumber nem email foram enviados.
404 Nenhum contacto corresponde, o contacto ainda não tem conversas ou a conversa não tem mensagens. O message do corpo indica qual.
500 A geração falhou (por exemplo, saldo de créditos insuficiente).

Receita de automatização: e-mail de marcação com recapitulação. Numa automatização no gatilho Marcação efetuada, adicione um passo de Pedido HTTP que chame este endpoint com ${trigger.contact.phone_number} (ou o e-mail do contacto), seguido de um passo de E-mail que insira o summary da resposta do passo HTTP, juntamente com uma ligação para o chat (o endereço da sua aplicação seguido de /chats/ e o ID do contacto do gatilho). A sua equipa recebe o contexto da marcação no mesmo e-mail, sem ter de abrir a caixa de entrada.

Ler resumos guardados. Não existe um endpoint que liste os resumos de chat guardados. Guarde o texto da resposta se precisar dele mais tarde, ou gere-o novamente (cada chamada é faturada).

Alternativa: por ID de contacto

POST /summaries/chat-summary com {"contactId": "..."} efetua a mesma geração para um contacto cujo ID já possui. Apenas confirma o sucesso ({"success": true, "data": "Chat summary generated successfully"}) e não devolve o texto, por isso utilize POST /summaries quando pretender a recapitulação propriamente dita. Um membro da equipa cuja chave esteja limitada aos seus contactos atribuídos receberá 404 para um contacto fora desse âmbito.


Leia os resumos de chat mais recentes de vários contactos

POST /contacts/summaries/latest — envie até 500 IDs de contacto e obtenha o resumo de chat mais recente de cada contacto numa única chamada. Nada é gerado, por isso não consome créditos. Esta é a leitura por trás da coluna Resumo de IA da exportação de CSV de contactos.

{ "contactIds": ["contact_abc123", "contact_def456"] }

Resposta

{
  "success": true,
  "summaries": {
    "contact_abc123": {
      "summary": "Asked for a quote for 20 units, prefers delivery next week.",
      "end_date_time": "2026-09-15T14:02:11.000Z"
    }
  }
}

Um contacto que ainda não tenha um resumo, que não esteja na sua conta ou que esteja fora dos contactos visíveis de um membro da equipa é simplesmente excluído de summaries. Os IDs devem ser únicos e uma lista com mais de 500 será recusada com 400: divida-a em lotes. Um membro da equipa necessita de, pelo menos, permissão de Visualização em Mensagens.

curl -X POST "https://api.dmchamp.com/v1/contacts/summaries/latest?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contactIds": ["contact_abc123", "contact_def456"]}'

Obter um resumo diário

GET /summaries/daily/{date} — date é YYYY-MM-DD. Devolve o resumo para esse dia, ou null em summary quando ainda não foi gerado nenhum, além da configuração da sua secçã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, completed ou failed (com error definido). Consulte este endpoint após uma regeneração até que indique completed.
  • sections — uma string markdown por secção, identificada pelo ID da secção. As cinco secções padrão são wins_losses_improvements, tasks_action_items, human_alerts_reviews, sentiment_analysis e booked_meetings_sales; as secções que adicionar em Configurar na página de Resumos Diários recebem um ID custom_…. Os nomes e a ordem são repetidos em section_configs.
  • contact_map — nome de visualização para ID de contacto, para que possa transformar os nomes no texto em hiperligações.
  • auto_tasks / created_task_ids — os itens de ação que a IA extraiu e as tarefas que criou a partir deles (quando Criar cartões de tarefa a partir de itens de ação está ativado).
Estado Significado
400 date não está YYYY-MM-DD, ou é 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 termina.


Regenerar um resumo diário

POST /summaries/daily/{date}/regenerate — inicia uma nova geração para esse dia em segundo plano e retorna imediatamente com status: "generating" e sections vazio. Consulte GET /summaries/daily/{date} até que esteja concluído. Aplicam-se as mesmas regras que para a ligação Tentar novamente na aplicação.

O corpo opcional {"deleteTasks": false} mantém as tarefas que a execução anterior criou; por predefinição, são eliminadas e recriadas a partir do novo resumo. Envie um booleano real — a string "false" é ignorada e tratada como a predefiniçã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 contacto (sem retorno de texto) POST /summaries/chat-summary
Ler o resumo de chat mais recente para até 500 contactos POST /contacts/summaries/latest
Ler o resumo de um dia GET /summaries/daily/{date}
Regenerar o resumo de um dia POST /summaries/daily/{date}/regenerate