DM Champ Docs

API pentru rezumate

Două tipuri de rezumate scrise de AI sunt disponibile prin API:

  • Rezumate chat — o recapitulare scurtă a conversației unui contact, generată la cerere. Este același lucru cu controlul de rezumat dintr-un chat (vezi Rezumat chat).

  • Rezumate zilnice — sinteza zilnică a tuturor conversațiilor tale pe care Rezumate zilnice o generează în fiecare dimineață: statistici, un bloc markdown per secțiune și orice sarcini pe care AI-ul le-a creat pe baza acestora.

  • URL de bazăhttps://api.dmchamp.com/v1

  • Autentificare — cheia ta API (vezi Autentificare). O cheie cu domeniu limitat necesită secțiunea Summaries.

  • Erori și paginare — vezi Erori și paginare

Toate exemplele de mai jos arată forma de interogare ?apiKey= în cURL și antetul X-API-Key în JavaScript și Python — oricare dintre ele funcționează pe fiecare endpoint.


Generarea unui rezumat de chat

POST /summaries — trimite phoneNumber al contactului (cu prefixul țării) sau email; unul dintre cele două este obligatoriu.

AI-ul citește cea mai recentă conversație închisă a contactului sau pe cea care este încă deschisă, dacă nu a fost închisă niciuna, și scrie o recapitulare a acesteia. Recapitularea este stocată în profilul contactului (apare sub Rezumate în panoul de contact din aplicație) și este returnată în răspuns, astfel încât să o poți redirecționa direct către un CRM, un canal Slack sau un e-mail.

Cost: același ca pentru un răspuns AI la nivelul de calitate AI al Agentului — Pro 1 credit, Max 0.25, Mini 0.15; cu propria cheie Anthropic conectată, Pro costă 0. Cererea este refuzată înainte de a fi generat ceva dacă soldul nu acoperă costul.

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

Răspuns

{
  "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 Semnificație
400 Nu a fost trimis nici phoneNumber, nici email.
404 Nu există niciun contact corespondent, contactul nu are încă nicio conversație sau conversația nu are mesaje. Câmpul message din corp explică motivul.
500 Generarea a eșuat (de exemplu, credite insuficiente).

Rețetă de automatizare: e-mail de programare cu recapitulare. Într-o automatizare cu declanșatorul Programare efectuată, adaugă un pas de Cerere HTTP care apelează acest endpoint cu ${trigger.contact.phone_number} (sau adresa de e-mail a contactului), apoi un pas de E-mail care inserează summary din răspunsul pasului HTTP împreună cu un link către chat (adresa aplicației tale urmată de /chats/ și ID-ul contactului din declanșator). Echipa ta primește contextul programării în același e-mail, fără a deschide inbox-ul.

Citirea rezumatelor. Nu există un endpoint care să listeze rezumatele de chat stocate. Păstrează textul din răspuns dacă ai nevoie de el mai târziu sau generează-l din nou (fiecare apel este facturat).

Alternativă: după ID-ul contactului

POST /summaries/chat-summary cu {"contactId": "..."} efectuează aceeași generare pentru un contact al cărui ID îl deții deja. Acesta confirmă doar succesul ({"success": true, "data": "Chat summary generated successfully"}) și nu returnează textul, deci folosește POST /summaries atunci când dorești recapitularea propriu-zisă. Un membru al echipei a cărui cheie este limitată la contactele alocate primește 404 pentru un contact din afara acelui domeniu.


Obținerea unui rezumat zilnic

GET /summaries/daily/{date}date este YYYY-MM-DD. Returnează rezumatul pentru acea zi sau null sub summary atunci când nu a fost generat încă niciunul, plus configurația secțiunilor tale.

cURL

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

Răspuns

{
  "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 sau failed (cu error setat). Interogați acest endpoint după o regenerare până când starea devine completed.
  • sections — un șir markdown per secțiune, identificat prin ID-ul secțiunii. Cele cinci secțiuni standard sunt wins_losses_improvements, tasks_action_items, human_alerts_reviews, sentiment_analysis și booked_meetings_sales; secțiunile pe care le adăugați în Configurare pe pagina Rezumate zilnice primesc un ID custom_…. Numele și ordinea sunt reflectate în section_configs.
  • contact_map — nume afișat către ID de contact, astfel încât să puteți transforma numele din text în linkuri.
  • auto_tasks / created_task_ids — elementele de acțiune extrase de AI și sarcinile create din acestea (când Creează carduri de sarcini din elementele de acțiune este activat).
Status Semnificație
400 date nu este YYYY-MM-DD sau este în viitor.
403 Rezumatele zilnice sunt dezactivate pentru cont.

Preferați un push în locul interogării? Evenimentul webhook Rezumat zilnic creat livrează același payload în momentul în care un rezumat de dimineață este finalizat.


Regenerarea unui rezumat zilnic

POST /summaries/daily/{date}/regenerate — pornește o generare nouă pentru ziua respectivă în fundal și returnează imediat status: "generating" și un sections gol. Interogați GET /summaries/daily/{date} până când se finalizează. Se aplică aceleași reguli ca pentru linkul Încearcă din nou din aplicație.

Corpul opțional {"deleteTasks": false} păstrează sarcinile create de rularea anterioară; în mod implicit, acestea sunt șterse și recreate din noul rezumat. Trimiteți o valoare booleană reală — șirul "false" este ignorat și tratat ca valoare implicită.

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

Referință rapidă

Sarcină Endpoint
Generați un rezumat al chatului și obțineți textul POST /summaries
Generați un rezumat al chatului după ID-ul de contact (nu se returnează text) POST /summaries/chat-summary
Citiți rezumatul unei zile GET /summaries/daily/{date}
Regenerați rezumatul unei zile POST /summaries/daily/{date}/regenerate