DM Champ Docs

API podsumowań

Za pośrednictwem API dostępne są dwa rodzaje podsumowań tworzonych przez AI:

  • Podsumowania czatu — krótkie streszczenie rozmowy z jednym kontaktem, generowane na żądanie. To samo, co kontrolka podsumowania na czacie (zobacz Podsumowanie czatu).

  • Podsumowania dzienne — codzienne zestawienie wszystkich rozmów, które Podsumowania dzienne tworzy każdego ranka: statystyki, jeden blok markdown na sekcję oraz wszelkie zadania utworzone na ich podstawie przez AI.

  • Podstawowy adres URLhttps://api.dmchamp.com/v1

  • Uwierzytelnianie — Twój klucz API (zobacz Uwierzytelnianie). Klucz o ograniczonym zakresie wymaga sekcji Summaries.

  • Błędy i stronicowanie — zobacz Błędy i stronicowanie

Wszystkie poniższe przykłady pokazują formularz zapytania ?apiKey= w cURL oraz nagłówek X-API-Key w JavaScript i Pythonie — oba działają w każdym punkcie końcowym.


Generowanie podsumowania czatu

POST /summaries — wyślij phoneNumber kontaktu (z kodem kraju) lub email; wymagane jest podanie jednego z nich.

AI odczytuje ostatnią zamkniętą rozmowę kontaktu lub tę, która jest nadal otwarta, jeśli żadna nie została jeszcze zamknięta, i tworzy jej streszczenie. Streszczenie jest zapisywane w kontakcie (pojawia się w sekcji Podsumowania w panelu kontaktu w aplikacji) i zwracane w odpowiedzi, dzięki czemu można je bezpośrednio przekazać do systemu CRM, na kanał Slack lub w wiadomości e-mail.

Koszt: taki sam jak jedna odpowiedź AI w ramach poziomu jakości AI agenta — Pro 1 kredyt, Max 0,25, Mini 0,15; przy podłączonym własnym kluczu Anthropic koszt wersji Pro wynosi 0. Żądanie jest odrzucane przed wygenerowaniem czegokolwiek, jeśli saldo nie pokrywa kosztów.

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

Odpowiedź

{
  "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 Znaczenie
400 Nie wysłano ani phoneNumber, ani email.
404 Brak pasującego kontaktu, kontakt nie ma jeszcze żadnej rozmowy lub rozmowa nie zawiera żadnych wiadomości. Treść message wskazuje przyczynę.
500 Generowanie nie powiodło się (na przykład z powodu niewystarczającej liczby kredytów).

Przepis na automatyzację: e-mail z rezerwacją i streszczeniem. W automatyzacji dla wyzwalacza Spotkanie zarezerwowane dodaj krok Żądanie HTTP, który wywołuje ten punkt końcowy za pomocą ${trigger.contact.phone_number} (lub adresu e-mail kontaktu), a następnie krok E-mail, który wstawia summary z odpowiedzi kroku HTTP wraz z linkiem do czatu (adres Twojej aplikacji, po którym następuje /chats/ oraz identyfikator kontaktu z wyzwalacza). Twój zespół otrzymuje kontekst rezerwacji w tym samym e-mailu, bez konieczności otwierania skrzynki odbiorczej.

Odczytywanie podsumowań. Nie ma punktu końcowego, który wyświetlałby listę zapisanych podsumowań czatów. Zachowaj tekst z odpowiedzi, jeśli będziesz go potrzebować później, lub wygeneruj go ponownie (każde wywołanie jest płatne).

Alternatywa: według identyfikatora kontaktu

POST /summaries/chat-summary z {"contactId": "..."} wykonuje to samo generowanie dla kontaktu, którego identyfikator już posiadasz. Potwierdza jedynie sukces ({"success": true, "data": "Chat summary generated successfully"}) i nie zwraca tekstu, więc użyj POST /summaries, gdy chcesz uzyskać samo streszczenie. Członek zespołu, którego klucz jest ograniczony do przypisanych mu kontaktów, otrzyma 404 dla kontaktu spoza tego zakresu.


Pobieranie podsumowania dziennego

GET /summaries/daily/{date}date to YYYY-MM-DD. Zwraca podsumowanie dla tego dnia lub null w ramach summary, jeśli żadne nie zostało jeszcze wygenerowane, wraz z konfiguracją sekcji.

cURL

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

Odpowiedź

{
  "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 lub failed (z ustawionym error). Odpytuj ten punkt końcowy po ponownym wygenerowaniu, aż jego stan zmieni się na completed.
  • sections — jeden ciąg znaków markdown na sekcję, kluczowany identyfikatorem sekcji. Pięć standardowych sekcji to wins_losses_improvements, tasks_action_items, human_alerts_reviews, sentiment_analysis oraz booked_meetings_sales; sekcje dodane w sekcji Konfiguracja na stronie Podsumowań Dziennych otrzymują identyfikator custom_…. Nazwy i kolejność są powtarzane w section_configs.
  • contact_map — nazwa wyświetlana przypisana do identyfikatora kontaktu, dzięki czemu możesz zamienić nazwy w tekście na linki.
  • auto_tasks / created_task_ids — elementy działań wyodrębnione przez AI oraz zadania utworzone na ich podstawie (gdy opcja Twórz karty zadań z elementów działań jest włączona).
Status Znaczenie
400 date nie jest YYYY-MM-DD lub dotyczy przyszłości.
403 Podsumowania dzienne są wyłączone dla tego konta.

Wolisz powiadomienia push zamiast odpytywania? Zdarzenie webhook Daily Summary Created dostarcza ten sam ładunek danych w momencie zakończenia generowania porannego podsumowania.


Ponowne generowanie podsumowania dziennego

POST /summaries/daily/{date}/regenerate — uruchamia w tle nowe generowanie dla danego dnia i natychmiast zwraca status: "generating" oraz puste sections. Odpytuj GET /summaries/daily/{date}, aż proces zostanie zakończony. Obowiązują te same zasady, co w przypadku linku Spróbuj ponownie w aplikacji.

Opcjonalna treść {"deleteTasks": false} zachowuje zadania utworzone podczas poprzedniego uruchomienia; domyślnie są one usuwane i tworzone ponownie na podstawie nowego podsumowania. Wyślij wartość logiczną (boolean) — ciąg znaków "false" jest ignorowany i traktowany jako wartość domyślna.

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

Szybki przewodnik

Zadanie Punkt końcowy
Wygeneruj podsumowanie czatu i pobierz tekst POST /summaries
Wygeneruj podsumowanie czatu według identyfikatora kontaktu (tekst nie jest zwracany) POST /summaries/chat-summary
Odczytaj podsumowanie dnia GET /summaries/daily/{date}
Wygeneruj ponownie podsumowanie dnia POST /summaries/daily/{date}/regenerate