DM Champ Docs

Summaries API

Er zijn twee soorten door AI geschreven samenvattingen beschikbaar via de API:

  • Chatsamenvattingen — een korte samenvatting van het gesprek met één contactpersoon, op aanvraag gegenereerd. Dit is hetzelfde als de samenvattingsfunctie in een chat (zie Chatsamenvatting).

  • Dagelijkse samenvattingen — het dagelijkse overzicht van al uw gesprekken dat Dagelijkse samenvattingen elke ochtend opstelt: statistieken, één markdown-blok per sectie en alle taken die de AI daaruit heeft gegenereerd.

  • Basis-URLhttps://api.dmchamp.com/v1

  • Authenticatie — uw API-sleutel (zie Authenticatie). Een scoped key heeft de sectie Summaries nodig.

  • Fouten & paginering — zie Fouten & Paginering

Alle onderstaande voorbeelden tonen de ?apiKey= query-vorm in cURL en de X-API-Key header in JavaScript en Python — beide werken op elk eindpunt.


Een chatsamenvatting genereren

POST /summaries — stuur het phoneNumber (met landcode) of email van de contactpersoon; één van beide is vereist.

De AI leest het meest recent afgesloten gesprek van de contactpersoon, of het gesprek dat nog openstaat als er nog geen is afgesloten, en schrijft daar een samenvatting van. De samenvatting wordt opgeslagen bij de contactpersoon (deze verschijnt onder Samenvattingen in het contactpaneel in de app) en wordt geretourneerd in het antwoord, zodat u deze direct kunt doorsturen naar een CRM, een Slack-kanaal of een e-mail.

Kosten: hetzelfde als één AI-antwoord op het AI-kwaliteitsniveau van de Agent — Pro 1 credit, Max 0,25, Mini 0,15; met uw eigen gekoppelde Anthropic-sleutel kost Pro 0. Het verzoek wordt geweigerd voordat er iets wordt gegenereerd als het saldo niet toereikend is.

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"])

Antwoord

{
  "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 Betekenis
400 Noch phoneNumber noch email werd verzonden.
404 Geen overeenkomende contactpersoon, de contactpersoon heeft nog geen gesprek, of het gesprek bevat geen berichten. De message van de body geeft aan welke van deze het is.
500 Generatie mislukt (bijvoorbeeld door onvoldoende credits).

Automatiseringsrecept: boekingsmail met een samenvatting. Voeg in een automatisering bij de trigger Afspraak geboekt een HTTP-verzoek-stap toe die dit eindpunt aanroept met ${trigger.contact.phone_number} (of het e-mailadres van de contactpersoon), gevolgd door een E-mail-stap die de summary uit het antwoord van de HTTP-stap invoegt, samen met een link naar de chat (het adres van uw app gevolgd door /chats/ en het contact-ID uit de trigger). Uw team krijgt de context van de boeking in dezelfde e-mail, zonder de inbox te hoeven openen.

Samenvattingen teruglezen. Er is geen eindpunt dat opgeslagen chatsamenvattingen weergeeft. Bewaar de tekst uit het antwoord als u deze later nodig heeft, of genereer deze opnieuw (elke aanroep wordt in rekening gebracht).

Alternatief: op contact-ID

POST /summaries/chat-summary met {"contactId": "..."} voert dezelfde generatie uit voor een contactpersoon waarvan u het ID al heeft. Het bevestigt alleen succes ({"success": true, "data": "Chat summary generated successfully"}) en retourneert niet de tekst zelf, dus gebruik POST /summaries wanneer u de samenvatting zelf wilt hebben. Een teamlid wiens sleutel beperkt is tot hun toegewezen contactpersonen krijgt 404 voor een contactpersoon buiten dat bereik.


Een dagelijkse samenvatting ophalen

GET /summaries/daily/{date}date is YYYY-MM-DD. Retourneert de samenvatting voor die dag, of null onder summary wanneer er nog geen is gegenereerd, plus uw sectieconfiguratie.

cURL

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

Antwoord

{
  "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 of failed (met error ingesteld). Pol dit eindpunt na een regeneratie totdat het completed aangeeft.
  • sections — één markdown-tekenreeks per sectie, gesorteerd op sectie-id. De vijf standaardsecties zijn wins_losses_improvements, tasks_action_items, human_alerts_reviews, sentiment_analysis en booked_meetings_sales; secties die u toevoegt onder Configureren op de pagina Dagelijkse samenvattingen krijgen een custom_…-id. Namen en volgorde worden herhaald in section_configs.
  • contact_map — weergavenaam naar contact-ID, zodat u de namen in de tekst kunt omzetten in links.
  • auto_tasks / created_task_ids — de actiepunten die de AI heeft geëxtraheerd en de taken die daaruit zijn gemaakt (wanneer Maak taakkaarten van actiepunten is ingeschakeld).
Status Betekenis
400 date is niet YYYY-MM-DD, of ligt in de toekomst.
403 Dagelijkse samenvattingen is uitgeschakeld voor het account.

Geeft u de voorkeur aan een push boven pollen? De Dagelijkse samenvatting gemaakt webhook-gebeurtenis levert dezelfde payload zodra een ochtendsamenvatting is voltooid.


Een dagelijkse samenvatting opnieuw genereren

POST /summaries/daily/{date}/regenerate — start een nieuwe generatie voor die dag op de achtergrond en keert onmiddellijk terug met status: "generating" en een lege sections. Pol GET /summaries/daily/{date} totdat deze is voltooid. Dezelfde regels zijn van toepassing als voor de Opnieuw proberen-link in de app.

Optionele body {"deleteTasks": false} behoudt de taken die door de vorige uitvoering zijn gemaakt; standaard worden ze verwijderd en opnieuw gemaakt op basis van de nieuwe samenvatting. Stuur een echte boolean — de tekenreeks "false" wordt genegeerd en behandeld als de standaardwaarde.

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

Snelgids

Taak Eindpunt
Genereer een chatsamenvatting en ontvang de tekst POST /summaries
Genereer een chatsamenvatting op contact-ID (geen tekst geretourneerd) POST /summaries/chat-summary
Lees de samenvatting van een dag GET /summaries/daily/{date}
Genereer de samenvatting van een dag opnieuw POST /summaries/daily/{date}/regenerate