存取你團隊程式庫的 AI 生成程式碼分析資料。包含每次 commit 的 AI 使用情況,以及詳細的已接受 AI 變更記錄。
這個 API 目前是首次發布版本。我們會根據使用者回饋持續擴展功能 - 告訴我們你需要哪些 endpoint!
  • 可用性:僅限企業團隊
  • 狀態:Alpha 版(response 結構和欄位可能會變更)

身份驗證

所有 API 請求都需要使用 API 金鑰進行身份驗證。此 API 使用與其他端點相同的 Admin API 身份驗證方式。 詳細的身份驗證說明,請參閱 Admin API 身份驗證

基礎 URL

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

速率限制

  • 每個團隊每個端點每分鐘限制 5 次請求

查詢參數

以下所有端點都接受透過查詢字串傳遞的相同查詢參數:
參數類型必需描述
startDatestringdateISO 日期字串、字面值 “now”,或相對天數如 “7d”(表示現在 - 7 天)。預設:現在 - 7 天
endDatestringdateISO 日期字串、字面值 “now”,或相對天數如 “0d”。預設:現在
pagenumber頁碼(從 1 開始)。預設:1
pageSizenumber每頁結果數量。預設:100,上限:1000
userstring可選的單一使用者篩選條件。接受電子郵件(如 developer@company.com)、編碼 ID(如 user_abc123…)或數字 ID(如 42)
回應會將 userId 以帶有 user_ 前綴的編碼外部 ID 形式回傳。這對 API 使用來說是穩定的。

語義與指標的計算方式

  • 來源: 「TAB」代表已接受的內嵌補全;「COMPOSER」代表來自 Composer 的已接受 diff
  • 行數指標:tabLinesAdded/Deleted 與 composerLinesAdded/Deleted 會分別計算;nonAiLinesAdded/Deleted 以 max(0, totalLines - AI 行數) 計算
  • 隱私模式:若在用戶端啟用,部分中繼資料(如 fileName)可能會被省略
  • 分支資訊:isPrimaryBranch 在目前分支等於存放庫的預設分支時為 true;若無法取得存放庫資訊,可能為未定義
你可以查看該檔案,了解提交與變更如何被偵測並回報。

端點

取得 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": "Refactor: extract analytics client",
      "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 YOUR_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 提交指標(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,"Refactor: extract analytics client",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,"Add error handling",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 YOUR_API_KEY: \
  -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 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

回應

標頭:
  • 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 版本:提交和變更的初始端點。回應結構可能會根據回饋進行調整