Skip to main content

Command Palette

Search for a command to run...

API

AI Code Tracking API

AI Code Tracking API 可让你跟踪团队各代码仓库中 AI 生成的代码贡献,包括每次提交的 AI 用量以及细粒度的已接受 AI 更改。

  • AI Code Tracking API 使用 Basic 认证,以你的 API 密钥作为用户名,与 Admin API 的认证方式相同。
  • 有关创建 API 密钥、身份验证方法、速率限制和最佳实践的详细信息,请参阅 API Overview
  • 可用性:仅限企业版;如需获取访问权限,请联系销售
  • 状态:Alpha (响应结构和字段可能会更改)
  • 工作区限制:仅计算工作区根目录顶层 Git 代码仓库的指标。目前不支持多根工作区。

端点

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

GET/analytics/ai-code/commits

获取按提交聚合的指标,用于将代码行归因于 TAB、COMPOSER 和非 AI。

参数

startDate string | date

ISO 日期字符串、字面量 "now",或 "7d" 等相对天数 (表示当前时间减 7 天) 。默认值:now - 7 days

endDate string | date

ISO 日期字符串、字面量 "now",或 "0d" 等相对天数。默认值:now

page number

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

pageSize number

每页结果数。默认值:100,最大值:1000

user string

可选:按单个用户筛选。接受电子邮件 (例如 developer@company.com) 、编码 ID (例如 user_abc123...) 或数字 ID (例如 42)

响应字段

字段类型描述
commitHashstringGit 提交哈希
userIdstring编码用户 ID (例如 user_abc123)
userEmailstring用户电子邮件地址
repoNamestringnull代码仓库名称
branchNamestringnull分支名称
isPrimaryBranchbooleannull是否为主分支
commitSource"ide""cli""cloud"提交来源
totalLinesAddednumber提交中新增的总行数
totalLinesDeletednumber提交中删除的总行数
tabLinesAddednumber通过 TAB 补全新增的行
tabLinesDeletednumber通过 TAB 补全删除的行
composerLinesAddednumber通过 Composer 新增的行
composerLinesDeletednumber通过 Composer 删除的行
nonAiLinesAddednumbernull新增的非 AI 代码行
nonAiLinesDeletednumbernull删除的非 AI 代码行
messagestringnull提交说明
commitTsstringnull提交时间戳 (ISO 格式)
createdAtstring数据摄取时间戳 (ISO 格式)
curl -X GET "https://api.cursor.com/analytics/ai-code/commits?startDate=7d&endDate=now&page=1&pageSize=100" \  -u YOUR_API_KEY:

响应:

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

下载 AI 提交指标 (CSV,流式传输)

GET/analytics/ai-code/commits.csv

以 CSV 格式下载提交指标数据,适用于大规模数据提取。

参数

startDate string | date

ISO 日期字符串、字面量 "now",或 "7d" 等相对天数 (表示当前时间减 7 天) 。默认值:now - 7 days

endDate string | date

ISO 日期字符串、字面量 "now",或 "0d" 等相对天数。默认值:now

user string

可选:按单个用户筛选。接受电子邮件 (例如 developer@company.com) 、编码 ID (例如 user_abc123...) 或数字 ID (例如 42)

响应头

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

CSV 列

类型描述
commit_hashstringGit 提交哈希
user_idstring编码用户 ID
user_emailstring用户电子邮件地址
repo_namestring代码仓库名称
branch_namestring分支名称
is_primary_branchboolean是否为主分支
commit_sourcestring提交来源 (ideclicloud)
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 格式)
curl -L "https://api.cursor.com/analytics/ai-code/commits.csv?startDate=2025-07-01T00:00:00Z&endDate=now&user=user_3k9x8q..." \  -u YOUR_API_KEY: \  -o commits.csv

CSV 输出示例:

commit_hash,commit_source,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_ata1b2c3d4,ide,user_3k9x8q...,developer@company.com,company/repo,main,true,120,30,50,10,40,5,30,15,"Refactor: extract analytics client",2025-07-30T14:12:03.000Z,2025-07-30T14:12:30.000Ze5f6g7h8,cloud,user_3k9x8q...,developer@company.com,company/repo,feature-branch,false,85,15,30,5,25,3,30,7,"Add error handling",2025-07-30T13:45:21.000Z,2025-07-30T13:45:45.000Z

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

GET/analytics/ai-code/changes

获取按确定性 changeId 分组的细粒度已接受 AI 更改。可用于独立于提交分析已接受的 AI 事件。

参数

startDate string | date

ISO 日期字符串、字面量“now”或“7d”等相对天数 (表示当前时间减 7 天) 。默认值:当前时间减 7 天

endDate string | date

ISO 日期字符串、字面量“now”或“0d”等相对天数。默认值:now

page number

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

pageSize number

每页结果数。默认值:100,最大值:1000

user string

可选按单个用户筛选。接受电子邮件 (例如 developer@company.com) 、编码 ID (例如 user_abc123...) 或数字 ID (例如 42)

响应字段

字段类型描述
changeIdstring更改的确定性 ID
userIdstring编码的用户 ID (例如 user_abc123)
userEmailstring用户的电子邮件地址
source"TAB""COMPOSER"
modelstringnull
totalLinesAddednumber新增的总行数
totalLinesDeletednumber删除的总行数
createdAtstring数据摄取时间戳 (ISO 格式)
metadataArray文件元数据 (隐私模式下可能省略 fileName)
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?startDate=14d&endDate=now&page=1&pageSize=200" \  -u YOUR_API_KEY:

响应:

{  "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}

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

GET/analytics/ai-code/changes.csv

以 CSV 格式下载更改指标数据,适用于大规模数据提取。

参数

startDate string | date

ISO 日期字符串、字面值“now”或“7d”等相对天数 (表示当前时间减 7 天) 。默认值:当前时间减 7 天

endDate string | date

ISO 日期字符串、字面值“now”或“0d”等相对天数。默认值:now

user string

可选:按单个用户筛选。支持电子邮件 (例如 developer@company.com) 、编码 ID (例如 user_abc123...) 或数字 ID (例如 42)

响应头

  • 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_jsonstring元数据条目组成的 JSON 字符串化数组
curl -L "https://api.cursor.com/analytics/ai-code/changes.csv?startDate=30d&endDate=now" \  -u YOUR_API_KEY: \  -o changes.csv

CSV 输出示例:

change_id,user_id,user_email,source,model,total_lines_added,total_lines_deleted,created_at,metadata_json749356201,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}]"

获取提交详情

GET/analytics/ai-code/commits/:commitHash

获取一个或多个提交的详细信息,包括 blame 标注和所引用对话的元数据。

路径参数

commitHash string

单个提交哈希,或以逗号分隔的哈希列表 (例如 abc123,def456)

查询参数

branch string

可选,按分支名称筛选

响应字段

返回一个包含 commitsconversations 数组的对象。

字段类型描述
commitsarray包含 blame 标注的提交对象数组
commits[].commitSource"ide""cli""cloud"提交的来源。
commits[].rangeAnnotationsarray该提交的文件级 blame 数据
commits[].rangeAnnotations[].filePathstring代码仓库中文件的路径
commits[].rangeAnnotations[].groupsarray标注群组数组
commits[].rangeAnnotations[].groups[].conversationIdstringnull生成此代码的对话 ID
commits[].rangeAnnotations[].groups[].modelstringnull用于生成代码的 AI 模型
commits[].rangeAnnotations[].groups[].operationTypestring执行的操作类型
commits[].rangeAnnotations[].groups[].rangesarray此标注影响的行范围数组
commits[].rangeAnnotations[].groups[].ranges[].startnumber起始行号
commits[].rangeAnnotations[].groups[].ranges[].endnumber结束行号
conversationsarray所有被引用对话的元数据
conversations[].idstring唯一对话标识符
conversations[].titlestringnull对话标题
conversations[].tldrstringnull简短摘要
conversations[].overviewstringnull详细概述
conversations[].summaryBulletsarraynull摘要要点数组

单次提交:

curl -X GET "https://api.cursor.com/analytics/ai-code/commits/0aabf603dc906e05bf5e4d9fd423fdd517f2e43f?branch=main" \  -u YOUR_API_KEY:

多个提交:

curl -X GET "https://api.cursor.com/analytics/ai-code/commits/abc123,def456,ghi789" \  -u YOUR_API_KEY:

响应:

{  "commits": [    {      "commitHash": "0aabf603dc906e05bf5e4d9fd423fdd517f2e43f",      "commitSource": "ide",      "rangeAnnotations": [        {          "filePath": "src/analytics/report.ts",          "groups": [            {              "conversationId": "conv_abc123",              "model": "gpt-4o",              "operationType": "insert",              "ranges": [                { "start": 10, "end": 25 },                { "start": 42, "end": 58 }              ]            }          ]        }      ]    }  ],  "conversations": [    {      "id": "conv_abc123",      "title": "Refactor analytics module",      "tldr": "Extracted report generation into separate functions",      "overview": "Refactored the analytics module to improve maintainability by extracting report generation logic.",      "summaryBullets": [        "Created dedicated report generator class",        "Added unit tests for new functions",        "Updated imports across affected files"      ]    }  ]}

通用查询参数

所有端点均通过查询字符串接受相同的查询参数:

参数类型必填描述
startDatestringdate
endDatestringdate
pagenumber页码 (从 1 开始) 。默认值:1
pageSizenumber每页结果数。默认值:100,最大值:1000
userstring可选按单个用户筛选。接受电子邮件 (例如 developer@company.com) 、编码 ID (例如 user_abc123...) 或数字 ID (例如 42)

语义与指标计算方式

  • 来源:“TAB”表示已接受的内联补全;“COMPOSER”表示已接受的智能体编辑 diff
  • 行数指标:tabLinesAdded/Deleted 和 composerLinesAdded/Deleted 分别计数;nonAiLinesAdded/Deleted 计算为 max(0, totalLines - AI 行数)
  • 隐私模式:如果在客户端中启用,部分元数据 (如 fileName) 可能会被省略
  • 分支信息:当前分支等于仓库默认分支时,isPrimaryBranch 为 true;如果仓库信息不可用,该值可能为 undefined

你可以扫描该文件,了解如何检测和报告提交与更改。

提示

  • 使用 user 参数可快速在所有端点中筛选特定用户
  • 对于大规模数据提取,建议使用 CSV 端点——服务器会以每页 10,000 条记录的形式流式传输数据
  • 如果客户端无法解析默认分支,isPrimaryBranch 可能为未定义
  • commitTs 是提交时间戳;createdAt 是数据在我们服务器上的接收时间
  • 客户端启用隐私模式时,某些字段可能缺失
  • 提交哈希并非唯一且不可变更。例如,如果你通过添加额外信息修订提交,可能会看到同一提交出现两次。
  • 即使提交被修订,提交时间戳也不会改变。

更新日志

  • Alpha 版本:提供提交和更改的初始端点。响应结构可能会根据反馈调整

AI Code Tracking 适用于企业版方案

联系我们的团队,获取详细的 AI 用量指标。

Contact Sales