| 用途 | 地址 |
|---|---|
| AI 模型调用 & OpenAI 兼容接口 | https://platform.shuyanai.com |
| 平台管理接口(本文档) | https://www.shuyanai.com/apex |
重要:本文档所有接口均以 https://www.shuyanai.com/apex为基础地址。platform.shuyanai.com仅提供/v1/模型接口,不提供管理接口。
Authorization: Bearer <系统访问令牌>
apex-api-user: <用户数字ID>| 请求头 | 必填 | 说明 |
|---|---|---|
Authorization | 是 | Bearer <系统访问令牌>。在控制台「个人设置 → 账户管理 → 安全设置」中生成和复制 |
apex-api-user | 是 | 账户的数字 ID,需联系后台管理员查询 |
系统访问令牌与用户数字 ID 必须属于同一账户,不匹配将返回 401。 系统访问令牌具备密钥管理权限,请按最高敏感级别保管,泄露后请立即在控制台重置。 所有接口仅能操作本账户名下的密钥。
remain_quota)使用平台内部额度单位:500,000 额度单位 = 1 美元($1)| remain_quota 取值 | 美元 | 人民币(控制台显示,$1 = ¥7) |
|---|---|---|
| 50000 | $0.1 | ¥0.7 |
| 500000 | $1 | ¥7 |
| 5000000 | $10 | ¥70 |
| 50000000 | $100 | ¥700 |
remain_quota 换算而来。unlimited_quota: true 时密钥不受额度限制,remain_quota 值被忽略。group 字段决定该密钥路由到哪一类渠道资源池,并对应不同的计费倍率。这是发号时最容易踩坑的一步,请务必阅读。group 传空字符串时,密钥使用账户默认分组。部分账户的默认分组并未绑定可用渠道,此时用该密钥调用模型会返回:{"error":{"code":"model_not_found","message":"分组 xxx 下模型 yyy 无可用渠道(distributor)","type":"server_error"}}GET /api/user/self/groupsratio:{
"data": {
"deepseek": {
"de-of-svip": {"desc": "...", "desc_en": "...", "ratio": 0.32},
"ds-hs-svip": {"desc": "...", "desc_en": "...", "ratio": 0.72}
},
"qwen": { "qw-of-svip": {"desc": "...", "ratio": 0.55} }
},
"message": "",
"success": true
}de-of-svip)填入密钥的 group 字段即可。PUT /api/token/ 修改密钥分组,或新建密钥后,网关侧存在令牌缓存,分组变更需数秒(实测最多约 15 秒)才在模型调用侧生效。在此期间:| 现象 | 原因 | 处理 |
|---|---|---|
分组 X 下模型 Y 无可用渠道 | 分组 X 未绑定模型 Y 的渠道 | 换用承载该模型的分组;用 GET /api/user/self/groups 确认 |
| 刚改完分组仍报旧分组无渠道 | 令牌缓存未刷新 | 等待约 15 秒后重试 |
| 特价分组间歇性无渠道 | 特价资源池并发/稳定性有限 | 改用稳定分组,或稍后重试 |
curl --data @文件(文件保存为 UTF-8)或程序语言的 HTTP 客户端(如 Python requests/urllib)发送;POST /api/token/| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | String | 是 | 密钥名称,最长 50 字符 |
remain_quota | Integer | 是 | 初始额度(内部额度单位),≥ 0 |
unlimited_quota | Boolean | 是 | 是否无限额度,true 时不受 remain_quota 限制 |
expired_time | Integer | 是 | 过期时间(Unix 秒级时间戳),-1 表示永不过期 |
group | String | 否 | 分组,空字符串表示使用账户默认分组。默认分组可能无可用渠道,建议显式指定有效分组,详见「分组(group)说明」 |
model_limits_enabled | Boolean | 否 | 是否启用模型白名单 |
model_limits | String | 否 | 模型白名单,逗号分隔 |
allow_ips | String | 否 | IP 白名单,空表示不限制 |
{"message": "", "success": true}创建接口不直接返回密钥内容,请随后调用「查询密钥列表」或「搜索密钥」获取新密钥的 id与key。
GET /api/token/?p=1&size=20| 参数 | 说明 |
|---|---|
p | 页码,从 1 开始 |
size | 每页条数 |
{
"data": {
"page": 1,
"page_size": 20,
"total": 3,
"items": [
{
"id": 21089,
"user_id": 10001,
"key": "PqXk****************************",
"status": 1,
"name": "prod-key-01",
"created_time": 1784712786,
"accessed_time": 1784712786,
"expired_time": -1,
"remain_quota": 5000000,
"unlimited_quota": false,
"used_quota": 0,
"group": ""
}
]
},
"message": "",
"success": true
}| 字段 | 类型 | 说明 |
|---|---|---|
id | Integer | 密钥 ID,修改/删除操作以此为准 |
key | String | 密钥内容(调用模型接口时使用 sk- + 该值) |
status | Integer | 状态:1 启用,2 禁用,3 已过期,4 已耗尽 |
remain_quota | Integer | 剩余额度(内部额度单位) |
used_quota | Integer | 累计已用额度 |
unlimited_quota | Boolean | 是否无限额度 |
expired_time | Integer | 过期时间戳,-1 永不过期 |
GET /api/token/{id}
GET /api/token/search?keyword=<名称关键词>PUT /api/token/⚠️ 重要:本接口为全量覆盖更新
请求体必须携带密钥的全部可写字段,接口会用请求体整体覆盖原记录。若只传 id和remain_quota,密钥名称将被清空、过期时间将被置 0(立即过期)。标准操作流程:先 GET /api/token/{id}获取当前全量字段 → 仅修改目标字段 → 整体回写。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | Integer | 是 | 密钥 ID |
name | String | 是 | 密钥名称(回填原值) |
remain_quota | Integer | 是 | 目标剩余额度(绝对值,非增量) |
unlimited_quota | Boolean | 是 | 是否无限额度 |
expired_time | Integer | 是 | 过期时间戳(回填原值) |
status | Integer | 是 | 状态(回填原值) |
group | String | 是 | 分组(回填原值) |
model_limits_enabled | Boolean | 是 | 回填原值 |
model_limits | String | 是 | 回填原值 |
allow_ips | String | 是 | 回填原值 |
{
"data": { "id": 21089, "remain_quota": 1000000, "...": "..." },
"message": "",
"success": true
}remain_quota 不能为负数,且不能超过系统上限remain_quota 为目标值语义:额度充值请自行计算 当前值 + 增量 后传入expired_time / remain_quotastatus_only 参数,无需回填全量字段:status:1 启用,2 禁用。DELETE /api/token/{id}{"message": "", "success": true}删除后密钥立即失效且不可恢复,请谨慎操作。
| 场景 | 响应 | 处理建议 |
|---|---|---|
| 令牌缺失/无效/与用户 ID 不匹配 | {"code":401,"msg":"未登录或登录已失效"} | 检查系统访问令牌与 apex-api-user 是否属于同一账户 |
| 密钥不存在或不属于本账户 | {"success":false,"message":"record not found"} | 检查密钥 id |
| 额度为负数 / 超出上限 | {"success":false,"message":"..."} | 修正 remain_quota |
| 名称超长 | {"success":false,"message":"..."} | 名称 ≤ 50 字符 |
apex-api-user 对应账户本人名下的密钥。remain_quota 是目标值,调大调小均立即生效。GET /api/user/self/groups 确认并改用有效分组。详见「分组(group)说明」。| 版本 | 日期 | 说明 |
|---|---|---|
| v1.0 | 2026-07-22 | 首次发布:创建、查询、额度调整、启停、删除全流程,生产环境已验证 |
