《Cursor文档》-Admin API

Admin API 允许你以编程方式访问团队数据,包括成员信息、用量指标、支出明细和模型访问。

  • Admin API 使用 Basic Authentication,并将你的 API 密钥作为用户名。
  • 有关创建 API 密钥、认证方式、速率限制和最佳实践的详细信息,请参阅 API 概览

如需执行跨团队的组织级操作,请参阅 组织Organization API

端点

获取团队成员

/teams/members

获取所有团队成员及其详细信息。

响应字段

teamMembers array

团队成员对象数组,每个对象包含:

  • id string - 团队成员的编码用户 ID (例如 user_PDSPmvukpYgZEDXsoNirw3CFhy)
  • email string - 团队成员的邮箱地址
  • name string - 团队成员的显示名称
  • role string - 在团队中的角色 (例如 memberowner)
  • isRemoved boolean - 该成员是否已从团队中移除
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

要筛选的事件类型,使用逗号分隔。可能的取值:loginlogoutadd_userremove_userupdate_user_roleteam_settingsmcp_server_configteam_api_keyuser_api_keyprivacy_modeuser_spend_limitteam_ruleteam_repoteam_hookteam_commandcreate_directory_groupdelete_directory_groupupdate_directory_groupupdate_directory_group_permissionsadd_user_to_directory_groupremove_user_from_directory_groupbugbot_installationbugbot_installation_settingsbugbot_repo_settingsbugbot_team_rulebugbot_team_settingsbugbot_bulk_repo_update

search string

用于筛选事件的搜索词

page number

页码 (从1开始) 。默认值:1

pageSize number

每页结果数 (1-500) 。默认值:100

users string

按用户筛选。参见下方的 用户筛选

日期范围不能超过 30 天。更长时间段请拆分为多次请求。

日期格式

startTimeendTime 参数支持多种格式:

  • 相对快捷方式nowtodayyesterday7d (7 天前) 、5h (5 小时前) 、300s (300 秒前)
  • ISO 8601 字符串2024-01-15T12:00:00Z2024-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 一同提供时,将启用分页,并返回在所请求日期范围内具有成员资格的所有团队成员的数据。

未指定分页参数时,此端点仅返回活跃用户 (即在该日期范围内有活动的用户) 。要获取所有团队成员,请同时提供 pagepageSize 参数。

使用分页时,响应会为每位用户返回一个 isActive 字段,用于指示该用户当天是否有活动。请求时间段结束后才加入的成员不包括在内。

日期范围不能超过 30 天。如需查询更长时段,请分多次请求。

字段 subscriptionIncludedReqsusageBasedReqsapiKeyReqs 统计的是原始使用事件,而非较早的基于请求的定价模式中的可计费请求单位。要获取准确的可计费请求数量,请使用 /teams/filtered-usage-events 端点,并对 requestsCosts 字段求和。

响应字段

data 数组中的每个对象包含:

  • userId number - 用户的唯一标识符
  • day string - 此记录所涵盖的日期 (ISO 日期,例如 2024-03-18)
  • date number - 以纪元毫秒为单位的日期
  • email string - 用户的电子邮件地址
  • isActive 布尔值 - 用户当天是否有活动 (仅在分页时提供)
  • totalLinesAdded number - 新增代码行总数
  • totalLinesDeleted number - 删除的代码行总数
  • acceptedLinesAdded number - 已接受的 AI 建议新增行数
  • acceptedLinesDeleted number - 已接受的 AI 建议删除行数
  • totalApplies number - 应用 AI 代码的操作总数
  • totalAccepts number - 已接受的 AI 建议总数
  • totalRejects number - 被拒绝的 AI 建议总数
  • totalTabsShown number - 向用户展示的 Tab 补全总数
  • totalTabsAccepted number - 用户接受的 Tab 补全数量
  • composerRequests number - 发起的 Composer 请求数
  • chatRequests number - 发起的 chat 请求数量
  • agentRequests number - 发起的 Agent 模式请求数
  • cmdkUsages number - Cmd+K 内联编辑的使用次数
  • subscriptionIncludedReqs number - 订阅方案包含的请求数
  • apiKeyReqs number - 通过 API 密钥发起的请求数
  • usageBasedReqs number - 按用量计费的 (超额) 请求数
  • bugbotUsages number - Bugbot 使用次数
  • mostUsedModel string | null - 当天使用频率最高的 AI 模型
  • applyMostUsedExtension string | null - 应用操作最常用的文件扩展名
  • tabMostUsedExtension string | null - Tab 补全最常用的文件扩展名
  • clientVersion string | 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

排序字段:amountdateuser。默认值:date

sortDirection string

排序方向:ascdesc。默认值:desc

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页返回的结果数量

响应字段

teamMemberSpend 中的每个对象包含:

  • userId string - 编码后的用户 ID (例如:user_PDSPmvukpYgZEDXsoNirw3CFhy) 。与 /teams/members 中的 teamMembers[].id 使用相同的标识符命名空间。
  • name string - 用户显示名称
  • email string - 用户邮箱地址
  • role string - 在团队中的角色 (例如:memberowner)
  • spendCents number - 当前计费周期内按需支出金额 (单位:美分),不包括包含的用量
  • overallSpendCents number - 当前计费周期内的总支出金额 (单位:美分),包括按需用量和包含的用量
  • fastPremiumRequests number - 该计费周期内按用量计费的高级请求次数
  • hardLimitOverrideDollars number - 为该用户设置的自定义硬性支出上限覆盖值 (单位:美元,0 表示不覆盖)
  • monthlyLimitDollars number | null - 为该用户设置的每月支出上限 (单位:美元),若未设置上限则为 null
  • effectivePerUserLimitDollars number - 当前生效的按用户支出上限 (单位:美元),由 monthlyLimitDollarshardLimitOverrideDollars 推导得出

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 毫秒) 。此界限包含在内。

startDateendDate 是精确到毫秒的时间点,并且
两个边界都包含在内。恰好发生在 2026-05-08T00:00:00.000Z 的事件,
endDate1778198400000 时也会被包含在内。对于不重叠的每日
摄取时间窗口,请将前一个窗口的 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 - 仅限团队自托管用量池 worker
  • SELF_HOSTED_MACHINE - 仅限个人 “My Machine” worker

无法识别的 hostingType 值会返回 400 错误,而不是空结果,因此不会把拼写错误误当成自托管支出确实为零。此过滤器仅涵盖推理支出;自托管计算在你自己的机器上运行,且永远不会由 Cursor 计量。

当你传入多个筛选条件时,此端点会使用 AND 将它们组合。例如,同时传入 automationIdserviceAccountId 时,将返回同时匹配这两个值的事件。

响应字段

usageEvents 中的每个对象包含:

  • timestamp string - 事件时间戳 (epoch 毫秒,以字符串形式表示)
  • userEmail string - 发出该请求的用户邮箱地址
  • serviceAccountId string | undefined - 发出该请求的服务账户 ID。对于由人工用户发起的事件,此字段会被省略。
  • serviceAccountName string | undefined - 发出该请求的服务账户显示名称。人工用户事件中会省略此字段。
  • cloudAgentId string | undefined - 与此事件关联的云端代理运行 ID。对于云端代理之外的事件,会省略此字段。
  • automationId string | undefined - 与此事件关联的自动化 UUID。自动化之外的事件中会省略此字段。
  • conversationId string | undefined - 生成此事件的对话 (智能体会话) ID。可用它将费用归因于某个会话,或作为与其他提供对话 ID 的来源 (如 AI Code Tracking API) 进行关联的键。未关联对话的事件会省略此字段。
  • model string - 用于该请求的 AI 模型
  • kind string - 计费类别 (例如 Usage-basedIncluded in Business)
  • maxMode boolean - 请求是否使用 Max 模式
  • requestsCosts number - 按请求单位计算的成本
  • isTokenBasedCall boolean - 请求是否按 token 用量计费
  • isChargeable boolean - 此事件是否计费
  • isHeadless boolean - 此请求是否在没有连接客户端的情况下发出 (例如后台 Agent)
  • tokenUsage object | undefined - Token 使用明细 (当 isTokenBasedCalltrue 时存在) :
  • inputTokens number - 消耗的输入 token 数
  • outputTokens number - 生成的输出 token 数
  • cacheWriteTokens number - 写入缓存的 token 数
  • cacheReadTokens number - 从缓存读取的 token 数
  • totalCents number - 模型总费用 (美分)
  • discountPercentOff number | undefined - 已应用的折扣百分比 (如有)
  • chargedCents number - 此事件实际收取的总金额 (单位:美分)。对于适用 Cursor Token 费率的第三方模型请求,此金额包含模型费用以及 Cursor Token 费率。使用此字段可将事件级成本与 /teams/spend 总计对齐。适用于按 token 和按请求计费的方案。
  • cursorTokenFee number | 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
  }'

每个匹配的事件都包含其 automationIdcloudAgentId。对所有事件的 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
  • 设置 spendLimitDollarsnull 会完全清除/移除该上限
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 时必填。

  • 可用性:仅限企业版
  • 仅提供 userIdemail 其中之一,不要同时提供
  • 移除后团队中至少需要保留一名付费成员
  • 移除后团队中至少需要保留一名管理员 (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 必填

代码仓库屏蔽列表对象数组。每个代码仓库对象必须包含:

  • url string - 要加入屏蔽列表的代码仓库 URL
  • patterns string[] - 要屏蔽的文件模式数组 (支持 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,例如 anthropicclaude-opus-4-6,而非显示名称。GET 响应中包含显示名称。
  • 先配置策略:当 stateunrestricted (或 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

取值为 unrestrictedcustomlegacy

newProviderDefault string | null

statecustom 时,取值为 enableddisabled;否则为 null

newModelDefault string | null

statecustom 时,取值为 enableddisabled;否则为 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

enableddisabled。创建或更新自定义策略时必填;当 stateunrestricted 时请省略。

newModelDefault string

enableddisabled。创建或更新自定义策略时必填;当 stateunrestricted 时请省略。

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 和支持的值来自模型目录 (例如 fastreasoningeffortcontext) 。在写入前,可通过此 GET 请求了解模型支持哪些参数。

模型 parameters 字段

id string

参数 ID (例如 fastreasoning) 。

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

启用或禁用提供商。如果团队仍为 unrestrictedlegacy,则返回 409

参数

provider string 必填

目录中的提供商 ID (例如 openaianthropic) 。

请求体

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

启用或禁用单个模型,并可选择设置每个模型的参数限制和默认值。团队仍为 unrestrictedlegacy 时,返回 409

参数

provider string 必填

目录中的提供商 ID (例如 anthropic) 。

model string 必填

模型目录中的模型 ID (例如 claude-opus-4-6) 。

请求体

enabled boolean 必填

parameters object

可选的从参数 ID 到设置的映射。未提供的参数和字段将保持不变。

  • allowedValues string[] | null: 限制成员可选择的值。传入 null 可清除限制。
  • defaultValue string | 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 stateunrestrictedlegacy 时读取或写入 提供商 或模型
400 提供商、模型、参数 ID 或参数值未知;响应体无效;allowedValues 为空;默认值不在 allowedValues 范围内;会解析为无有效模型变体的设置;或会阻止 Smart Auto 所需的模型
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜