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

Kimlik Doğrulama

Tüm API istekleri, bir API anahtarı kullanılarak kimlik doğrulaması 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 kişinin 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 düğmesine tıkla
  3. Anahtarına açıklayıcı bir ad ver (ör. “Usage Dashboard Integration”)
  4. Oluşturulan anahtarı hemen kopyala — tekrar görüntüleyemezsin
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 üstbilgisini 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

Takım Üyelerini Al

Tüm takım üyelerini ve ayrıntılarını getir.
GET /teams/members

Yanıt

Takım ü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": "member"
    },
    {
      "name": "Sam",
      "email": "admin@company.com",
      "role": "owner"
    }
  ]
}

Örnek İstek

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

Günlük Kullanım Verilerini Al

Bir tarih aralığı içinde ekibin için ayrıntılı günlük kullanım metriklerini getir. Kod düzenlemeleri, yapay zekâ 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ü aşamaz. 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ı

AlanAçıklama
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
totalAppliesUygulama işlemleri
totalAcceptsKabul edilen öneriler
totalRejectsReddedilen öneriler
totalTabsShownGösterilen sekme tamamlama sayısı
totalTabsAcceptedKabul edilen sekme tamamlama sayısı
composerRequestsComposer istekleri
chatRequestsChat istekleri
agentRequestsAgent istekleri
cmdkUsagesKomut paleti (Cmd+K) kullanımları
subscriptionIncludedReqsAbonelik kapsamında yapılan istekler
apiKeyReqsAPI anahtarı ile yapılan istekler
usageBasedReqsKullanım başına ücretlendirilen istekler
bugbotUsagesHata tespiti kullanımları
mostUsedModelEn sık kullanılan AI modeli
applyMostUsedExtensionUygulama işlemlerinde en çok kullanılan dosya uzantısı
tabMostUsedExtensionSekmelerde 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,
      "mostUsedModel": "gpt-4",
      "applyMostUsedExtension": ".tsx",
      "tabMostUsedExtension": ".ts",
      "clientVersion": "0.25.1",
      "email": "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,
      "mostUsedModel": "claude-3-opus",
      "applyMostUsedExtension": ".py",
      "tabMostUsedExtension": ".py",
      "clientVersion": "0.25.1",
      "email": "developer@company.com"
    }
  ],
  "period": {
    "startDate": 1710720000000,
    "endDate": 1710892800000
  }
}

Örnek İstek

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

Harcama Verilerini Getir

Arama, sıralama ve sayfalama ile içinde bulunduğun takvim ayına ait 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 (cent cinsinden)
fastPremiumRequestsHızlı premium model istekleri
nameÜyenin adı
emailÜyenin e-postası
roleEkip rolü
hardLimitOverrideDollarsÖzel harcama limiti geçersiz kılma (dolar)
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 İstekler

Temel harcama verileri:
curl -X POST https://api.cursor.com/teams/spend \
  -u YOUR_API_KEY: \
  -H "Content-Type: application/json" \
  -d '{}'
Sayfalama ile belirli bir kullanıcıyı arama:
curl -X POST https://api.cursor.com/teams/spend \
  -u YOUR_API_KEY: \
  -H "Content-Type: application/json" \
  -d '{
    "searchTerm": "alex@company.com",
    "page": 2,
    "pageSize": 25
  }'

Kullanım Olayları Verilerini Al

Kapsamlı filtreleme, arama ve sayfalama seçenekleriyle ekibin için 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 ayrıntılı içgörüler sunar.
POST /teams/filtered-usage-events

İstek Gövdesi

ParametreTürGerekliAçı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şlayarak). 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: {
    timestamp: string;
    model: string;
    kind: string;
    maxMode: boolean;
    requestsCosts: number;
    isTokenBasedCall: boolean;
    tokenUsage?: {
      inputTokens: number;
      outputTokens: number;
      cacheWriteTokens: number;
      cacheReadTokens: number;
      totalCents: number;
    };
    isFreeBugbot: boolean;
    userEmail: string;
  }[];
  period: {
    startDate: number;
    endDate: number;
  };
}

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

AlanAçıklama
totalUsageEventsCountSorguyla eşleşen kullanım olaylarının toplam sayısı
paginationSonuçlarda gezinmek için sayfalama üstverisi
timestampOlay zaman damgası (epoch milisaniye)
modelİstek için kullanılan yapay zekâ modeli
kindKullanım kategorisi (örn. “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 ücretlendirme",
      "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 ücretlendirme",
      "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 planına dahil",
      "maxMode": true,
      "requestsCosts": 1.4,
      "isTokenBasedCall": false,
      "isFreeBugbot": false,
      "userEmail": "admin@company.com"
    }
  ],
  "period": {
    "startDate": 1748411762359,
    "endDate": 1751003762359
  }
}

Örnek İstekler

Varsayılan sayfalama ile tüm kullanım olaylarını 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 "Content-Type: application/json" \
  -d '{
    "startDate": 1748411762359,
    "endDate": 1751003762359,
    "email": "developer@company.com",
    "page": 1,
    "pageSize": 25
  }'
Belirli bir kullanıcı için özel sayfalama ile kullanım olaylarını getir:
curl -X POST https://api.cursor.com/teams/filtered-usage-events \
  -u YOUR_API_KEY: \
  -H "Content-Type: application/json" \
  -d '{
    "userId": 12345,
    "page": 2,
    "pageSize": 50
  }'

Kullanıcı Harcama Limitini Ayarla

Bireysel ekip üyeleri için harcama limitleri belirle. Bu sayede ekibindeki her kullanıcının AI kullanımı için ne kadar harcama yapabileceğ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 tamsayı, ondalık kabul edilmez).
  • Kullanıcının zaten ekibinin bir üyesi olması gerekir
  • Yalnızca tamsayı değerler kabul edilir (ondalık tutarlar kabul edilmez)
  • spendLimitDollars değerini 0 olarak ayarlamak limiti $0 yapar

Yanıt

Başarı ya da hata durumunu belirten standart bir yanıt döndürür:
{
  outcome: 'success' | 'error';
  message: string;
}

Örnek Yanıtlar

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

Örnek İstekler

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

Repo Blocklists API

Takımının dosya veya dizinlerinin indekslenmesini ya da bağlam olarak kullanılmasını engellemek için depolar ve örüntüler ekle.

Takım Depo Engelleme Listelerini Getir

Takımın için yapılandırılmış tüm depo engelleme listelerini getir.
GET /settings/repo-blocklists/repos
Yanıt
Repository blocklist nesnelerinden oluşan bir dizi 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 YOUR_API_KEY:

Repo Blocklist’lerini Upsert Et

Sağlanan repolar için mevcut repo blocklist’lerini değiştirir. Not: Bu endpoint yalnızca sağlanan repoların pattern’lerini (kalıplarını) günceller/üzerine yazar. Diğer repolar etkilenmez.
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 engelleme listelerini döndürür:
{
  repos: {
    id: string;
    url: string;
    patterns: string[];
  }[];
}
Örnek istek
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": ["*"]
      }
    ]
  }'

Repo Engelleme Listesini Sil

Engelleme listesinden belirli bir depoyu kaldır.
DELETE /settings/repo-blocklists/repos/:repoId
Parametreler
ParametreTürGerekliAçıklama
repoIdstringEvetSilinecek depo engelleme listesinin 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:

Desen Örnekleri

Yaygın blocklist desenleri:
  • * - 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