控制台 API 让你的脚本与集成能够调用模型。每个请求都使用 API 密钥进行身份验证。
curl --fail-with-body "https://opencode.ai/inference/v1/models" \
--header "Authorization: Bearer oc_sk_..."
| API | 端点 |
| ----------------------------------- | ------------------------------------------ |
| 推理 |
https://opencode.ai/inference/... |
| 提供商 | https://opencode.ai/inference/custom/... |API 密钥
工作区成员和服务账户都可以拥有 API 密钥。将密钥作为 Bearer 令牌发送。
Authorization: Bearer oc_sk_...
| | 个人 API 密钥 | 服务账户密钥 |
| ---------------- | ------------------------------------------------------ | ------------------------------------------------------------------------ |
| 创建者 | 任何成员,为自己创建 | 所有者和管理员 |
| 创建位置 | 账户 › 个人 API 密钥 | 设置 › 服务账户 |
| 生效身份 | 创建该密钥的成员 | 该服务账户 |
| 用量计入 | 该成员的预算 | 该服务账户的预算 |
| 适用场景 | 你自己的脚本与 Harness | CI、共享机器与集成 |
- 每个密钥只在创建时选定的一个工作区内有效。无需在请求头中指定工作区。
- 完整密钥仅在创建后显示一次。此后控制台只显示其前缀。
- 过期时间为可选项:永不、1 天、7 天、30 天或自定义(1 到 365 天)。过期的密钥无法续期,请创建新密钥。
个人 API 密钥
个人密钥以你的身份生效。你的角色、预算与模型规则均适用于它。
- 从账户菜单打开账户,找到个人 API 密钥。
- 点击添加 API 密钥。
- 选择工作区,填写密钥名称,以及可选的过期时间。所有者和管理员还需选择权限。
- 点击创建并复制密钥。
oc_sk_1a2b3c4d5e6f_...
该密钥遵循你当前对工作区的访问权限。若你的角色变更,密钥的能力也会随之变化。若工作区强制执行 SSO,则除非你是所有者,否则密钥仅在你拥有活跃 SSO 会话期间有效。
服务账户
服务账户是工作区中的非人类成员,拥有自己的 API 密钥、用量与预算。将其用于自动化,使用量不与个人绑定。所有者和管理员负责管理它们。
- 打开设置 › 服务账户,点击添加服务账户,然后为其命名,例如
CI Pipeline。 - 打开该服务账户,点击添加 API 密钥。
- 填写密钥名称,选择可选的过期时间与权限,然后点击创建。
- 复制密钥。
export SERVICE_API_KEY="oc_sk_..."
所有者和管理员之后可通过密钥操作菜单中的**编辑…**重命名服务账户密钥或更改其权限。
权限
每个密钥都有一个权限级别,在创建时于权限下选定。
| 权限 | 允许的操作 |
| -------------- | ------------------------------------------------------------------------------------ |
| 全部 | 成员或服务账户可执行的一切操作,但本账户的 API 密钥除外。 |
| 受限 | 仅限你选定的资源。 |
| 只读 | 对所有资源的读取访问。密钥可以列出模型,但不能调用它们。 |
密钥的能力永远不会超过其所代表的对象。个人密钥受成员当前角色限制,服务账户密钥受服务账户可执行的操作限制。
受限密钥
将每个资源设为无、读取或写入。写入包含读取。
| 资源 | 级别 |
| --------------------------- | --------------------- |
| 模型 | 读取、请求 |
| 用量 | 读取 |
| 预算 | 读取、写入 |
| 成员 | 读取、写入 |
| 提供商 | 读取、写入 |
| 账单 | 读取、写入 |
| 工作区设置 | 读取、写入 |
| SSO | 读取 |
| 服务账户 | 读取 |
| 本账户的 API 密钥 | 写入 |
Permissions: Restricted
Models: Request
在细粒度权限发布之前以仅推理创建的密钥,会显示为受限,且模型设为请求。
谁能授予什么
- 成员只能创建可列出和调用模型的个人密钥。控制台会显示「此密钥可以代表你列出和调用模型。」而不是权限选项。
- 所有者和管理员可为其个人密钥授予全部、受限或只读,但不超过其自身角色。默认为受限,且模型设为请求。若之后被降级,其密钥会相应收缩。
- 服务账户密钥默认为全部。由所有者和管理员选择其权限。
限制
某些操作始终需要有人登录控制台,且使用密钥创建密钥受到严格限制。
- 任何 API 密钥都不能更改 SSO 设置或删除工作区。
- 即使拥有全部权限,服务账户密钥也不能邀请成员、更改角色、移除成员、管理账单、更改工作区设置、管理模型,或创建、移除服务账户。
- 本账户的 API 密钥仅在服务账户密钥上可用,且全部不包含它。拥有该权限的密钥只能为自己的服务账户创建和撤销密钥。新密钥必须为受限,不得超过创建它的密钥的权限,且不能包含本账户的 API 密钥。
- 个人密钥永远无法获得本账户的 API 密钥,且任何 API 密钥都不能创建或撤销个人 API 密钥。
超出密钥权限的请求会返回 HTTP
403。撤销
| 密钥 | 谁可以撤销 | 位置 |
| ------------------- | ---------------------- | --------------------------------------------------------------------------------- |
| 个人 API 密钥 | 拥有它的成员 | 账户 › 个人 API 密钥,然后点击撤销 |
| 个人 API 密钥 | 所有者和管理员 | 设置 › 成员中该成员的页面,位于 API 密钥下 |
| 服务账户密钥 | 所有者和管理员 | 设置 › 服务账户中该服务账户的页面,位于 API 密钥下 |
密钥也会被自动撤销:
- 离开或被移出工作区,或通过 SCIM 被取消配置,会撤销该人在该工作区中创建的所有密钥,包括服务账户密钥。同一服务账户上的其他密钥仍可继续使用。
- 移除服务账户会撤销其全部密钥。
已撤销和已过期的密钥会立即失效,并返回 HTTP
401。