05API 基础
密钥与鉴权
每个 API 请求都携带密钥。这里说明如何创建密钥、如何传递,密钥出问题时 API 会如何响应,以及如何保存。
密钥的格式
有效的密钥由前缀 rg_live_ 和另外 40 个字符组成。完整的密钥在创建时只会显示一次。我们只保存密钥的指纹,因此无法找回丢失的密钥,请创建新的密钥。
rg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
控制台的登录名和密码不能用于 API:它们另有用途,API 不接受它们。
如何传递密钥
两个请求头任选其一,每个请求只用一个:Authorization: Bearer <key> 或 X-API-Key: <key>。如果两个请求头都传了,则以非空的 Bearer 为准;Bearer 无效时,不会再检查另一个请求头。
验证密钥最简单的方法是查询余额:该请求不会扣费。
# 方式 1:Authorization 请求头 curl --fail-with-body --max-time 20 \ https://api.rendergrid.io/ api/ public/ v1/ balance \ -H "Authorization: Bearer $RENDERGRID_API_KEY" # 方式 2:X-API-Key 请求头 curl --fail-with-body --max-time 20 \ https:// api.rendergrid.io/ api/ public/ v1/ balance \ -H "X-API-Key: $RENDERGRID_API_KEY"
import os import requests key = os.environ["RENDERGRID_API_KEY"] response = requests.get( "https://api.rendergrid.io/ api/ public/ v1/ balance", headers={"Authorization": f"Bearer {key}"}, timeout=(5, 20), ) response.raise_for_status() print(response.json())
// Node.js 22+,文件扩展名为 .mjs const url = "https://api.rendergrid.io/ api/ public/ v1/ balance"; const key = process.env.RENDERGRID_API_KEY; const response = await fetch(url, { headers: { Authorization: `Bearer ${key}` }, signal: AbortSignal.timeout(20_000), }); if (!response.ok) { const body = await response.text(); throw new Error(`HTTP ${response.status}: ${body}`); } console.log(await response.json());
{
"currency": "USD",
"balance": "42.5000",
"overdraft_limit": "0.0000",
"available": "42.5000"
}创建、更换、撤销
创建密钥
前往控制台:在“API 密钥”页面中点击“创建密钥”。按集成来给它命名,例如“网站”“机器人”“库存系统”。这样更容易分清这是谁的密钥。
立即复制
关闭窗口后,将无法再次显示密钥。请把它放进环境变量或密钥存储库。
无中断更换
创建新密钥,把它填入集成中,发送一次请求验证,然后再撤销旧密钥。被撤销的密钥会立即失效。
账号的余额和限额由其所有密钥共用。分开创建密钥,是为了能按集成独立地更换和撤销访问权限。
一个账号最多可以有 50 个有效密钥。Playground 在你的会话期间签发的密钥不计入此数量。被更换的密钥在到期之前仍计入数量。
可以为每个密钥单独设置月度消费限额。这是该密钥的硬性限制:限额用尽后,使用该密钥的请求会收到 402(了解更多)。
API 的响应
请根据 error.code 和 error.details.reason 判断拒绝原因,不要依据消息文本。
| 发生了什么 | API 响应 | 怎么办 |
|---|---|---|
| 未传入密钥 | 401 ERR_API_KEY_INVALID, api_key_missing | 检查请求头是否到达 API |
| 密钥错误、已撤销或已过期 | 401 ERR_API_KEY_INVALID, api_key_invalid | 创建新密钥。这几种情况下的响应相同 |
| 密钥或账号的月度限额已用尽(如已设置) | 402 ERR_INSUFFICIENT_BALANCE, monthly_budget_exceeded | 在控制台中提高限额,或等待按 UTC 计算的下个月 |
| 账号已被禁用 | 403 ERR_ACCOUNT_DISABLED, account_disabled | 停止发送请求并联系技术支持 |
| API 已被经理暂停 | 403 ERR_API_SUSPENDED, api_suspended | 请联系经理。此时控制台仍可访问 |
HTTP/1.1 401 Unauthorized { "error": { "code": "ERR_API_KEY_INVALID", "message": "no API key on the request", "details": { "reason": "api_key_missing" } } }
其他拒绝的结构相同。它们的 message 文本和 details.reason 取值汇总在“访问错误”板块。
收到 401 和 403 时,不要在循环中反复重试请求。同一个 IP 每分钟被拒绝超过 30 次,API 就会在 120 秒内不再响应来自该 IP 的请求(burst_block)。详见“限额”页面。
如何保存密钥
- 将密钥保存在服务器的环境变量或密钥管理器中。
- 不要把密钥放进网站或移动应用的代码、公开的代码仓库和日志中。只在服务器端向 API 发送请求。
- 为每个集成分别提供一个密钥。
- 如果密钥可能已经泄露,请立即撤销,然后再创建新的密钥。
通过 AI 助手工作?不要把密钥粘贴到对话中。详见“哪些内容不要交给 AI 助手”板块。