Akses analytics kode yang dihasilkan AI untuk repositori tim kamu. Ini mencakup penggunaan AI per-commit serta perubahan AI yang diterima secara granular.
API ini masih dalam rilis pertama. Kami sedang mengembangkan kemampuan berdasarkan feedback - kasih tahu kami endpoint apa yang kamu butuhkan!
  • Ketersediaan: Hanya untuk tim enterprise
  • Status: Alpha (bentuk response dan field mungkin berubah)

Autentikasi

Semua request API memerlukan autentikasi menggunakan API key. API ini menggunakan autentikasi Admin API yang sama dengan endpoint lainnya. Untuk instruksi autentikasi lengkap, lihat autentikasi Admin API.

Base URL

Semua endpoint API menggunakan:
https://api.cursor.com

Batas Rate

  • 5 request per menit per tim, per endpoint

Parameter Query

Semua endpoint di bawah ini menerima parameter query yang sama melalui query string:
ParameterTypeRequiredDescription
startDatestringdateTidakString tanggal ISO, literal “now”, atau hari relatif seperti “7d” (artinya now - 7 hari). Default: now - 7 hari
endDatestringdateTidakString tanggal ISO, literal “now”, atau hari relatif seperti “0d”. Default: now
pagenumberTidakNomor halaman (dimulai dari 1). Default: 1
pageSizenumberTidakJumlah hasil per halaman. Default: 100, Maks: 1000
userstringTidakFilter opsional berdasarkan satu user. Menerima email (contoh: developer@company.com), ID yang di-encode (contoh: user_abc123…), atau ID numerik (contoh: 42)
Response mengembalikan userId sebagai ID eksternal yang di-encode dengan awalan user_. Ini stabil untuk konsumsi API.

Semantik dan Cara Perhitungan Metrik

  • Sumber: “TAB” mewakili saran kode inline yang diterima; “COMPOSER” mewakili diff yang diterima dari Composer
  • Metrik baris: tabLinesAdded/Deleted dan composerLinesAdded/Deleted dihitung secara terpisah; nonAiLinesAdded/Deleted dihitung sebagai max(0, totalLines - baris AI)
  • Mode privasi: Jika diaktifkan pada klien, sebagian metadata (misalnya fileName) mungkin tidak disertakan
  • Info cabang: isPrimaryBranch bernilai true saat cabang saat ini sama dengan cabang default repo; bisa undefined jika informasi repo tidak tersedia
Kamu bisa meninjau file tersebut untuk memahami cara commit dan perubahan dideteksi dan dilaporkan.

Endpoints

Dapatkan Metrik Commit AI (JSON, terpaginasi)

Ambil metrik per-commit yang teragregasi yang menghubungkan baris kode ke TAB, COMPOSER, dan non-AI.
GET /analytics/ai-code/commits

Response

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

Field AiCommitMetric

FieldTypeDescription
commitHashstringHash commit Git
userIdstringID pengguna yang dienkode (contoh: user_abc123)
userEmailstringAlamat email pengguna
repoNamestringnullNama repository
branchNamestringnullNama branch
isPrimaryBranchbooleannullApakah ini branch utama
totalLinesAddednumberTotal baris yang ditambahkan dalam commit
totalLinesDeletednumberTotal baris yang dihapus dalam commit
tabLinesAddednumberBaris yang ditambahkan via completion TAB
tabLinesDeletednumberBaris yang dihapus via completion TAB
composerLinesAddednumberBaris yang ditambahkan via Composer
composerLinesDeletednumberBaris yang dihapus via Composer
nonAiLinesAddednumbernullBaris non-AI yang ditambahkan
nonAiLinesDeletednumbernullBaris non-AI yang dihapus
messagestringnullPesan commit
commitTsstringnullTimestamp commit (format ISO)
createdAtstringTimestamp ingestion (format ISO)

Contoh Response

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

Contoh Request

Request dasar:
curl -X GET "https://api.cursor.com/analytics/ai-code/commits?startDate=7d&endDate=now&page=1&pageSize=100" \
  -u YOUR_API_KEY:
Filter berdasarkan pengguna (email):
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:

Download Metrik Commit AI (CSV, streaming)

Download data metrik commit dalam format CSV untuk ekstraksi data dalam jumlah besar.
GET /analytics/ai-code/commits.csv

Response

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

Kolom CSV

KolomTipeDeskripsi
commit_hashstringHash commit Git
user_idstringID user yang di-encode
user_emailstringAlamat email user
repo_namestringNama repository
branch_namestringNama branch
is_primary_branchbooleanApakah ini branch utama
total_lines_addednumberTotal baris yang ditambahkan dalam commit
total_lines_deletednumberTotal baris yang dihapus dalam commit
tab_lines_addednumberBaris yang ditambahkan via completion TAB
tab_lines_deletednumberBaris yang dihapus via completion TAB
composer_lines_addednumberBaris yang ditambahkan via Composer
composer_lines_deletednumberBaris yang dihapus via Composer
non_ai_lines_addednumberBaris non-AI yang ditambahkan
non_ai_lines_deletednumberBaris non-AI yang dihapus
messagestringPesan commit
commit_tsstringTimestamp commit (format ISO)
created_atstringTimestamp ingestion (format ISO)

Sample Output 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

Contoh Request

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

Get AI Code Change Metrics (JSON, paginated)

Ambil perubahan AI yang diterima secara granular, dikelompokkan berdasarkan changeId yang deterministik. Berguna untuk menganalisis event AI yang diterima secara independen dari commit.
GET /analytics/ai-code/changes

Response

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

Field AiCodeChangeMetric

FieldTipeDeskripsi
changeIdstringID deterministik untuk perubahan
userIdstringID user yang di-encode (contoh: user_abc123)
userEmailstringAlamat email user
source”TAB""COMPOSER”Sumber perubahan AI
modelstringnullModel AI yang digunakan
totalLinesAddednumberTotal baris yang ditambahkan
totalLinesDeletednumberTotal baris yang dihapus
createdAtstringTimestamp ingestion (format ISO)
metadataArrayMetadata file (fileName mungkin dihilangkan dalam mode privasi)

Contoh Response

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

Contoh Request

Request dasar:
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?startDate=14d&endDate=now&page=1&pageSize=200" \
  -u YOUR_API_KEY:
Filter berdasarkan user (ID yang di-encode):
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=user_3k9x8q..." \
  -u YOUR_API_KEY:
Filter berdasarkan user (email):
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=developer@company.com" \
  -u YOUR_API_KEY:

Download Metrik Perubahan Kode AI (CSV, streaming)

Download data metrik perubahan dalam format CSV untuk ekstraksi data dalam jumlah besar.
GET /analytics/ai-code/changes.csv

Response

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

Kolom CSV

KolomTipeDeskripsi
change_idstringID deterministik untuk perubahan
user_idstringID user yang di-encode
user_emailstringAlamat email user
sourcestringSumber perubahan AI (TAB atau COMPOSER)
modelstringModel AI yang digunakan
total_lines_addednumberTotal baris yang ditambahkan
total_lines_deletednumberTotal baris yang dihapus
created_atstringTimestamp ingestion (format ISO)
metadata_jsonstringArray metadata yang di-stringify ke JSON

Catatan

  • metadata_json adalah array metadata yang di-stringify ke JSON (mungkin menghilangkan fileName dalam mode privasi)
  • Saat mengonsumsi CSV, pastikan untuk mem-parse field yang dikutip

Contoh Output 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}]"

Contoh Request

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

Tips

  • Gunakan parameter user untuk memfilter satu pengguna dengan cepat di semua endpoint
  • Untuk ekstraksi data besar, lebih baik gunakan endpoint CSV—mereka melakukan streaming dalam halaman berisi 10.000 record di sisi server
  • isPrimaryBranch mungkin undefined jika klien tidak bisa menentukan branch default
  • commitTs adalah timestamp commit; createdAt adalah waktu ingestion di server kami
  • Beberapa field mungkin tidak ada ketika mode privasi diaktifkan di klien

Changelog

  • Rilis Alpha: Endpoint awal untuk commit dan perubahan. Struktur respons mungkin berubah berdasarkan masukan pengguna