DM Champ Docs

Summaries API

API経由で、2種類のAI生成要約を利用できます。

  • チャット要約 — 特定の連絡先との会話の短い要約で、オンデマンドで生成されます。チャット内の要約コントロールと同じものです(チャット要約を参照)。

  • 日次要約日次要約が毎朝作成する、すべての会話を対象とした1日1回のまとめです。統計情報、セクションごとのMarkdownブロック、およびAIがそれに基づいて作成したタスクが含まれます。

  • ベースURLhttps://api.dmchamp.com/v1

  • 認証 — APIキー(認証を参照)。スコープ付きキーには Summaries セクションが必要です。

  • エラーとページネーションエラーとページネーションを参照してください。

以下のすべての例では、cURLでの ?apiKey= クエリ形式と、JavaScriptおよびPythonでの X-API-Key ヘッダーを示しています。どちらの方法もすべてのエンドポイントで使用可能です。


チャット要約の生成

POST /summaries — 連絡先の phoneNumber(国番号付き)または email を送信します。いずれか一方が必須です。

AIは、その連絡先の最も最近終了した会話、またはまだ終了していない場合は現在進行中の会話を読み取り、その要約を作成します。要約は連絡先に保存され(アプリの連絡先パネルの「要約」の下に表示されます)、レスポンスとしても返されるため、CRM、Slackチャンネル、またはメールに直接転送できます。

コスト: エージェントのAI品質ティアにおけるAI返信1回分と同じです(Proは1クレジット、Maxは0.25、Miniは0.15)。独自のAnthropicキーを接続している場合、Proのコストは0になります。残高が不足している場合、生成が行われる前にリクエストは拒否されます。

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

レスポンス

{
  "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."
}
ステータス 意味
400 phoneNumberemail のどちらも送信されませんでした。
404 一致する連絡先がない、連絡先にまだ会話がない、または会話にメッセージが含まれていません。詳細はレスポンスボディの message を確認してください。
500 生成に失敗しました(クレジット不足など)。

自動化レシピ:要約付きの予約メール。予約完了」トリガーの自動化で、${trigger.contact.phone_number}(または連絡先のメールアドレス)を指定してこのエンドポイントを呼び出す「HTTPリクエスト」ステップを追加します。次に、HTTPステップのレスポンスから summary を挿入し、チャットへのリンク(アプリのアドレスの後に /chats/ とトリガーからの連絡先IDを続けたもの)を添える「メール」ステップを追加します。これにより、チームは受信トレイを開くことなく、同じメール内で予約のコンテキストを把握できます。

要約の読み込みについて。 保存されたチャット要約を一覧表示するエンドポイントはありません。後で必要になる場合はレスポンスのテキストを保持しておくか、再度生成してください(呼び出しごとに課金されます)。

代替手段:連絡先IDによる指定

POST /summaries/chat-summary{"contactId": "..."} を指定すると、すでにIDを保持している連絡先に対して同様の生成が行われます。これは成功({"success": true, "data": "Chat summary generated successfully"})を確認するだけで、テキスト自体は返されません。要約そのものが必要な場合は POST /summaries を使用してください。割り当てられた連絡先にのみアクセス権を持つチームメンバーが、その範囲外の連絡先に対して実行した場合は 404 が返されます。


日次要約の取得

GET /summaries/daily/{date}dateYYYY-MM-DD です。その日の要約、またはまだ生成されていない場合は summarynull を返します。さらに、設定したセクション構成も含まれます。

cURL

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

レスポンス

{
  "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 }
    ]
  }
}
  • statuspendinggeneratingcompleted、またはfailederrorが設定されている場合)。再生成後、このエンドポイントをポーリングしてcompletedと表示されるまで確認してください。
  • sections — セクションIDごとにキー付けされた、セクションごとのMarkdown文字列。5つの標準セクションはwins_losses_improvementstasks_action_itemshuman_alerts_reviewssentiment_analysisbooked_meetings_salesです。「Daily Summaries」ページの「Configure」で追加したセクションにはcustom_… IDが付与されます。名前と順序はsection_configsでエコーされます。
  • contact_map — 表示名から連絡先IDへのマッピング。テキスト内の名前をリンクに変換できます。
  • auto_tasks / created_task_ids — AIが抽出したアクションアイテムと、それに基づいて作成されたタスク(「Create task cards from action items」がオンの場合)。
ステータス 意味
400 dateYYYY-MM-DDではない、または未来の日付です。
403 アカウントでDaily Summariesが無効になっています。

ポーリングよりもプッシュ通知をご希望ですか?Daily Summary Created webhookイベントを使用すると、朝のサマリーが完了した瞬間に同じペイロードが配信されます。


デイリーサマリーの再生成

POST /summaries/daily/{date}/regenerate — その日の新しい生成をバックグラウンドで開始し、status: "generating"と空のsectionsを即座に返します。完了するまでGET /summaries/daily/{date}をポーリングしてください。アプリ内の「Try again」リンクと同じルールが適用されます。

オプションのボディ{"deleteTasks": false}は、前回の実行で作成されたタスクを保持します。デフォルトでは、タスクは削除され、新しいサマリーから再作成されます。真偽値を送信してください。文字列"false"は無視され、デフォルトとして扱われます。

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

クイックリファレンス

タスク エンドポイント
チャットサマリーを生成してテキストを取得する POST /summaries
連絡先IDでチャットサマリーを生成する(テキストは返されません) POST /summaries/chat-summary
その日のサマリーを読み取る GET /summaries/daily/{date}
その日のサマリーを再生成する POST /summaries/daily/{date}/regenerate