Skip to main content

Command Palette

Search for a command to run...

API

Analytics API

Analytics API 可全面洞察团队的 Cherri Code 用量,包括 AI 辅助编码指标、活跃用户、模型用量等。

  • Analytics API 使用 Basic 认证。大多数端点需要具有 admin:* 权限范围的管理员 API 密钥。Bugbot 评审分析需要 read:* 权限范围。可在 Cherri Code Dashboard → API Keys 中生成密钥。
  • 有关身份验证、速率限制和最佳实践的详情,请参阅 API Overview。
  • 可用性:仅限企业版团队使用

可用端点

智能体编辑

GET/analytics/team/agent-edits

获取你的团队在 Cherri Code 中接受 AI 建议代码编辑的相关指标。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。请参阅 日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。请参阅 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 [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 用量

GET/analytics/team/tabs

获取团队 Tab 自动补全用量指标。

参数

startDate string

分析时段的起始日期 (默认:7 天前) 。参见 日期格式

endDate string

分析时段的结束日期 (默认:今天) 。参见 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 [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)

GET/analytics/team/dau

获取团队的每日活跃用户数。DAU 是指某一天内使用过 Cherri Code 的唯一用户数。 活跃用户是指在 Cherri Code 中至少使用过一项 AI 功能的用户。

响应包含 Cherri Code 命令行界面、Cloud Agents 和 BugBot 的 DAU 细分指标。

参数

startDate string

分析时段的起始日期 (默认:7 天前) 。参见 日期格式

endDate string

分析时段的结束日期 (默认:今天) 。参见 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 [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"  }}

客户端版本

GET/analytics/team/client-versions

获取团队所使用的 Cherri Code 客户端版本分布 (默认统计过去 7 天) 。对于每位用户,我们会报告其每天使用的最新版本 (如果用户安装了多个版本,则报告最新安装的版本) 。

参数

startDate string

分析时段的起始日期 (默认:7 天前) 。参见 日期格式

endDate string

分析时段的结束日期 (默认:今天) 。参见 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 [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"  }}

模型用量

GET/analytics/team/models

获取团队中 AI 模型用量的指标。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。请参阅 日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。请参阅 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 [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"  }}

热门文件扩展名

GET/analytics/team/top-file-extensions

获取团队在 Cherri Code 中编辑最频繁的文件。按建议数量返回每天排名前 5 的文件扩展名。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。参阅 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 [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 采用率

GET/analytics/team/mcp

获取团队 MCP (模型上下文协议) 工具采用情况的指标。返回按工具名称和 MCP 服务器名称细分的每日采用数量。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。参阅 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如:[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"  }}

命令采用率

GET/analytics/team/commands

获取团队中 Cherri Code 命令采用情况的指标。返回按命令名称细分的每日采用数量。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。参阅 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件地址或用户 ID,例如 [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"  }}

方案模式采用率

GET/analytics/team/plans

获取团队中 Plan 模式采用情况的指标。返回按生成方案所用 AI 模型细分的每日采用数量。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。参阅 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 [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"  }}

技能采用率

GET/analytics/team/skills

获取整个团队的技能采用率指标。返回按技能名称细分的每日采用数量。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。请参阅日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。请参阅日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 [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 模式采用率

GET/analytics/team/ask-mode

获取团队 Ask 模式采用率指标。返回按用于 Ask 模式查询的 AI 模型细分的每日采用数量。

参数

startDate string

分析时段的起始日期 (默认:7 天前) 。参见 日期格式

endDate string

分析时段的结束日期 (默认:今天) 。参见 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 [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"  }}

对话洞察

GET/analytics/team/conversation-insights

获取仪表盘中显示的汇总对话洞察数据。此端点返回汇总洞察,不返回原始对话导出数据或原始对话内容。

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,例如 [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"    ]  }}

排行榜

GET/analytics/team/leaderboard

获取按 AI 用量指标排名的团队成员排行榜。

行为:

  • 不筛选用户:返回按指定指标排名的用户 (默认值:已接受代码行数总计)
  • 筛选用户:返回符合筛选条件的用户 (并显示其实际的团队总排名)
  • 支持对成员较多的团队进行分页

参数

startDate string

分析周期的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析周期的结束日期 (默认值:今日) 。参阅 日期格式

page number

分页页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:10,最大值:500)

users string

筛选指定用户 (以逗号分隔的电子邮件或用户 ID,例如 [email protected],user_abc123)
# 获取排行榜第 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 使用分析

GET/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 评审使用分析

GET/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否分析周期的结束日期 (默认值:今日)
pagenumber否页码 (默认值:1)
pageSizenumber否每页用户数 (默认值:100,最大值:500)
usersstring否将分页限定为特定用户 (以逗号分隔的电子邮件或 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 模式采用率

按用户划分的智能体编辑

GET/analytics/by-user/agent-edits

获取按用户汇总且支持分页的智能体编辑指标。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。参阅 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页结果限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 [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 用量

GET/analytics/by-user/tabs

获取按用户汇总、支持分页的 Tab 自动补全指标。

参数

startDate string

分析周期的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析周期的结束日期 (默认值:今日) 。参阅 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 [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]" }    ]  }}

按用户划分的模型用量

GET/analytics/by-user/models

获取按用户汇总、支持分页的模型用量指标。

参数

startDate string

分析周期的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析周期的结束日期 (默认值:今日) 。参阅 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 [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]" }    ]  }}

按用户划分的热门文件扩展名

GET/analytics/by-user/top-file-extensions

获取按用户汇总的热门文件扩展名指标,支持分页。

参数

startDate string

分析周期的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析周期的结束日期 (默认值:今日) 。参阅 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 [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]" }    ]  }}

按用户划分的客户端版本

GET/analytics/by-user/client-versions

获取按用户汇总的客户端版本指标,支持分页。

参数

startDate string

分析周期的起始日期 (默认:7 天前) 。参见 日期格式

endDate string

分析周期的结束日期 (默认:今天) 。参见 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 [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 采用率

GET/analytics/by-user/mcp

获取按用户汇总并支持分页的 MCP 工具采用率指标。

参数

startDate string

分析周期的起始日期 (默认:7 天前) 。参见 日期格式

endDate string

分析周期的结束日期 (默认:今天) 。参见 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 [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]" }    ]  }}

按用户划分的命令采用率

GET/analytics/by-user/commands

获取按用户汇总、支持分页的命令采用率指标。

参数

startDate string

分析周期的起始日期 (默认值:7 天前) 。参见 日期格式

endDate string

分析周期的结束日期 (默认值:今日) 。参见 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 [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]" }    ]  }}

按用户划分的方案采用率

GET/analytics/by-user/plans

获取按用户汇总、支持分页的 Plan 模式采用率指标。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。请参阅 日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。请参阅 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 [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]" }    ]  }}

按用户划分的技能采用率

GET/analytics/by-user/skills

获取按用户汇总、支持分页的技能采用率指标。

参数

startDate string

分析周期的起始日期 (默认值:7 天前) 。参见 日期格式

endDate string

分析周期的结束日期 (默认值:今日) 。参见 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 [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 模式采用率

GET/analytics/by-user/ask-mode

获取按用户汇总、支持分页的 Ask 模式采用率指标。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。参阅 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 [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否分析时段的结束日期 (默认值:今日)
usersstring否按指定用户筛选数据 (以逗号分隔) 。每个值可以是电子邮件地址 (例如,[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 最佳实践。

  1. 大型团队使用分页:如果团队用户超过 100 人,请使用支持分页的按用户划分的端点,避免超时。
  2. 利用缓存:团队级和用户级端点均支持 ETag。存储 ETag,并使用 If-None-Match 请求头,减少不必要的数据传输。
  3. 尽可能按用户筛选:如果只需获取特定用户的数据,请使用 users 参数缩短查询时间。
  4. 日期范围:为获得最佳性能,请将日期范围控制在合理范围内 (例如 1–3 个月) 。