跳转到主要内容
获取你团队代码库的 AI 生成代码分析。支持按提交查看 AI 使用情况,以及精细到变更级别的已接受 AI 修改。
该 API 为首个发布版本。我们会根据反馈持续扩展能力——告诉我们你需要哪些接口!
  • Availability: 仅限企业团队
  • Status: Alpha(响应结构和字段可能变动)

身份验证

所有 API 请求都需要使用 API 密钥进行身份验证。该 API 使用与其他端点相同的 Admin API 身份验证方式。 想了解更详细的身份验证说明,去看 Admin API 身份验证

基础 URL

所有 API 端点均使用:
https://api.cursor.com

速率限制

  • 每个团队在每个端点上每分钟最多 5 次请求

查询参数

以下所有端点都通过查询字符串接受相同的查询参数:
参数类型是否必填描述
startDatestringdateISO 日期字符串、字面量 “now”,或相对天数(例如 “7d”,表示 now - 7 天)。默认:now - 7 天
endDatestringdateISO 日期字符串、字面量 “now”,或相对天数(例如 “0d”)。默认:now
pagenumber页码(从 1 开始)。默认:1
pageSizenumber每页结果数。默认:100,最大:1000
userstring可选的单用户过滤。可填写邮箱(例如 developer@company.com)、编码 ID(例如 user_abc123…),或数值 ID(例如 42)
响应中的 userId 会以带有前缀 user_ 的外部编码 ID 返回,供 API 稳定使用。

语义与指标的计算方式

  • Sources:“TAB” 表示接受的内联补全;“COMPOSER” 表示来自 Composer 的已接受差异(diff)
  • Lines metrics:tabLinesAdded/Deleted 和 composerLinesAdded/Deleted 分别统计;nonAiLinesAdded/Deleted 计算为 max(0, totalLines - AI lines)
  • Privacy mode:如果在客户端启用,某些元数据(例如 fileName)可能会被省略
  • Branch info:当当前分支等于仓库的默认分支时,isPrimaryBranch 为 true;如果仓库信息不可用,可能为 undefined
你可以查看该文件,了解如何检测并上报提交与变更。

端点

获取 AI 提交指标(JSON,分页)

获取按提交聚合的指标,将代码行归因于 TAB、COMPOSER 和非 AI。
GET /analytics/ai-code/commits

返回

{
  items: AiCommitMetric[];
  totalCount: number;
  page: number;
  pageSize: number;
}

AiCommitMetric 字段

字段类型描述
commitHashstringGit 提交哈希
userIdstring编码后的用户 ID(例如:user_abc123)
userEmailstring用户邮箱地址
repoNamestringnull仓库名称
branchNamestringnull分支名称
isPrimaryBranchbooleannull是否为主分支
totalLinesAddednumber提交中新增加的总行数
totalLinesDeletednumber提交中删除的总行数
tabLinesAddednumber通过 Tab 补全新增的行数
tabLinesDeletednumber通过 Tab 补全删除的行数
composerLinesAddednumber通过 Composer 新增的行数
composerLinesDeletednumber通过 Composer 删除的行数
nonAiLinesAddednumbernull非 AI 新增的行数
nonAiLinesDeletednumbernull非 AI 删除的行数
messagestringnull提交说明
commitTsstringnull提交时间戳(ISO 格式)
createdAtstring写入时间戳(ISO 格式)

示例响应

{
  "items": [
    {
      "commitHash": "a1b2c3d4",
      "userId": "user_3k9x8q...",
      "userEmail": "developer@company.com",
      "repoName": "company/repo",
      "branchName": "main",
      "isPrimaryBranch": true,
      "totalLinesAdded": 120,
      "totalLinesDeleted": 30,
      "tabLinesAdded": 50,
      "tabLinesDeleted": 10,
      "composerLinesAdded": 40,
      "composerLinesDeleted": 5,
      "nonAiLinesAdded": 30,
      "nonAiLinesDeleted": 15,
      "message": "重构:提取 analytics 客户端"
      "commitTs": "2025-07-30T14:12:03.000Z",
      "createdAt": "2025-07-30T14:12:30.000Z"
    }
  ],
  "totalCount": 42,
  "page": 1,
  "pageSize": 100
}

示例请求

基本请求:
curl -X GET "https://api.cursor.com/analytics/ai-code/commits?startDate=7d&endDate=now&page=1&pageSize=100" \
  -u 你的_API_KEY:
按用户(邮箱)筛选:
curl -X GET "https://api.cursor.com/analytics/ai-code/commits?startDate=2025-06-01T00:00:00Z&endDate=now&user=developer@company.com" \
  -u 你的API密钥:

下载 AI Commit 指标(CSV,流式)

以 CSV 格式下载提交指标数据,适用于大批量数据导出。
GET /analytics/ai-code/commits.csv

响应

请求头:
  • Content-Type: text/csv; charset=utf-8

CSV 列

类型描述
commit_hashstringGit 提交哈希值
user_idstring编码后的用户 ID
user_emailstring用户邮箱地址
repo_namestring仓库名称
branch_namestring分支名称
is_primary_branchboolean是否为主分支
total_lines_addednumber此次提交新增的总行数
total_lines_deletednumber此次提交删除的总行数
tab_lines_addednumber通过 Tab 补全新增的行数
tab_lines_deletednumber通过 Tab 补全删除的行数
composer_lines_addednumber通过 Composer 新增的行数
composer_lines_deletednumber通过 Composer 删除的行数
non_ai_lines_addednumber非 AI 新增的行数
non_ai_lines_deletednumber非 AI 删除的行数
messagestring提交消息
commit_tsstring提交时间戳(ISO 格式)
created_atstring导入时间戳(ISO 格式)

示例 CSV 输出

commit_hash,user_id,user_email,repo_name,branch_name,is_primary_branch,total_lines_added,total_lines_deleted,tab_lines_added,tab_lines_deleted,composer_lines_added,composer_lines_deleted,non_ai_lines_added,non_ai_lines_deleted,message,commit_ts,created_at
a1b2c3d4,user_3k9x8q...,developer@company.com,company/repo,main,true,120,30,50,10,40,5,30,15,"重构:抽取 Analytics 客户端",2025-07-30T14:12:03.000Z,2025-07-30T14:12:30.000Z
e5f6g7h8,user_3k9x8q...,developer@company.com,company/repo,feature-branch,false,85,15,30,5,25,3,30,7,"添加错误处理",2025-07-30T13:45:21.000Z,2025-07-30T13:45:45.000Z

示例请求

curl -L "https://api.cursor.com/analytics/ai-code/commits.csv?startDate=2025-07-01T00:00:00Z&endDate=now&user=user_3k9x8q..." \
  -u 你的 API 密钥: \
  -o commits.csv

获取 AI 代码变更指标(JSON,分页)

检索按确定性 changeId 分组的细粒度已接受 AI 变更。可用于在不依赖提交的情况下分析已接受的 AI 事件。
GET /analytics/ai-code/changes

返回

{
  items: AiCodeChangeMetric[];
  totalCount: number;
  page: number;
  pageSize: number;
}

AiCodeChangeMetric 字段

字段类型描述
changeIdstring更改的确定性 ID
userIdstring编码后的用户 ID(例如:user_abc123)
userEmailstring用户邮箱地址
source”TAB""COMPOSER”AI 更改来源
modelstringnull所用 AI 模型
totalLinesAddednumber新增总行数
totalLinesDeletednumber删除总行数
createdAtstring写入时间戳(ISO 格式)
metadataArray文件元数据(隐私模式下 fileName 可能省略)

示例响应

{
  "items": [
    {
      "changeId": "749356201",
      "userId": "user_3k9x8q...",
      "userEmail": "developer@company.com",
      "source": "Composer",
      "model": null,
      "totalLinesAdded": 18,
      "totalLinesDeleted": 4,
      "createdAt": "2025-07-30T15:10:12.000Z",
      "metadata": [
        { "fileName": "src/analytics/report.ts", "fileExtension": "ts", "linesAdded": 12, "linesDeleted": 3 },
        { "fileName": "src/analytics/ui.tsx", "fileExtension": "tsx", "linesAdded": 6, "linesDeleted": 1 }
      ]
    }
  ],
  "totalCount": 128,
  "page": 1,
  "pageSize": 200
}

示例请求

基本请求:
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?startDate=14d&endDate=now&page=1&pageSize=200" \
  -u 你的_API_KEY:
按用户(编码后的 ID)筛选:
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=user_3k9x8q..." \
  -u YOUR_API_KEY:
按用户(邮箱)筛选:
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=developer@company.com" \
  -u YOUR_API_KEY:

下载 AI 代码变更指标(CSV,流式)

以 CSV 格式下载变更指标数据,适用于大规模数据抽取。
GET /analytics/ai-code/changes.csv

响应

Headers:
  • Content-Type: text/csv; charset=utf-8

CSV 列

类型描述
change_idstring该变更的确定性 ID
user_idstring编码后的用户 ID
user_emailstring用户的电子邮箱地址
sourcestringAI 变更来源(TAB 或 COMPOSER)
modelstring使用的 AI 模型
total_lines_addednumber新增行总数
total_lines_deletednumber删除行总数
created_atstring摄取时间戳(ISO 格式)
metadata_jsonstringJSON 字符串化的元数据条目数组

备注

  • metadata_json 是 JSON 字符串化的元数据条目数组(隐私模式下可能省略 fileName)
  • 处理 CSV 时,务必解析带引号的字段

示例 CSV 输出

change_id,user_id,user_email,source,model,total_lines_added,total_lines_deleted,created_at,metadata_json
749356201,user_3k9x8q...,developer@company.com,COMPOSER,gpt-4o,18,4,2025-07-30T15:10:12.000Z,"[{""fileName"":""src/analytics/report.ts"",""fileExtension"":""ts"",""linesAdded"":12,""linesDeleted"":3},{""fileName"":""src/analytics/ui.tsx"",""fileExtension"":""tsx"",""linesAdded"":6,""linesDeleted"":1}]"
749356202,user_3k9x8q...,developer@company.com,TAB,,8,2,2025-07-30T15:08:45.000Z,"[{""fileName"":""src/utils/helpers.ts"",""fileExtension"":""ts"",""linesAdded"":8,""linesDeleted"":2}]"

示例请求

curl -L "https://api.cursor.com/analytics/ai-code/changes.csv?startDate=30d&endDate=now" \
  -u YOUR_API_KEY: \
  -o changes.csv

提示

  • 使用 user 参数可在所有端点中快速筛选单个用户
  • 对于大规模数据抽取,优先使用 CSV 端点——它们会在服务器端以每页 10,000 条记录的方式进行流式传输
  • 如果客户端无法解析默认分支,isPrimaryBranch 可能为 undefined
  • commitTs 是提交时间戳;createdAt 是我们服务器上的摄取时间
  • 当客户端启用隐私模式时,某些字段可能不会返回

更新日志

  • Alpha 版本发布:提供用于提交(commits)和变更(changes)的初始端点(endpoints)。响应结构可能会根据反馈而调整
I