Analytics API
Analytics API は、AI 支援コーディングのメトリクス、アクティブユーザー、モデルの利用状況など、チームの Cherri Code 利用状況に関する包括的な分析情報を提供します。
- Analytics API では ベーシック認証 を使用します。ほとんどのエンドポイントには、
admin:*スコープを持つ管理者権限の API キーが必要です。Bugbot review の利用分析にはread:*スコープが必要です。Cherri Code Dashboard → API キー からキーを作成してください。 - 認証、レート制限、ベストプラクティスの詳細については、API Overview を参照してください。
- 利用可能対象: エンタープライズ チームのみ
利用可能なエンドポイント
エージェントによる編集
/analytics/team/agent-editsCherri Code でチームが受け入れた、AI によるコード編集の提案に関するメトリクスを取得します。
パラメータ
startDate string
endDate string
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/team/agent-edits" \ -u YOUR_API_KEY:レスポンス:
{ "data": [ { "event_date": "2025-01-15", "total_suggested_diffs": 145, "total_accepted_diffs": 98, "total_rejected_diffs": 47, "total_green_lines_accepted": 820, "total_red_lines_accepted": 160, "total_green_lines_rejected": 210, "total_red_lines_rejected": 60, "total_green_lines_suggested": 1030, "total_red_lines_suggested": 220, "total_lines_suggested": 1250, "total_lines_accepted": 980 }, { "event_date": "2025-01-16", "total_suggested_diffs": 132, "total_accepted_diffs": 89, "total_rejected_diffs": 43, "total_green_lines_accepted": 740, "total_red_lines_accepted": 150, "total_green_lines_rejected": 185, "total_red_lines_rejected": 55, "total_green_lines_suggested": 925, "total_red_lines_suggested": 175, "total_lines_suggested": 1100, "total_lines_accepted": 890 } ], "params": { "metric": "agent-edits", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31" }}Tab の利用状況
/analytics/team/tabsチーム全体での Tab 自動補完の利用状況に関するメトリクスを取得します。
パラメータ
startDate string
endDate string
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/team/tabs" \ -u YOUR_API_KEY:レスポンス:
{ "data": [ { "event_date": "2025-01-15", "total_suggestions": 5420, "total_accepts": 3210, "total_rejects": 2210, "total_green_lines_accepted": 4120, "total_red_lines_accepted": 2000, "total_green_lines_rejected": 1480, "total_red_lines_rejected": 730, "total_green_lines_suggested": 5600, "total_red_lines_suggested": 2740, "total_lines_suggested": 8340, "total_lines_accepted": 6120 }, { "event_date": "2025-01-16", "total_suggestions": 4980, "total_accepts": 3050, "total_rejects": 1930, "total_green_lines_accepted": 3890, "total_red_lines_accepted": 1890, "total_green_lines_rejected": 1350, "total_red_lines_rejected": 580, "total_green_lines_suggested": 5240, "total_red_lines_suggested": 2650, "total_lines_suggested": 7890, "total_lines_accepted": 5780 } ], "params": { "metric": "tabs", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31" }}1日あたりのアクティブユーザー数 (DAU)
/analytics/team/dauチームの1日あたりのアクティブユーザー数を取得します。DAU は、特定の日に Cherri Code を使用したユニークユーザー数です。 アクティブユーザーとは、Cherri Code の AI 機能を1つ以上使用したユーザーです。
レスポンスには、Cherri Code CLI、Cloud Agents、BugBot の DAU の内訳メトリクスが含まれます。
パラメータ
startDate string
endDate string
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/team/dau?startDate=14d&endDate=today" \ -u YOUR_API_KEY:レスポンス:
{ "data": [ { "date": "2025-01-15", "dau": 42, "cli_dau": 5, "cloud_agent_dau": 37, "bugbot_dau": 10 }, { "date": "2025-01-16", "dau": 38, "cli_dau": 4, "cloud_agent_dau": 34, "bugbot_dau": 12 } ], "params": { "metric": "dau", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31" }}クライアントバージョン
/analytics/team/client-versionsチームで使用されている Cherri Code クライアントバージョンの分布を取得します (デフォルトでは過去 7 日間) 。ユーザーごとに日単位で最新バージョンを報告します (複数のバージョンがインストールされている場合は、最新のバージョンを報告します) 。
パラメータ
startDate string
endDate string
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/team/client-versions" \ -u YOUR_API_KEY:レスポンス:
{ "data": [ { "event_date": "2025-01-01", "client_version": "0.42.3", "user_count": 35, "percentage": 0.833 }, { "event_date": "2025-01-01", "client_version": "0.42.2", "user_count": 7, "percentage": 0.167 } ], "params": { "metric": "client-versions", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31" }}モデルの利用状況
/analytics/team/modelsチーム全体のAIモデルの利用に関するメトリクスを取得します。
パラメータ
startDate string
endDate string
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/team/models" \ -u YOUR_API_KEY:レスポンス:
{ "data": [ { "date": "2025-01-15", "model_breakdown": { "claude-sonnet-4.5": { "messages": 1250, "users": 28 }, "gpt-4o": { "messages": 450, "users": 15 }, "claude-opus-4.5": { "messages": 320, "users": 12 } } }, { "date": "2025-01-16", "model_breakdown": { "claude-sonnet-4.5": { "messages": 1180, "users": 26 }, "gpt-4o": { "messages": 420, "users": 14 } } } ], "params": { "metric": "models", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31" }}上位のファイル拡張子
/analytics/team/top-file-extensionsCherri Code でチーム内で最も頻繁に編集されたファイルを取得します。提案数に基づき、日ごとの上位 5 件のファイル拡張子を返します。
パラメータ
startDate string
endDate string
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/team/top-file-extensions?startDate=30d&endDate=today" \ -u YOUR_API_KEY:レスポンス:
{ "data": [ { "event_date": "2025-01-15", "file_extension": "tsx", "total_files": 156, "total_accepts": 98, "total_rejects": 45, "total_lines_suggested": 3230, "total_lines_accepted": 2340, "total_lines_rejected": 890 }, { "event_date": "2025-01-15", "file_extension": "ts", "total_files": 142, "total_accepts": 89, "total_rejects": 38, "total_lines_suggested": 2850, "total_lines_accepted": 2100, "total_lines_rejected": 750 } ], "params": { "metric": "top-files", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31" }}MCP の使用状況
/analytics/team/mcpチーム全体での MCP (Model Context Protocol) ツールの使用状況に関するメトリクスを取得します。ツール名と MCP サーバー名ごとの日次使用数を返します。
パラメータ
startDate string
endDate string
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/team/mcp" \ -u YOUR_API_KEY:レスポンス:
{ "data": [ { "event_date": "2025-01-15", "tool_name": "read_file", "mcp_server_name": "filesystem", "usage": 245 }, { "event_date": "2025-01-15", "tool_name": "search_web", "mcp_server_name": "brave-search", "usage": 128 }, { "event_date": "2025-01-16", "tool_name": "read_file", "mcp_server_name": "filesystem", "usage": 231 } ], "params": { "metric": "mcp", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31" }}コマンドの使用状況
/analytics/team/commandsチーム全体での Cherri Code コマンドの利用状況に関するメトリクスを取得します。コマンド名別の日次利用数を返します。
パラメータ
startDate string
endDate string
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/team/commands" \ -u YOUR_API_KEY:レスポンス:
{ "data": [ { "event_date": "2025-01-15", "command_name": "explain", "usage": 89 }, { "event_date": "2025-01-15", "command_name": "refactor", "usage": 45 }, { "event_date": "2025-01-16", "command_name": "explain", "usage": 92 } ], "params": { "metric": "commands", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31" }}プランの使用状況
/analytics/team/plansチーム全体での Plan モードの利用状況に関するメトリクスを取得します。プラン生成に使用した AI モデル別の日次利用数を返します。
ユーザーが Auto model selection を有効にしている場合、API はモデル名として default を返します。これは Cherri Code UI でユーザーに「Auto」と表示されるものに対応します。
パラメータ
startDate string
endDate string
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/team/plans" \ -u YOUR_API_KEY:レスポンス:
{ "data": [ { "event_date": "2025-01-15", "model": "claude-sonnet-4.5", "usage": 156 }, { "event_date": "2025-01-15", "model": "default", "usage": 42 }, { "event_date": "2025-01-16", "model": "claude-sonnet-4.5", "usage": 148 } ], "params": { "metric": "plans", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31" }}スキルの使用状況
/analytics/team/skillsチーム全体におけるスキルの使用状況のメトリクスを取得します。スキル名別の日次使用数を返します。
パラメータ
startDate string
endDate string
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/team/skills" \ -u YOUR_API_KEY:レスポンス:
{ "data": [ { "event_date": "2025-01-15", "skill_name": "react-best-practices", "usage": 53 }, { "event_date": "2025-01-15", "skill_name": "usage-billing", "usage": 41 }, { "event_date": "2025-01-16", "skill_name": "react-best-practices", "usage": 48 } ], "params": { "metric": "skills", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31" }}Ask モードの利用状況
/analytics/team/ask-modeチーム全体における Ask モードの利用状況のメトリクスを取得します。Ask モードのクエリで使用された AI モデル別に、日ごとの利用数を返します。
パラメータ
startDate string
endDate string
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/team/ask-mode" \ -u YOUR_API_KEY:レスポンス:
{ "data": [ { "event_date": "2025-01-15", "model": "claude-sonnet-4.5", "usage": 203 }, { "event_date": "2025-01-15", "model": "gpt-4o", "usage": 67 }, { "event_date": "2025-01-16", "model": "claude-sonnet-4.5", "usage": 198 } ], "params": { "metric": "ask-mode", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31" }}会話インサイト
/analytics/team/conversation-insightsダッシュボードに表示されるものと同じ集計済みの会話インサイトデータを取得します。このエンドポイントは集計済みのインサイトを返します。生の会話エクスポートや会話コンテンツは返しません。
会話インサイトが有効なエンタープライズ チームでのみ利用できます。チーム設定で Disable Conversation Insights がオンになっている場合、このエンドポイントは 401 を返します。
ユーザーレベルでフィルタリングするには、チームレベルのエンドポイント で説明されている共通の users クエリパラメータを使用してください。SCIM グループによるフィルタリングはダッシュボード UI でのみ利用でき、Analytics API ではサポートされていません。
intents と complexity は会話全体を表します。
categories、guidanceLevels、workTypes は会話の各セグメントにまたがる作業を表します。
パラメータ
startDate string
endDate string
include string | string[]
intents、complexity、categories、guidanceLevels、workTypes。include は include=intents,complexity のようにカンマ区切りのリストとして渡すか、include=intents&include=workTypes のように繰り返し指定できます。users string
[email protected],user_abc123 のように、カンマ区切りのメールアドレスまたはユーザー ID を渡します。curl -X GET "https://api.cursor.com/analytics/team/conversation-insights?startDate=2026-03-01&endDate=2026-03-07&include=intents,complexity,categories,guidanceLevels,workTypes&[email protected],[email protected]" \ -u YOUR_API_KEY:レスポンス:
{ "data": { "intents": { "distribution": [ { "intent": "Write Code", "count": 18 }, { "intent": "Ask", "count": 7 }, { "intent": "Plan", "count": 3 } ], "topValues": [ { "intent": "Write Code", "count": 18 }, { "intent": "Ask", "count": 7 } ], "timeSeries": [ { "date": "2026-03-01", "intent": "Ask", "count": 2 }, { "date": "2026-03-02", "intent": "Write Code", "count": 6 } ], "subcategories": { "askMode": [ { "subcategory": "error_fix", "count": 4 } ], "planMode": [ { "subcategory": "implementation", "count": 3 } ], "writeCode": [ { "subcategory": "feature", "count": 11 } ] } }, "complexity": { "distribution": [ { "complexity": "high", "count": 12 }, { "complexity": "medium", "count": 10 } ], "timeSeries": [ { "date": "2026-03-01", "complexity": "medium", "count": 4 }, { "date": "2026-03-02", "complexity": "high", "count": 5 } ] }, "categories": { "distribution": [ { "category": "New Features", "count": 9 }, { "category": "Bug Fixing & Debugging", "count": 6 } ], "timeSeries": [ { "date": "2026-03-01", "category": "Bug Fixing & Debugging", "count": 2 }, { "date": "2026-03-02", "category": "New Features", "count": 4 } ] }, "guidanceLevels": { "distribution": [ { "guidanceLevel": "high", "count": 8 }, { "guidanceLevel": "medium", "count": 7 } ], "timeSeries": [ { "date": "2026-03-01", "guidanceLevel": "medium", "count": 3 }, { "date": "2026-03-02", "guidanceLevel": "high", "count": 4 } ] }, "workTypes": { "distribution": [ { "workType": "new_feature", "count": 9 }, { "workType": "bug", "count": 6 } ], "timeSeries": [ { "date": "2026-03-01", "workType": "bug", "count": 2 }, { "date": "2026-03-02", "workType": "new_feature", "count": 4 } ] } }, "params": { "metric": "conversation-insights", "teamId": 12345, "startDate": "2026-03-01", "endDate": "2026-03-07", "include": [ "intents", "complexity", "categories", "guidanceLevels", "workTypes" ] }}リーダーボード
/analytics/team/leaderboardAI利用状況指標に基づくチームメンバーのランキングを取得します。
挙動:
- ユーザーフィルターなし: 指定したメトリクス (デフォルト: 承認された行数の合計) でランク付けされたユーザーを返します
- ユーザーフィルターあり: フィルターに一致するユーザーを、実際のチーム全体での順位とともに返します
- メンバー数の多いチーム向けにページネーションをサポートします
パラメータ
startDate string
endDate string
page number
1pageSize number
users string
[email protected],user_abc123) Tabの自動補完とエージェントによる編集について、それぞれ別のリーダーボードを返します。ユーザーでフィルターする場合、対象ユーザーはフィルター後の順位ではなく、実際のチーム全体での順位で表示されます。たとえば、全体で45位のユーザーをリクエストした場合、rank: 45 として表示されます。
# リーダーボードの1ページ目を取得(上位10ユーザー)curl -X GET "https://api.cursor.com/analytics/team/leaderboard" \ -u YOUR_API_KEY:# カスタムのページサイズで2ページ目を取得curl -X GET "https://api.cursor.com/analytics/team/leaderboard?page=2&pageSize=20" \ -u YOUR_API_KEY:# 特定のユーザーで絞り込むcurl -X GET "https://api.cursor.com/analytics/team/[email protected],[email protected]" \ -u YOUR_API_KEY:レスポンス:
{ "data": { "tab_leaderboard": { "data": [ { "email": "[email protected]", "user_id": "user_abc123", "profile_picture_url": "https://example.com/avatars/alice.jpg", "total_accepts": 1334, "total_lines_accepted": 3455, "total_lines_suggested": 15307, "line_acceptance_ratio": 0.2256519892590384, "accept_ratio": 0.2330827067669173, "rank": 1 }, { "email": "[email protected]", "user_id": "user_def789", "profile_picture_url": "https://example.com/avatars/bob.jpg", "total_accepts": 796, "total_lines_accepted": 2090, "total_lines_suggested": 7689, "line_acceptance_ratio": 0.2718168812589414, "accept_ratio": 0.2731256599787746, "rank": 2 } ], "total_users": 142 }, "agent_leaderboard": { "data": [ { "email": "[email protected]", "user_id": "user_abc123", "profile_picture_url": "https://example.com/avatars/alice.jpg", "total_accepts": 914, "total_lines_accepted": 65947, "total_lines_suggested": 201467, "line_acceptance_ratio": 0.3273465219182842, "rank": 1 }, { "email": "[email protected]", "user_id": "user_def789", "profile_picture_url": "https://example.com/avatars/bob.jpg", "total_accepts": 843, "total_lines_accepted": 61709, "total_lines_suggested": 51092, "line_acceptance_ratio": 1.2077924536684573, "rank": 2 } ], "total_users": 142 } }, "pagination": { "page": 1, "pageSize": 10, "totalUsers": 142, "totalPages": 15, "hasNextPage": true, "hasPreviousPage": false }, "params": { "metric": "leaderboard", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31", "page": 1, "pageSize": 10 }}Bugbot 利用分析
/analytics/team/bugbot重要度別の issue 数や解決済みの issue 数を含む、チームの PR ごとの Bugbot review 利用分析を取得します。
請求コストや個別の findings を含む review ごとのデータについては、Bugbot review の利用分析 を参照してください。
パラメータ
startDate string
endDate string
prState string
merged、all。デフォルト: merged。マージ済み PR の利用分析のみを取得するには merged を使用します。すべての PR ステータスの利用分析を取得するには all を使用します。repo string
https://github.com/org/repo.git、github.com/org/repo) を指定できます。host/owner/repo 形式に正規化されます。page number
1pageSize number
100、最大: 250) # 過去7日間のBugbot PR利用分析を取得(デフォルト)curl -X GET "https://api.cursor.com/analytics/team/bugbot" \ -u YOUR_API_KEY:# リポジトリと日付範囲でフィルタリングcurl -X GET "https://api.cursor.com/analytics/team/bugbot?repo=github.com/acme/app&startDate=2025-01-01&endDate=2025-01-31" \ -u YOUR_API_KEY:# 結果をページネーションするcurl -X GET "https://api.cursor.com/analytics/team/bugbot?page=2&pageSize=50" \ -u YOUR_API_KEY:レスポンス:
{ "data": [ { "repo": "github.com/acme/app", "pr_number": 42, "timestamp": "2025-01-21T00:00:00.000Z", "reviews": 3, "issues": { "total": 5, "by_severity": { "high": 1, "medium": 2, "low": 2 } }, "issues_resolved": { "total": 2, "by_severity": { "high": 1, "medium": 1, "low": 0 } } } ], "pagination": { "page": 1, "pageSize": 100, "totalItems": 1, "totalPages": 1, "hasNextPage": false, "hasPreviousPage": false }, "params": { "metric": "bugbot", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31", "repo": "github.com/acme/app", "prState": "merged", "page": 1, "pageSize": 100 }}Bugbot review の利用分析
/analytics/team/bugbot-reviews完了した Bugbot review ごとに、レビュー対象のコミット、検出事項数、請求額、検出事項ごとの解決データを含む項目を 1 件返します。
投稿済みのレビューと dry-run レビューの両方を含みます。投稿済みの検出事項は comment_id と resolution_status で識別されます。SCM には何も投稿されないため、dry-run の検出事項では代わりに title、description、locations が返されます。
read:* スコープを持つ API キーが必要です。
パラメータ
startDate string
endDate string
repo string
host/owner/repo です。プロトコルと .git 接尾辞は省略できます。prNumber number
page number
1。pageSize number
100、最大: 250。dryRun boolean
true) または投稿済み (false) のレビューのみを対象にする任意のフィルター。curl --get https://api.cursor.com/analytics/team/bugbot-reviews \ -u YOUR_API_KEY: \ --data-urlencode 'startDate=2026-06-01' \ --data-urlencode 'endDate=2026-06-29' \ --data-urlencode 'repo=github.com/your-org/your-repo' \ --data-urlencode 'prNumber=42' \ --data-urlencode 'page=1' \ --data-urlencode 'pageSize=100'curl --get https://api.cursor.com/analytics/team/bugbot-reviews \ -u YOUR_API_KEY: \ --data-urlencode 'dryRun=true' \ --data-urlencode 'repo=github.com/your-org/your-repo' \ --data-urlencode 'prNumber=42'レスポンス (投稿済みレビュー) :
{ "data": [ { "request_id": "6e0d261c-86a2-4383-89f0-9162c1c10662", "timestamp": "2026-06-29T19:42:18.000Z", "repo": "github.com/your-org/your-repo", "repo_node_id": "R_kgDOABCDEF", "pr_number": 42, "commit_sha": "9f3c2a1b7d8e4f5061728394a5b6c7d8e9f0a1b2", "bugs_found": 2, "cost_cents": 42.5, "dry_run": false, "publication_status": "posted", "bugs": [ { "comment_id": "2147483999", "resolution_status": "resolved", "severity": "high" }, { "comment_id": "2147484000", "resolution_status": "unresolved", "severity": "medium" } ] } ], "pagination": { "page": 1, "pageSize": 100, "totalItems": 1, "totalPages": 1, "hasNextPage": false, "hasPreviousPage": false }, "params": { "metric": "bugbot-reviews", "teamId": 12345, "startDate": "2026-06-01", "endDate": "2026-06-29", "repo": "github.com/your-org/your-repo", "prNumber": 42, "page": 1, "pageSize": 100 }}レスポンス (ドライラン確認) :
{ "data": [ { "request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "timestamp": "2026-06-29T20:15:03.000Z", "repo": "github.com/your-org/your-repo", "repo_node_id": "R_kgDOABCDEF", "pr_number": 42, "commit_sha": "9f3c2a1b7d8e4f5061728394a5b6c7d8e9f0a1b2", "bugs_found": 1, "cost_cents": null, "dry_run": true, "publication_status": "dry_run", "bugs": [ { "comment_id": null, "resolution_status": null, "severity": "medium", "title": "Unbounded retry loop", "description": "retry() recurses without a ceiling.", "locations": [ { "file": "src/net.ts", "start_line": 5, "end_line": 9 } ] } ] } ], "pagination": { "page": 1, "pageSize": 100, "totalItems": 1, "totalPages": 1, "hasNextPage": false, "hasPreviousPage": false }, "params": { "metric": "bugbot-reviews", "teamId": 12345, "startDate": "2026-06-01", "endDate": "2026-06-29", "repo": "github.com/your-org/your-repo", "prNumber": 42, "dryRun": true, "page": 1, "pageSize": 100 }}repo_node_id、pr_number、commit_sha、cost_cents、bugs[].comment_id、bugs[].resolution_status、bugs[].severityは、利用できない場合にnullになることがあります。cost_centsはレビューが個別に請求されない場合にnullです。ドライラン (dry-run) レビューでは、bugs[].title、bugs[].description、bugs[].locationsにファインディングの内容が含まれます。ドライランのファインディングは、SCMに何も投稿されないためcomment_id: nullおよびresolution_status: nullになります。
dry-run review を実行するには、"dryRun": true を指定して POST /bugbot/review を呼び出します。Bugbot API ドキュメントを参照してください。
ユーザー別エンドポイント
ユーザー別エンドポイントでは、チームレベルのエンドポイントと同じメトリクスを、ページネーション対応でユーザーごとに取得できます。ユーザーごとのレポート生成や、大規模なチームのバッチ処理に最適です。
共通クエリパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
startDate | 日付文字列 | 非対応 | 分析対象期間の開始日 (デフォルト: 7日前) |
endDate | 日付文字列 | 非対応 | 分析対象期間の終了日 (デフォルト: 本日) |
page | number | 非対応 | ページ番号 (デフォルト: 1) |
pageSize | number | 非対応 | 1ページあたりのユーザー数 (デフォルト: 100、最大: 500) |
users | string | 非対応 | 特定のユーザーにページネーションを限定 (メールアドレスまたはIDをカンマ区切りで指定。例: [email protected],user_abc123) |
ユーザーフィルタリング:
ユーザー別エンドポイントで users パラメータを指定すると:
- ページネーションもフィルタリングされます: 指定したユーザーのみが結果セットとページネーションの件数に含まれます
- 役立つ用途: すべてのユーザーをページネーションせずに、特定のチームメンバーの詳細データを取得する場合
- 例: ユーザーが500人いても、特定の3人のデータだけが必要な場合は、そのメールアドレスでフィルタリングすると、1ページですべてのデータを取得できます
注: ユーザー別エンドポイントは、チームレベルのエンドポイントと同じ日付形式とショートカットをサポートします。上記の日付形式セクションを参照してください。
レスポンス形式
すべてのユーザー別エンドポイントは、以下の形式でデータを返します。
{ "data": { "[email protected]": [ /* ユーザーデータ */ ], "[email protected]": [ /* ユーザーデータ */ ] }, "pagination": { "page": 1, "pageSize": 100, "totalUsers": 250, "totalPages": 3, "hasNextPage": true, "hasPreviousPage": false }, "params": { "metric": "agent-edits", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31", "page": 1, "pageSize": 100, "userMappings": [ { "id": "user_abc123", "email": "[email protected]" }, { "id": "user_def456", "email": "[email protected]" } ] }}レスポンス形式:
data- ユーザーのメールアドレスをキーとし、各ユーザーのメトリクス配列を含むオブジェクトpagination- ページネーション情報params- エコーバックされるリクエストパラメータuserMappings- このページのメールアドレスを公開ユーザー ID にマッピングする配列。他の API との相互参照や、ユーザープロフィールへのリンクの作成に役立ちます。
利用可能なエンドポイント
すべてのユーザー別エンドポイントは、次のパターンに従います: /analytics/by-user/{metric}
GET /analytics/by-user/agent-edits- ユーザーごとのエージェントによる編集GET /analytics/by-user/tabs- ユーザーごとのTab利用状況GET /analytics/by-user/models- ユーザーごとのモデル利用状況GET /analytics/by-user/top-file-extensions- ユーザーごとの上位ファイルGET /analytics/by-user/client-versions- ユーザーごとのクライアントバージョンGET /analytics/by-user/mcp- ユーザーごとのMCP使用状況GET /analytics/by-user/commands- ユーザーごとのコマンド使用状況GET /analytics/by-user/plans- ユーザーごとのプラン使用状況GET /analytics/by-user/skills- ユーザーごとのスキルの使用状況GET /analytics/by-user/ask-mode- ユーザーごとのAsk mode使用状況
ユーザー別エージェント編集
/analytics/by-user/agent-editsユーザーごとのエージェント編集メトリクスを、ページネーション対応で取得します。
パラメータ
startDate string
endDate string
page number
1pageSize number
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/by-user/agent-edits?page=1&pageSize=50" \ -u YOUR_API_KEY:curl -X GET "https://api.cursor.com/analytics/by-user/[email protected],[email protected],[email protected]" \ -u YOUR_API_KEY:レスポンス:
{ "data": { "[email protected]": [ { "event_date": "2025-01-15", "total_suggested_diffs": 145, "total_accepted_diffs": 98, "total_rejected_diffs": 47, "total_green_lines_accepted": 820, "total_red_lines_accepted": 160, "total_green_lines_rejected": 210, "total_red_lines_rejected": 60, "total_green_lines_suggested": 1030, "total_red_lines_suggested": 220, "total_lines_suggested": 1250, "total_lines_accepted": 980 }, { "event_date": "2025-01-16", "total_suggested_diffs": 132, "total_accepted_diffs": 89, "total_rejected_diffs": 43, "total_green_lines_accepted": 740, "total_red_lines_accepted": 150, "total_green_lines_rejected": 185, "total_red_lines_rejected": 55, "total_green_lines_suggested": 925, "total_red_lines_suggested": 175, "total_lines_suggested": 1100, "total_lines_accepted": 890 } ], "[email protected]": [ { "event_date": "2025-01-15", "total_suggested_diffs": 95, "total_accepted_diffs": 72, "total_rejected_diffs": 23, "total_green_lines_accepted": 450, "total_red_lines_accepted": 90, "total_green_lines_rejected": 120, "total_red_lines_rejected": 35, "total_green_lines_suggested": 570, "total_red_lines_suggested": 125, "total_lines_suggested": 695, "total_lines_accepted": 540 } ] }, "pagination": { "page": 1, "pageSize": 50, "totalUsers": 120, "totalPages": 3, "hasNextPage": true, "hasPreviousPage": false }, "params": { "metric": "agent-edits", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31", "page": 1, "pageSize": 50, "userMappings": [ { "id": "user_abc123", "email": "[email protected]" }, { "id": "user_def456", "email": "[email protected]" } ] }}ユーザー別 Tab 利用状況
/analytics/by-user/tabsユーザーごとの Tab 自動補完メトリクスをページネーション対応で取得します。
パラメータ
startDate string
endDate string
page number
1pageSize number
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/by-user/tabs?page=1&pageSize=50" \ -u YOUR_API_KEY:レスポンス:
{ "data": { "[email protected]": [ { "event_date": "2025-01-15", "total_suggestions": 320, "total_accepts": 210, "total_rejects": 110, "total_green_lines_accepted": 280, "total_red_lines_accepted": 120, "total_green_lines_rejected": 90, "total_red_lines_rejected": 45, "total_green_lines_suggested": 370, "total_red_lines_suggested": 165, "total_lines_suggested": 535, "total_lines_accepted": 400 } ], "[email protected]": [ { "event_date": "2025-01-15", "total_suggestions": 180, "total_accepts": 120, "total_rejects": 60, "total_green_lines_accepted": 150, "total_red_lines_accepted": 70, "total_green_lines_rejected": 50, "total_red_lines_rejected": 25, "total_green_lines_suggested": 200, "total_red_lines_suggested": 95, "total_lines_suggested": 295, "total_lines_accepted": 220 } ] }, "pagination": { "page": 1, "pageSize": 50, "totalUsers": 120, "totalPages": 3, "hasNextPage": true, "hasPreviousPage": false }, "params": { "metric": "tabs", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31", "page": 1, "pageSize": 50, "userMappings": [ { "id": "user_abc123", "email": "[email protected]" }, { "id": "user_def456", "email": "[email protected]" } ] }}ユーザー別モデル利用状況
/analytics/by-user/modelsユーザー別のモデル利用状況指標を、ページネーション対応で取得します。
パラメータ
startDate string
endDate string
page number
1pageSize number
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/by-user/models?page=1&pageSize=50" \ -u YOUR_API_KEY:レスポンス:
{ "data": { "[email protected]": [ { "date": "2025-01-15", "model_breakdown": { "claude-sonnet-4.5": { "messages": 85, "users": 1 }, "gpt-4o": { "messages": 32, "users": 1 } } } ], "[email protected]": [ { "date": "2025-01-15", "model_breakdown": { "claude-sonnet-4.5": { "messages": 64, "users": 1 } } } ] }, "pagination": { "page": 1, "pageSize": 50, "totalUsers": 120, "totalPages": 3, "hasNextPage": true, "hasPreviousPage": false }, "params": { "metric": "models", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31", "page": 1, "pageSize": 50, "userMappings": [ { "id": "user_abc123", "email": "[email protected]" }, { "id": "user_def456", "email": "[email protected]" } ] }}ユーザー別の主要ファイル拡張子
/analytics/by-user/top-file-extensionsユーザー別の主要なファイル拡張子メトリクスを、ページネーション対応で取得します。
パラメータ
startDate string
endDate string
page number
1pageSize number
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/by-user/top-file-extensions?page=1&pageSize=50" \ -u YOUR_API_KEY:レスポンス:
{ "data": { "[email protected]": [ { "event_date": "2025-01-15", "file_extension": "tsx", "total_files": 45, "total_accepts": 32, "total_rejects": 10, "total_lines_suggested": 890, "total_lines_accepted": 650, "total_lines_rejected": 240 }, { "event_date": "2025-01-15", "file_extension": "ts", "total_files": 38, "total_accepts": 28, "total_rejects": 8, "total_lines_suggested": 720, "total_lines_accepted": 540, "total_lines_rejected": 180 } ], "[email protected]": [ { "event_date": "2025-01-15", "file_extension": "py", "total_files": 22, "total_accepts": 18, "total_rejects": 4, "total_lines_suggested": 410, "total_lines_accepted": 340, "total_lines_rejected": 70 } ] }, "pagination": { "page": 1, "pageSize": 50, "totalUsers": 120, "totalPages": 3, "hasNextPage": true, "hasPreviousPage": false }, "params": { "metric": "top-files", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31", "page": 1, "pageSize": 50, "userMappings": [ { "id": "user_abc123", "email": "[email protected]" }, { "id": "user_def456", "email": "[email protected]" } ] }}ユーザー別クライアントバージョン
/analytics/by-user/client-versionsユーザーごとに集計したクライアントバージョンのメトリクスを、ページネーション対応で取得します。
パラメータ
startDate string
endDate string
page number
1pageSize number
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/by-user/client-versions?page=1&pageSize=50" \ -u YOUR_API_KEY:レスポンス:
{ "data": { "[email protected]": [ { "event_date": "2025-01-15", "client_version": "0.42.3", "user_count": 1, "percentage": 1.0 } ], "[email protected]": [ { "event_date": "2025-01-15", "client_version": "0.42.2", "user_count": 1, "percentage": 1.0 } ] }, "pagination": { "page": 1, "pageSize": 50, "totalUsers": 120, "totalPages": 3, "hasNextPage": true, "hasPreviousPage": false }, "params": { "metric": "client-versions", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31", "page": 1, "pageSize": 50, "userMappings": [ { "id": "user_abc123", "email": "[email protected]" }, { "id": "user_def456", "email": "[email protected]" } ] }}ユーザー別 MCP 使用状況
/analytics/by-user/mcpユーザー別の MCP ツール使用状況メトリクスを、ページネーション対応で取得します。
パラメータ
startDate string
endDate string
page number
1pageSize number
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/by-user/mcp?page=1&pageSize=50" \ -u YOUR_API_KEY:レスポンス:
{ "data": { "[email protected]": [ { "event_date": "2025-01-15", "tool_name": "read_file", "mcp_server_name": "filesystem", "usage": 45 }, { "event_date": "2025-01-16", "tool_name": "read_file", "mcp_server_name": "filesystem", "usage": 38 } ], "[email protected]": [ { "event_date": "2025-01-15", "tool_name": "search_web", "mcp_server_name": "brave-search", "usage": 23 } ] }, "pagination": { "page": 1, "pageSize": 50, "totalUsers": 120, "totalPages": 3, "hasNextPage": true, "hasPreviousPage": false }, "params": { "metric": "mcp", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31", "page": 1, "pageSize": 50, "userMappings": [ { "id": "user_abc123", "email": "[email protected]" }, { "id": "user_def456", "email": "[email protected]" } ] }}ユーザー別コマンド使用状況
/analytics/by-user/commandsユーザーごとのコマンド使用状況メトリクスを、ページネーション対応で取得します。
パラメータ
startDate string
endDate string
page number
1pageSize number
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/by-user/commands?page=1&pageSize=50" \ -u YOUR_API_KEY:レスポンス:
{ "data": { "[email protected]": [ { "event_date": "2025-01-15", "command_name": "explain", "usage": 12 }, { "event_date": "2025-01-16", "command_name": "explain", "usage": 15 } ], "[email protected]": [ { "event_date": "2025-01-15", "command_name": "refactor", "usage": 8 } ] }, "pagination": { "page": 1, "pageSize": 50, "totalUsers": 120, "totalPages": 3, "hasNextPage": true, "hasPreviousPage": false }, "params": { "metric": "commands", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31", "page": 1, "pageSize": 50, "userMappings": [ { "id": "user_abc123", "email": "[email protected]" }, { "id": "user_def456", "email": "[email protected]" } ] }}ユーザー別プラン使用状況
/analytics/by-user/plansPlan モードの使用状況メトリクスを、ユーザーごとにページネーション対応で取得します。
パラメータ
startDate string
endDate string
page number
1pageSize number
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/by-user/plans?page=1&pageSize=50" \ -u YOUR_API_KEY:レスポンス:
{ "data": { "[email protected]": [ { "event_date": "2025-01-15", "model": "claude-sonnet-4.5", "usage": 23 }, { "event_date": "2025-01-16", "model": "claude-sonnet-4.5", "usage": 19 } ], "[email protected]": [ { "event_date": "2025-01-15", "model": "gpt-4o", "usage": 12 } ] }, "pagination": { "page": 1, "pageSize": 50, "totalUsers": 120, "totalPages": 3, "hasNextPage": true, "hasPreviousPage": false }, "params": { "metric": "plans", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31", "page": 1, "pageSize": 50, "userMappings": [ { "id": "user_abc123", "email": "[email protected]" }, { "id": "user_def456", "email": "[email protected]" } ] }}ユーザー別スキル使用状況
/analytics/by-user/skills個々のユーザーのスキル使用状況メトリクスを、ページネーション対応で取得します。
パラメータ
startDate string
endDate string
page number
1pageSize number
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/by-user/skills?page=1&pageSize=50" \ -u YOUR_API_KEY:レスポンス:
{ "data": { "[email protected]": [ { "event_date": "2025-01-15", "skill_name": "react-best-practices", "usage": 8 }, { "event_date": "2025-01-15", "skill_name": "create-rule", "usage": 3 }, { "event_date": "2025-01-16", "skill_name": "react-best-practices", "usage": 5 } ], "[email protected]": [ { "event_date": "2025-01-15", "skill_name": "commit-message-helper", "usage": 5 }, { "event_date": "2025-01-15", "skill_name": "create-skill", "usage": 2 } ] }, "pagination": { "page": 1, "pageSize": 50, "totalUsers": 120, "totalPages": 3, "hasNextPage": true, "hasPreviousPage": false }, "params": { "metric": "skills", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31", "page": 1, "pageSize": 50, "userMappings": [ { "id": "user_abc123", "email": "[email protected]" }, { "id": "user_def456", "email": "[email protected]" } ] }}ユーザー別 Ask モード使用状況
/analytics/by-user/ask-modeユーザー別に集計した Ask モードの使用状況メトリクスを、ページネーション対応で取得します。
パラメータ
startDate string
endDate string
page number
1pageSize number
users string
[email protected],user_abc123) curl -X GET "https://api.cursor.com/analytics/by-user/ask-mode?page=1&pageSize=50" \ -u YOUR_API_KEY:レスポンス:
{ "data": { "[email protected]": [ { "event_date": "2025-01-15", "model": "claude-sonnet-4.5", "usage": 34 }, { "event_date": "2025-01-16", "model": "claude-sonnet-4.5", "usage": 28 } ], "[email protected]": [ { "event_date": "2025-01-15", "model": "gpt-4o", "usage": 15 } ] }, "pagination": { "page": 1, "pageSize": 50, "totalUsers": 120, "totalPages": 3, "hasNextPage": true, "hasPreviousPage": false }, "params": { "metric": "ask-mode", "teamId": 12345, "startDate": "2025-01-01", "endDate": "2025-01-31", "page": 1, "pageSize": 50, "userMappings": [ { "id": "user_abc123", "email": "[email protected]" }, { "id": "user_def456", "email": "[email protected]" } ] }}チームレベルのエンドポイント
チームレベルのエンドポイントでは、チーム全体または絞り込んだユーザーグループの集計メトリクスを取得できます。すべてのエンドポイントで、日付範囲やユーザーによる任意のフィルタリングをサポートしています。
共通クエリパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
startDate | 日付文字列 | 非対応 | 分析対象期間の開始日 (デフォルト: 7日前) |
endDate | 日付文字列 | 非対応 | 分析対象期間の終了日 (デフォルト: 本日) |
users | string | 非対応 | 特定のユーザーにデータを絞り込みます (カンマ区切り) 。各値にはメールアドレス (例: [email protected]) または公開ユーザーID (例: user_abc123) を指定できます。両方の形式を混在させることもできます。 |
ユーザーのフィルタリング:
users パラメータには、カンマ区切りの識別子リストを指定できます。各識別子には次のいずれかを指定できます。
- メールアドレス (例:
[email protected]) -@の有無で自動検出されます - 公開ユーザーID (例:
user_abc123) -user_プレフィックスで自動検出されます - 混在形式 - 同じリクエスト内でメールアドレスとIDを組み合わせることができます
例:
# メールアドレスのみで絞り込む[email protected],[email protected],[email protected]# 公開ユーザーIDのみで絞り込む?users=user_abc123,user_def456,user_ghi789# メールアドレスとIDを混在させる[email protected],user_def456,[email protected]ユーザーでフィルタリングすると、API は指定したユーザーのデータのみを返します。これは次のような用途に役立ちます。
- 特定のチームメンバーやグループ (例:エンジニアリングリード、特定のプロジェクトチーム) の分析
- 一部のユーザーを対象としたレポートの作成
- 選択した個人間のメトリクスの比較
日付形式
デフォルトの挙動:
startDate と endDate の両方を省略すると、API はデフォルトで過去 7 日間 (7日前から本日まで) を対象とします。日付を指定せずにすばやくクエリする場合に便利です。
標準形式:
YYYY-MM-DD- シンプルな日付形式 (例:2025-01-15) ← 推奨- ISO 8601 タイムスタンプ (例:
2025-01-15T00:00:00Z)
ショートカット:
nowまたはtoday- 現在の日付 (00:00:00)yesterday- 昨日の日付 (00:00:00)<number>d- n日前 (例:7d= 7日前、30d= 30日前)
重要な注意事項:
- 時刻は無視されます: すべての日付は日単位 (00:00:00 UTC) に処理されます。
2025-01-15T14:30:00Zを送信しても、2025-01-15と同じです。 - 推奨形式を使用する: HTTP キャッシュを効率的に利用するには、
YYYY-MM-DDまたはショートカットを使用してください。同じ日に処理される場合でも、異なる時刻値 (T14:30:00ZとT08:00:00Zなど) はキャッシュヒットを妨げます。 - 日付範囲: 最大 30 日間に制限されます。
例:
# 直近7日間は日付を省略(最も簡単で、キャッシュにも最適)curl "https://api.cursor.com/analytics/team/agent-edits"# 特定の日付範囲にはYYYY-MM-DD形式を使用(推奨)?startDate=2025-01-01&endDate=2025-01-31# 直近30日間にはショートカットを使用?startDate=30d&endDate=today# 直近14日間にはショートカットを使用?startDate=14d&endDate=now# ❌ タイムスタンプは使用しないでください。キャッシュが利用できなくなり、時刻はどのみち無視されます?startDate=2025-01-15T14:30:00Z&endDate=2025-01-31T23:59:59Zレート制限
レート制限はチームごとに適用され、1分ごとにリセットされます。
- チームレベルのエンドポイント: チームあたり毎分100リクエスト
- ユーザー別エンドポイント: チームあたり毎分50リクエスト
レート制限を超えるとどうなりますか?
レート制限を超えると、429 Too Many Requestsレスポンスが返されます。
{ "error": "Too Many Requests", "message": "Rate limit exceeded. Please try again later."}ベストプラクティス
指数バックオフ、キャッシュ戦略、エラー処理など、API の一般的なベストプラクティスについては、API Overview のベストプラクティスを参照してください。
- 大規模なチームではページネーションを使用する: チームに 100 人を超えるユーザーがいる場合は、タイムアウトを回避するために、ページネーションを使用したユーザー別エンドポイントを使用してください。
- キャッシュを活用する: チームレベルとユーザーレベルのエンドポイントはどちらも ETag をサポートしています。ETag を保存し、
If-None-Matchヘッダーを使用して不要なデータ転送を減らしてください。 - 可能な場合はユーザーでフィルタリングする: 特定のユーザーのデータだけが必要な場合は、
usersパラメータを使用してクエリ時間を短縮してください。 - 日付範囲: 最適なパフォーマンスを得るため、日付範囲は適切な範囲 (例: 1~3 か月) にしてください。