Ana içeriğe atla
Ekibinin depoları için yapay zekâ tarafından üretilen kod analizlerine eriş. Buna commit başına yapay zekâ kullanımı ve ayrıntılı düzeyde kabul edilen yapay zekâ değişiklikleri de dâhil.
API ilk sürümünde. Geri bildirimlere göre yetenekleri genişletiyoruz — hangi endpoint’lere ihtiyaç duyduğunu bize söyle!
  • Kullanılabilirlik: Yalnızca kurumsal ekipler için
  • Durum: Alfa (yanıt yapı ve alanları değişebilir)

Kimlik Doğrulama

Tüm API istekleri, bir API anahtarıyla kimlik doğrulaması gerektirir. Bu API, diğer uç noktalarla aynı Admin API kimlik doğrulamasını kullanır. Ayrıntılı kimlik doğrulama yönergeleri için bkz. Admin API kimlik doğrulama.

Temel URL

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

Oran Sınırları

  • Her ekip için, her uç nokta için dakikada 5 istek

Sorgu Parametreleri

Aşağıdaki tüm uç noktalar, aynı sorgu parametrelerini sorgu dizesiyle kabul eder:
ParametreTürGerekliAçıklama
startDatestringdateHayırISO tarih dizesi, birebir “now” veya “7d” gibi göreli günler (şu an - 7 gün). Varsayılan: şu an - 7 gün
endDatestringdateHayırISO tarih dizesi, birebir “now” veya “0d” gibi göreli günler. Varsayılan: şu an
pagenumberHayırSayfa numarası (1 tabanlı). Varsayılan: 1
pageSizenumberHayırSayfa başına sonuç sayısı. Varsayılan: 100, Maks: 1000
userstringHayırTek bir kullanıcıya göre isteğe bağlı filtre. E-posta (örn. developer@company.com), kodlanmış kimlik (örn. user_abc123…) veya sayısal kimlik (örn. 42) kabul eder
Yanıtlarda userId, user_ önekiyle kodlanmış harici bir kimlik olarak döner. Bu, API kullanımı için kararlıdır.

Anlambilim ve Metriklerin Nasıl Hesaplandığı

  • Kaynaklar: “TAB”, kabul edilen satır içi tamamlamaları temsil eder; “COMPOSER”, 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 türetilir
  • Gizlilik modu: İstemcide etkinleştirilirse, bazı meta veriler (örn. fileName) atlanabilir
  • Dal bilgisi: isPrimaryBranch, geçerli dal repo’nun varsayılan dalına eşitse true olur; repo bilgisi yoksa undefined olabilir
Commit’lerin ve değişikliklerin nasıl algılanıp raporlandığını anlamak için o dosyayı inceleyebilirsin.

Uç Noktalar

AI Commit Metriklerini Getir (JSON, sayfalı)

Commit başına, satırları TAB, COMPOSER ve AI dışı kaynaklara atfeden toplu metrikleri al.
GET /analytics/ai-code/commits

Yanıt

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

AiCommitMetric Alanları

AlanTürAçıklama
commitHashstringGit commit karma değeri
userIdstringKodlanmış kullanıcı kimliği (örn. user_abc123)
userEmailstringKullanıcının e‑posta adresi
repoNamestringnullDepo adı
branchNamestringnullDal adı
isPrimaryBranchbooleannullBirincil dal olup olmadığı
totalLinesAddednumberCommit’te eklenen toplam satır
totalLinesDeletednumberCommit’te silinen toplam satır
tabLinesAddednumberTAB tamamlamalarıyla eklenen satırlar
tabLinesDeletednumberTAB tamamlamalarıyla silinen satırlar
composerLinesAddednumberComposer ile eklenen satırlar
composerLinesDeletednumberComposer ile silinen satırlar
nonAiLinesAddednumbernullYapay zekâ kaynaklı olmayan eklenen satırlar
nonAiLinesDeletednumbernullYapay zekâ kaynaklı olmayan silinen satırlar
messagestringnullCommit mesajı
commitTsstringnullCommit zaman damgası (ISO biçimi)
createdAtstringAlım zaman damgası (ISO biçimi)

Ö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: analytics istemcisini ayır"
      "commitTs": "2025-07-30T14:12:03.000Z",
      "createdAt": "2025-07-30T14:12:30.000Z"
    }
  ],
  "totalCount": 42,
  "page": 1,
  "pageSize": 100
}

Örnek İstekler

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

AI Commit Metrics’i indir (CSV, akış)

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

Yanıt

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

CSV Sütunları

SütunTürAçıklama
commit_hashstringGit commit özeti (hash)
user_idstringKodlanmış kullanıcı kimliği
user_emailstringKullanıcının e‑posta adresi
repo_namestringDepo adı
branch_namestringDal adı
is_primary_branchbooleanBirincil dal olup olmadığı
total_lines_addednumberCommit’te eklenen toplam satır
total_lines_deletednumberCommit’te silinen toplam satır
tab_lines_addednumberTAB tamamlamalarıyla eklenen satır
tab_lines_deletednumberTAB tamamlamalarıyla silinen satır
composer_lines_addednumberComposer ile eklenen satır
composer_lines_deletednumberComposer ile silinen satır
non_ai_lines_addednumberYapay zekâ dışı eklenen satır
non_ai_lines_deletednumberYapay zekâ dışı silinen satır
messagestringCommit mesajı
commit_tsstringCommit zaman damgası (ISO biçimi)
created_atstringAlım zaman damgası (ISO biçimi)

Ö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: analytics istemcisini ayır",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,"Hata işleme ekle",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şikliği Metriğini Al (JSON, sayfalı)

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

Yanıt

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

AiCodeChangeMetric Alanları

AlanTürAçıklama
changeIdstringDeğişikliğe ait deterministik kimlik
userIdstringKodlanmış kullanıcı kimliği (ör. 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İçeri aktarma zaman damgası (ISO biçimi)
metadataArrayDosya üst verileri (gizlilik modunda fileName 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",
        { "fileName": "src/analytics/report.ts", "fileExtension": "ts", "linesAdded": 12, "linesDeleted": 3 },
        { "fileName": "src/analytics/ui.tsx", "fileExtension": "tsx", "linesAdded": 6, "linesDeleted": 1 }
        { "fileName": "src/analytics/ui.tsx", "fileExtension": "tsx", "linesAdded": 6, "linesDeleted": 1 }
      ]
    }
  ],
  "totalCount": 128,
  "page": 1,
  "pageSize": 200
}

Örnek İstekler

Basit istek:
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?startDate=14d&endDate=now&page=1&pageSize=200" \
  -u API_ANAHTARIN:
Kullanıcıya göre filtrele (kodlanmış kimlik):
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=user_3k9x8q..." \
  -u API_ANAHTARIN:
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şikliği Metriklerini İndir (CSV, akış)

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

Yanıt

Başlıklar:
  • Content-Type: text/csv; charset=utf-8

CSV Sütunları

SütunTürAçıklama
change_idstringDeğişiklik için deterministik kimlik
user_idstringKodlanmış kullanıcı kimliği
user_emailstringKullanıcının e-posta adresi
sourcestringAI değişikliğinin kaynağı (TAB veya COMPOSER)
modelstringKullanılan AI modeli
total_lines_addednumberEklenen toplam satır sayısı
total_lines_deletednumberSilinen toplam satır sayısı
created_atstringAlım zaman damgası (ISO biçimi)
metadata_jsonstringJSON olarak dizgeleştirilmiş metadata girdileri dizisi

Notlar

  • metadata_json, JSON olarak dizgeleştirilmiş metadata girdileri dizisidir (gizlilik modunda fileName atlanabilir)
  • CSV’yi işlerken tırnak içindeki alanları ayrıştırdığından emin ol

Örnek CSV Çıktısı

change_id,user_id,user_email,kaynak,model,toplam_eklenen_satır,toplam_silinen_satır,oluşturulma_tarihi,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’ler genelinde 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 — sunucu tarafında 10.000 kayıttan oluşan sayfalar halinde akış (stream) olarak iletilir
  • Varsayılan branch çözülemediyse isPrimaryBranch tanımsız olabilir
  • commitTs commit zaman damgasıdır; createdAt sunucularımızda işlenme (ingestion) zamanıdır
  • İstemcide gizlilik modu etkinse bazı alanlar bulunmayabilir

Değişiklik Günlüğü

  • Alfa sürümü: Commit ve değişiklikler için başlangıç uç noktaları. Geri bildirimlere göre yanıt biçimleri değişebilir
I