Analytics API
Analytics API 可全面洞察团队的 Cherri Code 用量,包括 AI 辅助编码指标、活跃用户、模型用量等。
- Analytics API 使用 Basic 认证。大多数端点需要具有
admin:*权限范围的管理员 API 密钥。Bugbot 评审分析需要read:*权限范围。可在 Cherri Code Dashboard → API Keys 中生成密钥。 - 有关身份验证、速率限制和最佳实践的详情,请参阅 API Overview。
- 可用性:仅限企业版团队使用
可用端点
智能体编辑
/analytics/team/agent-edits获取你的团队在 Cherri 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" }}每日活跃用户 (DAU)
/analytics/team/dau获取团队的每日活跃用户数。DAU 是指某一天内使用过 Cherri Code 的唯一用户数。 活跃用户是指在 Cherri Code 中至少使用过一项 AI 功能的用户。
响应包含 Cherri Code 命令行界面、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-extensions获取团队在 Cherri 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 (模型上下文协议) 工具采用情况的指标。返回按工具名称和 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 界面中看到的“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获取仪表盘中显示的汇总对话洞察数据。此端点返回汇总洞察,不返回原始对话导出数据或原始对话内容。
仅适用于已启用对话洞察的企业版团队。如果在团队设置中开启了 禁用对话洞察,此端点将返回 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。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/leaderboard获取按 AI 用量指标排名的团队成员排行榜。
行为:
- 不筛选用户:返回按指定指标排名的用户 (默认值:已接受代码行数总计)
- 筛选用户:返回符合筛选条件的用户 (并显示其实际的团队总排名)
- 支持对成员较多的团队进行分页
参数
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:# 使用自定义页面大小获取第二页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获取团队中每个 PR 的 Bugbot 评审分析数据,包括按严重程度统计的问题数量以及已解决的问题数量。
如需获取包含计费成本和各项发现的单次评审数据,请使用 Bugbot 评审分析。
参数
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 评审使用分析
/analytics/team/bugbot-reviews每个已完成的 Bugbot 评审返回一条记录,包括已评审的 commit、finding 数量、计费费用以及每个 finding 的解决数据。
包括已发布的评审和 Dry-run 评审。已发布的 finding 通过 comment_id 和 resolution_status 标识。Dry-run finding 则返回 title、description 和 locations,因为不会向 SCM 发布任何内容。
需要具有 read:* 范围的 API 密钥。
参数
startDate string
endDate string
now。参阅 日期格式。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 }}响应 (Dry-run 评审) :
{ "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 包含检测结果内容。dry-run 的检测结果其 comment_id 和 resolution_status 均为 null,因为不会向 SCM 发布任何内容。
要触发 Dry-run 评审,请调用 POST /bugbot/review,并将 "dryRun" 设为 true。请参阅 Bugbot API 文档。
按用户划分的端点
按用户划分的端点提供与团队级端点相同的指标,并按用户汇总数据,支持分页。它们非常适合生成按用户统计的报告,或分批处理大型团队。
常用查询参数
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
startDate | 日期 string | 否 | 分析时段的开始日期 (默认值:7 天前) |
endDate | 日期 string | 否 | 分析周期的结束日期 (默认值:今日) |
page | number | 否 | 页码 (默认值:1) |
pageSize | number | 否 | 每页用户数 (默认值:100,最大值:500) |
users | string | 否 | 将分页限定为特定用户 (以逗号分隔的电子邮件或 ID,例如 [email protected],user_abc123) |
用户筛选:
向按用户端点传入 users 参数时:
- 分页结果会被筛选:结果集和分页计数仅包含指定用户
- 适用于:无需遍历所有用户的分页即可获取特定团队成员的详细数据
- 示例:如果有 500 名用户,但只需获取其中 3 名特定用户的数据,可按其电子邮件筛选,在单页中获取这 3 名用户的全部数据
**注意:**按用户端点支持与团队级端点相同的日期格式和快捷方式。请参阅上方的日期格式部分。
响应格式
所有按用户划分的端点均按以下格式返回数据:
{ "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 模式采用率
按用户划分的智能体编辑
/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/plans获取按用户汇总、支持分页的 Plan 模式采用率指标。
参数
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 | 日期 string | 否 | 分析时段的开始日期 (默认值:7 天前) |
endDate | 日期 string | 否 | 分析时段的结束日期 (默认值:今日) |
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- 若干天前 (例如7d= 7 天前,30d= 30 天前)
重要说明:
- 忽略时间:所有日期都会解析到天级别 (00:00:00 UTC) 。发送
2025-01-15T14:30:00Z与发送2025-01-15的效果相同。 - 使用推荐格式:使用
YYYY-MM-DD或快捷方式可获得更好的 HTTP 缓存效果。即使解析为同一天,不同的时间值 (如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速率限制
速率限制按团队实施,每分钟重置:
- 团队级端点:每个团队每分钟 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 个月) 。