Analytics API 可全面洞察团队的 Cursor 用量,包括 AI 辅助编码指标、活跃用户、模型用量等。
- Analytics API 使用 Basic 认证。大多数端点需要具有
admin:*权限范围的管理员 API 密钥。Bugbot 评审分析需要read:*权限范围。可在 Cursor Dashboard → API Keys 中生成密钥。 - 有关身份验证、速率限制和最佳实践的详情,请参阅 API Overview。
- 可用性:仅限企业版团队使用
可用端点¶
智能体编辑¶
/analytics/team/agent-edits
获取你的团队在 Cursor 中接受 AI 建议代码编辑的相关指标。
参数¶
startDate string
分析时段的起始日期 (默认值:7 天前) 。请参阅 日期格式
endDate string
分析时段的结束日期 (默认值:今日) 。请参阅 日期格式
users string
将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,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
分析时段的起始日期 (默认:7 天前) 。参见 日期格式
endDate string
分析时段的结束日期 (默认:今天) 。参见 日期格式
users string
将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,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 是指某一天内使用过 Cursor 的唯一用户数。
活跃用户是指在 Cursor 中至少使用过一项 AI 功能的用户。
响应包含 Cursor 命令行界面、Cloud Agents 和 BugBot 的 DAU 细分指标。
参数¶
startDate string
分析时段的起始日期 (默认:7 天前) 。参见 日期格式
endDate string
分析时段的结束日期 (默认:今天) 。参见 日期格式
users string
将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,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
获取团队所使用的 Cursor 客户端版本分布 (默认统计过去 7 天) 。对于每位用户,我们会报告其每天使用的最新版本 (如果用户安装了多个版本,则报告最新安装的版本) 。
参数¶
startDate string
分析时段的起始日期 (默认:7 天前) 。参见 日期格式
endDate string
分析时段的结束日期 (默认:今天) 。参见 日期格式
users string
将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,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
分析时段的起始日期 (默认值:7 天前) 。请参阅 日期格式
endDate string
分析时段的结束日期 (默认值:今日) 。请参阅 日期格式
users string
将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,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
获取团队在 Cursor 中编辑最频繁的文件。按建议数量返回每天排名前 5 的文件扩展名。
参数¶
startDate string
分析时段的起始日期 (默认值:7 天前) 。参阅 日期格式
endDate string
分析时段的结束日期 (默认值:今日) 。参阅 日期格式
users string
将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,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
分析时段的起始日期 (默认值:7 天前) 。参阅 日期格式
endDate string
分析时段的结束日期 (默认值:今日) 。参阅 日期格式
users string
将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如:alice@example.com,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
获取团队中 Cursor 命令采用情况的指标。返回按命令名称细分的每日采用数量。
参数¶
startDate string
分析时段的起始日期 (默认值:7 天前) 。参阅 日期格式
endDate string
分析时段的结束日期 (默认值:今日) 。参阅 日期格式
users string
将数据筛选为指定用户 (以逗号分隔的电子邮件地址或用户 ID,例如 alice@example.com,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 作为模型名称。这对应于用户在 Cursor 界面中看到的“Auto”。
参数¶
startDate string
分析时段的起始日期 (默认值:7 天前) 。参阅 日期格式
endDate string
分析时段的结束日期 (默认值:今日) 。参阅 日期格式
users string
将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,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
分析时段的起始日期 (默认值:7 天前) 。请参阅日期格式
endDate string
分析时段的结束日期 (默认值:今日) 。请参阅日期格式
users string
将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,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
分析时段的起始日期 (默认:7 天前) 。参见 日期格式
endDate string
分析时段的结束日期 (默认:今天) 。参见 日期格式
users string
将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,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
分析周期的开始日期 (默认值:7 天前) 。参见日期格式
endDate string
分析周期的结束日期 (默认值:今日) 。参见日期格式
include string | string[]
必填。选择要返回的对话洞察维度。支持的值包括:intents、complexity、categories、guidanceLevels 和 workTypes。可将 include 作为以逗号分隔的列表传入,例如 include=intents,complexity;也可重复传入,例如 include=intents&include=workTypes。
users string
可选。将对话洞察筛选为特定用户。传入以逗号分隔的电子邮件地址或用户 ID,例如 users=alice@example.com,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&users=alice@example.com,bob@example.com" \
-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
分析周期的起始日期 (默认值:7 天前) 。参阅 日期格式
endDate string
分析周期的结束日期 (默认值:今日) 。参阅 日期格式
page number
分页页码 (从 1 开始) 。默认值:1
pageSize number
每页用户数 (默认值:10,最大值:500)
users string
筛选指定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,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/leaderboard?users=alice@example.com,bob@example.com" \
-u YOUR_API_KEY:
响应:
{
"data": {
"tab_leaderboard": {
"data": [
{
"email": "alice@example.com",
"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": "bob@example.com",
"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": "alice@example.com",
"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": "bob@example.com",
"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
分析周期的起始日期 (默认:7 天前) 。详见 日期格式
endDate string
分析周期的结束日期 (默认:今天) 。详见 日期格式
prState string
PR 状态筛选条件。允许值:merged 或 all。默认值:merged。仅查看已合并 PR 的分析数据时使用 merged;查看所有 PR 状态的分析数据时使用 all。
repo string
可选的代码仓库筛选条件。接受完整 URL 或 host/path 格式 (例如 https://github.com/org/repo.git 或 github.com/org/repo) 。将规范化为 host/owner/repo。
page number
分页页码 (从 1 开始) 。默认值:1
pageSize number
每页 PR 数量 (默认值: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
使用分析范围的开始时间。默认值为 7 天前。参阅 日期格式。
endDate string
使用分析范围的结束时间。默认值为 now。参阅 日期格式。
repo string
可选的代码仓库筛选条件,格式为 host/owner/repo。协议和 .git 后缀均可省略。
prNumber number
可选的 PR 或合并请求编号。
page number
分页页码 (从 1 开始) 。默认值:1。
pageSize number
每页评审数量。默认值:100,最大值:250。
dryRun boolean
可选筛选条件,仅筛选 Dry-run (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,例如 alice@example.com,user_abc123) |
用户筛选:
向按用户端点传入 users 参数时:
- 分页结果会被筛选:结果集和分页计数仅包含指定用户
- 适用于:无需遍历所有用户的分页即可获取特定团队成员的详细数据
- 示例:如果有 500 名用户,但只需获取其中 3 名特定用户的数据,可按其电子邮件筛选,在单页中获取这 3 名用户的全部数据
**注意:**按用户端点支持与团队级端点相同的日期格式和快捷方式。请参阅上方的日期格式部分。
响应格式¶
所有按用户划分的端点均按以下格式返回数据:
{
"data": {
"user1@example.com": [ /* 用户数据 */ ],
"user2@example.com": [ /* 用户数据 */ ]
},
"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": "user1@example.com" },
{ "id": "user_def456", "email": "user2@example.com" }
]
}
}
响应结构:
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
分析时段的起始日期 (默认值:7 天前) 。参阅 日期格式
endDate string
分析时段的结束日期 (默认值:今日) 。参阅 日期格式
page number
页码 (从 1 开始) 。默认值:1
pageSize number
每页用户数 (默认值:100,最大值:500)
users string
将分页结果限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,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/agent-edits?users=alice@example.com,bob@example.com,carol@example.com" \
-u YOUR_API_KEY:
响应:
{
"data": {
"alice@example.com": [
{
"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
}
],
"bob@example.com": [
{
"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": "alice@example.com" },
{ "id": "user_def456", "email": "bob@example.com" }
]
}
}
按用户划分的 Tab 用量¶
/analytics/by-user/tabs
获取按用户汇总、支持分页的 Tab 自动补全指标。
参数¶
startDate string
分析周期的起始日期 (默认值:7 天前) 。参阅 日期格式
endDate string
分析周期的结束日期 (默认值:今日) 。参阅 日期格式
page number
页码 (从 1 开始) 。默认值:1
pageSize number
每页用户数 (默认值:100,最大值:500)
users string
将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/tabs?page=1&pageSize=50" \
-u YOUR_API_KEY:
响应:
{
"data": {
"alice@example.com": [
{
"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
}
],
"bob@example.com": [
{
"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": "alice@example.com" },
{ "id": "user_def456", "email": "bob@example.com" }
]
}
}
按用户划分的模型用量¶
/analytics/by-user/models
获取按用户汇总、支持分页的模型用量指标。
参数¶
startDate string
分析周期的起始日期 (默认值:7 天前) 。参阅 日期格式
endDate string
分析周期的结束日期 (默认值:今日) 。参阅 日期格式
page number
页码 (从 1 开始) 。默认值:1
pageSize number
每页用户数 (默认值:100,最大值:500)
users string
将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/models?page=1&pageSize=50" \
-u YOUR_API_KEY:
响应:
{
"data": {
"alice@example.com": [
{
"date": "2025-01-15",
"model_breakdown": {
"claude-sonnet-4.5": {
"messages": 85,
"users": 1
},
"gpt-4o": {
"messages": 32,
"users": 1
}
}
}
],
"bob@example.com": [
{
"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": "alice@example.com" },
{ "id": "user_def456", "email": "bob@example.com" }
]
}
}
按用户划分的热门文件扩展名¶
/analytics/by-user/top-file-extensions
获取按用户汇总的热门文件扩展名指标,支持分页。
参数¶
startDate string
分析周期的起始日期 (默认值:7 天前) 。参阅 日期格式
endDate string
分析周期的结束日期 (默认值:今日) 。参阅 日期格式
page number
页码 (从 1 开始) 。默认值:1
pageSize number
每页用户数 (默认值:100,最大值:500)
users string
将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/top-file-extensions?page=1&pageSize=50" \
-u YOUR_API_KEY:
响应:
{
"data": {
"alice@example.com": [
{
"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
}
],
"bob@example.com": [
{
"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": "alice@example.com" },
{ "id": "user_def456", "email": "bob@example.com" }
]
}
}
按用户划分的客户端版本¶
/analytics/by-user/client-versions
获取按用户汇总的客户端版本指标,支持分页。
参数¶
startDate string
分析周期的起始日期 (默认:7 天前) 。参见 日期格式
endDate string
分析周期的结束日期 (默认:今天) 。参见 日期格式
page number
页码 (从 1 开始) 。默认值:1
pageSize number
每页用户数 (默认值:100,最大值:500)
users string
将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/client-versions?page=1&pageSize=50" \
-u YOUR_API_KEY:
响应:
{
"data": {
"alice@example.com": [
{
"event_date": "2025-01-15",
"client_version": "0.42.3",
"user_count": 1,
"percentage": 1.0
}
],
"bob@example.com": [
{
"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": "alice@example.com" },
{ "id": "user_def456", "email": "bob@example.com" }
]
}
}
按用户划分的 MCP 采用率¶
/analytics/by-user/mcp
获取按用户汇总并支持分页的 MCP 工具采用率指标。
参数¶
startDate string
分析周期的起始日期 (默认:7 天前) 。参见 日期格式
endDate string
分析周期的结束日期 (默认:今天) 。参见 日期格式
page number
页码 (从 1 开始) 。默认值:1
pageSize number
每页用户数 (默认值:100,最大值:500)
users string
将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/mcp?page=1&pageSize=50" \
-u YOUR_API_KEY:
响应:
{
"data": {
"alice@example.com": [
{
"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
}
],
"bob@example.com": [
{
"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": "alice@example.com" },
{ "id": "user_def456", "email": "bob@example.com" }
]
}
}
按用户划分的命令采用率¶
/analytics/by-user/commands
获取按用户汇总、支持分页的命令采用率指标。
参数¶
startDate string
分析周期的起始日期 (默认值:7 天前) 。参见 日期格式
endDate string
分析周期的结束日期 (默认值:今日) 。参见 日期格式
page number
页码 (从 1 开始) 。默认值:1
pageSize number
每页用户数 (默认值:100,最大值:500)
users string
将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/commands?page=1&pageSize=50" \
-u YOUR_API_KEY:
响应:
{
"data": {
"alice@example.com": [
{
"event_date": "2025-01-15",
"command_name": "explain",
"usage": 12
},
{
"event_date": "2025-01-16",
"command_name": "explain",
"usage": 15
}
],
"bob@example.com": [
{
"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": "alice@example.com" },
{ "id": "user_def456", "email": "bob@example.com" }
]
}
}
按用户划分的方案采用率¶
/analytics/by-user/plans
获取按用户汇总、支持分页的 Plan 模式采用率指标。
参数¶
startDate string
分析时段的起始日期 (默认值:7 天前) 。请参阅 日期格式
endDate string
分析时段的结束日期 (默认值:今日) 。请参阅 日期格式
page number
页码 (从 1 开始) 。默认值:1
pageSize number
每页用户数 (默认值:100,最大值:500)
users string
将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/plans?page=1&pageSize=50" \
-u YOUR_API_KEY:
响应:
{
"data": {
"alice@example.com": [
{
"event_date": "2025-01-15",
"model": "claude-sonnet-4.5",
"usage": 23
},
{
"event_date": "2025-01-16",
"model": "claude-sonnet-4.5",
"usage": 19
}
],
"bob@example.com": [
{
"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": "alice@example.com" },
{ "id": "user_def456", "email": "bob@example.com" }
]
}
}
按用户划分的技能采用率¶
/analytics/by-user/skills
获取按用户汇总、支持分页的技能采用率指标。
参数¶
startDate string
分析周期的起始日期 (默认值:7 天前) 。参见 日期格式
endDate string
分析周期的结束日期 (默认值:今日) 。参见 日期格式
page number
页码 (从 1 开始) 。默认值:1
pageSize number
每页用户数 (默认值:100,最大值:500)
users string
将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/skills?page=1&pageSize=50" \
-u YOUR_API_KEY:
响应:
{
"data": {
"alice@example.com": [
{
"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
}
],
"bob@example.com": [
{
"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": "alice@example.com" },
{ "id": "user_def456", "email": "bob@example.com" }
]
}
}
按用户划分的 Ask 模式采用率¶
/analytics/by-user/ask-mode
获取按用户汇总、支持分页的 Ask 模式采用率指标。
参数¶
startDate string
分析时段的起始日期 (默认值:7 天前) 。参阅 日期格式
endDate string
分析时段的结束日期 (默认值:今日) 。参阅 日期格式
page number
页码 (从 1 开始) 。默认值:1
pageSize number
每页用户数 (默认值:100,最大值:500)
users string
将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/ask-mode?page=1&pageSize=50" \
-u YOUR_API_KEY:
响应:
{
"data": {
"alice@example.com": [
{
"event_date": "2025-01-15",
"model": "claude-sonnet-4.5",
"usage": 34
},
{
"event_date": "2025-01-16",
"model": "claude-sonnet-4.5",
"usage": 28
}
],
"bob@example.com": [
{
"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": "alice@example.com" },
{ "id": "user_def456", "email": "bob@example.com" }
]
}
}
团队级端点¶
团队级端点提供整个团队或筛选后的用户子集的汇总指标。所有端点均支持按日期范围筛选,并可选择按用户筛选。
通用查询参数¶
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
startDate |
日期 string | 否 | 分析时段的开始日期 (默认值:7 天前) |
endDate |
日期 string | 否 | 分析时段的结束日期 (默认值:今日) |
users |
string | 否 | 按指定用户筛选数据 (以逗号分隔) 。每个值可以是电子邮件地址 (例如,alice@example.com) 或公开用户 ID (例如,user_abc123) 。两种格式可混用。 |
用户筛选:
users 参数接受以逗号分隔的标识符列表。每个标识符可以是:
- 电子邮件地址 (例如,
alice@example.com) - 根据是否包含@自动识别 - 公开用户 ID (例如,
user_abc123) - 根据user_前缀自动识别 - 混合格式 - 可在同一请求中同时使用电子邮件地址和 ID
示例:
# 仅按电子邮件筛选
?users=alice@example.com,bob@example.com,carol@example.com
# 仅按公开用户 ID 筛选
?users=user_abc123,user_def456,user_ghi789
# 混合使用电子邮件和 ID
?users=alice@example.com,user_def456,bob@example.com
按用户筛选时,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 个月) 。