分析およびレポート API
これらの読み取り専用エンドポイントを使用すると、メッセージイベント数、クレジット消費量、AI利用料金、アプリ内ダッシュボードに表示されるものと同じチャートやインサイトなど、アカウントのアクティビティを独自のダッシュボードやレポートに取り込むことができます。このガイドでは以下について説明します。
- サマリー — メッセージボリュームのカウンター(送信、配信、開封、返信、予約、作成された連絡先、クレジット)。
- クレジット — 合計と内訳を含む、クレジット使用状況の詳細なページ分割された台帳。
- AIコスト — AI利用料金の日次ロールアップ。
- メトリクスシリーズ — キャンペーン、チャネル、AIエージェント、または番号ごとにグループ化された、1つ以上のメトリクスのチャート対応時系列データ。
- 会話の成果 — AIが割り当てた成果タグごとの会話の終了状況。
- ダッシュボードインサイト および ダッシュボードAIインサイト — AIが作成した要約を含む、アプリ内ダッシュボードの背後にあるすべてのデータ。
- エンティティアクティビティ — 個々の連絡先、案件、またはタスクのタイムライン。
- 集計イベント数 — 既存の統合のために保持されている、サマリーのレガシーなcamelCase形式。
このページのすべてのエンドポイントには、両方ではなく、正確なスコープが必要です。エンドポイントが受け入れる場合、campaign_id(レガシー)またはagent_idのいずれか最大1つを渡してください。両方を送信すると400が返され、アカウントに存在しないIDを送信すると403ではなく404が返されるため、他のアカウントのIDは推測できないようになっています。
以下のすべてのパスは、APIベースURLからの相対パスです。
https://api.youraiconnector.com/v1
すべてのリクエストは認証されている必要があります。受け入れられる4つの認証方法については、Authenticationを参照してください。ここでの例では X-API-Key ヘッダー(およびcURL用のクエリパラメータ形式)を使用しています。
日付範囲
3つのエンドポイントすべてで、同じオプションの日付フィルターを使用できます。
| パラメータ | 説明 |
|---|---|
from |
範囲の開始日。YYYY-MM-DD、指定日を含みます。デフォルトは30日前です。 |
to |
範囲の終了日。YYYY-MM-DD、指定日を含みます。デフォルトは今日です。 |
日付はUTCで解釈されます。範囲のデフォルトは過去30日間で、上限は366日間です。これより広い範囲を指定すると 400 が返されます。from は to より後の日付であってはなりません。
truncated フラグ
サマリーおよびクレジットエンドポイントでは、1回のリクエストでスキャンできるレコード数に上限があります。指定した期間のデータ量が非常に多く、その上限に達した場合、レスポンスに "truncated": true が含まれます。このフラグが表示された場合、数値は部分的なスキャンに基づいています。完全な数値を取得するには、日付範囲を狭めるか(またはより短い期間でページングして)ください。
注: コストとトークンの数値は、お客様自身のプロバイダーAPIキーに請求されるAI呼び出しに対してのみ含まれます。お客様のアカウントでコストの数値が非表示になっている場合、レスポンスは "costs_redacted": true に設定され、コストフィールドはゼロとして返されます。
メッセージボリュームのサマリー
アカウントの集計されたメッセージイベントカウンターを、期間合計および日次シリーズの両方で返します。期間内のすべての日付が by_date に表示され、アクティビティのない日はゼロで埋められます。オプションで campaign_id を使用して、単一のキャンペーンにフィルタリングすることも可能です。
GET /analytics/summary
| パラメータ | 必須 | 説明 |
|---|---|---|
from |
いいえ | 範囲の開始、YYYY-MM-DD。 |
to |
いいえ | 範囲の終了、YYYY-MM-DD。 |
campaign_id |
いいえ | このキャンペーンに属するイベントのみをカウントします。 |
cURL
curl "https://api.youraiconnector.com/v1/analytics/summary?from=2026-05-01&to=2026-05-31&apiKey=YOUR_API_KEY"
JavaScript
const params = new URLSearchParams({ from: "2026-05-01", to: "2026-05-31" });
const res = await fetch(`https://api.youraiconnector.com/v1/analytics/summary?${params}`, {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/analytics/summary",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"from": "2026-05-01", "to": "2026-05-31"},
)
data = res.json()
レスポンス
{
"success": true,
"from": "2026-05-01",
"to": "2026-05-31",
"totals": {
"total": 1240,
"sent": 800,
"delivered": 760,
"read": 540,
"replied": 210,
"booked": 35,
"contact_created": 120,
"credits_spent": 412.5,
"credits_recharged": 500
},
"by_date": [
{
"date": "2026-05-01",
"total": 40,
"sent": 25,
"delivered": 24,
"read": 18,
"replied": 7,
"booked": 1,
"contact_created": 4,
"credits_spent": 13.5,
"credits_recharged": 0
}
],
"truncated": false
}
by_date の各エントリには、totals と同じカウンターフィールドに加え、date が含まれます。
アカウントに属さない campaign_id を渡した場合、レスポンスは { "success": false, "error": "Campaign not found" } を伴う 404 となります。
クレジット使用量
指定範囲内のクレジット使用量を返します。個別のレコードのページネーションリストに加え、範囲の合計、理由別およびキャンペーン別の内訳が含まれます。
GET /analytics/credits
| パラメータ | 必須 | 説明 |
|---|---|---|
from |
いいえ | 範囲の開始、YYYY-MM-DD。 |
to |
いいえ | 範囲の終了、YYYY-MM-DD。 |
campaign_id |
いいえ | このキャンペーンに起因する使用量のみを含めます。 |
limit |
いいえ | records のページサイズ(1~100)。デフォルトは 50 です。 |
cursor |
いいえ | 次のページを取得するには、前のページの next_cursor を渡します。 |
調整と消費の違い: ボーナス、プラン更新、修正などの残高変更は、
totalsおよび内訳から除外されます。これらは実際の消費ではないためです。これらは引き続きrecordsリストに表示され、"is_adjustment": trueのフラグが付けられます。
合計と内訳は最初のページにのみ表示されます(cursor が指定されていない場合)。以降のページでは、totals、by_reason、by_reason_cost、および by_campaign は null として返され、records 配列のみが継続されます。これにより、ページごとに範囲全体を再スキャンすることを回避しています。
cURL
curl "https://api.youraiconnector.com/v1/analytics/credits?from=2026-05-01&to=2026-05-31&limit=50&apiKey=YOUR_API_KEY"
JavaScript
const params = new URLSearchParams({
from: "2026-05-01",
to: "2026-05-31",
limit: "50",
});
const res = await fetch(`https://api.youraiconnector.com/v1/analytics/credits?${params}`, {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
// To page: pass data.next_cursor as ?cursor on the next request, until it is null.
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/analytics/credits",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"from": "2026-05-01", "to": "2026-05-31", "limit": 50},
)
data = res.json()
# To page: pass data["next_cursor"] as cursor on the next request, until it is None.
レスポンス(最初のページ)
{
"success": true,
"from": "2026-05-01",
"to": "2026-05-31",
"totals": {
"credits_used": 412.5,
"cost_usd": 1.284512,
"records": 318
},
"by_reason": {
"AI Message": 380.0,
"Campaign Message": 32.5
},
"by_reason_cost": {
"AI Message": 1.284512,
"Campaign Message": 0
},
"by_campaign": {
"Spring Promo": 250.0,
"Reactivation": 162.5
},
"records": [
{
"id": "rec_abc123",
"amount": 1,
"timestamp": "2026-05-31T14:02:11.000Z",
"reason": "AI Message",
"is_adjustment": false,
"campaign_id": "campaign123",
"campaign_name": "Spring Promo",
"contact_id": "contact456",
"contact_name": "Jane Smith",
"credit_type": "ai",
"custom_keys_used": false,
"description": null,
"cost_usd": 0,
"input_tokens": 0,
"output_tokens": 0,
"cache_read_tokens": 0,
"cache_creation_tokens": 0,
"ai_model": null,
"request_id": null,
"is_test": false
}
],
"next_cursor": "rec_abc123",
"costs_redacted": false,
"truncated": false
}
フィールドに関する注記:
amount— レコードに対して請求されたクレジット。独自のプロバイダーAPIキーに請求されたレコードの場合はゼロになります。is_adjustment— 残高変更の場合はtrue(合計/内訳からは除外されます)。cost_usd、input_tokens、output_tokens、cache_read_tokens、cache_creation_tokens、ai_model、request_id— 独自のプロバイダーAPIキーに請求されたレコードにのみ入力されます。それ以外の場合はゼロまたはnullです。is_test— プレイグラウンド/テスト実行の場合はtrue。これらは請求対象外です。next_cursor— 次のページのカーソル。レコードがこれ以上ない場合はnullとなります。
AIコストのロールアップ
アカウントの1日あたりのAI利用料金のロールアップを返します。これは事前に集計された日次合計を読み取るため、長い期間であっても高速です。範囲内のすべての日が days に表示され、利用のない日はゼロで埋められます。
GET /analytics/ai-cost
| パラメータ | 必須 | 説明 |
|---|---|---|
from |
いいえ | 範囲の開始、YYYY-MM-DD。 |
to |
いいえ | 範囲の終了、YYYY-MM-DD。 |
cURL
curl "https://api.youraiconnector.com/v1/analytics/ai-cost?from=2026-05-01&to=2026-05-31&apiKey=YOUR_API_KEY"
JavaScript
const params = new URLSearchParams({ from: "2026-05-01", to: "2026-05-31" });
const res = await fetch(`https://api.youraiconnector.com/v1/analytics/ai-cost?${params}`, {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/analytics/ai-cost",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"from": "2026-05-01", "to": "2026-05-31"},
)
data = res.json()
レスポンス
{
"success": true,
"from": "2026-05-01",
"to": "2026-05-31",
"totals": {
"total_usd": 12.4821,
"byok_usd": 12.4821,
"platform_usd": 0,
"calls": 4210
},
"days": [
{
"date": "2026-05-01",
"total_usd": 0.4012,
"byok_usd": 0.4012,
"platform_usd": 0,
"input_usd": 0.18,
"output_usd": 0.19,
"cache_creation_usd": 0.02,
"cache_read_usd": 0.0112,
"calls": 140,
"by_provider": { "anthropic": 0.4012 }
}
],
"costs_redacted": false
}
フィールドに関する注記:
byok_usd— 独自のプロバイダーAPIキーに請求される利用料金。platform_usd— 独自のキーではなく、プラットフォーム上で実行された利用料金の割合。input_usd、output_usd、cache_creation_usd、cache_read_usd—total_usdを構成するコスト要素。by_provider— AIプロバイダー名ごとの米ドルでの利用料金。- 米ドルでの数値は、独自のプロバイダーキーを使用しているアカウントにのみ返されます。クレジット支払いのアカウントの場合、すべての米ドルフィールドはゼロになり、
costs_redactedはtrueになります(呼び出し回数は引き続き表示されます)。
メトリクスシリーズ
1回の呼び出しで1つ以上のメトリクス時系列を返します。オプションで最大2つのディメンションでグループ化でき、チャートをバインドするためのエンドポイントです。1回の要求で「このキャンペーンのチャネルごとの1日あたりの送信数と返信数」といった回答が得られるため、キャンペーンごとに呼び出す必要はありません。
GET /analytics/series
すべてのレスポンスにはlabels配列(全範囲にわたってゼロ埋めされた時間軸)と、グループごとにseriesのエントリが含まれます。各エントリには、要求されたメトリクスごとにlabelsに合わせた配列が保持されます。limitより前のシリーズは削除されず、other_bucketに集約されます。これは範囲合計から返されたシリーズを差し引いて計算されるため、レンダリングされたチャートは常に実際の数値と一致します。これが発生すると、truncatedはtrueになります。
数値の算出元:sent、delivered、read、およびrepliedは、チャネルと送信番号を含むメッセージレコードから取得されます。booked、contact_created、およびcredits_spentはイベントストリームから取得されますが、これには送信番号が含まれていないため、numberでグループ化すると、これらのメトリクスはnull番号のバケットに分類されます。
| パラメータ | 必須 | 説明 |
|---|---|---|
from |
いいえ | 範囲の開始、YYYY-MM-DD。デフォルトは30日前です。 |
to |
いいえ | 範囲の終了、YYYY-MM-DD。デフォルトは今日です。 |
metrics |
いいえ | sent、ai_sent、human_sent、delivered、read、replied、booked、contact_created、credits_spentからコンマ区切りで指定したリスト。デフォルトはsent,repliedです。不明なメトリクスは400を返します。 |
group_by |
いいえ | date、campaign、channel、agent、numberから最大2つのディメンションをコンマ区切りで指定したリスト。dateは受け入れられますが、効果はありません。すべてのレスポンスにはすでに時間軸が含まれています。アカウント全体の単一シリーズの場合は省略してください。 |
granularity |
いいえ | day(デフォルト)、week、またはmonth。週のバケットは月曜日に始まり、月のバケットは1日に始まります。 |
limit |
いいえ | 残りがother_bucketに集約される前に返すシリーズの数(1〜50)。デフォルトは12です。 |
campaign_id |
いいえ | このキャンペーンに属するアクティビティのみをカウントします。レガシー機能です。agent_idの使用を推奨します。 |
agent_id |
いいえ | このAIエージェントに属するアクティビティのみをカウントします。 |
channel |
いいえ | このチャネル(例:whatsapp)でのアクティビティのみをカウントします。 |
このエンドポイントの日付範囲は92日に制限されています(このページの他の場所で使用されている366日の上限よりも厳しくなっています)。
cURL
curl "https://api.youraiconnector.com/v1/analytics/series?from=2026-05-01&to=2026-05-31&metrics=sent,replied,booked&group_by=campaign,channel&limit=10&apiKey=YOUR_API_KEY"
JavaScript
const params = new URLSearchParams({
from: "2026-05-01",
to: "2026-05-31",
metrics: "sent,replied,booked",
group_by: "campaign,channel",
limit: "10",
});
const res = await fetch(`https://api.youraiconnector.com/v1/analytics/series?${params}`, {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/analytics/series",
headers={"X-API-Key": "YOUR_API_KEY"},
params={
"from": "2026-05-01",
"to": "2026-05-31",
"metrics": "sent,replied,booked",
"group_by": "campaign,channel",
"limit": 10,
},
)
data = res.json()
レスポンス
{
"success": true,
"from": "2026-05-01",
"to": "2026-05-31",
"granularity": "day",
"labels": ["2026-05-01", "2026-05-02"],
"group_by": ["campaign", "channel"],
"metrics": ["sent", "replied", "booked"],
"series": [
{
"key": {
"campaign_id": "campaign123",
"campaign_name": "Spring Promo",
"channel": "whatsapp"
},
"total": 812,
"metrics": {
"sent": [40, 35],
"replied": [12, 9],
"booked": [2, 1]
}
}
],
"other_bucket": {
"series_count": 6,
"total": 340,
"metrics": {
"sent": [18, 20],
"replied": [5, 6],
"booked": [0, 1]
}
},
"truncated": true
}
フィールドに関する注記:
key— 1つのシリーズの識別子。要求されたgroup_byディメンションのキーのみが存在します。行の値が不明なディメンション(キャンペーンのないメッセージ、チャネルのないイベント)は削除されず、nullとして返されるため、シリーズは合計と一致します。other_bucket— 何も集約されなかった場合はnull。- このエンドポイントは、レポートデータベースがアカウントの回答を生成できない場合、ゼロで埋められた
200ではなく、"error_code": "analytics_unavailable"を含む503を返します。ゼロ埋めされたチャートは事実として誤認される可能性があるためです。
会話の成果
日付範囲全体で会話がどのように終了したかを返します。AIが割り当てた各成果タグの日次カウントに加え、返信、予約、人間への引き継ぎ、およびAIが分類しなかった会話の範囲合計が含まれます。
GET /analytics/outcomes
時間軸を集約してタグごとの範囲合計のみを取得するには、group_by=tagを渡します。そのモードではlabelsは空になり、各タグのcounts配列も空になりますが、totalには引き続き値が入力されます。
| パラメータ | 必須 | 説明 |
|---|---|---|
from |
いいえ | 範囲の開始日、YYYY-MM-DD。デフォルトは30日前です。 |
to |
いいえ | 範囲の終了日、YYYY-MM-DD。デフォルトは今日です。 |
campaign_id |
いいえ | 現在このキャンペーンに登録されている連絡先との会話のみをカウントします。レガシー機能です。agent_idの使用を推奨します。 |
agent_id |
いいえ | このAIエージェントに属する成果のみをカウントします。 |
group_by |
いいえ | date(デフォルト)は日別のカウントを保持し、tagは範囲の合計に集約します。 |
このエンドポイントの日付範囲は92日に制限されています。
cURL
curl "https://api.youraiconnector.com/v1/analytics/outcomes?from=2026-05-01&to=2026-05-31&apiKey=YOUR_API_KEY"
JavaScript
const params = new URLSearchParams({ from: "2026-05-01", to: "2026-05-31" });
const res = await fetch(`https://api.youraiconnector.com/v1/analytics/outcomes?${params}`, {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/analytics/outcomes",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"from": "2026-05-01", "to": "2026-05-31"},
)
data = res.json()
レスポンス
{
"success": true,
"from": "2026-05-01",
"to": "2026-05-31",
"group_by": "date",
"labels": ["2026-05-01", "2026-05-02"],
"by_tag": [
{ "tag": "interested", "total": 84, "counts": [3, 5] },
{ "tag": "not_interested", "total": 40, "counts": [1, 2] },
{ "tag": null, "total": 12, "counts": [0, 1] }
],
"totals": {
"sessions": 260,
"replied": 210,
"booked": 35,
"human_alerted": 18,
"unresolved": 12
}
}
フィールドに関する注記:
by_tag[].tag— AIが成果タグを割り当てなかった会話のnull。totals.human_alerted— 人間に引き継がれた会話。これは引き継ぎのたびに記録され、以前はどのエンドポイントでも表示されていませんでした。- レポートデータベースが回答できない場合、Metricシリーズと同じ
503/analytics_unavailableの挙動をとります。
ダッシュボードのインサイト
日付範囲に対する完全なダッシュボードのペイロードを1回の呼び出しで返します。曜日・時間別の返信率ヒートマップ、キャンペーンリーダーボード、チャネル別のボリューム、接続ごとの正確な合計、日別のメトリクス内訳(アカウント全体、チャネル別、番号別)、連絡先のソース、受信トレイの応答時間、最近のアクティビティフィードが含まれます。これはAPIの中で最も豊富なレポートペイロードであり、アプリ内のダッシュボードを直接駆動しています。
GET /analytics/dashboard-insights
| パラメータ | 必須 | 説明 |
|---|---|---|
startDate |
はい | 範囲の開始日、YYYY-MM-DD。 |
endDate |
はい | 範囲の終了日、YYYY-MM-DD。 |
campaignId |
いいえ | このキャンペーンに属するアクティビティのみを含めます(campaign_idも受け入れ可能)。レガシー機能です。agent_idの使用を推奨します。 |
agent_id |
いいえ | このAIエージェントに属するアクティビティのみを含めます(agentIdも受け入れ可能)。エージェントスコープ下では、キャンペーンリーダーボードはそのエージェントのアクティビティのみから構築されます。 |
このエンドポイントは、アプリ内ダッシュボードと実装を共有しているため、from/toではなくstartDate/endDateを使用します。範囲は92日に制限されており、それより広い場合は**拒否されるのではなく、クランプ(制限)**されます。
Nullはゼロではなく、利用不可を意味します。 いくつかのブロック(
numberStats、channelDailySeries、metricDailyBreakdown、contactsByCountry)はレポートデータベースから計算され、アカウントに対して回答できない場合はnullが返されます。nullブロックを空のグラフとしてレンダリングしないでください。
cURL
curl "https://api.youraiconnector.com/v1/analytics/dashboard-insights?startDate=2026-05-01&endDate=2026-05-31&apiKey=YOUR_API_KEY"
JavaScript
const params = new URLSearchParams({ startDate: "2026-05-01", endDate: "2026-05-31" });
const res = await fetch(`https://api.youraiconnector.com/v1/analytics/dashboard-insights?${params}`, {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/analytics/dashboard-insights",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"startDate": "2026-05-01", "endDate": "2026-05-31"},
)
data = res.json()
レスポンス(省略版 — このペイロードは大きいため、完全なスキーマについてはAPIリファレンスを参照してください)
{
"success": true,
"data": {
"heatmap": {
"buckets": [
{ "weekday": 1, "hour": 9, "sent": 12, "replied": 5, "replyRate": 0.42 }
]
},
"topCampaigns": [
{ "campaignId": "campaign123", "name": "Spring Promo", "sent": 420, "replied": 180, "booked": 22, "replyRate": 0.43, "creditsSpent": 210.5 }
],
"channelVolume": [
{ "channel": "whatsapp", "sent": 800, "received": 540, "lastMessageAt": "2026-05-31T14:02:11.000Z" }
],
"inboxSla": { "medianFirstResponseMs": 92000, "sampleSize": 140 },
"activityFeed": [
{ "id": "evt_1", "kind": "booked", "at": "2026-05-31T14:02:11.000Z", "contactId": "contact456", "contactName": "Jane Smith", "campaignId": "campaign123", "campaignName": "Spring Promo", "label": "Jane Smith booked an appointment" }
],
"numberStats": null,
"channelDailySeries": null,
"metricDailyBreakdown": null,
"contactsByCountry": null,
"ai_human_split": null
}
}
フィールドに関する注記:
heatmap.buckets[].weekday—0は日曜日から6は土曜日までです。numberStats、channelDailySeries、metricDailyBreakdown、contactsByCountry、ai_human_split— それぞれ、アカウントに対してレポートデータベースが利用できない場合は個別にnullとなります。他のすべてのブロックは引き続き返されます。
ダッシュボードのAIインサイト
日付範囲におけるアカウントのメッセージングに関する、AIが作成した3つの短いインサイト(1つの成果、1つの注目点、1つのヒント)を返します。これらは、解釈が必要な数値ではなく、レポートにそのまま貼り付けられる文章です。アカウント自身のメッセージメトリクスのみから生成されます。
GET /analytics/dashboard-ai-insights
| パラメータ | 必須 | 説明 |
|---|---|---|
startDate |
はい | 範囲の開始日、YYYY-MM-DD。 |
endDate |
はい | 範囲の終了日、YYYY-MM-DD。 |
このエンドポイントはアカウント全体に適用されるため、キャンペーンやエージェントのスコープは指定しません。
cURL
curl "https://api.youraiconnector.com/v1/analytics/dashboard-ai-insights?startDate=2026-05-01&endDate=2026-05-31&apiKey=YOUR_API_KEY"
JavaScript
const params = new URLSearchParams({ startDate: "2026-05-01", endDate: "2026-05-31" });
const res = await fetch(`https://api.youraiconnector.com/v1/analytics/dashboard-ai-insights?${params}`, {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/analytics/dashboard-ai-insights",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"startDate": "2026-05-01", "endDate": "2026-05-31"},
)
data = res.json()
レスポンス
{
"success": true,
"data": {
"insights": [
{ "tone": "win", "title": "Reply rate is up", "detail": "Your reply rate climbed to 43% this period, up from 36% the period before." },
{ "tone": "watch", "title": "Bookings slowed midweek", "detail": "Wednesday bookings dropped to a third of Monday's, worth a look at your Wednesday follow-up timing." },
{ "tone": "tip", "title": "Re-send to non-repliers", "detail": "212 contacts received a message but never replied — a short follow-up template often recovers 10-15% of them." }
]
}
}
startDate または endDate が欠落している場合、400 が返されます。
エンティティのアクティビティタイムライン
特定の連絡先、案件、またはタスクのアクティビティを、メッセージ、アポイントメント、メモ、ステータスの変更などを含め、最新のものから順に1つのタイムラインとして返します。複数のリストエンドポイントを組み合わせることなく、「この人物に何が起こったか」を確認するために使用します。
GET /analytics/entity-activity
| パラメータ | 必須 | 説明 |
|---|---|---|
entityType |
はい | contact、deal、または task。 |
entityId |
はい | タイムラインを取得するレコードのID。 |
cURL
curl "https://api.youraiconnector.com/v1/analytics/entity-activity?entityType=contact&entityId=contact456&apiKey=YOUR_API_KEY"
JavaScript
const params = new URLSearchParams({ entityType: "contact", entityId: "contact456" });
const res = await fetch(`https://api.youraiconnector.com/v1/analytics/entity-activity?${params}`, {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/analytics/entity-activity",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"entityType": "contact", "entityId": "contact456"},
)
data = res.json()
レスポンス
{
"success": true,
"data": {
"items": [
{
"id": "evt_9",
"kind": "appointment_booked",
"at": "2026-05-31T14:02:11.000Z",
"label": "Booked an appointment for June 3",
"detail": "Consultation call, 30 minutes"
},
{
"id": "evt_8",
"kind": "message_replied",
"at": "2026-05-31T13:58:02.000Z",
"label": "Replied: \"Yes, that time works\""
}
]
}
}
entityType/entityId が欠落しているか無効な場合、400 が返されます。アカウント上に存在しないエンティティを指定した場合は 404 が返されるため、他のアカウントのIDを推測することはできません。
集計イベント数(レガシー)
メッセージボリュームの概要と同じ集計イベント数を返しますが、一部の古いインテグレーションで採用されていた camelCase 形式(contact_created ではなく contactCreated、by_date ではなく byDate)で返されます。新しいインテグレーションには /analytics/summary を使用してください。このエンドポイントは、アプリ内のダッシュボードとAPIで実装を共有するためにのみ存在します。
GET /analytics/aggregate
| パラメータ | 必須 | 説明 |
|---|---|---|
startDate |
いいえ | 範囲の開始日。ISO日付または日時。デフォルトは /analytics/summary が使用する期間と同じです。 |
endDate |
いいえ | 範囲の終了日。ISO日付または日時。 |
campaignId |
いいえ | このキャンペーンに属するイベントのみをカウントします(campaign_id も受け付けます)。レガシー機能のため、agent_id の使用を推奨します。 |
agent_id |
いいえ | このAIエージェントに属するイベントのみをカウントします(agentId も受け付けます)。 |
cURL
curl "https://api.youraiconnector.com/v1/analytics/aggregate?startDate=2026-05-01&endDate=2026-05-31&apiKey=YOUR_API_KEY"
レスポンス
{
"success": true,
"data": {
"from": "2026-05-01",
"to": "2026-05-31",
"total": 1240,
"byAnalyticType": {
"total": 1240,
"sent": 800,
"delivered": 760,
"read": 540,
"replied": 210,
"booked": 35,
"contactCreated": 120,
"creditsSpent": 412.5,
"creditsRecharged": 500
},
"byDate": [
{ "date": "2026-05-01", "byAnalyticType": { "total": 40, "sent": 25, "delivered": 24, "read": 18, "replied": 7, "booked": 1, "contactCreated": 4, "creditsSpent": 13.5, "creditsRecharged": 0 } }
]
}
}
代理店サブアカウントのロールアップ
Analytics API エラー
Analytics エンドポイントは、標準のエラーエンベロープを返します。
{
"success": false,
"error": "Date range too large. Maximum is 366 days."
}
分析エンドポイントにおいて、無効な日付形式や範囲外の期間を指定した場合は 400 が返され、不明な campaign_id や agent_id を指定した場合は 404 が返されます。また、いずれかを受け付けるエンドポイントで campaign_id と agent_id の両方を送信した場合も 400 となります(最大1つのみ指定してください)。PG専用のレポートエンドポイント(メトリクスシリーズ、会話の成果、代理店ロールアップ)では、レポートデータベースがアカウントの回答を生成できない場合、ゼロで埋め尽くされた 200 ではなく、"error_code": "analytics_unavailable" を伴う 503 が返されます。その場合はしばらくしてから再試行してください。すべてのエンドポイントで返される可能性のある共通コード(401、403(プランにAPIアクセスが含まれていない、または代理店ロールアップでアカウントが Agency/Dev ではない場合)、429(レート制限)、500)については、再試行のガイダンスとともに エラーとページネーション に記載されています。