Admin API 允許你以編程方式訪問團隊數據,包括成員信息、用量指標、支出明細和模型訪問。
- Admin API 使用 Basic Authentication,並將你的 API 密鑰作爲用戶名。
- 有關創建 API 密鑰、認證方式、速率限制和最佳實踐的詳細信息,請參閱 API 概覽。
如需執行跨團隊的組織級操作,請參閱 組織 和 Organization API。
端點¶
獲取團隊成員¶
/teams/members
獲取所有團隊成員及其詳細信息。
響應字段¶
teamMembers array
團隊成員對象數組,每個對象包含:
idstring - 團隊成員的編碼用戶 ID (例如user_PDSPmvukpYgZEDXsoNirw3CFhy)emailstring - 團隊成員的郵箱地址namestring - 團隊成員的顯示名稱rolestring - 在團隊中的角色 (例如member、owner)isRemovedboolean - 該成員是否已從團隊中移除
curl -X GET https://api.cursor.com/teams/members \
-u YOUR_API_KEY:
響應:
{
"teamMembers": [
{
"id": "user_PDSPmvukpYgZEDXsoNirw3CFhy",
"name": "Alex",
"email": "developer@company.com",
"role": "member",
"isRemoved": false
},
{
"id": "user_kljUvI0ASZORvSEXf9hV0ydcso",
"name": "Sam",
"email": "admin@company.com",
"role": "owner",
"isRemoved": false
}
]
}
獲取審計日誌¶
/teams/audit-logs
通過篩選獲取團隊的審計日誌事件,用於跟蹤團隊活動、安全事件和配置變更。每個團隊每分鐘最多 20 次請求。詳見 速率限制和最佳實踐。
參數¶
startTime string | number
開始時間 (默認爲 7 天前) 。參見 日期格式
endTime string | number
結束時間 (默認是當前時間) 。參見 日期格式
eventTypes string
要篩選的事件類型,使用逗號分隔。可能的取值:login、logout、add_user、remove_user、update_user_role、team_settings、mcp_server_config、team_api_key、user_api_key、privacy_mode、user_spend_limit、team_rule、team_repo、team_hook、team_command、create_directory_group、delete_directory_group、update_directory_group、update_directory_group_permissions、add_user_to_directory_group、remove_user_from_directory_group、bugbot_installation、bugbot_installation_settings、bugbot_repo_settings、bugbot_team_rule、bugbot_team_settings、bugbot_bulk_repo_update
search string
用於篩選事件的搜索詞
page number
頁碼 (從1開始) 。默認值:1
pageSize number
每頁結果數 (1-500) 。默認值:100
users string
按用戶篩選。參見下方的 用戶篩選
日期範圍不能超過 30 天。更長時間段請拆分爲多次請求。
日期格式¶
startTime 和 endTime 參數支持多種格式:
- 相對快捷方式:
now、today、yesterday、7d(7 天前) 、5h(5 小時前) 、300s(300 秒前) - ISO 8601 字符串:
2024-01-15T12:00:00Z或2024-01-15T10:00:00-05:00 - YYYY-MM-DD 格式:
2024-01-15(時間默認爲 00:00:00 UTC) - Unix 時間戳:
1705315200(秒) 或1705315200000(毫秒)
示例:
?startTime=7d&endTime=now- 最近 7 天?startTime=5h&endTime=now- 最近 5 小時?startTime=2024-01-15&endTime=2024-01-20- 指定日期範圍?startTime=1705315200000&endTime=1705401600000- Unix 時間戳
用戶篩選¶
users 參數支持多種格式,使用逗號分隔:
- 郵箱地址:
developer@company.com,admin@company.com - 編碼用戶 ID:
user_PDSPmvukpYgZEDXsoNirw3CFhy,user_kljUvI0ASZORvSEXf9hV0ydcso
你可以混合使用這些格式:developer@company.com,12345,user_PDSPmvukpYgZEDXsoNirw3CFhy
每次請求的最大用戶數等於 pageSize。
curl -X GET "https://api.cursor.com/teams/audit-logs?users=admin@company.com,developer@company.com&eventTypes=login,add_user" \
-u YOUR_API_KEY:
響應:
{
"events": [
{
"event_id": "evt_abc123",
"timestamp": "2024-01-15T12:30:00.000Z",
"ip_address": "203.0.113.42",
"user_email": "admin@company.com",
"event_type": "add_user",
"event_data": {
"email": "admin@company.com",
"method": "manual"
}
},
{
"event_id": "evt_def456",
"timestamp": "2024-01-15T10:15:00.000Z",
"ip_address": "192.168.1.1",
"user_email": "developer@company.com",
"event_type": "login",
"event_data": {
"ip_address": "192.168.1.1",
"user_agent": "Cursor/0.42.0"
}
}
],
"pagination": {
"page": 1,
"pageSize": 100,
"totalCount": 2,
"totalPages": 1,
"hasNextPage": false,
"hasPreviousPage": false
},
"params": {
"teamId": 12345,
"startDate": 1704729600000,
"endDate": 1705334400000
}
}
獲取每日使用情況數據¶
/teams/daily-usage-data
獲取團隊的每日用量指標。數據按小時彙總,建議對此端點每小時最多輪詢一次。每個團隊每分鐘最多可發送 20 個請求。請參閱最佳實踐。
參數¶
startDate 數值 必填
開始日期 (自紀元起的毫秒數)
endDate number 必填
結束日期 (Unix 紀元毫秒數)
page number
頁碼 (從 1 開始) 。與 pageSize 同時提供時,將啓用分頁,並返回在所請求日期範圍內具有成員資格的所有團隊成員的數據。
pageSize number
每頁用戶數。與 page 一同提供時,將啓用分頁,並返回在所請求日期範圍內具有成員資格的所有團隊成員的數據。
未指定分頁參數時,此端點僅返回活躍用戶 (即在該日期範圍內有活動的用戶) 。要獲取所有團隊成員,請同時提供 page 和 pageSize 參數。
使用分頁時,響應會爲每位用戶返回一個 isActive 字段,用於指示該用戶當天是否有活動。請求時間段結束後才加入的成員不包括在內。
日期範圍不能超過 30 天。如需查詢更長時段,請分多次請求。
字段 subscriptionIncludedReqs、usageBasedReqs 和 apiKeyReqs 統計的是原始使用事件,而非較早的基於請求的定價模式中的可計費請求單位。要獲取準確的可計費請求數量,請使用 /teams/filtered-usage-events 端點,並對 requestsCosts 字段求和。
響應字段¶
data 數組中的每個對象包含:
userIdnumber - 用戶的唯一標識符daystring - 此記錄所涵蓋的日期 (ISO 日期,例如2024-03-18)datenumber - 以紀元毫秒爲單位的日期emailstring - 用戶的電子郵件地址isActive布爾值 - 用戶當天是否有活動 (僅在分頁時提供)totalLinesAddednumber - 新增代碼行總數totalLinesDeletednumber - 刪除的代碼行總數acceptedLinesAddednumber - 已接受的 AI 建議新增行數acceptedLinesDeletednumber - 已接受的 AI 建議刪除行數totalAppliesnumber - 應用 AI 代碼的操作總數totalAcceptsnumber - 已接受的 AI 建議總數totalRejectsnumber - 被拒絕的 AI 建議總數totalTabsShownnumber - 向用戶展示的 Tab 補全總數totalTabsAcceptednumber - 用戶接受的 Tab 補全數量composerRequestsnumber - 發起的 Composer 請求數chatRequestsnumber - 發起的 chat 請求數量agentRequestsnumber - 發起的 Agent 模式請求數cmdkUsagesnumber - Cmd+K 內聯編輯的使用次數subscriptionIncludedReqsnumber - 訂閱方案包含的請求數apiKeyReqsnumber - 通過 API 密鑰發起的請求數usageBasedReqsnumber - 按用量計費的 (超額) 請求數bugbotUsagesnumber - Bugbot 使用次數mostUsedModelstring | null - 當天使用頻率最高的 AI 模型applyMostUsedExtensionstring | null - 應用操作最常用的文件擴展名tabMostUsedExtensionstring | null - Tab 補全最常用的文件擴展名clientVersionstring | null - 所使用的 Cursor 客戶端版本
# 僅獲取活躍用戶的數據(不分頁)
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
}'
# 獲取所有團隊成員的數據(分頁)
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,
"page": 1,
"pageSize": 1000
}'
響應 (不分頁,僅限活躍用戶) :
{
"data": [
{
"userId": 12345,
"day": "2024-03-18",
"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-5",
"applyMostUsedExtension": ".tsx",
"tabMostUsedExtension": ".ts",
"clientVersion": "0.25.1",
"email": "developer@company.com"
}
],
"period": {
"startDate": 1710720000000,
"endDate": 1710892800000
}
}
響應 (含分頁——所有團隊成員) :
{
"data": [
{
"userId": 12345,
"day": "2024-03-18",
"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-5",
"applyMostUsedExtension": ".tsx",
"tabMostUsedExtension": ".ts",
"clientVersion": "0.25.1",
"email": "developer@company.com"
},
{
"userId": 12346,
"day": "2024-03-18",
"date": 1710720000000,
"isActive": false,
"totalLinesAdded": 0,
"totalLinesDeleted": 0,
"acceptedLinesAdded": 0,
"acceptedLinesDeleted": 0,
"totalApplies": 0,
"totalAccepts": 0,
"totalRejects": 0,
"totalTabsShown": 0,
"totalTabsAccepted": 0,
"composerRequests": 0,
"chatRequests": 0,
"agentRequests": 0,
"cmdkUsages": 0,
"subscriptionIncludedReqs": 0,
"apiKeyReqs": 0,
"usageBasedReqs": 0,
"bugbotUsages": 0,
"mostUsedModel": null,
"applyMostUsedExtension": null,
"tabMostUsedExtension": null,
"clientVersion": null,
"email": "inactive-user@company.com"
}
],
"period": {
"startDate": 1710720000000,
"endDate": 1710892800000
},
"pagination": {
"page": 1,
"pageSize": 1000,
"totalUsers": 150,
"totalPages": 1,
"hasNextPage": false,
"hasPreviousPage": false
}
}
獲取支出數據¶
/teams/spend
獲取當前計費週期的支出數據,支持搜索、排序和分頁。
參數¶
searchTerm string
在用戶姓名和郵箱地址中搜索
sortBy string
排序字段:amount、date、user。默認值:date
sortDirection string
排序方向:asc、desc。默認值:desc
page number
頁碼 (從 1 開始) 。默認值:1
pageSize number
每頁返回的結果數量
響應字段¶
teamMemberSpend 中的每個對象包含:
userIdstring - 編碼後的用戶 ID (例如:user_PDSPmvukpYgZEDXsoNirw3CFhy) 。與/teams/members中的teamMembers[].id使用相同的標識符命名空間。namestring - 用戶顯示名稱emailstring - 用戶郵箱地址rolestring - 在團隊中的角色 (例如:member、owner)spendCentsnumber - 當前計費週期內按需支出金額 (單位:美分),不包括包含的用量overallSpendCentsnumber - 當前計費週期內的總支出金額 (單位:美分),包括按需用量和包含的用量fastPremiumRequestsnumber - 該計費週期內按用量計費的高級請求次數hardLimitOverrideDollarsnumber - 爲該用戶設置的自定義硬性支出上限覆蓋值 (單位:美元,0 表示不覆蓋)monthlyLimitDollarsnumber | null - 爲該用戶設置的每月支出上限 (單位:美元),若未設置上限則爲nulleffectivePerUserLimitDollarsnumber - 當前生效的按用戶支出上限 (單位:美元),由monthlyLimitDollars和hardLimitOverrideDollars推導得出
2026 年 6 月 4 日,我們爲 spendCents 和 overallSpendCents 字段增加了額外精度,以避免在將結果與發票金額比較時出現舍入誤差。
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
}'
響應:
{
"teamMemberSpend": [
{
"userId": "user_PDSPmvukpYgZEDXsoNirw3CFhy",
"spendCents": 2450.125487,
"overallSpendCents": 2450.125487,
"fastPremiumRequests": 1250,
"name": "Alex",
"email": "developer@company.com",
"role": "member",
"hardLimitOverrideDollars": 100,
"monthlyLimitDollars": 200,
"effectivePerUserLimitDollars": 100
},
{
"userId": "user_kljUvI0ASZORvSEXf9hV0ydcso",
"spendCents": 1875.500123,
"overallSpendCents": 3200.750456,
"fastPremiumRequests": 980,
"name": "Sam",
"email": "admin@company.com",
"role": "owner",
"hardLimitOverrideDollars": 0,
"monthlyLimitDollars": null,
"effectivePerUserLimitDollars": 50
}
],
"subscriptionCycleStart": 1708992000000,
"totalMembers": 15,
"totalPages": 1
}
獲取使用事件數據¶
/teams/filtered-usage-events
爲你的團隊檢索帶有篩選、搜索和分頁選項的詳細使用事件。此端點可提供對 API 調用、模型使用、令牌消耗和費用的細緻洞察。數據按小時彙總。我們建議最多每小時輪詢此端點一次。每個團隊的速率限制爲每分鐘 60 次請求。參見 API 指南。
成本計算:要將事件級成本與 /teams/spend 總計對齊,請彙總所有事件的 chargedCents 字段。此字段包含模型費用和 Cursor Token 費率 (在請求適用該費率時) ,與儀表盤總計一致。它適用於按 token 和按請求計費的方案。
cursorTokenFee 字段表示 Cursor Token 費率,且僅在該費率適用於第三方模型請求時纔會出現。這包括 Auto 將請求路由至第三方模型的情況。Cursor 的一方模型 (如 Grok 和 Composer) 以及按請求計費的企業版賬戶均不包含此費用。參見 Cursor Token 費率。
參數¶
startDate number
起始時間 (紀元毫秒) 。此邊界爲包含邊界。
endDate number
結束時間 (epoch 毫秒) 。此界限包含在內。
startDate 和 endDate 是精確到毫秒的時間點,並且
兩個邊界都包含在內。恰好發生在 2026-05-08T00:00:00.000Z 的事件,
當 endDate 爲 1778198400000 時也會被包含在內。對於不重疊的每日
攝取時間窗口,請將前一個窗口的 endDate 設爲當天最後一
毫秒,例如 2026-05-07T23:59:59.999Z。
userId number
按指定用戶 ID 篩選
page number
頁碼 (從 1 開始) 。默認:1
pageSize number
每頁結果數量。默認:100。最大值:1000。
email string
按用戶郵箱地址篩選
serviceAccountId string
按服務賬戶 ID 過濾
cloudAgentId string
按指定的雲代理運行 ID 過濾。傳入 * 可返回來自所有云代理運行的事件。
automationId string
按指定自動化 UUID 過濾。傳入 * 可返回所有自動化的事件。
hostingType string
按執行地點篩選雲端代理 (後臺代理) 的運行。使用此選項可將自託管代理的推理開支與 Cursor 託管的運行區分開來。可接受的值:
CLOUD- Cursor 託管的運行SELF_HOSTED- 任何自託管運行 (自託管用量池 worker 或個人 “My Machine” worker)SELF_HOSTED_POOL- 僅限團隊自託管用量池 workerSELF_HOSTED_MACHINE- 僅限個人 “My Machine” worker
無法識別的 hostingType 值會返回 400 錯誤,而不是空結果,因此不會把拼寫錯誤誤當成自託管支出確實爲零。此過濾器僅涵蓋推理支出;自託管計算在你自己的機器上運行,且永遠不會由 Cursor 計量。
當你傳入多個篩選條件時,此端點會使用 AND 將它們組合。例如,同時傳入 automationId 和 serviceAccountId 時,將返回同時匹配這兩個值的事件。
響應字段¶
usageEvents 中的每個對象包含:
timestampstring - 事件時間戳 (epoch 毫秒,以字符串形式表示)userEmailstring - 發出該請求的用戶郵箱地址serviceAccountIdstring | undefined - 發出該請求的服務賬戶 ID。對於由人工用戶發起的事件,此字段會被省略。serviceAccountNamestring | undefined - 發出該請求的服務賬戶顯示名稱。人工用戶事件中會省略此字段。cloudAgentIdstring | undefined - 與此事件關聯的雲端代理運行 ID。對於雲端代理之外的事件,會省略此字段。automationIdstring | undefined - 與此事件關聯的自動化 UUID。自動化之外的事件中會省略此字段。conversationIdstring | undefined - 生成此事件的對話 (智能體會話) ID。可用它將費用歸因於某個會話,或作爲與其他提供對話 ID 的來源 (如 AI Code Tracking API) 進行關聯的鍵。未關聯對話的事件會省略此字段。modelstring - 用於該請求的 AI 模型kindstring - 計費類別 (例如Usage-based、Included in Business)maxModeboolean - 請求是否使用 Max 模式requestsCostsnumber - 按請求單位計算的成本isTokenBasedCallboolean - 請求是否按 token 用量計費isChargeableboolean - 此事件是否計費isHeadlessboolean - 此請求是否在沒有連接客戶端的情況下發出 (例如後臺 Agent)tokenUsageobject | undefined - Token 使用明細 (當isTokenBasedCall爲true時存在) :inputTokensnumber - 消耗的輸入 token 數outputTokensnumber - 生成的輸出 token 數cacheWriteTokensnumber - 寫入緩存的 token 數cacheReadTokensnumber - 從緩存讀取的 token 數totalCentsnumber - 模型總費用 (美分)discountPercentOffnumber | undefined - 已應用的折扣百分比 (如有)chargedCentsnumber - 此事件實際收取的總金額 (單位:美分)。對於適用 Cursor Token 費率的第三方模型請求,此金額包含模型費用以及 Cursor Token 費率。使用此字段可將事件級成本與/teams/spend總計對齊。適用於按 token 和按請求計費的方案。cursorTokenFeenumber | undefined - Cursor Token 費率 (單位:美分)。僅當該費率適用於第三方模型請求時出現 (包括 Auto 路由到第三方模型時) 。
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
}'
響應:
{
"totalUsageEventsCount": 113,
"pagination": {
"numPages": 5,
"currentPage": 1,
"pageSize": 25,
"hasNextPage": true,
"hasPreviousPage": false
},
"usageEvents": [
{
"timestamp": "1750979225854",
"userEmail": "developer@company.com",
"conversationId": "8f2e4a1b-6c3d-4e5f-9a7b-2d1c8e6f4a3b",
"model": "claude-4.5-sonnet",
"kind": "Usage-based",
"maxMode": true,
"requestsCosts": 5,
"isTokenBasedCall": true,
"isChargeable": true,
"isHeadless": false,
"tokenUsage": {
"inputTokens": 126,
"outputTokens": 450,
"cacheWriteTokens": 6112,
"cacheReadTokens": 11964,
"totalCents": 20.18232
},
"chargedCents": 21.36232,
"cursorTokenFee": 1.18
},
{
"timestamp": "1750979173824",
"userEmail": "developer@company.com",
"conversationId": "8f2e4a1b-6c3d-4e5f-9a7b-2d1c8e6f4a3b",
"model": "claude-4.5-sonnet",
"kind": "Usage-based",
"maxMode": true,
"requestsCosts": 10,
"isTokenBasedCall": true,
"isChargeable": true,
"isHeadless": false,
"tokenUsage": {
"inputTokens": 5805,
"outputTokens": 311,
"cacheWriteTokens": 11964,
"cacheReadTokens": 0,
"totalCents": 40.167,
"discountPercentOff": 10
},
"chargedCents": 37.33,
"cursorTokenFee": 1.18
},
{
"timestamp": "1750978339901",
"userEmail": "admin@company.com",
"model": "claude-4-sonnet-thinking",
"kind": "Included in Business",
"maxMode": true,
"requestsCosts": 1.4,
"isTokenBasedCall": false,
"isChargeable": false,
"isHeadless": false,
"chargedCents": 8
}
],
"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 '{
"startDate": 1748411762359,
"endDate": 1751003762359,
"serviceAccountId": "sa_abc123",
"page": 1,
"pageSize": 10
}'
服務賬戶響應:
{
"totalUsageEventsCount": 1,
"pagination": {
"numPages": 1,
"currentPage": 1,
"pageSize": 10,
"hasNextPage": false,
"hasPreviousPage": false
},
"usageEvents": [
{
"timestamp": "1750979225854",
"userEmail": "agent-runner@company.com",
"serviceAccountId": "sa_abc123",
"serviceAccountName": "Nightly CI Agent",
"conversationId": "3b9d7c2e-1f4a-4b8c-a6d5-e9f0a2b4c6d8",
"model": "claude-4.5-sonnet",
"kind": "Usage-based",
"maxMode": true,
"requestsCosts": 5,
"isTokenBasedCall": true,
"isChargeable": true,
"isHeadless": true,
"tokenUsage": {
"inputTokens": 126,
"outputTokens": 450,
"cacheWriteTokens": 6112,
"cacheReadTokens": 11964,
"totalCents": 20.18232
},
"chargedCents": 21.36232,
"cursorTokenFee": 1.18
}
],
"period": {
"startDate": 1748411762359,
"endDate": 1751003762359
}
}
自動化使用示例:
使用自動化 UUID 獲取其使用事件。自動化歸因適用於以用戶或服務賬戶身份運行的自動化。
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,
"automationId": "7fc64f90-6d7a-4a5d-91b1-bd1f529a85dd",
"page": 1,
"pageSize": 100
}'
每個匹配的事件都包含其 automationId 和 cloudAgentId。對所有事件的 chargedCents 求和,即可計算該自動化的總費用。
自託管代理支出示例:
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,
"hostingType": "SELF_HOSTED",
"page": 1,
"pageSize": 10
}'
設置用戶支出上限¶
/teams/user-spend-limit
爲團隊中的單個成員設置支出上限。這樣可以控制每個用戶在團隊內 AI 使用產生的費用。每個團隊速率限制爲每分鐘 250 次請求。參見 速率限制。
參數¶
userEmail string 必填
團隊成員的郵箱地址
spendLimitDollars number | null 必填
以美元計的支出上限 (僅允許整數,不含小數) 。設置爲 null 可移除該上限。
- 可用性:僅限 Enterprise 版本
- 用戶必須已經是你團隊的成員
- 僅接受整數值 (不允許小數金額)
- 設置
spendLimitDollars爲 0 會將上限設爲 $0 - 設置
spendLimitDollars爲null會完全清除/移除該上限
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
}'
成功響應:
{
"outcome": "success",
"message": "Spend limit set to $100 for user developer@company.com"
}
錯誤響應:
{
"outcome": "error",
"message": "Invalid email format"
}
移除團隊成員¶
/teams/remove-member
通過 API 從團隊中移除成員。適用於自動化離職流程或與 HR 系統集成。每個團隊的請求頻率限制爲每分鐘 50 次。參見 速率限制。
參數¶
userId string
編碼的用戶 ID (例如:user_PDSPmvukpYgZEDXsoNirw3CFhy) 。當未提供 email 時必填。
email string
團隊成員的郵箱地址。當未提供 userId 時必填。
- 可用性:僅限企業版
- 僅提供
userId或email其中之一,不要同時提供 - 移除後團隊中至少需要保留一名付費成員
- 移除後團隊中至少需要保留一名管理員 (owner 或 free-owner)
curl -X POST https://api.cursor.com/teams/remove-member \
-u YOUR_API_KEY: \
-H "Content-Type: application/json" \
-d '{
"email": "developer@company.com"
}'
響應:
{
"success": true,
"userId": "user_PDSPmvukpYgZEDXsoNirw3CFhy",
"hasBillingCycleUsage": true
}
通過 user ID 移除:
curl -X POST https://api.cursor.com/teams/remove-member \
-u YOUR_API_KEY: \
-H "Content-Type: application/json" \
-d '{
"userId": "user_PDSPmvukpYgZEDXsoNirw3CFhy"
}'
錯誤響應:
{
"error": "User is not a member of this team"
}
{
"error": "Either userId or email must be provided"
}
{
"error": "Only one of userId or email should be provided, not both"
}
獲取團隊倉庫屏蔽列表¶
/settings/repo-blocklists/repos
獲取爲團隊配置的所有倉庫屏蔽列表。添加倉庫並使用模式,防止文件或目錄被索引或用作上下文。
模式示例¶
常見的屏蔽列表模式:
*- 屏蔽整個倉庫*.env- 屏蔽所有 .env 文件config/*- 屏蔽 config 目錄中的所有文件**/*.secret- 屏蔽任何子目錄中的所有 .secret 文件src/api/keys.ts- 屏蔽特定文件
curl -X GET https://api.cursor.com/settings/repo-blocklists/repos \
-u YOUR_API_KEY:
響應:
{
"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": ["*"]
}
]
}
新增或更新代碼倉庫屏蔽列表¶
/settings/repo-blocklists/repos/upsert
替換指定代碼倉庫現有的屏蔽列表。此端點只會覆蓋所提供代碼倉庫的匹配模式,其他倉庫不會受到影響。
參數¶
repos array 必填
代碼倉庫屏蔽列表對象數組。每個代碼倉庫對象必須包含:
urlstring - 要加入屏蔽列表的代碼倉庫 URLpatternsstring[] - 要屏蔽的文件模式數組 (支持 glob 模式)
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": ["*"]
}
]
}'
響應:
{
"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": ["*"]
}
]
}
刪除代碼倉庫屏蔽列表¶
/settings/repo-blocklists/repos/:repoId
從屏蔽列表中移除指定代碼倉庫。刪除成功時返回 204 No Content。
參數¶
repoId string 必填
要刪除的代碼倉庫屏蔽列表 ID
curl -X DELETE https://api.cursor.com/settings/repo-blocklists/repos/repo_123 \
-u YOUR_API_KEY:
響應:
204 No Content
計費分組¶
計費分組 允許 Enterprise 管理員按用戶分組瞭解和管理支出。此功能適用於報表、內部費用分攤和預算管理。
成員在同一時間只能屬於一個計費分組。未分配到任何分組的成員會被放入預留的 Unassigned 分組中。
列出分組¶
/teams/groups
獲取團隊中所有計費分組,以及當前計費週期的支出數據。
參數¶
billingCycle string
ISO 日期字符串 (例如 2025-01-15) ,用於指定要查詢的計費週期。默認爲當前週期。
curl -X GET "https://api.cursor.com/teams/groups?billingCycle=2025-01-15" \
-u YOUR_API_KEY:
響應:
{
"groups": [
{
"id": "group_PDSPmvukpYgZEDXsoNirw3CFhy",
"name": "Engineering",
"type": "BILLING",
"directoryGroupId": null,
"memberCount": 12,
"createdAt": "2024-01-15T10:30:00.000Z",
"updatedAt": "2024-01-20T14:22:00.000Z",
"spendCents": 245000,
"currentMembers": [
{
"userId": "user_abc123",
"name": "Alex Developer",
"email": "alex@company.com",
"joinedAt": "2024-01-15T10:30:00.000Z",
"leftAt": null,
"spendCents": 12500
}
],
"formerMembers": [],
"dailySpend": [
{ "date": "2025-01-15", "spendCents": 8500 },
{ "date": "2025-01-16", "spendCents": 9200 }
]
},
{
"id": "group_kljUvI0ASZORvSEXf9hV0ydcso",
"name": "Design",
"type": "BILLING",
"directoryGroupId": "dir_group_abc123xyz",
"memberCount": 5,
"createdAt": "2024-01-16T09:00:00.000Z",
"updatedAt": "2024-01-16T09:00:00.000Z",
"spendCents": 87500,
"currentMembers": [],
"formerMembers": [],
"dailySpend": []
}
],
"unassignedGroup": {
"id": "group_unassigned",
"name": "Unassigned",
"type": "BILLING",
"directoryGroupId": null,
"memberCount": 3,
"createdAt": "2024-01-01T00:00:00.000Z",
"updatedAt": "2024-01-01T00:00:00.000Z",
"spendCents": 15000,
"currentMembers": [],
"formerMembers": [],
"dailySpend": []
},
"billingCycle": {
"cycleStart": "2025-01-01T00:00:00.000Z",
"cycleEnd": "2025-02-01T00:00:00.000Z"
}
}
獲取分組¶
/teams/groups/:groupId
獲取單個計費分組,以及其成員和當前計費週期的消費數據。
參數¶
groupId string 必填
編碼後的分組 ID (例如 group_PDSPmvukpYgZEDXsoNirw3CFhy)
billingCycle string
ISO 日期字符串 (例如 2025-01-15) ,用於指定要查詢的計費週期。默認爲當前週期。
curl -X GET "https://api.cursor.com/teams/groups/group_PDSPmvukpYgZEDXsoNirw3CFhy?billingCycle=2025-01-15" \
-u YOUR_API_KEY:
響應:
{
"group": {
"id": "group_PDSPmvukpYgZEDXsoNirw3CFhy",
"name": "Engineering",
"type": "BILLING",
"directoryGroupId": null,
"memberCount": 3,
"createdAt": "2024-01-15T10:30:00.000Z",
"updatedAt": "2024-01-20T14:22:00.000Z",
"spendCents": 125000,
"currentMembers": [
{
"userId": "user_abc123",
"name": "Alex Developer",
"email": "alex@company.com",
"joinedAt": "2024-01-15T10:30:00.000Z",
"leftAt": null,
"spendCents": 75000,
"dailySpend": [
{ "date": "2025-01-15", "spendCents": 5000 },
{ "date": "2025-01-16", "spendCents": 7500 }
]
},
{
"userId": "user_def456",
"name": "Sam Engineer",
"email": "sam@company.com",
"joinedAt": "2024-01-16T09:15:00.000Z",
"leftAt": null,
"spendCents": 50000,
"dailySpend": [
{ "date": "2025-01-15", "spendCents": 3500 },
{ "date": "2025-01-16", "spendCents": 4200 }
]
}
],
"formerMembers": [
{
"userId": "user_xyz789",
"name": "Former Member",
"email": "former@company.com",
"joinedAt": "2024-01-10T08:00:00.000Z",
"leftAt": "2024-01-14T17:00:00.000Z",
"spendCents": 0
}
],
"dailySpend": [
{ "date": "2025-01-15", "spendCents": 8500 },
{ "date": "2025-01-16", "spendCents": 11700 }
]
},
"billingCycle": {
"cycleStart": "2025-01-01T00:00:00.000Z",
"cycleEnd": "2025-02-01T00:00:00.000Z"
}
}
創建分組¶
/teams/groups
創建一個新的計費分組。每個團隊每分鐘最多 20 個請求。
參數¶
name string 必填
分組名稱
type string
分組類型。目前僅支持 BILLING。默認值:BILLING
curl -X POST https://api.cursor.com/teams/groups \
-u YOUR_API_KEY: \
-H "Content-Type: application/json" \
-d '{
"name": "Engineering"
}'
響應:
{
"group": {
"id": "group_PDSPmvukpYgZEDXsoNirw3CFhy",
"name": "Engineering",
"type": "BILLING",
"directoryGroupId": null,
"memberCount": 0,
"createdAt": "2024-01-15T10:30:00.000Z",
"updatedAt": "2024-01-15T10:30:00.000Z",
"members": []
}
}
更新分組¶
/teams/groups/:groupId
更新計費分組的名稱或目錄分組關聯。每個團隊每分鐘最多 20 個請求。
每次請求只能更新一個字段。若需要同時更新名稱和目錄關聯,請分別發起請求。
參數¶
groupId string 必填
編碼後的分組 ID
name string
分組的新名稱
directoryGroupId string | null
要同步的目錄分組 ID,或設爲 null 以取消目錄同步
curl -X PATCH https://api.cursor.com/teams/groups/group_PDSPmvukpYgZEDXsoNirw3CFhy \
-u YOUR_API_KEY: \
-H "Content-Type: application/json" \
-d '{
"name": "Platform Engineering"
}'
響應:
{
"group": {
"id": "group_PDSPmvukpYgZEDXsoNirw3CFhy",
"name": "Platform Engineering",
"type": "BILLING",
"directoryGroupId": null,
"memberCount": 3,
"createdAt": "2024-01-15T10:30:00.000Z",
"updatedAt": "2024-01-25T16:45:00.000Z",
"members": [
{
"userId": "user_abc123",
"name": "Alex Developer",
"email": "alex@company.com",
"joinedAt": "2024-01-15T10:30:00.000Z"
}
]
}
}
刪除分組¶
/teams/groups/:groupId
刪除一個計費分組。成功時返回 204 No Content。每個團隊每分鐘最多 20 個請求。
刪除計費分組是破壞性操作;數據無法恢復。被刪除分組的所有歷史用量都會被追溯性地重新分配到 Unassigned 分組。
參數¶
groupId string 必填
要刪除的編碼後的分組 ID
curl -X DELETE https://api.cursor.com/teams/groups/group_PDSPmvukpYgZEDXsoNirw3CFhy \
-u YOUR_API_KEY:
響應:
204 No Content
向分組添加成員¶
/teams/groups/:groupId/members
向計費分組添加團隊成員。用戶必須已是你團隊的成員,且當前未分配到其他分組。每個團隊每分鐘最多 20 個請求。
與 SCIM 同步的計費分組無法通過 API 修改。所有此類分組的成員分配都必須通過 SCIM 進行管理。
參數¶
groupId string 必填
編碼後的分組 ID
userIds string[] 必填
要添加的編碼後用戶 ID 數組 (例如 ["user_abc123", "user_def456"])
curl -X POST https://api.cursor.com/teams/groups/group_PDSPmvukpYgZEDXsoNirw3CFhy/members \
-u YOUR_API_KEY: \
-H "Content-Type: application/json" \
-d '{
"userIds": ["user_abc123", "user_def456"]
}'
響應:
{
"group": {
"id": "group_PDSPmvukpYgZEDXsoNirw3CFhy",
"name": "Engineering",
"type": "BILLING",
"directoryGroupId": null,
"memberCount": 2,
"createdAt": "2024-01-15T10:30:00.000Z",
"updatedAt": "2024-01-25T16:50:00.000Z",
"members": [
{
"userId": "user_abc123",
"name": "Alex Developer",
"email": "alex@company.com",
"joinedAt": "2024-01-25T16:50:00.000Z"
},
{
"userId": "user_def456",
"name": "Sam Engineer",
"email": "sam@company.com",
"joinedAt": "2024-01-25T16:50:00.000Z"
}
]
}
}
從分組中移除成員¶
/teams/groups/:groupId/members
從計費分組中移除團隊成員。被移除的成員會移動到 Unassigned 分組。每個團隊每分鐘最多 20 個請求。
與 SCIM 同步的計費分組無法通過 API 修改。對於與 SCIM 同步的分組,所有成員變更都必須通過 SCIM 進行管理。
參數¶
groupId string 必填
編碼後的分組 ID
userIds string[] 必填
待移除的編碼後用戶 ID 數組
curl -X DELETE https://api.cursor.com/teams/groups/group_PDSPmvukpYgZEDXsoNirw3CFhy/members \
-u YOUR_API_KEY: \
-H "Content-Type: application/json" \
-d '{
"userIds": ["user_def456"]
}'
響應:
{
"group": {
"id": "group_PDSPmvukpYgZEDXsoNirw3CFhy",
"name": "Engineering",
"type": "BILLING",
"directoryGroupId": null,
"memberCount": 1,
"createdAt": "2024-01-15T10:30:00.000Z",
"updatedAt": "2024-01-25T17:00:00.000Z",
"members": [
{
"userId": "user_abc123",
"name": "Alex Developer",
"email": "alex@company.com",
"joinedAt": "2024-01-25T16:50:00.000Z"
}
]
}
}
模型訪問¶
模型訪問路由目前處於預覽階段,可能會發生變化。在正式發佈前,路徑、響應字段和錯誤行爲均可能調整。
讀取和更新團隊的模型訪問策略:自定義策略是否已啓用、新提供商和模型的默認值、按提供商和每個模型設置的開關,以及每個模型的設置,例如 Fast 和推理工作量。
啓用未設置參數的模型時,將保留目錄默認值。當這些默認值 (例如 Fast) 不符合團隊策略時,請使用每個模型的設置。
這些路由返回團隊基線配置。組織羣組仍可爲部分成員擴大訪問權限;羣組允許列表不在此 API 的管理範圍內。個人 API 密鑰 (BYOK) 控制仍需在儀表盤中設置。
如需讀取組織範圍的設置,或對關聯團隊進行批量切換,請參閱組織 API 模型訪問路由。
- 適用範圍:已啓用模型訪問控制的團隊
- 身份驗證:團隊 API 密鑰 (Basic auth)。讀取需要
models:read。寫入需要models:*。具有admin:*權限範圍的密鑰兩者均可使用。通用read:*密鑰無法調用這些路由。 - 提供商和模型 ID:路徑段使用目錄 ID,例如
anthropic和claude-opus-4-6,而非顯示名稱。GET 響應中包含顯示名稱。 - 先配置策略:當
state爲unrestricted(或legacy) 時,對提供商和模型的讀取和寫入會返回 409。對不受限團隊首次執行帶默認值的PUT /teams/model-access/configuration會啓用策略,並以當前目錄初始化設置 (與在“模型”頁面首次保存的效果相同) 。後續帶默認值的配置 PUT 僅更新默認值,不會更改現有開關。 - 恢復爲不受限狀態:使用
{ "state": "unrestricted" }執行PUT /teams/model-access/configuration會清除自定義策略,使state再次變爲unrestricted。 - 速率限制:每分鐘 20 個請求。寫入會以
team_settings事件的形式出現在團隊審計日誌中。請參閱速率限制和最佳實踐。
獲取模型訪問配置¶
/teams/model-access/configuration
返回團隊是否設置了自定義模型訪問策略,以及新發現的提供商和模型的默認值。
響應字段¶
teamId number
由 API 密鑰確定的整數團隊 ID。
state string
取值爲 unrestricted、custom 或 legacy。
newProviderDefault string | null
當 state 爲 custom 時,取值爲 enabled 或 disabled;否則爲 null。
newModelDefault string | null
當 state 爲 custom 時,取值爲 enabled 或 disabled;否則爲 null。
curl -X GET https://api.cursor.com/teams/model-access/configuration \
-u YOUR_API_KEY:
響應:
{
"teamId": 7,
"state": "unrestricted",
"newProviderDefault": null,
"newModelDefault": null
}
更新模型訪問配置¶
/teams/model-access/configuration
創建自定義策略、更新默認值,或將團隊恢復爲不受限狀態。
發送以下任一內容:
{ "state": "unrestricted" }:清除自定義策略 (以及舊版允許/阻止列表) ,將state設爲unrestricted{ "newProviderDefault", "newModelDefault" }:創建或更新自定義策略 (state: "custom"的向後兼容簡寫)
對於不受限團隊,首次發送默認值 PUT 請求會創建自定義策略並初始化目錄條目。後續默認值 PUT 請求僅更新默認值,保留現有開關設置。
請求體¶
state string
可選。使用 unrestricted 清除策略。發送默認值時請省略。
newProviderDefault string
enabled 或 disabled。創建或更新自定義策略時必填;當 state 爲 unrestricted 時請省略。
newModelDefault string
enabled 或 disabled。創建或更新自定義策略時必填;當 state 爲 unrestricted 時請省略。
curl -X PUT https://api.cursor.com/teams/model-access/configuration \
-u YOUR_API_KEY: \
-H "Content-Type: application/json" \
-d '{
"newProviderDefault": "disabled",
"newModelDefault": "enabled"
}'
響應:
{
"teamId": 7,
"state": "custom",
"newProviderDefault": "disabled",
"newModelDefault": "enabled"
}
將團隊恢復爲不受限狀態:
curl -X PUT https://api.cursor.com/teams/model-access/configuration \
-u YOUR_API_KEY: \
-H "Content-Type: application/json" \
-d '{ "state": "unrestricted" }'
響應:
{
"teamId": 7,
"state": "unrestricted",
"newProviderDefault": null,
"newModelDefault": null
}
列出模型訪問提供商¶
/teams/model-access/providers
列出目錄中的提供商和模型,包括最終解析的啓用狀態及每個模型的 parameters。如果團隊沒有自定義策略,則返回 409。
每個模型都包含由目錄定義的 parameters 數組。參數 ID 和支持的值來自模型目錄 (例如 fast、reasoning、effort、context) 。在寫入前,可通過此 GET 請求瞭解模型支持哪些參數。
模型 parameters 字段¶
id string
參數 ID (例如 fast 或 reasoning) 。
displayName string
易於理解的顯示標籤。
supportedValues string[]
目錄允許該模型使用此參數的所有值。
allowedValues string[]
團隊策略當前允許的值。
configuredDefaultValue string | null
管理員固定的默認值;未設置時爲 null。
catalogDefaultValue string | null
該模型中此參數的目錄默認值。
curl -X GET https://api.cursor.com/teams/model-access/providers \
-u YOUR_API_KEY:
響應:
{
"teamId": 7,
"state": "custom",
"providers": [
{
"id": "anthropic",
"displayName": "Anthropic",
"enabled": true,
"models": [
{
"id": "claude-opus-4-6",
"displayName": "Opus 4.6",
"enabled": true,
"parameters": [
{
"id": "fast",
"displayName": "Fast",
"supportedValues": ["false", "true"],
"allowedValues": ["false", "true"],
"configuredDefaultValue": null,
"catalogDefaultValue": "true"
}
]
}
]
},
{
"id": "openai",
"displayName": "OpenAI",
"enabled": true,
"models": [
{
"id": "gpt-5.4",
"displayName": "GPT-5.4",
"enabled": true,
"parameters": [
{
"id": "reasoning",
"displayName": "Reasoning",
"supportedValues": ["low", "medium", "high", "xhigh", "max"],
"allowedValues": ["low", "medium", "high"],
"configuredDefaultValue": "high",
"catalogDefaultValue": "medium"
}
]
}
]
}
]
}
更新模型訪問提供商¶
/teams/model-access/providers/:provider
啓用或禁用提供商。如果團隊仍爲 unrestricted 或 legacy,則返回 409。
參數¶
provider string 必填
目錄中的提供商 ID (例如 openai 或 anthropic) 。
請求體¶
enabled boolean 必填
curl -X PUT https://api.cursor.com/teams/model-access/providers/openai \
-u YOUR_API_KEY: \
-H "Content-Type: application/json" \
-d '{"enabled": false}'
列出提供商的模型¶
/teams/model-access/providers/:provider/models
列出某個提供商的模型及其最終解析的啓用狀態和每個模型的 parameters。參數字段與提供商響應一致。如果團隊沒有自定義策略,則返回 409。
參數¶
provider string 必填
目錄中的提供商 ID (例如 anthropic) 。
curl -X GET https://api.cursor.com/teams/model-access/providers/anthropic/models \
-u YOUR_API_KEY:
更新模型訪問模型¶
/teams/model-access/providers/:provider/models/:model
啓用或禁用單個模型,並可選擇設置每個模型的參數限制和默認值。團隊仍爲 unrestricted 或 legacy 時,返回 409。
參數¶
provider string 必填
目錄中的提供商 ID (例如 anthropic) 。
model string 必填
模型目錄中的模型 ID (例如 claude-opus-4-6) 。
請求體¶
enabled boolean 必填
parameters object
可選的從參數 ID 到設置的映射。未提供的參數和字段將保持不變。
allowedValuesstring[] | null: 限制成員可選擇的值。傳入null可清除限制。defaultValuestring | null: 團隊的默認值。設置限制時,必須包含在allowedValues中。傳入null可恢復目錄默認值。
未知的參數 ID 或值、空的 allowedValues 數組、不在 allowedValues 中的默認值,以及解析後沒有有效模型變體的設置均返回 400。
在模型上禁用 Fast:
curl -X PUT https://api.cursor.com/teams/model-access/providers/anthropic/models/claude-opus-4-6 \
-u YOUR_API_KEY: \
-H "Content-Type: application/json" \
-d '{
"enabled": true,
"parameters": {
"fast": { "allowedValues": ["false"] }
}
}'
設置允許的推理級別和默認值:
curl -X PUT https://api.cursor.com/teams/model-access/providers/openai/models/gpt-5.4 \
-u YOUR_API_KEY: \
-H "Content-Type: application/json" \
-d '{
"enabled": true,
"parameters": {
"reasoning": {
"allowedValues": ["low", "medium", "high"],
"defaultValue": "high"
}
}
}'
清除限制並恢復目錄默認值:
curl -X PUT https://api.cursor.com/teams/model-access/providers/openai/models/gpt-5.4 \
-u YOUR_API_KEY: \
-H "Content-Type: application/json" \
-d '{
"enabled": true,
"parameters": {
"reasoning": {
"allowedValues": null,
"defaultValue": null
}
}
}'
響應:
{
"id": "gpt-5.4",
"displayName": "GPT-5.4",
"enabled": true,
"provider": "openai",
"parameters": [
{
"id": "reasoning",
"displayName": "Reasoning",
"supportedValues": ["low", "medium", "high", "xhigh", "max"],
"allowedValues": ["low", "medium", "high", "xhigh", "max"],
"configuredDefaultValue": null,
"catalogDefaultValue": "medium"
}
]
}
錯誤¶
錯誤響應體使用:
{ "code": "error", "message": "…" }
| 狀態 | 發生情況 |
|---|---|
401 |
Key 無效,或缺少 models:read / models:* (或 admin:*) 權限 |
403 |
該團隊無法使用模型訪問控制 |
409 |
當 state 爲 unrestricted 或 legacy 時讀取或寫入 提供商 或模型 |
400 |
提供商、模型、參數 ID 或參數值未知;響應體無效;allowedValues 爲空;默認值不在 allowedValues 範圍內;會解析爲無有效模型變體的設置;或會阻止 Smart Auto 所需的模型 |