Ekibinin repository’leri için AI tarafından üretilen kod analitiğine erişim sağla. Bu, commit başına AI kullanımını ve detaylı kabul edilen AI değişikliklerini içerir.
API ilk sürümünde. Geri bildirimlere dayanarak yetenekleri genişletiyoruz - hangi endpoint’lere ihtiyacın olduğunu bize bildir!
  • Kullanılabilirlik: Sadece enterprise ekipler için
  • Durum: Alpha (response şekilleri ve alanları değişebilir)

Kimlik Doğrulama

Tüm API istekleri bir API anahtarı kullanarak kimlik doğrulama gerektirir. Bu API, diğer endpoint’lerle aynı Admin API kimlik doğrulamasını kullanır. Detaylı kimlik doğrulama talimatları için Admin API kimlik doğrulama sayfasına bak.

Temel URL

Tüm API uç noktaları şunu kullanır:
https://api.cursor.com

Hız Limitleri

  • Takım başına, endpoint başına dakikada 5 istek

Sorgu Parametreleri

Aşağıdaki tüm endpoint’ler aynı sorgu parametrelerini query string aracılığıyla kabul eder:
ParametreTipGerekliAçıklama
startDatestringdateHayırISO tarih string’i, “now” literal değeri, veya “7d” gibi göreceli günler (şu andan 7 gün öncesi anlamına gelir). Varsayılan: şu andan 7 gün öncesi
endDatestringdateHayırISO tarih string’i, “now” literal değeri, veya “0d” gibi göreceli günler. Varsayılan: şu an
pagenumberHayırSayfa numarası (1 tabanlı). Varsayılan: 1
pageSizenumberHayırSayfa başına sonuç sayısı. Varsayılan: 100, Maksimum: 1000
userstringHayırTek bir kullanıcıya göre isteğe bağlı filtreleme. Email (örn., developer@company.com), kodlanmış ID (örn., user_abc123…), veya sayısal ID (örn., 42) kabul eder
Yanıtlar userId’yi user_ öneki ile kodlanmış harici ID olarak döndürür. Bu, API kullanımı için sabit kalır.

Semantik ve Metriklerin Nasıl Hesaplandığı

  • Kaynaklar: “TAB” kabul edilen satır içi tamamlamaları; “COMPOSER” ise Composer’dan kabul edilen diff’leri temsil eder
  • Satır metrikleri: tabLinesAdded/Deleted ve composerLinesAdded/Deleted ayrı ayrı sayılır; nonAiLinesAdded/Deleted, max(0, totalLines - AI lines) olarak hesaplanır
  • Gizlilik modu: İstemcide etkinse, bazı metaveriler (fileName gibi) dahil edilmeyebilir
  • Dal bilgisi: isPrimaryBranch, geçerli dal repo’nun varsayılan dalına eşitse true’dur; repo bilgisi mevcut değilse undefined olabilir
Commit ve değişikliklerin nasıl tespit edilip raporlandığını anlamak için o dosyayı inceleyebilirsin.

Endpoint’ler

AI Commit Metriklerini Al (JSON, sayfalanmış)

TAB, COMPOSER ve AI olmayan satırları ilişkilendiren commit başına toplu metrikleri al.
GET /analytics/ai-code/commits

Yanıt

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

AiCommitMetric Alanları

AlanTipAçıklama
commitHashstringGit commit hash’i
userIdstringKodlanmış kullanıcı ID’si (örn., user_abc123)
userEmailstringKullanıcının e-posta adresi
repoNamestringnullRepository adı
branchNamestringnullBranch adı
isPrimaryBranchbooleannullAna branch olup olmadığı
totalLinesAddednumberCommit’te eklenen toplam satır
totalLinesDeletednumberCommit’te silinen toplam satır
tabLinesAddednumberTAB tamamlamaları ile eklenen satırlar
tabLinesDeletednumberTAB tamamlamaları ile silinen satırlar
composerLinesAddednumberComposer ile eklenen satırlar
composerLinesDeletednumberComposer ile silinen satırlar
nonAiLinesAddednumbernullAI olmayan eklenen satırlar
nonAiLinesDeletednumbernullAI olmayan silinen satırlar
messagestringnullCommit mesajı
commitTsstringnullCommit zaman damgası (ISO formatı)
createdAtstringAlım zaman damgası (ISO formatı)

Örnek Yanıt

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

Örnek İstekler

Temel istek:
curl -X GET "https://api.cursor.com/analytics/ai-code/commits?startDate=7d&endDate=now&page=1&pageSize=100" \
  -u YOUR_API_KEY:
Kullanıcıya göre filtrele (e-posta):
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 Metriklerini İndir (CSV, streaming)

Büyük veri çıkarımları için commit metrikleri verilerini CSV formatında indir.
GET /analytics/ai-code/commits.csv

Yanıt

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

CSV Sütunları

SütunTipAçıklama
commit_hashstringGit commit hash’i
user_idstringKodlanmış kullanıcı ID’si
user_emailstringKullanıcının e-posta adresi
repo_namestringRepository adı
branch_namestringBranch adı
is_primary_branchbooleanAna branch olup olmadığı
total_lines_addednumberCommit’te eklenen toplam satır
total_lines_deletednumberCommit’te silinen toplam satır
tab_lines_addednumberTAB tamamlamaları ile eklenen satır
tab_lines_deletednumberTAB tamamlamaları ile silinen satır
composer_lines_addednumberComposer ile eklenen satır
composer_lines_deletednumberComposer ile silinen satır
non_ai_lines_addednumberAI dışı eklenen satır
non_ai_lines_deletednumberAI dışı silinen satır
messagestringCommit mesajı
commit_tsstringCommit zaman damgası (ISO formatı)
created_atstringİşleme zaman damgası (ISO formatı)

Örnek CSV Çıktısı

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

Örnek İstek

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 Kod Değişiklik Metriklerini Al (JSON, sayfalanmış)

Deterministik changeId ile gruplandırılmış, ayrıntılı kabul edilmiş AI değişikliklerini al. Commit’lerden bağımsız olarak kabul edilmiş AI olaylarını analiz etmek için faydalı.
GET /analytics/ai-code/changes

Yanıt

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

AiCodeChangeMetric Alanları

AlanTipAçıklama
changeIdstringDeğişiklik için deterministik ID
userIdstringKodlanmış kullanıcı ID’si (örn. user_abc123)
userEmailstringKullanıcının e-posta adresi
source”TAB""COMPOSER”AI değişikliğinin kaynağı
modelstringnullKullanılan AI modeli
totalLinesAddednumberEklenen toplam satır
totalLinesDeletednumberSilinen toplam satır
createdAtstringİşleme zaman damgası (ISO formatı)
metadataArrayDosya metadatası (fileName gizlilik modunda atlanabilir)

Örnek Yanıt

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

Örnek İstekler

Temel istek:
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?startDate=14d&endDate=now&page=1&pageSize=200" \
  -u YOUR_API_KEY:
Kullanıcıya göre filtrele (kodlanmış ID):
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=user_3k9x8q..." \
  -u YOUR_API_KEY:
Kullanıcıya göre filtrele (e-posta):
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=developer@company.com" \
  -u YOUR_API_KEY:

AI Kod Değişiklik Metriklerini İndir (CSV, streaming)

Büyük veri çıkarımları için değişiklik metrik verilerini CSV formatında indir.
GET /analytics/ai-code/changes.csv

Response

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

CSV Sütunları

SütunTipAçıklama
change_idstringDeğişiklik için deterministik ID
user_idstringKodlanmış kullanıcı ID’si
user_emailstringKullanıcının e-posta adresi
sourcestringAI değişikliğinin kaynağı (TAB veya COMPOSER)
modelstringKullanılan AI modeli
total_lines_addednumberToplam eklenen satır sayısı
total_lines_deletednumberToplam silinen satır sayısı
created_atstringKayıt zaman damgası (ISO formatı)
metadata_jsonstringJSON string formatına çevrilmiş metadata girişleri dizisi

Notlar

  • metadata_json, metadata girişlerinin JSON string formatına çevrilmiş dizisidir (gizlilik modunda fileName atlanabilir)
  • CSV kullanırken tırnaklı alanları parse etmeyi unutma

Örnek CSV Çıktısı

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

Örnek İstek

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

İpuçları

  • Tüm endpoint’lerde tek bir kullanıcıyı hızlıca filtrelemek için user parametresini kullan
  • Büyük veri çıkarımları için CSV endpoint’lerini tercih et—bunlar sunucu tarafında 10.000’lik kayıt sayfaları halinde akış yapar
  • İstemci varsayılan dalı çözümleyemediyse isPrimaryBranch tanımsız olabilir
  • commitTs commit zaman damgası; createdAt sunucularımızdaki alım zamanı
  • İstemcide gizlilik modu etkinleştirildiğinde bazı alanlar mevcut olmayabilir

Değişiklik Günlüğü

  • Alpha sürümü: Commit’ler ve değişiklikler için ilk endpoint’ler. Yanıt şemaları geri bildirimlere göre gelişebilir