API 密钥管理接口文档
汇飞智能 — API 密钥管理接口文档
文档版本:v1.2
最后更新:2026-10-09
概述
本文介绍 API 密钥的创建、查询、额度调整、启用、禁用和删除接口。
查询余额与用量,请参阅API 密钥与额度查询接口。
服务地址
鉴权方式
本文所有管理接口均使用访问令牌鉴权,请求头只需携带:
Authorization: Bearer <访问令牌>
令牌本身即代表操作者身份:平台不需要、也不支持通过额外的用户 ID 参数指定其他账号。所有接口仅能操作当前令牌所属账号名下的密钥与资源,无法操作他人账号。
访问令牌泄露后,请在控制台「安全与访问」中撤销并重新创建。
额度单位说明
密钥额度字段(remain_quota)使用平台内部额度单位:
- 控制台「API 密钥」页面显示的额度由
remain_quota 换算而来。
- 设置
unlimited_quota: true 时密钥不受额度限制,remain_quota 值被忽略。
分组(group)说明
group 指定密钥使用的渠道分组。不同分组对应不同的可用模型和计费倍率。
默认分组
group 为空字符串时,密钥使用账号默认分组。若默认分组没有可用渠道,调用模型时会返回:
{"error":{"code":"model_not_found","message":"分组 xxx 下模型 yyy 无可用渠道(distributor)","type":"server_error"}}
建议创建密钥前查询可用分组,并将分组名填入 group。
查询可用分组
GET /api/user/self/groups
curl --location 'https://sapis.cn/api/user/self/groups' \
--header 'Authorization: Bearer <访问令牌>'
响应列出当前账号可用的分组,包含分组描述和计费倍率 ratio:
{
"success": true,
"message": "",
"data": {
"default": {"desc": "默认分组", "ratio": 1},
"free": {"desc": "免费模型", "ratio": 0},
"国模": {"desc": "国产模型", "ratio": 0.4},
"国模特惠": {"desc": "国产模型特惠渠道,稳定性逊于国模分组", "ratio": 0.3}
}
}
将返回的分组名(如 国模特惠)填入 group。
分组生效时间
新建密钥或修改分组后,配置约需数秒生效。请等待约 15 秒后调用模型。在此期间,修改过分组的密钥可能仍使用原分组,并返回原分组无可用渠道的错误。
model_not_found 排查
编码要求
请求体使用 UTF-8 编码的 JSON。Windows 终端使用 GBK 编码时,直接输入中文可能导致乱码。可将请求体保存为 UTF-8 文件,通过 curl --data @文件 发送。
一、创建密钥
创建 API 密钥,并设置初始额度、有效期和分组。
接口地址
请求体参数
请求示例
curl --location --request POST 'https://sapis.cn/api/token/' \
--header 'Authorization: Bearer <访问令牌>' \
--header 'Content-Type: application/json' \
--data '{
"name": "prod-key-01",
"remain_quota": 5000000,
"unlimited_quota": false,
"expired_time": -1,
"group": "",
"model_limits_enabled": false,
"model_limits": "",
"allow_ips": ""
}'
响应示例
{"message": "", "success": true}
创建成功后,按「二、查询完整密钥」获取密钥内容。
二、查询完整密钥
密钥列表和详情接口返回的 key 都是脱敏值。要获取完整密钥,依次调用以下接口:
第 3 步无需再次提交密码:登录访问令牌可直接换取完整密钥,且只能换取当前账号名下的密钥。
第一步:登录
使用账号和密码登录,取得登录访问令牌,供后续请求使用。
接口地址
POST https://sapis.cn/api/user/login
请求头
请求体参数
cURL 请求示例
curl --location --request POST 'https://sapis.cn/api/user/login' \
--header 'Content-Type: application/json' \
--data '{
"username": "<用户名>",
"password": "<当前账号登录密码>"
}'
成功响应示例(节选)
{
"success": true,
"message": "",
"data": {
"access_token": "<登录访问令牌>",
"token_type": "Bearer",
"access_expires_at": 1791515062,
"session": { "sid": "881ce14a-...", "login_method": "password" },
"user": { "id": 9, "display_name": "demo", "group": "default", "quota": 49916248 }
}
}
响应字段说明
登录成功后,复制完整的 data.access_token 用于第二、三步。第 2、3 步直接使用该令牌作为 Authorization 即可,无需任何额外的用户 ID 参数。
第二步:查询密钥 ID
按密钥名称搜索,获取对应的密钥 ID。
接口地址
GET https://sapis.cn/api/token/search
请求头
查询参数
cURL 请求示例
curl --location --get 'https://sapis.cn/api/token/search' \
--data-urlencode 'keyword=<密钥名称>' \
--data-urlencode 'p=1' \
--data-urlencode 'size=20' \
--header 'Authorization: Bearer <登录访问令牌>'
将 keyword=<密钥名称> 换成你实际的密钥名称,例如 default。
如果不知道密钥名称,可先查询当前账号的密钥列表:
curl --location 'https://sapis.cn/api/token/?p=1&size=20' \
--header 'Authorization: Bearer <登录访问令牌>'
成功响应示例(节选)
{
"data": {
"page": 1,
"page_size": 20,
"total": 1,
"items": [
{
"id": 21089,
"name": "prod-key-01",
"key": "prod**********y-01"
}
]
},
"message": "",
"success": true
}
响应字段说明
找到名称匹配的记录,将其 id 填入第三步的地址。例如,上面的 prod-key-01 对应 21089。
有同名密钥时,需结合创建时间等信息确认记录。结果超过一页时,增加 p 翻页;data.items 为空表示本页没有记录。
此接口返回的 key 为脱敏值。完整密钥通过第三步获取。
第三步:查询完整密钥
使用第一步的登录访问令牌,提交第二步取得的密钥 ID。
接口地址
POST https://sapis.cn/api/token/{id}/key
路径参数
请求头
cURL 请求示例
curl --location --request POST 'https://sapis.cn/api/token/21089/key' \
--header 'Authorization: Bearer <登录访问令牌>'
本请求使用 POST,地址为 /api/token/{id}/key,无请求体。将 21089 替换为第二步取得的 ID。
成功响应示例
{
"success": true,
"message": "",
"data": {
"key": "pzGoBTwBxpMV2FvDSpaJOMVP2nSCPcqbxJU0TYXcqX5fg5ag"
}
}
响应字段说明
模型调用的请求头填写如下(加不加 sk- 前缀平台均可识别):
Authorization: Bearer <data.key 的完整值>
批量获取完整密钥
需要一次取回多个密钥时,使用 POST /api/token/batch/keys,请求体 {"ids":[1,2,3]}(最多 100 个),响应 data.keys 为 {密钥ID: 完整密钥} 的映射。
请勿将登录密码、访问令牌或完整密钥写入日志或代码仓库。
三、调整密钥额度(修改密钥)
接口地址
本接口为全量覆盖更新,必须提交全部可写字段。仅提交 id 和 remain_quota 会清空密钥名称,并将过期时间置为 0(立即过期)。
请先调用 GET /api/token/{id} 读取当前配置,修改所需字段后,提交下表中的全部字段。
请求体参数
请求示例(将额度调整为 ¥2)
curl --location --request PUT 'https://sapis.cn/api/token/' \
--header 'Authorization: Bearer <访问令牌>' \
--header 'Content-Type: application/json' \
--data '{
"id": 21089,
"name": "prod-key-01",
"remain_quota": 1000000,
"unlimited_quota": false,
"expired_time": -1,
"status": 1,
"group": "",
"model_limits_enabled": false,
"model_limits": "",
"allow_ips": ""
}'
响应示例
{
"data": { "id": 21089, "remain_quota": 1000000, "...": "..." },
"message": "",
"success": true
}
调整成功后,控制台「API 密钥」页面会同步显示新的剩余额度。
校验规则
- 未启用无限额度时,
remain_quota 不能为负数或超过系统上限。
- 增加额度时,传入当前剩余额度与增加额度之和。
- 重新启用已过期或额度已耗尽的密钥前,需先调整
expired_time 或 remain_quota。
四、启用 / 禁用密钥
仅修改状态时,设置 status_only=true,请求体只需提交 id 和 status:
curl --location --request PUT 'https://sapis.cn/api/token/?status_only=true' \
--header 'Authorization: Bearer <访问令牌>' \
--header 'Content-Type: application/json' \
--data '{"id": 21089, "status": 2}'
status:1 启用,2 禁用。
五、删除密钥
接口地址
请求示例
curl --location --request DELETE 'https://sapis.cn/api/token/21089' \
--header 'Authorization: Bearer <访问令牌>'
响应示例
{"message": "", "success": true}
删除后密钥立即失效,且无法恢复。
常见错误
HTTP 200 也可能表示业务失败。所有接口统一以响应体的 success 字段判断成败:true 为成功,false 为失败,失败原因见 message。
常见问题
Q:调整密钥额度会影响账号余额吗?
A:不会。密钥额度与账号余额独立设置,调用模型时同时扣减两者。密钥额度总和可以超过账号余额,但任一额度耗尽后均无法继续调用。
Q:能通过本接口操作其他账号的密钥吗?
A:不能。所有接口仅允许操作当前访问令牌所属账号名下的密钥。
Q:额度可以调小吗?
A:可以。将 remain_quota 设置为调整后的剩余额度即可。
Q:通过接口的变更在控制台可见吗?
A:可以。创建的密钥和调整后的额度会同步显示在控制台「API 密钥」页面。
Q:新建密钥或修改分组后,调用提示「无可用渠道」怎么办?
A:等待约 15 秒后重试。若持续报错,检查分组是否有该模型的可用渠道,详见「分组(group)说明」。
变更记录