Admin API, ekip üye bilgileri, kullanım metrikleri ve harcama ayrıntıları da dahil olmak üzere ekibinin verilerine programatik olarak erişmeni sağlar. Özel panolar ve izleme araçları oluşturabilir ya da mevcut iş akışlarına entegre edebilirsin.
API ilk sürümünde. Geri bildirimlere göre yetenekleri 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ğrulaması gerektirir. API anahtarlarını yalnızca ekip yöneticileri oluşturup yönetebilir. API anahtarları organizasyona bağlıdır, tüm yöneticiler tarafından görüntülenebilir ve ilk oluşturan kişinin hesap durumundan etkilenmez.

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örüntülenmeyecek
Biçim: key_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

API Anahtarını Kullanma

API anahtarını basic authentication’da kullanıcı adı olarak kullan: Basic auth ile 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

Takım Üyelerini Getir

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

Yanıt

Takım üyesi nesnelerinden oluşan bir dizi döner:
{
  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 Getir

Belirli bir tarih aralığında takımın için ayrıntılı günlük kullanım metriklerini getirir. Kod düzenlemeleri, AI 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 yap.

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
totalAppliesApply işlemleri
totalAcceptsKabul edilen öneri sayısı
totalRejectsReddedilen öneri sayısı
totalTabsShownGösterilen tab tamamlama sayısı
totalTabsAcceptedKabul edilen tab tamamlama sayısı
composerRequestsComposer istekleri
chatRequestsSohbet istekleri
agentRequestsAgent istekleri
cmdkUsagesKomut paleti (Cmd+K) kullanımları
subscriptionIncludedReqsAboneliğe dahil istekler
apiKeyReqsAPI anahtarıyla yapılan istekler
usageBasedReqsKullanım bazlı (pay-per-use) istekler
bugbotUsagesHata tespiti kullanımları
mostUsedModelEn sık kullanılan AI modeli
applyMostUsedExtensionApply için en çok kullanılan dosya uzantısı
tabMostUsedExtensionTab 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,
      "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 Al

Geçerli takvim ayına ait harcama bilgilerini arama, sıralama ve sayfalama ile getirir.
POST /teams/spend

İstek Gövdesi

ParameterTypeGerekliAçı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şlar). 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Üyenin adı
emailÜyenin e-postası
roleTakımdaki rol
hardLimitOverrideDollarsÖzel harcama limiti geçersiz kılma değeri
subscriptionCycleStartAbonelik döngüsü başlangıcı (epoch milisaniye)
totalMembersToplam takım üyesi
totalPagesToplam sayfa

Ö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 '{}'
Sayfalamayla belirli bir kullanıcıyı ara:
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 Olayı Verilerini Al

Ekibin için ayrıntılı kullanım olaylarını kapsamlı filtreleme, arama ve sayfalama seçenekleriyle getir. Bu uç nokta, tekil API çağrıları, model kullanımı, token tüketimi ve maliyetlere dair ayrıntılı içgörüler sağlar.
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ı ID’sine 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: {
    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 toplam kullanım olayı sayısı
paginationSonuçlarda gezinmek için sayfalama metaverisi
timestampOlay zaman damgası (epoch milisaniye)
modelİstek için kullanılan yapay zeka modeli
kindKullanım kategorisi (örn. “Usage-based”, “Included in Business”)
maxModeMax modun etkin olup olmadığı
requestsCostsİstek birimi cinsinden maliyet
isTokenBasedCallOlay kullanım bazlı ücretlendirildiğinde true
tokenUsageAyrıntılı token tüketimi (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 dayalı",
      "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 dayalı",
      "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 sayfalamayla 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
  }'
Özel sayfalamayla belirli bir kullanıcının 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
  }'

Repo Engelleme Listeleri API

Takımın için depolar ve desenler ekleyerek dosya veya dizinlerin dizine eklenmesini ya da bağlam olarak kullanılmasını engelle.

Takım Repo Engelleme Listelerini Getir

Takımın için yapılandırılmış tüm repo engelleme listelerini getir.
GET /settings/repo-blocklists/repos
Yanıt
Repo engelleme listesi nesnelerinden oluşan bir dizi döner:
{
  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 Engelleme Listelerini Ekle/Güncelle (Upsert)

Sağlanan repolar için mevcut repo engelleme listelerini değiştir. Not: Bu uç nokta yalnızca sağlanan repoların desenlerini üzerine yazar. Diğer tüm repolar etkilenmez.
POST /settings/repo-blocklists/repos/upsert
İstek Gövdesi
ParametreTürGerekliAçıklama
reposarrayEvetDepo engel listesi nesnelerinin dizisi
Her depo nesnesi şunları içermelidir:
AlanTürGerekliAçıklama
urlstringEvetEngel listesine eklenecek depo URL’si
patternsstring[]EvetEngellenecek dosya desenlerinin dizisi (glob desenleri desteklenir)
Yanıt
Güncellenmiş depo engel listelerini 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 Engel Listesini Sil

Belirli bir depoyu engel listesinden kaldır.
DELETE /settings/repo-blocklists/repos/:repoId
Parametreler
ParametreTürGerekliAçıklama
repoIdstringEvetSilinecek depo engel listesinin kimliği
Yanıt
Başarılı silme işleminde 204 No Content döner.
Örnek İstek
curl -X DELETE https://api.cursor.com/settings/repo-blocklists/repos/repo_123 \
  -u YOUR_API_KEY:

Desen Örnekleri

Yaygın engel listesi 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