Langsung ke konten utama
Akses analitik kode berbasis AI buat repositori tim lo. Ini mencakup penggunaan AI per commit serta perubahan AI yang diterima secara granular.
API ini baru rilis pertama. Kami lagi nambah kapabilitas berdasarkan feedback—kasih tahu kami endpoint apa yang lo butuhin!
  • Ketersediaan: Hanya buat tim enterprise
  • Status: Alpha (bentuk respons dan field bisa berubah)

Autentikasi

Semua request ke API harus diautentikasi pakai API key. API ini menggunakan skema autentikasi Admin API yang sama seperti endpoint lainnya. Untuk panduan autentikasi yang lebih rinci, lihat Admin API authentication.

URL Dasar

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

Batas Permintaan

  • 5 permintaan per menit per tim, per endpoint

Parameter Query

Semua endpoint di bawah menerima parameter query yang sama lewat query string:
ParameterTypeRequiredDescription
startDatestringdateNoString tanggal ISO, literal “now”, atau hari relatif seperti “7d” (berarti sekarang - 7 hari). Default: sekarang - 7 hari
endDatestringdateNoString tanggal ISO, literal “now”, atau hari relatif seperti “0d”. Default: sekarang
pagenumberNoNomor halaman (basis 1). Default: 1
pageSizenumberNoJumlah hasil per halaman. Default: 100, Maks: 1000
userstringNoFilter opsional untuk satu pengguna. Menerima email (mis., developer@company.com), ID terenkode (mis., user_abc123…), atau ID numerik (mis., 42)
Respons mengembalikan userId sebagai ID eksternal terenkode dengan prefiks user_. Nilai ini stabil untuk konsumsi API.

Semantik dan Cara Perhitungan Metrik

  • Sumber: “TAB” merepresentasikan inline completions yang diterima; “COMPOSER” merepresentasikan diff yang diterima dari Composer
  • Metrik baris: tabLinesAdded/Deleted dan composerLinesAdded/Deleted dihitung terpisah; nonAiLinesAdded/Deleted diturunkan sebagai max(0, totalLines - AI lines)
  • Mode privasi: Jika diaktifkan di klien, beberapa metadata (seperti fileName) mungkin dihilangkan
  • Info branch: isPrimaryBranch bernilai true ketika branch saat ini sama dengan default branch repo; bisa undefined jika info repo tidak tersedia
Lo bisa nge-scan file itu buat paham gimana commit dan perubahan dideteksi dan dilaporkan.

Endpoint

Dapatkan Metrik Commit AI (JSON, dengan pagination)

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

Respons

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

Field AiCommitMetric

FieldTypeDescription
commitHashstringHash commit Git
userIdstringID pengguna terenkode (mis., user_abc123)
userEmailstringAlamat email pengguna
repoNamestringnullNama repositori
branchNamestringnullNama branch
isPrimaryBranchbooleannullApakah ini branch utama
totalLinesAddednumberTotal baris yang ditambahkan dalam commit
totalLinesDeletednumberTotal baris yang dihapus dalam commit
tabLinesAddednumberBaris yang ditambahkan lewat penyelesaian TAB
tabLinesDeletednumberBaris yang dihapus lewat penyelesaian TAB
composerLinesAddednumberBaris yang ditambahkan lewat Composer
composerLinesDeletednumberBaris yang dihapus lewat Composer
nonAiLinesAddednumbernullBaris non-AI yang ditambahkan
nonAiLinesDeletednumbernullBaris non-AI yang dihapus
messagestringnullPesan commit
commitTsstringnullStempel waktu commit (format ISO)
createdAtstringStempel waktu ingestion (format ISO)

Contoh Respons

{
  "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: ekstraksi klien analytics"
      "commitTs": "2025-07-30T14:12:03.000Z",
      "createdAt": "2025-07-30T14:12:30.000Z"
    }
  ],
  "totalCount": 42,
  "page": 1,
  "pageSize": 100
}

Contoh Permintaan

Permintaan dasar:
curl -X GET "https://api.cursor.com/analytics/ai-code/commits?startDate=7d&endDate=now&page=1&pageSize=100" \
  -u API_KEY_KAMU:
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 API_KEY_KAMU:

Download Metrik Commit AI (CSV, streaming)

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

Respons

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

Kolom CSV

KolomTipeDeskripsi
commit_hashstringHash commit Git
user_idstringID pengguna yang dienkode
user_emailstringAlamat email pengguna
repo_namestringNama repositori
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 lewat pelengkapan TAB
tab_lines_deletednumberBaris yang dihapus lewat pelengkapan TAB
composer_lines_addednumberBaris yang ditambahkan lewat Composer
composer_lines_deletednumberBaris yang dihapus lewat 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 ingest (format ISO)

Contoh 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: ekstraksi klien analitik",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,"Tambahkan penanganan error",2025-07-30T13:45:21.000Z,2025-07-30T13:45:45.000Z

Contoh Permintaan

curl -L "https://api.cursor.com/analytics/ai-code/commits.csv?startDate=2025-07-01T00:00:00Z&endDate=now&user=user_3k9x8q..." \
  -u API_KEY_KAMU: \
  -o commits.csv

Dapatkan Metrik Perubahan Kode AI (JSON, paginasi)

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

Tanggapan

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

Field AiCodeChangeMetric

FieldTypeDescription
changeIdstringID deterministik untuk perubahan
userIdstringID pengguna yang dienkode (misalnya, user_abc123)
userEmailstringAlamat email pengguna
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 bisa dihilangkan dalam mode privasi)

Contoh Respons

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

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

Unduh Metrik Perubahan Kode AI (CSV, streaming)

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

Respons

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

Kolom CSV

KolomTipeDeskripsi
change_idstringID deterministik untuk perubahan
user_idstringID pengguna yang dienkode
user_emailstringAlamat email pengguna
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 entri metadata yang dijadikan string JSON

Catatan

  • metadata_json adalah array entri metadata yang dijadikan string JSON (mungkin menghilangkan fileName dalam mode privasi)
  • Saat memproses CSV, pastikan untuk mengurai field yang diapit tanda kutip

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 Permintaan

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

Tips

  • Pakai parameter user buat cepat filter satu user di semua endpoint
  • Buat ekstraksi data besar, pilih endpoint CSV—mereka nge-stream per halaman 10.000 record di sisi server
  • isPrimaryBranch bisa undefined kalau client nggak bisa resolve default branch
  • commitTs adalah timestamp commit; createdAt adalah waktu ingestion di server kami
  • Beberapa field mungkin nggak ada kalau privacy mode diaktifkan di client

Changelog

  • Rilis alpha: Endpoint awal untuk commit dan perubahan. Bentuk respons bisa berubah seiring masukan
I