Ekibinin depoları için yapay zekâ kaynaklı kod analizlerine eriş. Buna commit başına yapay zekâ kullanımı ve ayrıntı düzeyinde kabul edilen yapay zekâ değişiklikleri dahildir.
API ilk sürümünde. Geri bildirimlere göre yetenekleri genişletiyoruz — hangi endpoint’lere ihtiyacın olduğunu bize söyle!
  • Kapsam: Yalnızca kurumsal ekipler için
  • Durum: Alfa (yanıt şekilleri 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ı

  • Takım ve uç nokta başına dakikada 5 istek

Sorgu Parametreleri

Aşağıdaki tüm uç noktalar, aynı sorgu parametrelerini sorgu dizesi üzerinden kabul eder:
ParametreTürGerekliAçıklama
startDatestringdateHayırISO tarih dizesi, “now” ifadesi veya “7d” gibi göreli günler (şu an - 7 gün anlamına gelir). Varsayılan: şu an - 7 gün
endDatestringdateHayırISO tarih dizesi, “now” ifadesi 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ış ID (örn. user_abc123…) veya sayısal ID (örn. 42) kabul eder
Yanıtlar, userId değerini user_ önekli kodlanmış harici bir ID olarak döndürür. Bu, API tüketimi 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 etkinse bazı meta veriler (fileName gibi) dahil edilmeyebilir
  • Branch bilgisi: Mevcut branch repo’nun varsayılan branch’iyle aynıysa isPrimaryBranch true olur; repo bilgisi yoksa undefined olabilir
Commit’lerin ve değişikliklerin nasıl tespit edilip raporlandığını anlamak için o dosyayı inceleyebilirsin.

Uç Noktalar

AI Commit Metriklerini Getir (JSON, sayfalı)

Satırları TAB, COMPOSER ve AI dışı olarak atayan commit başına toplu metrikleri getir.
GET /analytics/ai-code/commits

Yanıt

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

AiCommitMetric Alanları

FieldTypeDescription
commitHashstringGit commit hash’i
userIdstringEncode edilmiş 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ır sayısı
tabLinesDeletednumberTAB tamamlamalarıyla silinen satır sayısı
composerLinesAddednumberComposer ile eklenen satır sayısı
composerLinesDeletednumberComposer ile silinen satır sayısı
nonAiLinesAddednumbernullAI dışı eklenen satır sayısı
nonAiLinesDeletednumbernullAI dışı silinen satır sayısı
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

Basit 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, akış)

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

Yanıt

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

CSV Sütunları

SütunTürAçıklama
commit_hashstringGit commit karması
user_idstringKodlanmış kullanıcı kimliği
user_emailstringKullanıcının e-posta adresi
repo_namestringDepo adı
branch_namestringDal adı
is_primary_branchbooleanBunun birincil 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ırlar
tab_lines_deletednumberTAB tamamlamalarıyla silinen satırlar
composer_lines_addednumberComposer ile eklenen satırlar
composer_lines_deletednumberComposer ile silinen satırlar
non_ai_lines_addednumberYapay zekâ dışı eklenen satırlar
non_ai_lines_deletednumberYapay zekâ dışı silinen satırlar
messagestringCommit mesajı
commit_tsstringCommit zaman damgası (ISO biçimi)
created_atstringİçeri alma 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: 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şikliği Metriklerini Al (JSON, sayfalı)

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

Yanıt

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

AiCodeChangeMetric Alanları

AlanTürAçıklama
changeIdstringDeğişiklik için 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 alma zaman damgası (ISO biçimi)
metadataArrayDosya üstverisi (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",
      "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

Basit 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şikliği Metriklerini İndir (CSV, akış)

Büyük veri çekimleri 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ı

ColumnTypeDescription
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
total_lines_deletednumberSilinen toplam satır
created_atstringAlma zaman damgası (ISO biçimi)
metadata_jsonstringJSON olarak dizgeleştirilmiş metadata girdi dizisi

Notlar

  • metadata_json, metadata girdilerinin JSON olarak dizgeleştirilmiş bir dizisidir (gizlilik modunda fileName atlanabilir)
  • CSV tüketirken, tırnak içindeki alanları ayrıştırdığından emin ol

Ö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 uç noktalar genelinde tek bir kullanıcıyı hızlıca filtrelemek için user parametresini kullan
  • Büyük veri çıkarımları için CSV uç noktalarını tercih et — sunucu tarafında 10.000 kayıttan oluşan sayfalar halinde akış sağlarlar
  • Varsayılan dal çözülemediyse isPrimaryBranch tanımsız olabilir
  • commitTs commit zaman damgasıdır; createdAt sunucularımızda alınma (ingestion) zamanıdır
  • İstemcide gizlilik modu etkinleştirildiğinde bazı alanlar olmayabilir

Değişiklik Günlüğü

  • Alfa sürümü: Commit’ler ve değişiklikler için ilk uç noktalar. Yanıt biçimleri geri bildirimlere göre evrilebilir