Akses analitik kode berbasis AI untuk repositori tim kamu. Termasuk penggunaan AI per commit serta perubahan AI yang diterima secara mendetail.
API ini adalah rilis pertama. Kami akan menambah kapabilitas berdasarkan masukan — kasih tahu kami endpoint apa yang kamu butuhin!
  • Availability: Hanya untuk tim enterprise
  • Status: Alpha (bentuk respons dan field bisa berubah)

Autentikasi

Semua permintaan API harus diautentikasi menggunakan kunci API. API ini menggunakan skema autentikasi Admin API yang sama seperti endpoint lainnya. Untuk petunjuk autentikasi yang lebih lengkap, lihat Autentikasi Admin API.

URL Dasar

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

Batasan Rate

  • 5 permintaan per menit per tim, per endpoint

Parameter Kueri

Semua endpoint di bawah menerima parameter kueri yang sama lewat query string:
ParameterTipeWajibDeskripsi
startDatestringdateTidakString tanggal ISO, literal “now”, atau hari relatif seperti “7d” (artinya sekarang - 7 hari). Default: sekarang - 7 hari
endDatestringdateTidakString tanggal ISO, literal “now”, atau hari relatif seperti “0d”. Default: sekarang
pagenumberTidakNomor halaman (1-based). Default: 1
pageSizenumberTidakJumlah hasil per halaman. Default: 100, Maks: 1000
userstringTidakFilter opsional untuk satu pengguna. Menerima email (mis., developer@company.com), ID terenkode (mis., user_abc123…), atau ID numerik (mis., 42)
Respons mengembalikan userId sebagai external ID terenkripsi dengan prefiks user_. Nilai ini stabil untuk konsumsi API.

Semantik dan Cara Perhitungan Metrik

  • Sumber: “TAB” merepresentasikan penyelesaian inline 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, sebagian 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
Kamu bisa memindai file itu untuk memahami bagaimana commit dan perubahan dideteksi dan dilaporkan.

Endpoint

Dapatkan Metrik Commit AI (JSON, dipaginasi)

Ambil metrik per commit yang teragregasi dan 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 yang 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 melalui penyelesaian TAB
tabLinesDeletednumberBaris yang dihapus melalui penyelesaian TAB
composerLinesAddednumberBaris yang ditambahkan melalui Composer
composerLinesDeletednumberBaris yang dihapus melalui Composer
nonAiLinesAddednumbernullBaris non-AI yang ditambahkan
nonAiLinesDeletednumbernullBaris non-AI yang dihapus
messagestringnullPesan commit
commitTsstringnullTimestamp commit (format ISO)
createdAtstringTimestamp 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: extract analytics client",
      "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 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:

Unduh Metrik Commit AI (CSV, streaming)

Unduh data metrik commit dalam format CSV untuk ekstraksi data skala 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 terenkode
user_emailstringAlamat email pengguna
repo_namestringNama repositori
branch_namestringNama branch
is_primary_branchbooleanApakah ini branch utama
total_lines_addednumberTotal baris yang ditambahkan pada commit
total_lines_deletednumberTotal baris yang dihapus pada commit
tab_lines_addednumberBaris yang ditambahkan lewat penyelesaian TAB
tab_lines_deletednumberBaris yang dihapus lewat penyelesaian 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_tsstringStempel waktu commit (format ISO)
created_atstringStempel waktu 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: 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 Permintaan

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

Dapatkan Metrik Perubahan Kode AI (JSON, terpaginasikan)

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

Respons

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

Field AiCodeChangeMetric

FieldTipeDeskripsi
changeIdstringID deterministik untuk perubahan
userIdstringID pengguna yang terenkode (mis., user_abc123)
userEmailstringAlamat email pengguna
source”TAB""COMPOSER”Sumber perubahan AI
modelstringnullModel AI yang digunakan
totalLinesAddednumberTotal baris yang ditambahkan
totalLinesDeletednumberTotal baris yang dihapus
createdAtstringStempel waktu ingest (format ISO)
metadataArrayMetadata file (fileName dapat 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 YOUR_API_KEY:
Filter berdasarkan pengguna (ID terenkode):
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=user_3k9x8q..." \
  -u YOUR_API_KEY:
Filter berdasarkan pengguna (email):
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=developer@company.com" \
  -u YOUR_API_KEY:

Unduh Metrik Perubahan Kode AI (CSV, streaming)

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

Respons

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

Kolom CSV

ColumnTypeDescription
change_idstringID deterministik untuk perubahan
user_idstringID pengguna terenkode
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 diserialisasi ke string JSON

Catatan

  • metadata_json adalah array entri metadata yang diserialisasi ke 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 YOUR_API_KEY: \
  -o changes.csv

Tips

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

Changelog

  • Rilis alpha: Endpoint awal untuk commit dan perubahan. Struktur respons bisa berubah berdasarkan masukan