存取你團隊儲存庫的 AI 生成程式碼分析。包含每次 commit 的 AI 使用情況,以及更細緻的已接受 AI 變更。
這個 API 是首個版本。我們會依照回饋擴充功能——告訴我們你需要哪些 endpoints!
- 可用性: 僅限企業版團隊
- 狀態: Alpha(回應結構與欄位可能調整)
所有 API 請求都需要使用 API 金鑰進行驗證。此 API 採用與其他端點相同的 Admin API 驗證機制。
想看更詳細的驗證說明,去看 Admin API authentication。
所有 API 端點都使用:
以下所有 endpoints 皆可透過 query string 傳入相同的查詢參數:
| Parameter | Type | Required | Description | |
startDate | string | date | No | ISO 日期字串、字面值 “now”,或相對天數(如 “7d”,表示 now - 7 天)。預設:now - 7 天 |
endDate | string | date | No | ISO 日期字串、字面值 “now”,或相對天數(如 “0d”)。預設:now |
page | number | No | 頁碼(從 1 起算)。預設:1 | |
pageSize | number | No | 每頁結果數。預設:100,最大:1000 | |
user | string | No | 以單一使用者篩選的可選參數。可用 email(例如 [email protected])、編碼 ID(例如 user_abc123…),或數字 ID(例如 42) | |
回應中的 userId 會以帶有前綴 user_ 的外部編碼 ID 回傳;這對 API 使用而言是穩定的。
- 來源:「TAB」代表接受的行內補全;「COMPOSER」代表從 Composer 接受的差異
- 行數度量:tabLinesAdded/Deleted 與 composerLinesAdded/Deleted 會分別計數;nonAiLinesAdded/Deleted 由 max(0, totalLines - AI lines) 推導
- 隱私模式:如果在用戶端啟用,部分中介資料(例如 fileName)可能會被省略
- 分支資訊:當目前分支等於版本庫的預設分支時,isPrimaryBranch 為 true;若無法取得版本庫資訊,則可能為 undefined
你可以掃描該檔案,了解如何偵測與回報提交與變更。
擷取彙總的每次提交指標,將程式碼行數歸因於 TAB、COMPOSER 與非 AI。
GET /analytics/ai-code/commits
{
items: AiCommitMetric[];
totalCount: number;
page: number;
pageSize: number;
}
| 欄位 | 類型 | 說明 | |
commitHash | string | Git commit 雜湊值 | |
userId | string | 編碼後的使用者 ID(例如:user_abc123) | |
userEmail | string | 使用者的電子郵件地址 | |
repoName | string | null | 儲存庫名稱 |
branchName | string | null | 分支名稱 |
isPrimaryBranch | boolean | null | 是否為主要分支 |
totalLinesAdded | number | 此次 commit 新增的總行數 | |
totalLinesDeleted | number | 此次 commit 刪除的總行數 | |
tabLinesAdded | number | 透過 TAB 自動補全新增的行數 | |
tabLinesDeleted | number | 透過 TAB 自動補全刪除的行數 | |
composerLinesAdded | number | 透過 Composer 新增的行數 | |
composerLinesDeleted | number | 透過 Composer 刪除的行數 | |
nonAiLinesAdded | number | null | 非 AI 新增的行數 |
nonAiLinesDeleted | number | null | 非 AI 刪除的行數 |
message | string | null | Commit 訊息 |
commitTs | string | null | Commit 時間戳(ISO 格式) |
createdAt | string | 匯入時間戳(ISO 格式) | |
{
"items": [
{
"commitHash": "a1b2c3d4",
"userId": "user_3k9x8q...",
"userEmail": "[email protected]",
"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&[email protected]" \
-u YOUR_API_KEY:
以 CSV 格式下載 commit 指標資料,適合大型資料抽取。
GET /analytics/ai-code/commits.csv
標頭:
- Content-Type: text/csv; charset=utf-8
| 欄位 | 類型 | 說明 |
commit_hash | string | Git commit 雜湊值 |
user_id | string | 編碼後的使用者 ID |
user_email | string | 使用者的電子郵件地址 |
repo_name | string | 儲存庫名稱 |
branch_name | string | 分支名稱 |
is_primary_branch | boolean | 是否為主要分支 |
total_lines_added | number | 此次 commit 新增的總行數 |
total_lines_deleted | number | 此次 commit 刪除的總行數 |
tab_lines_added | number | 透過 Tab 補全新增的行數 |
tab_lines_deleted | number | 透過 Tab 補全刪除的行數 |
composer_lines_added | number | 透過 Composer 新增的行數 |
composer_lines_deleted | number | 透過 Composer 刪除的行數 |
non_ai_lines_added | number | 非 AI 新增的行數 |
non_ai_lines_deleted | number | 非 AI 刪除的行數 |
message | string | Commit 訊息 |
commit_ts | string | Commit 時間戳(ISO 格式) |
created_at | string | 匯入時間戳(ISO 格式) |
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...,[email protected],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...,[email protected],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 變更,並依具決定性的 changeId 分組。適合用來分析獨立於提交的已接受 AI 事件。
GET /analytics/ai-code/changes
{
items: AiCodeChangeMetric[];
totalCount: number;
page: number;
pageSize: number;
}
| 欄位 | 型別 | 說明 | |
changeId | string | 變更的決定性 ID | |
userId | string | 編碼後的使用者 ID(例如:user_abc123) | |
userEmail | string | 使用者的電子郵件地址 | |
source | ”TAB" | "COMPOSER” | AI 變更的來源 |
model | string | null | 使用的 AI 模型 |
totalLinesAdded | number | 新增的總行數 | |
totalLinesDeleted | number | 刪除的總行數 | |
createdAt | string | 匯入時間戳(ISO 格式) | |
metadata | Array | 檔案中繼資料(隱私模式下可能省略 fileName) | |
範例回應
{
"items": [
{
"changeId": "749356201",
"userId": "user_3k9x8q...",
"userEmail": "[email protected]",
"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 YOUR_API_KEY:
依使用者(編碼的 ID)篩選:
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=user_3k9x8q..." \
-u 你的 API 金鑰:
依使用者(電子郵件)篩選:
curl -X GET "https://api.cursor.com/analytics/ai-code/[email protected]" \
-u 你的_API_KEY:
以 CSV 格式下載變更度量資料,適合大量資料擷取。
GET /analytics/ai-code/changes.csv
標頭:
- Content-Type: text/csv; charset=utf-8
| 欄位 | 型別 | 說明 |
change_id | string | 此變更的可重現 ID |
user_id | string | 編碼的使用者 ID |
user_email | string | 使用者的電子郵件地址 |
source | string | AI 變更的來源(TAB 或 COMPOSER) |
model | string | 使用的 AI 模型 |
total_lines_added | number | 新增的總行數 |
total_lines_deleted | number | 刪除的總行數 |
created_at | string | 匯入時間戳(ISO 格式) |
metadata_json | string | 以 JSON 字串化的中繼資料項目陣列 |
- metadata_json 是以 JSON 字串化的中繼資料項目陣列(隱私模式下可能省略 fileName)
- 讀取 CSV 時,務必解析加上引號的欄位
change_id,user_id,user_email,source,model,total_lines_added,total_lines_deleted,created_at,metadata_json
749356201,user_3k9x8q...,[email protected],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...,[email protected],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 你的 API 金鑰: \
-o changes.csv
- 使用
user 參數可在所有端點中快速篩選單一使用者
- 需要大量資料匯出時,優先使用 CSV 端點——它們會在伺服器端以每頁 10,000 筆紀錄的方式串流
- 若用戶端無法解析預設分支,
isPrimaryBranch 可能為 undefined
commitTs 是提交的時間戳;createdAt 是在我們伺服器上的匯入時間
- 啟用用戶端隱私模式時,部分欄位可能會缺漏
- Alpha 版本發佈:提供提交(commits)與變更(changes)的初始端點。回應結構可能會根據回饋持續調整