跳轉到主要內容
Admin API 讓你以程式化方式存取團隊資料,包含成員資訊、使用指標與支出明細。可以打造自訂儀表板、監控工具,或整合到既有工作流程。
這是第一版 API。我們會根據回饋持續擴充功能——告訴我們你需要哪些 endpoint!

驗證

所有 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": "成員"
    },
    {
      "name": "Sam",
      "email": "admin@company.com",
      "role": "擁有者"
    }
  ]
}

範例請求

curl -X GET https://api.cursor.com/teams/members \
  -u 你的_API_KEY:

取得每日使用量資料

在指定日期範圍內擷取你團隊的每日使用量指標。提供對程式碼編輯、AI 協作使用情況與接受率的深入洞察。
POST /teams/daily-usage-data

請求本文

參數型別必填說明
startDatenumberYes以 epoch 毫秒為單位的開始日期
endDatenumberYes以 epoch 毫秒為單位的結束日期
日期範圍不能超過 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以 epoch 毫秒表示的日期
isActive該日使用者是否為活躍
totalLinesAdded新增的程式碼行數
totalLinesDeleted刪除的程式碼行數
acceptedLinesAdded由已接受的 AI 建議新增的行數
acceptedLinesDeleted由已接受的 AI 建議刪除的行數
totalAppliesApply 操作次數
totalAccepts已接受的建議數
totalRejects已拒絕的建議數
totalTabsShown顯示的 Tab 補全次數
totalTabsAccepted接受的 Tab 補全次數
composerRequestsComposer 請求數
chatRequestsChat 請求數
agentRequestsAgent 請求數
cmdkUsages指令面板(Cmd+K)使用次數
subscriptionIncludedReqs訂閱內含額度的請求數
apiKeyReqsAPI 金鑰請求數
usageBasedReqs依用量計費的請求數
bugbotUsagesBug 偵測使用次數
mostUsedModel最常使用的 AI 模型
applyMostUsedExtensionApply 操作最常用的副檔名
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 你的_API_KEY:\
  -H "Content-Type: application/json" \
  -d '{
    "startDate": 1710720000000,
    "endDate": 1710892800000
  }'

取得支出資料

以搜尋、排序與分頁,擷取本月份的支出資訊。
POST /teams/spend

請求本文

參數型別必填說明
searchTermstringNo在使用者名稱與電子郵件中搜尋
sortBystringNo依以下欄位排序:amountdateuser。預設為:date
sortDirectionstringNo排序方向:ascdesc。預設為:desc
pagenumberNo頁碼(從 1 起算)。預設為:1
pageSizenumberNo每頁結果數

回應

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

回應欄位

欄位說明
spendCents總支出(單位:分)
fastPremiumRequestsFast Premium 模型請求數
name成員名稱
email成員電子郵件
role團隊角色
hardLimitOverrideDollars自訂支出上限覆寫值
subscriptionCycleStart訂閱週期開始時間(epoch 毫秒)
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 呼叫、模型使用、token 用量與成本的細緻洞察。
POST /teams/filtered-usage-events

請求主體

參數類型必填說明
startDatenumber起始日期(epoch 毫秒)
endDatenumber結束日期(epoch 毫秒)
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;
    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;
  };
}

回應欄位說明

欄位說明
totalUsageEventsCount與查詢相符的使用事件總數
pagination用於瀏覽結果的分頁後設資料
timestamp事件時間戳(自紀元起的毫秒數)
model這次請求使用的 AI 模型
kind使用類別(例如:「Usage-based」、「Included in Business」)
maxMode是否啟用 Max 模式
requestsCosts以請求單位計算的成本
isTokenBasedCall事件是否以用量計費(true)
tokenUsage詳細的權杖(token)使用量(當 isTokenBasedCall 為 true 時提供)
isFreeBugbot是否為免費 Bugbot 使用
userEmail發出請求的使用者 Email
period查詢資料的日期範圍

回應範例

{
  "totalUsageEventsCount": 113,
  "pagination": {
    "numPages": 12,
    "currentPage": 1,
    "pageSize": 10,
    "hasNextPage": true,
    "hasPreviousPage": false
  },
  "usageEvents": [
    {
      "timestamp": "1750979225854",
      "model": "claude-4-opus",
      "kind": "按使用量計費",
      "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": "按使用量計費",
      "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": "商務方案內含"
      "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
  }'

設定使用者花費上限

替各別的團隊成員設定花費上限,讓你能掌控每位使用者在團隊內使用 AI 的支出。
POST /teams/user-spend-limit
速率限制: 每個團隊每分鐘 60 次請求

Request Body

ParameterTypeRequiredDescription
userEmailstringYes團隊成員的電子郵件地址
spendLimitDollarsnumberYes支出上限(美元),僅限整數,不能有小數。
  • 使用者必須已經是你團隊的成員
  • 只接受整數值(不接受小數金額)
  • spendLimitDollars 設為 0 會把上限設為 $0

回應

回傳一個標準化的回應,用來指示成功或失敗:
{
  outcome: '成功' | '錯誤';
  message: string;
}

範例回應

已成功設定上限:
{
  "outcome": "success",
  "message": "已將支出上限設為 $100,適用於使用者 developer@company.com"
}
錯誤回應:
{
  "outcome": "error",
  "message": "電子郵件格式無效"
}

範例請求

設定花費上限:
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

新增存放庫並使用樣式,防止檔案或目錄被索引,或被用作團隊的上下文。

取得團隊 Repo 封鎖清單

取得你團隊已設定的所有 repository 封鎖清單。
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 你的_API_KEY:

新增或更新 Repo 封鎖名單

以提供的 repo 取代其現有的封鎖名單。 注意:此端點只會覆寫所提供 repo 的封鎖模式。其他 repo 不受影響。
POST /settings/repo-blocklists/repos/upsert
請求本文
參數類型必填說明
reposarrayYes儲存庫封鎖清單物件的陣列
每個儲存庫物件必須包含:
欄位類型必填說明
urlstringYes要加入封鎖清單的儲存庫 URL
patternsstring[]Yes要封鎖的檔案模式陣列(支援 glob 模式)
回應
回傳更新後的 repository 封鎖清單:
{
  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": ["*"]
      }
    ]
  }'

刪除 Repo 封鎖清單

從封鎖清單移除特定的 Repo。
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 你的 API 金鑰:

範例模式

常見的封鎖清單模式:
  • * - 封鎖整個 repository
  • *.env - 封鎖所有 .env 檔案
  • config/* - 封鎖 config 資料夾中的所有檔案
  • **/*.secret - 封鎖任何子資料夾中的所有 .secret 檔案
  • src/api/keys.ts - 封鎖特定檔案