Admin API, üye bilgileri, kullanım metrikleri ve harcama detayları dahil olmak üzere takımınızın verilerine programatik olarak erişmenizi sağlar. Özel panolar, izleme araçları oluşturun veya mevcut iş akışlarınızla entegre edin.
API ilk sürümündedir. Geri bildirimlere dayalı olarak yetenekleri genişletiyoruz - hangi endpoint’lere ihtiyacınız olduğunu bize bildirin!

Kimlik Doğrulama

Tüm API istekleri bir API anahtarı kullanarak kimlik doğrulama gerektirir. Yalnızca takım yöneticileri API anahtarları oluşturabilir ve yönetebilir. API anahtarları organizasyona bağlıdır, tüm yöneticiler tarafından görüntülenebilir ve orijinal oluşturucunun hesap durumundan etkilenmez.

API Anahtarı Oluşturma

  1. cursor.com/dashboardSettings sekmesi → Cursor Admin API Keys bölümüne gidin
  2. Create New API Key butonuna tıklayın
  3. Anahtarınıza açıklayıcı bir isim verin (örn., “Usage Dashboard Integration”)
  4. Oluşturulan anahtarı hemen kopyalayın - bir daha göremeyeceksiniz
Format: key_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

API Anahtarınızı Kullanma

API anahtarınızı temel kimlik doğrulamada kullanıcı adı olarak kullanın: curl ile temel kimlik doğrulama kullanımı:
curl https://api.cursor.com/{route} -u API_KEY:
Veya Authorization başlığını doğrudan ayarlayın:
Authorization: Basic {base64_encode('API_KEY:')}

Base URL

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

Endpoints

Takım Üyelerini Getir

Tüm takım üyelerini ve detaylarını alın.
GET /teams/members

Yanıt

Takım üyesi nesnelerinin bir dizisini 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 Getir

Takımınız için bir tarih aralığında detaylı günlük kullanım metriklerini alın. Kod düzenlemeleri, AI yardımı kullanımı ve kabul oranları hakkında bilgiler sağlar.
POST /teams/daily-usage-data

İstek Gövdesi

ParametreTipGerekliAçı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ın.

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ının bu gün aktif olması
totalLinesAddedEklenen kod satırları
totalLinesDeletedSilinen kod satırları
acceptedLinesAddedKabul edilen AI önerilerinden eklenen satırlar
acceptedLinesDeletedKabul edilen AI önerilerinden silinen satırlar
totalAppliesUygulama işlemleri
totalAcceptsKabul edilen öneriler
totalRejectsReddedilen öneriler
totalTabsShownGösterilen tab tamamlamaları
totalTabsAcceptedKabul edilen tab tamamlamaları
composerRequestsComposer istekleri
chatRequestsSohbet istekleri
agentRequestsAgent istekleri
cmdkUsagesKomut paleti (Cmd+K) kullanımları
subscriptionIncludedReqsAbonelik istekleri
apiKeyReqsAPI anahtarı istekleri
usageBasedReqsKullanım başına ödeme istekleri
bugbotUsagesHata tespiti kullanımları
mostUsedModelEn sık kullanılan AI modeli
applyMostUsedExtensionUygulamalar için en çok kullanılan dosya uzantısı
tabMostUsedExtensionTablar 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

Arama, sıralama ve sayfalama ile mevcut takvim ayı için harcama bilgilerini alın.
POST /teams/spend

İstek Gövdesi

ParametreTürGerekliAçıklama
searchTermstringHayırKullanıcı adları ve e-postalarda arama
sortBystringHayırSıralama ölçütü: 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
spendCentsCent cinsinden toplam harcama
fastPremiumRequestsHızlı premium model istekleri
nameÜyenin adı
emailÜyenin e-postası
roleTakım rolü
hardLimitOverrideDollarsÖzel harcama limiti geçersiz kılma
subscriptionCycleStartAbonelik döngüsü başlangıcı (epoch milisaniye)
totalMembersToplam takım ü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 verisi:
curl -X POST https://api.cursor.com/teams/spend \
  -u YOUR_API_KEY: \
  -H "Content-Type: application/json" \
  -d '{}'
Sayfalama ile belirli kullanıcı 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çenekleri ile ekibiniz için detaylı kullanım olaylarını alın. Bu endpoint, bireysel API çağrıları, model kullanımı, token tüketimi ve maliyetler hakkında ayrıntılı bilgiler sağlar.
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ı ID’sine göre filtrele
pagenumberHayırSayfa numarası (1-indeksli). 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;
    kindLabel: 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ı Açıklaması

AlanAçıklama
totalUsageEventsCountSorguyla eşleşen toplam kullanım olayı sayısı
paginationSonuçlarda gezinmek için sayfalama meta verisi
timestampEpoch milisaniye cinsinden olay zaman damgası
modelİstek için kullanılan AI modeli
kindLabelKullanım kategorisi (örn., “Usage-based”, “Included in Business”)
maxModeMax modunun etkin olup olmadığı
requestsCostsİstek birimlerinde maliyet
isTokenBasedCallOlay kullanım tabanlı olay olarak ücretlendirildiğinde true
tokenUsageDetaylı token tüketimi (isTokenBasedCall true olduğunda mevcut)
isFreeBugbotBunun ücretsiz bugbot kullanımı olup olmadığı
userEmailİsteği yapan kullanıcının e-postası
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",
      "kindLabel": "Usage-based",
      "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",
      "kindLabel": "Usage-based",
      "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",
      "kindLabel": "Included in Business",
      "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ı al:
curl -X POST https://api.cursor.com/teams/filtered-usage-events \
  -u YOUR_API_KEY: \
  -H "Content-Type: application/json" \
  -d '{}'
Tarih aralığı ve belirli 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 sayfalama ile belirli bir kullanıcının kullanım olaylarını al:
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

Dosyaların veya dizinlerin indekslenmesini veya takımınız için bağlam olarak kullanılmasını önlemek için depolar ve kullanım desenleri ekleyin.

Takım Repo Engelleme Listelerini Al

Takımınız için yapılandırılmış tüm depo engelleme listelerini alın.
GET /settings/repo-blocklists/repos
Yanıt
Depo engelleme listesi nesnelerinin bir dizisini 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 Engelleme Listelerini Güncelle/Ekle

Sağlanan depolar için mevcut depo engelleme listelerini değiştirin. Not: Bu endpoint yalnızca sağlanan depoların desenlerini üzerine yazacaktır. Diğer tüm depolar etkilenmeyecektir.
POST /settings/repo-blocklists/repos/upsert
İstek Gövdesi
ParametreTipGerekliAçıklama
reposarrayEvetDepo engelleme listesi nesnelerinin dizisi
Her depo nesnesi şunları içermelidir:
AlanTipGerekliAçıklama
urlstringEvetEngellenecek depo URL’si
patternsstring[]EvetEngellenecek dosya desenlerinin dizisi (glob desenleri desteklenir)
Yanıt
Güncellenmiş depo engelleme 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 Listesini Sil

Belirli bir depoyu engelleme listesinden kaldır.
DELETE /settings/repo-blocklists/repos/:repoId
Parametreler
ParametreTipGerekliAçıklama
repoIdstringEvetSilinecek depo engelleme listesinin ID’si
Yanıt
Başarılı silme işleminde 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 engelleme 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 dosyayı engelle