跳轉到主要內容
存取你團隊儲存庫的 AI 生成程式碼分析。包含每次 commit 的 AI 使用情況,以及更細緻的已接受 AI 變更。
這個 API 是首個版本。我們會依照回饋擴充功能——告訴我們你需要哪些 endpoints!
  • 可用性: 僅限企業版團隊
  • 狀態: Alpha(回應結構與欄位可能調整)

驗證

所有 API 請求都需要使用 API 金鑰進行驗證。此 API 採用與其他端點相同的 Admin API 驗證機制。 想看更詳細的驗證說明,去看 Admin API authentication

基礎 URL

所有 API 端點都使用:
https://api.cursor.com

速率限制

  • 每個團隊、每個端點:每分鐘 5 次請求

查詢參數

以下所有 endpoints 皆可透過 query string 傳入相同的查詢參數:
ParameterTypeRequiredDescription
startDatestringdateNoISO 日期字串、字面值 “now”,或相對天數(如 “7d”,表示 now - 7 天)。預設:now - 7 天
endDatestringdateNoISO 日期字串、字面值 “now”,或相對天數(如 “0d”)。預設:now
pagenumberNo頁碼(從 1 起算)。預設:1
pageSizenumberNo每頁結果數。預設:100,最大:1000
userstringNo以單一使用者篩選的可選參數。可用 email(例如 developer@company.com)、編碼 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
你可以掃描該檔案,了解如何偵測與回報提交與變更。

端點

取得 AI Commit 指標(JSON,分頁)

擷取彙總的每次提交指標,將程式碼行數歸因於 TAB、COMPOSER 與非 AI。
GET /analytics/ai-code/commits

回應

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

AiCommitMetric 欄位

欄位類型說明
commitHashstringGit commit 雜湊值
userIdstring編碼後的使用者 ID(例如:user_abc123)
userEmailstring使用者的電子郵件地址
repoNamestringnull儲存庫名稱
branchNamestringnull分支名稱
isPrimaryBranchbooleannull是否為主要分支
totalLinesAddednumber此次 commit 新增的總行數
totalLinesDeletednumber此次 commit 刪除的總行數
tabLinesAddednumber透過 TAB 自動補全新增的行數
tabLinesDeletednumber透過 TAB 自動補全刪除的行數
composerLinesAddednumber透過 Composer 新增的行數
composerLinesDeletednumber透過 Composer 刪除的行數
nonAiLinesAddednumbernull非 AI 新增的行數
nonAiLinesDeletednumbernull非 AI 刪除的行數
messagestringnullCommit 訊息
commitTsstringnullCommit 時間戳(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 YOUR_API_KEY:

下載 AI Commit 指標(CSV,串流)

以 CSV 格式下載 commit 指標資料,適合大型資料抽取。
GET /analytics/ai-code/commits.csv

回應

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

CSV 欄位

欄位類型說明
commit_hashstringGit commit 雜湊值
user_idstring編碼後的使用者 ID
user_emailstring使用者的電子郵件地址
repo_namestring儲存庫名稱
branch_namestring分支名稱
is_primary_branchboolean是否為主要分支
total_lines_addednumber此次 commit 新增的總行數
total_lines_deletednumber此次 commit 刪除的總行數
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 刪除的行數
messagestringCommit 訊息
commit_tsstringCommit 時間戳(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,分頁)

擷取細緻的已接受 AI 變更,並依具決定性的 changeId 分組。適合用來分析獨立於提交的已接受 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 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/changes?user=developer@company.com" \
  -u 你的_API_KEY:

下載 AI 程式碼變更度量(CSV,串流)

以 CSV 格式下載變更度量資料,適合大量資料擷取。
GET /analytics/ai-code/changes.csv

回應

標頭:
  • 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 字串化的中繼資料項目陣列

注意事項

  • 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 你的 API 金鑰: \
  -o changes.csv

提示

  • 使用 user 參數可在所有端點中快速篩選單一使用者
  • 需要大量資料匯出時,優先使用 CSV 端點——它們會在伺服器端以每頁 10,000 筆紀錄的方式串流
  • 若用戶端無法解析預設分支,isPrimaryBranch 可能為 undefined
  • commitTs 是提交的時間戳;createdAt 是在我們伺服器上的匯入時間
  • 啟用用戶端隱私模式時,部分欄位可能會缺漏

變更日誌

  • Alpha 版本發佈:提供提交(commits)與變更(changes)的初始端點。回應結構可能會根據回饋持續調整
I