Admin API 讓你以程式方式存取團隊資料,包括成員資訊、使用量量測與支出明細。你可以建立自訂儀表板、監控工具,或整合進既有的工作流程。
這個 API 為第一版。我們會根據回饋持續擴充功能—告訴我們你需要哪些 endpoints!

驗證

所有 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

端點(Endpoints)

取得團隊成員

擷取所有團隊成員及其詳細資訊。
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以 epoch 毫秒表示的開始日期
endDatenumber以 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 建議刪除的行數
totalApplies套用(apply)操作次數
totalAccepts接受的建議數
totalRejects拒絕的建議數
totalTabsShown顯示的 Tab 自動補全次數
totalTabsAccepted接受的 Tab 自動補全次數
composerRequestsComposer 請求數
chatRequestsChat 請求數
agentRequestsAgent 請求數
cmdkUsages指令面板(Cmd+K)使用次數
subscriptionIncludedReqs訂閱內含請求數
apiKeyReqsAPI 金鑰請求數
usageBasedReqs依用量付費請求數
bugbotUsagesBug 偵測使用次數
mostUsedModel最常使用的 AI 模型
applyMostUsedExtensionapply 最常使用的檔案副檔名
tabMostUsedExtensiontab 最常使用的檔案副檔名
clientVersionCursor 版本
email使用者 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

Request Body

參數型別必填說明
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總支出(單位:美分)
fastPremiumRequestsFast Premium 模型請求數
name成員姓名
email成員的 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

Request Body

ParameterTypeRequiredDescription
startDatenumberNo以 epoch 毫秒表示的開始日期
endDatenumberNo以 epoch 毫秒表示的結束日期
userIdnumberNo依特定使用者 ID 篩選
pagenumberNo頁碼(從 1 起算)。預設值:1
pageSizenumberNo每頁結果數量。預設值:10
emailstringNo依使用者電子郵件地址篩選

回應

{
  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事件的 Unix 紀元毫秒時間戳
model此請求所使用的 AI 模型
kind使用類別(例如:「Usage-based」、「Included in Business」)
maxMode是否啟用 Max Mode
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",
      "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 次請求

請求本文

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

回應

回傳一個標準化的回應來表示成功或失敗:
{
  outcome: 'success' | 'error';
  message: string;
}

範例回應

成功設定限制:
{
  "outcome": "success",
  "message": "已為使用者 developer@company.com 設定 $100 的花費上限"
}
錯誤回應:
{
  "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 YOUR_API_KEY:

以 Upsert 方式更新 Repo 封鎖清單

以提供的 repos 替換現有的 repository 封鎖清單。 注意:此端點只會覆寫所提供 repository 的匹配樣式(patterns)。其他 repos 不受影響。
POST /settings/repo-blocklists/repos/upsert
Request Body
參數類型必填說明
reposarray儲存庫黑名單物件的陣列
Each repository object must contain:
欄位類型必填說明
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": ["*"]
      }
    ]
  }'

刪除 Repo 封鎖清單

從封鎖清單移除指定的 repository。
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 - 封鎖特定檔案