Admin API, üye bilgileri, kullanım metrikleri ve harcama detayları dahil olmak üzere ekibinin verilerine programatik olarak erişmeni sağlar. Özel panolar, izleme araçları oluştur ya da mevcut iş akışlarınla entegre et.
API ilk sürümünde. Yetenekleri geri bildirimlere göre genişletiyoruz — hangi endpoint’lere ihtiyacın olduğunu bize söyle!

Kimlik doğrulama

Tüm API istekleri bir API anahtarıyla kimlik doğrulamayı gerektirir. API anahtarlarını yalnızca ekip yöneticileri oluşturabilir ve yönetebilir. API anahtarları kuruluşa bağlıdır, tüm yöneticiler tarafından görüntülenebilir ve ilk oluşturanın hesap durumundan etkilenmez.

Bir API Anahtarı Oluşturma

  1. cursor.com/dashboardSettings sekmesi → Cursor Admin API Keys bölümüne git
  2. Create New API Key’e tıkla
  3. Anahtarına açıklayıcı bir ad ver (ör. “Usage Dashboard Integration”)
  4. Oluşturulan anahtarı hemen kopyala — bir daha gösterilmeyecek
Biçim: key_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

API Anahtarını Kullanma

API anahtarını temel kimlik doğrulamada kullanıcı adı olarak kullan: Temel kimlik doğrulamayla curl kullanma:
curl https://api.cursor.com/{route} -u API_KEY:
Ya da Authorization başlığını doğrudan ayarla:
Authorization: Basic {base64_encode('API_KEY:')}

Temel URL

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

Uç Noktalar

Ekip Üyelerini Getir

Tüm ekip üyelerini ve ayrıntılarını al.
GET /teams/members

Yanıt

Ekip üyesi nesnelerinden oluşan bir dizi döndürür:
{
  teamMembers: {
    name: string;
    email: string;
    role: 'owner' | 'member' | 'free-owner';
  }[];
}

Örnek Yanıt

{
  "teamMembers": [
    {
      "name": "Alex",
      "email": "developer@company.com",
      "role": "üye"
    },
    {
      "name": "Sam",
      "email": "admin@company.com",
      "role": "sahip"
    }
  ]
}

Örnek İstek

curl -X GET https://api.cursor.com/teams/members \
  -u API_ANAHTARIN:

Günlük Kullanım Verilerini Al

Belirli bir tarih aralığında ekibin için ayrıntılı günlük kullanım metriklerini getir. Kod düzenlemeleri, yapay zeka yardımı kullanımı ve kabul oranları hakkında içgörüler sunar.
POST /teams/daily-usage-data

İstek Gövdesi

ParametreTürGerekliAçıklama
startDatenumberEvetEpoch milisaniye cinsinden başlangıç tarihi
endDatenumberEvetEpoch milisaniye cinsinden bitiş tarihi
Tarih aralığı 90 günü geçemez. Daha uzun dönemler için birden fazla istek gönder.

Yanıt

{
  data: {
    date: number;
    isActive: boolean;
    totalLinesAdded: number;
    totalLinesDeleted: number;
    acceptedLinesAdded: number;
    acceptedLinesDeleted: number;
    totalApplies: number;
    totalAccepts: number;
    totalRejects: number;
    totalTabsShown: number;
    totalTabsAccepted: number;
    composerRequests: number;
    chatRequests: number;
    agentRequests: number;
    cmdkUsages: number;
    subscriptionIncludedReqs: number;
    apiKeyReqs: number;
    usageBasedReqs: number;
    bugbotUsages: number;
    mostUsedModel: string;
    applyMostUsedExtension?: string;
    tabMostUsedExtension?: string;
    clientVersion?: string;
    email?: string;
  }[];
  period: {
    startDate: number;
    endDate: number;
  };
}

Yanıt Alanları

FieldDescription
dateEpoch milisaniye cinsinden tarih
isActiveKullanıcı bu gün aktif mi
totalLinesAddedEklenen kod satırı
totalLinesDeletedSilinen kod satırı
acceptedLinesAddedKabul edilen AI önerilerinden eklenen satır
acceptedLinesDeletedKabul edilen AI önerilerinden silinen satır
totalAppliesApply işlemleri
totalAcceptsKabul edilen öneriler
totalRejectsReddedilen öneriler
totalTabsShownGösterilen sekme tamamlama sayısı
totalTabsAcceptedKabul edilen sekme tamamlama sayısı
composerRequestsComposer istekleri
chatRequestsSohbet istekleri
agentRequestsAgent istekleri
cmdkUsagesKomut paleti (Cmd+K) kullanımı
subscriptionIncludedReqsAbonelik kapsamındaki istekler
apiKeyReqsAPI anahtarı istekleri
usageBasedReqsKullanım başına ödeme istekleri
bugbotUsagesHata bulma kullanımları
mostUsedModelEn sık kullanılan yapay zeka modeli
applyMostUsedExtensionApply için en çok kullanılan dosya uzantısı
tabMostUsedExtensionSekme için en çok kullanılan dosya uzantısı
clientVersionCursor sürümü
emailKullanıcı e-postası

Örnek Yanıt

{
  "data": [
    {
      "date": 1710720000000,
      "isActive": true,
      "totalLinesAdded": 1543,
      "totalLinesDeleted": 892,
      "acceptedLinesAdded": 1102,
      "acceptedLinesDeleted": 645,
      "totalApplies": 87,
      "totalAccepts": 73,
      "totalRejects": 14,
      "totalTabsShown": 342,
      "totalTabsAccepted": 289,
      "composerRequests": 45,
      "chatRequests": 128,
      "agentRequests": 12,
      "cmdkUsages": 67,
      "subscriptionIncludedReqs": 180,
      "apiKeyReqs": 0,
      "usageBasedReqs": 5,
      "bugbotUsages": 3,
      "enCokKullanilanModel": "gpt-4",
      "applyEnCokKullanilanUzanti": ".tsx",
      "tabEnCokKullanilanUzanti": ".ts",
      "istemciSurumu": "0.25.1",
      "ePosta": "developer@company.com"
    },
    {
      "date": 1710806400000,
      "isActive": true,
      "totalLinesAdded": 2104,
      "totalLinesDeleted": 1203,
      "acceptedLinesAdded": 1876,
      "acceptedLinesDeleted": 987,
      "totalApplies": 102,
      "totalAccepts": 91,
      "totalRejects": 11,
      "totalTabsShown": 456,
      "totalTabsAccepted": 398,
      "composerRequests": 67,
      "chatRequests": 156,
      "agentRequests": 23,
      "cmdkUsages": 89,
      "subscriptionIncludedReqs": 320,
      "apiKeyReqs": 15,
      "usageBasedReqs": 0,
      "bugbotUsages": 5,
      "enCokKullanilanModel": "claude-3-opus",
      "applyEnCokKullanilanUzanti": ".py",
      "tabEnCokKullanilanUzanti": ".py",
      "istemciSurumu": "0.25.1",
      "ePosta": "developer@company.com"
    }
  ],
  "period": {
    "startDate": 1710720000000,
    "endDate": 1710892800000
  }
}

Örnek İstek

curl -X POST https://api.cursor.com/teams/daily-usage-data \
  -u API_ANAHTARIN: \
  -H "Content-Type: application/json" \
  -d '{
    "startDate": 1710720000000,
    "endDate": 1710892800000
  }'

Harcama Verilerini Al

Geçerli takvim ayı için arama, sıralama ve sayfalama ile harcama bilgilerini getir.
POST /teams/spend

İstek Gövdesi

ParametreTürGerekliAçıklama
searchTermstringHayırKullanıcı adları ve e-postalarda ara
sortBystringHayırŞuna göre sırala: amount, date, user. Varsayılan: date
sortDirectionstringHayırSıralama yönü: asc, desc. Varsayılan: desc
pagenumberHayırSayfa numarası (1’den başlayarak). Varsayılan: 1
pageSizenumberHayırSayfa başına sonuç sayısı

Yanıt

{
  teamMemberSpend: {
    spendCents: number;
    fastPremiumRequests: number;
    name: string;
    email: string;
    role: 'owner' | 'member' | 'free-owner';
    hardLimitOverrideDollars: number;
  }[];
  subscriptionCycleStart: number;
  totalMembers: number;
  totalPages: number;
}

Yanıt Alanları

AlanAçıklama
spendCentsToplam harcama (sent)
fastPremiumRequestsHızlı premium model istekleri
nameÜye adı
emailÜye e-postası
roleEkipteki rol
hardLimitOverrideDollarsÖzel harcama sınırı geçersiz kılma
subscriptionCycleStartAbonelik döngüsü başlangıcı (epoch milisaniye)
totalMembersToplam ekip üyesi sayısı
totalPagesToplam sayfa sayısı

Örnek Yanıt

{
  "teamMemberSpend": [
    {
      "spendCents": 2450,
      "fastPremiumRequests": 1250,
      "name": "Alex",
      "email": "developer@company.com",
      "role": "member",
      "hardLimitOverrideDollars": 100
    },
    {
      "spendCents": 1875,
      "fastPremiumRequests": 980,
      "name": "Sam",
      "email": "admin@company.com",
      "role": "owner",
      "hardLimitOverrideDollars": 0
    },
  ],
  "subscriptionCycleStart": 1708992000000,
  "totalMembers": 15,
  "totalPages": 1
}

Örnek istekler

Temel harcama verileri:
curl -X POST https://api.cursor.com/teams/spend \
  -u API_ANAHTARIN: \
  -H "İçerik Türü: application/json" \
  -d '{}'
Belirli bir kullanıcıyı sayfalamayla ara:
curl -X POST https://api.cursor.com/teams/spend \
  -u API_ANAHTARIN: \
  -H "İçerik-Tipi: application/json" \
  -d '{
    "searchTerm": "alex@company.com",
    "page": 2,
    "pageSize": 25
  }'

Kullanım Olayları Verilerini Al

Takımın için kapsamlı filtreleme, arama ve sayfalama seçenekleriyle ayrıntılı kullanım olaylarını getir. Bu uç nokta, tekil API çağrıları, model kullanımı, token tüketimi ve maliyetler hakkında daha ayrıntılı içgörüler sunar.
POST /teams/filtered-usage-events

İstek Gövdesi

ParametreTipGerekliAçıklama
startDatenumberHayırEpoch milisaniye cinsinden başlangıç tarihi
endDatenumberHayırEpoch milisaniye cinsinden bitiş tarihi
userIdnumberHayırBelirli kullanıcı kimliğine göre filtrele
pagenumberHayırSayfa numarası (1’den başlar). Varsayılan: 1
pageSizenumberHayırSayfa başına sonuç sayısı. Varsayılan: 10
emailstringHayırKullanıcı e-posta adresine göre filtrele

Yanıt

{
  totalUsageEventsCount: number;
  pagination: {
    numPages: number;
    currentPage: number;
    pageSize: number;
    hasNextPage: boolean;
    hasPreviousPage: boolean;
  };
  usageEvents: {
    zamanDamgasi: string;
    model: string;
    tur: string;
    maxMode: boolean;
    istekMaliyetleri: number;
    isTokenBasedCall: boolean;
    belirteçKullanimi?: {
      girisBelirtecleri: number;
      cikisBelirtecleri: number;
      önbellekYazmaBelirtecleri: number;
      önbellekOkumaBelirtecleri: number;
      toplamSent: number;
    };
    isFreeBugbot: boolean;
    kullaniciEpostasi: string;
  }[];
  period: {
    baslangicTarihi: number;
    bitisTarihi: number;
  };
}

Yanıt Alanlarının Açıklaması

AlanAçıklama
totalUsageEventsCountSorguyla eşleşen kullanım olaylarının toplam sayısı
paginationSonuçlar arasında gezinmeye yönelik sayfalama üst verisi
timestampOlay zaman damgası (epoch milisaniyeler)
modelİstek için kullanılan yapay zeka modeli
kindKullanım kategorisi (ör. “Usage-based”, “Included in Business”)
maxModeMaks modun etkin olup olmadığı
requestsCostsİstek birimleri cinsinden maliyet
isTokenBasedCallOlay kullanım bazlı olarak ücretlendirildiğinde true
tokenUsageAyrıntılı token kullanımı (isTokenBasedCall true olduğunda mevcut)
isFreeBugbotBunun ücretsiz bugbot kullanımı olup olmadığı
userEmailİsteği yapan kullanıcının e-posta adresi
periodSorgulanan verinin tarih aralığı

Örnek Yanıt

{
  "totalUsageEventsCount": 113,
  "pagination": {
    "numPages": 12,
    "currentPage": 1,
    "pageSize": 10,
    "hasNextPage": true,
    "hasPreviousPage": false
  },
  "usageEvents": [
    {
      "timestamp": "1750979225854",
      "model": "claude-4-opus",
      "kind": "Kullanıma göre",
      "maxMode": true,
      "requestsCosts": 5,
      "isTokenBasedCall": true,
      "tokenUsage": {
        "inputTokens": 126,
        "outputTokens": 450,
        "cacheWriteTokens": 6112,
        "cacheReadTokens": 11964,
        "totalCents": 20.18232
      },
      "isFreeBugbot": false,
      "userEmail": "developer@company.com"
    },
    {
      "timestamp": "1750979173824",
      "model": "claude-4-opus",
      "kind": "Kullanıma göre",
      "maxMode": true,
      "requestsCosts": 10,
      "isTokenBasedCall": true,
      "tokenUsage": {
        "inputTokens": 5805,
        "outputTokens": 311,
        "cacheWriteTokens": 11964,
        "cacheReadTokens": 0,
        "totalCents": 40.16699999999999
      },
      "isFreeBugbot": false,
      "userEmail": "developer@company.com"
    },
    {
      "timestamp": "1750978339901",
      "model": "claude-4-sonnet-thinking",
      "kind": "Business’a dahil",
      "maxMode": true,
      "requestsCosts": 1.4,
      "isTokenBasedCall": false,
      "isFreeBugbot": false
      "userEmail": "admin@company.com"
    }
  ],
  "period": {
    "startDate": 1748411762359,
    "endDate": 1751003762359
  }
}

Örnek İstekler

Varsayılan sayfalamayla tüm kullanım etkinliklerini getir:
curl -X POST https://api.cursor.com/teams/filtered-usage-events \
  -u YOUR_API_KEY: \
  -H "Content-Type: application/json" \
  -d '{}'
Tarih aralığına ve belirli bir kullanıcıya göre filtrele:
curl -X POST https://api.cursor.com/teams/filtered-usage-events \
  -u YOUR_API_KEY: \
  -H "İçerik-Türü: application/json" \
  -d '{
    "startDate": 1748411762359,
    "endDate": 1751003762359,
    "email": "developer@company.com",
    "page": 1,
    "pageSize": 25
  }'
Özel sayfalama ile belirli bir kullanıcının kullanım etkinliklerini al:
curl -X POST https://api.cursor.com/teams/filtered-usage-events \
  -u API_ANAHTARIN: \
  -H "İçerik Türü: application/json" \
  -d '{
    "userId": 12345,
    "page": 2,
    "pageSize": 50
  }'

Kullanıcı Harcama Limitini Ayarla

Tek tek ekip üyeleri için harcama limitleri belirle. Böylece ekibindeki her kullanıcının AI kullanımı için ne kadar harcayabileceğini kontrol edebilirsin.
POST /teams/user-spend-limit
Oran sınırlaması: ekip başına dakikada 60 istek

İstek Gövdesi

ParametreTürGerekliAçıklama
userEmailstringEvetEkip üyesinin e-posta adresi
spendLimitDollarsnumberEvetDolar cinsinden harcama limiti (yalnızca tam sayı, ondalık yok).
  • Kullanıcı zaten senin ekibinin bir üyesi olmalı
  • Yalnızca tam sayı değerleri kabul edilir (ondalık tutar kabul edilmez)
  • spendLimitDollars değerini 0 olarak ayarlamak limiti $0 yapar

Yanıt

Başarı ya da başarısızlığı belirten standart bir yanıt döndürür:
{
  outcome: 'başarılı' | 'hata';
  message: string;
}

Örnek Yanıtlar

Limit başarıyla belirlendi:
{
  "outcome": "başarılı",
  "message": "developer@company.com kullanıcısının harcama limiti $100 olarak ayarlandı"
}
Hata yanıtı:
{
  "outcome": "error",
  "message": "Geçersiz e-posta formatı"
}

Örnek İstekler

Harcama limiti belirle:
curl -X POST https://api.cursor.com/teams/user-spend-limit \
  -u API_ANAHTARIN: \
  -H "Content-Type: application/json" \
  -d '{
    "userEmail": "developer@company.com",
    "spendLimitDollars": 100
  }'

Repo Blocklists API

Takımın için dosya veya dizinlerin dizine alınmasını ya da bağlam olarak kullanılmasını önlemek üzere depolar ve eşleşme kalıpları ekle.

Takım Depo Engelleme Listelerini Al

Takımın için yapılandırılmış tüm depo engelleme listelerini al.
GET /settings/repo-blocklists/repos
Yanıt
Bir dizi depo engelleme listesi (blocklist) nesnesi döndürür:
{
  repos: {
    id: string;
    url: string;
    patterns: string[];
  }[];
}
Örnek Yanıt
{
  "repos": [
    {
      "id": "repo_123",
      "url": "https://github.com/company/sensitive-repo",
      "patterns": ["*.env", "config/*", "secrets/**"]
    },
    {
      "id": "repo_456",
      "url": "https://github.com/company/internal-tools",
      "patterns": ["*"]
    }
  ]
}
Örnek İstek
curl -X GET https://api.cursor.com/settings/repo-blocklists/repos \
  -u API_ANAHTARIN:

Repo Engelleme Listelerini (Blocklist) Yükselt/İçer

Sağlanan repolar için mevcut repo engelleme listelerini (blocklist) yenisiyle değiştir. Not: Bu uç nokta yalnızca sağlanan repoların desenlerini (pattern) geçersiz kılar. Diğer tüm repolar etkilenmeden kalır.
POST /settings/repo-blocklists/repos/upsert
İstek Gövdesi
ParametreTürGerekliAçıklama
reposarrayEvetDepo engel listesi nesnelerinden oluşan dizi
Her depo nesnesi şunları içermelidir:
AlanTürGerekliAçıklama
urlstringEvetEngel listesine eklenecek depo URL’si
patternsstring[]EvetEngellenecek dosya kalıplarının dizisi (glob kalıpları desteklenir)
Yanıt
Güncellenmiş depo engel listelerinin listesini döndürür:
{
  repos: {
    id: string;
    url: string;
    patterns: string[];
  }[];
}
Örnek İstek
curl -X POST https://api.cursor.com/settings/repo-blocklists/repos/upsert \
  -u YOUR_API_KEY: \
  -H "Content-Type: application/json" \
  -d '{
    "repos": [
      {
        "url": "https://github.com/company/sensitive-repo",
        "patterns": ["*.env", "config/*", "secrets/**"]
      },
      {
        "url": "https://github.com/company/internal-tools", 
        "patterns": ["*"]
      }
    ]
  }'

Depo Engelleme Listesinden Kaldır

Engelleme listesinden belirli bir depoyu kaldır.
DELETE /settings/repo-blocklists/repos/:repoId
Parametreler
ParametreTürGerekliAçıklama
repoIdstringEvetSilinecek depo engel listesinin (blocklist) kimliği
Yanıt
Başarıyla silindiğinde 204 No Content döndürür.
Örnek İstek
curl -X DELETE https://api.cursor.com/settings/repo-blocklists/repos/repo_123 \
  -u YOUR_API_KEY:

Kalıp Örnekleri

Yaygın blocklist kalıpları:
  • * - Tüm depoyu engelle
  • *.env - Tüm .env dosyalarını engelle
  • config/* - config dizinindeki tüm dosyaları engelle
  • **/*.secret - Herhangi bir alt dizindeki tüm .secret dosyalarını engelle
  • src/api/keys.ts - Belirli bir dosyayı engelle