Admin API 讓您能夠程式化地存取團隊數據,包括成員資訊、使用指標和支出詳情。建立自訂儀表板、監控工具,或與現有工作流程整合。
此 API 為首次發布版本。我們正根據回饋意見擴展功能 - 請告訴我們您需要哪些端點!

身份驗證

所有 API 請求都需要使用 API 金鑰進行身份驗證。只有團隊管理員可以建立和管理 API 金鑰。 API 金鑰與組織綁定,所有管理員都可以查看,且不受原始建立者帳戶狀態的影響。

建立 API 金鑰

  1. 前往 cursor.com/dashboardSettings 標籤 → Cursor Admin API Keys
  2. 點擊 Create New API Key
  3. 為您的金鑰提供一個描述性名稱(例如,“Usage Dashboard Integration”)
  4. 立即複製生成的金鑰 - 您將無法再次查看它
格式:key_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

使用您的 API 金鑰

在基本身份驗證中使用您的 API 金鑰作為使用者名稱: 使用 curl 進行基本身份驗證:
curl https://api.cursor.com/{route} -u API_KEY:
或直接設定 Authorization 標頭:
Authorization: Basic {base64_encode('API_KEY:')}

基礎 URL

所有 API 端點使用:
https://api.cursor.com

端點

獲取團隊成員

檢索所有團隊成員及其詳細資訊。
GET /teams/members

回應

返回團隊成員物件陣列:
{
  teamMembers: {
    name: string;
    email: string;
    role: 'owner' | 'member' | 'free-owner';
  }[];
}

範例回應

{
  "teamMembers": [
    {
      "name": "Alex",
      "email": "developer@company.com",
      "role": "member"
    },
    {
      "name": "Sam",
      "email": "admin@company.com",
      "role": "owner"
    }
  ]
}

範例請求

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

獲取每日使用數據

檢索您團隊在日期範圍內的詳細每日使用指標。提供程式碼編輯、AI 輔助使用和接受率的洞察。
POST /teams/daily-usage-data

請求主體

參數類型必需描述
startDatenumber開始日期(以毫秒為單位的時間戳)
endDatenumber結束日期(以毫秒為單位的時間戳)
日期範圍不能超過 90 天。對於更長的時間段,請發送多個請求。

回應

{
  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;
  };
}

回應欄位

欄位描述
date日期(以毫秒為單位的時間戳)
isActive用戶在此日期是否活躍
totalLinesAdded新增的程式碼行數
totalLinesDeleted刪除的程式碼行數
acceptedLinesAdded從接受的 AI 建議中新增的行數
acceptedLinesDeleted從接受的 AI 建議中刪除的行數
totalApplies應用操作次數
totalAccepts接受的建議次數
totalRejects拒絕的建議次數
totalTabsShown顯示的 Tab 補全次數
totalTabsAccepted接受的 Tab 補全次數
composerRequestsComposer 請求次數
chatRequests聊天請求次數
agentRequestsAgent 請求次數
cmdkUsages命令面板(Cmd+K)使用次數
subscriptionIncludedReqs訂閱包含的請求次數
apiKeyReqsAPI 金鑰請求次數
usageBasedReqs按使用量付費的請求次數
bugbotUsages錯誤檢測使用次數
mostUsedModel最常使用的 AI 模型
applyMostUsedExtension應用操作最常使用的檔案副檔名
tabMostUsedExtensionTab 補全最常使用的檔案副檔名
clientVersionCursor 版本
email用戶電子郵件

範例回應

{
  "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
  }
}

範例請求

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
  }'

取得支出資料

檢索當前日曆月份的支出資訊,支援搜尋、排序和分頁功能。
POST /teams/spend

請求主體

參數類型必需描述
searchTermstring在使用者名稱和電子郵件中搜尋
sortBystring排序依據:amountdateuser。預設:date
sortDirectionstring排序方向:ascdesc。預設:desc
pagenumber頁碼(從 1 開始)。預設:1
pageSizenumber每頁結果數

回應

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

回應欄位

欄位描述
spendCents總支出(以分為單位)
fastPremiumRequests快速高級模型請求數
name成員姓名
email成員電子郵件
role團隊角色
hardLimitOverrideDollars自訂支出限制覆蓋
subscriptionCycleStart訂閱週期開始時間(紀元毫秒)
totalMembers團隊成員總數
totalPages總頁數

範例回應

{
  "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
}

範例請求

基本消費數據:
curl -X POST https://api.cursor.com/teams/spend \
  -u YOUR_API_KEY: \
  -H "Content-Type: application/json" \
  -d '{}'
搜尋特定使用者並分頁:
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
  }'

取得使用事件數據

檢索您團隊的詳細使用事件,提供全面的篩選、搜尋和分頁選項。此端點提供個別 API 呼叫、模型使用、代幣消耗和成本的細緻洞察。
POST /teams/filtered-usage-events

請求主體

參數類型必需描述
startDatenumber開始日期(以毫秒為單位的時間戳)
endDatenumber結束日期(以毫秒為單位的時間戳)
userIdnumber依特定使用者 ID 篩選
pagenumber頁碼(從 1 開始)。預設:1
pageSizenumber每頁結果數量。預設:10
emailstring依使用者電子郵件地址篩選

回應

{
  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;
  };
}

回應欄位說明

欄位描述
totalUsageEventsCount符合查詢條件的使用事件總數
pagination用於導覽結果的分頁中繼資料
timestamp事件時間戳(以毫秒為單位的時間戳)
model用於請求的 AI 模型
kindLabel使用類別(例如「基於使用量」、「包含在商業版中」)
maxMode是否啟用最大模式
requestsCosts以請求單位計算的成本
isTokenBasedCall當事件以基於使用量的事件計費時為 true
tokenUsage詳細的代幣消耗(當 isTokenBasedCall 為 true 時可用)
isFreeBugbot這是否為免費 bugbot 使用
userEmail發出請求的使用者電子郵件
period查詢資料的日期範圍

範例回應

{
  "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
  }
}

範例請求

使用預設分頁取得所有使用事件:
curl -X POST https://api.cursor.com/teams/filtered-usage-events \
  -u YOUR_API_KEY: \
  -H "Content-Type: application/json" \
  -d '{}'
依日期範圍和特定使用者篩選:
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
  }'
使用自訂分頁取得特定使用者的使用事件:
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 Blocklists API

新增儲存庫和使用模式,以防止檔案或目錄被索引或用作您團隊的上下文。

取得團隊儲存庫封鎖清單

檢索為您的團隊設定的所有儲存庫封鎖清單。
GET /settings/repo-blocklists/repos
回應
回傳儲存庫封鎖清單物件的陣列:
{
  repos: {
    id: string;
    url: string;
    patterns: string[];
  }[];
}
範例回應
{
  "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": ["*"]
    }
  ]
}
範例請求
curl -X GET https://api.cursor.com/settings/repo-blocklists/repos \
  -u YOUR_API_KEY:

更新插入儲存庫封鎖清單

替換提供的儲存庫的現有儲存庫封鎖清單。 注意:此端點只會覆寫提供的儲存庫的模式。所有其他儲存庫將不受影響。
POST /settings/repo-blocklists/repos/upsert
請求主體
參數類型必需描述
reposarray儲存庫封鎖清單物件陣列
每個儲存庫物件必須包含:
欄位類型必需描述
urlstring要封鎖的儲存庫 URL
patternsstring[]要封鎖的檔案模式陣列(支援 glob 模式)
回應
返回更新後的儲存庫封鎖清單:
{
  repos: {
    id: string;
    url: string;
    patterns: string[];
  }[];
}
範例請求
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": ["*"]
      }
    ]
  }'

刪除儲存庫封鎖清單

從封鎖清單中移除特定儲存庫。
DELETE /settings/repo-blocklists/repos/:repoId
參數
參數類型必需描述
repoIdstring要刪除的儲存庫封鎖清單 ID
回應
成功刪除時返回 204 No Content。
範例請求
curl -X DELETE https://api.cursor.com/settings/repo-blocklists/repos/repo_123 \
  -u YOUR_API_KEY:

模式範例

常見的封鎖清單模式:
  • * - 封鎖整個儲存庫
  • *.env - 封鎖所有 .env 檔案
  • config/* - 封鎖 config 目錄中的所有檔案
  • **/*.secret - 封鎖任何子目錄中的所有 .secret 檔案
  • src/api/keys.ts - 封鎖特定檔案