DM Champ Docs

API de resúmenes

Hay dos tipos de resúmenes escritos por IA disponibles a través de la API:

  • Resúmenes de chat: un breve resumen de la conversación de un contacto, generado bajo demanda. Es lo mismo que el control de resumen en un chat (consulta Resumen de chat).

  • Resúmenes diarios: el resumen diario de todas tus conversaciones que Resúmenes diarios genera cada mañana: estadísticas, un bloque de markdown por sección y cualquier tarea que la IA haya creado a partir de él.

  • URL basehttps://api.dmchamp.com/v1

  • Autenticación — tu clave de API (consulta Autenticación). Una clave con alcance limitado necesita la sección Summaries.

  • Errores y paginación — consulta Errores y paginación

Todos los ejemplos a continuación muestran la forma de consulta ?apiKey= en cURL y el encabezado X-API-Key en JavaScript y Python; cualquiera de los dos funciona en todos los endpoints.


Generar un resumen de chat

POST /summaries — envía el phoneNumber del contacto (con código de país) o su email; uno de los dos es obligatorio.

La IA lee la conversación cerrada más reciente del contacto, o la que sigue abierta si aún no se ha cerrado ninguna, y redacta un resumen de la misma. El resumen se guarda en el contacto (aparece en Resúmenes en el panel de contacto de la aplicación) y se devuelve en la respuesta, por lo que puedes enviarlo directamente a un CRM, un canal de Slack o un correo electrónico.

Coste: el mismo que una respuesta de IA en el nivel de calidad de IA del agente: Pro 1 crédito, Max 0.25, Mini 0.15; con tu propia clave de Anthropic conectada, Pro cuesta 0. La solicitud se rechaza antes de generar nada si el saldo no es 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"])

Respuesta

{
  "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."
}
Estado Significado
400 No se envió ni phoneNumber ni email.
404 No hay ningún contacto que coincida, el contacto aún no tiene conversaciones o la conversación no tiene mensajes. El message del cuerpo indica cuál es el motivo.
500 La generación falló (por ejemplo, por falta de créditos).

Receta de automatización: correo electrónico de reserva con un resumen. En una automatización con el activador Cita reservada, añade un paso de Solicitud HTTP que llame a este endpoint con ${trigger.contact.phone_number} (o el correo electrónico del contacto), y luego un paso de Correo electrónico que inserte el summary de la respuesta del paso HTTP junto con un enlace al chat (la dirección de tu aplicación seguida de /chats/ y el ID de contacto del activador). Tu equipo obtiene el contexto de la reserva en el mismo correo, sin necesidad de abrir la bandeja de entrada.

Lectura de resúmenes anteriores. No existe un endpoint que enumere los resúmenes de chat almacenados. Guarda el texto de la respuesta si lo necesitas más tarde, o genéralo de nuevo (cada llamada se factura).

Alternativa: por ID de contacto

POST /summaries/chat-summary con {"contactId": "..."} realiza la misma generación para un contacto del que ya tienes el ID. Solo confirma el éxito ({"success": true, "data": "Chat summary generated successfully"}) y no devuelve el texto, así que usa POST /summaries cuando quieras el resumen en sí. Un miembro del equipo cuya clave esté limitada a sus contactos asignados recibirá 404 para un contacto fuera de ese alcance.


Obtener un resumen diario

GET /summaries/daily/{date}date es YYYY-MM-DD. Devuelve el resumen de ese día, o null bajo summary cuando aún no se ha generado ninguno, además de la configuración de tus secciones.

cURL

curl "https://api.dmchamp.com/v1/summaries/daily/2026-09-08?apiKey=YOUR_API_KEY"

Respuesta

{
  "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 }
    ]
  }
}
  • statuspending, generating, completed o failed (con error activado). Realice sondeos en este endpoint después de una regeneración hasta que aparezca completed.
  • sections — una cadena de markdown por sección, identificada por el ID de la sección. Las cinco secciones estándar son wins_losses_improvements, tasks_action_items, human_alerts_reviews, sentiment_analysis y booked_meetings_sales; las secciones que añada en Configurar en la página de Resúmenes diarios obtienen un ID custom_…. Los nombres y el orden se reflejan en section_configs.
  • contact_map — nombre para mostrar a ID de contacto, para que pueda convertir los nombres en el texto en enlaces.
  • auto_tasks / created_task_ids — los elementos de acción que la IA extrajo y las tareas que creó a partir de ellos (cuando Crear tarjetas de tarea a partir de elementos de acción está activado).
Estado Significado
400 date no está YYYY-MM-DD, o es para una fecha futura.
403 Los Resúmenes diarios están desactivados para la cuenta.

¿Prefiere una notificación push en lugar de realizar sondeos? El evento de webhook Resumen diario creado entrega la misma carga útil en el momento en que termina un resumen matutino.


Regenerar un resumen diario

POST /summaries/daily/{date}/regenerate — inicia una nueva generación para ese día en segundo plano y devuelve inmediatamente status: "generating" y un sections vacío. Realice sondeos en GET /summaries/daily/{date} hasta que se complete. Se aplican las mismas reglas que para el enlace Intentar de nuevo en la aplicación.

El cuerpo opcional {"deleteTasks": false} mantiene las tareas creadas en la ejecución anterior; por defecto, se eliminan y se vuelven a crear a partir del nuevo resumen. Envíe un booleano real: la cadena "false" se ignora y se trata como el valor predeterminado.

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}'

Referencia rápida

Tarea Endpoint
Generar un resumen de chat y obtener el texto POST /summaries
Generar un resumen de chat por ID de contacto (no se devuelve texto) POST /summaries/chat-summary
Leer el resumen de un día GET /summaries/daily/{date}
Regenerar el resumen de un día POST /summaries/daily/{date}/regenerate