NewAPI 兼容接口
迁移 NewAPI 客户端时可用的模型发现、语音、余额与调用日志兼容接口。
无界模型云主接口使用 OpenAI / Anthropic 兼容协议。若你的系统已经接入 NewAPI,可继续使用下面这些接口查询模型,并做语音、余额、额度和调用日志自查。
鉴权仍使用无界模型云的 gk_ API Key。模型、余额和日志接口只读取数据。
鉴权
推荐使用 Authorization: Bearer <API Key>:
Authorization: Bearer gk_xxxxxxxxxxxxxx也兼容 Anthropic 风格的 x-api-key:
x-api-key: gk_xxxxxxxxxxxxxx余额和日志接口需要包含 ai:* scope 的 Key。模型发现支持 ai:*、ai:llm、ai:image 或 ai:video;语音识别需要 ai:asr,语音合成需要 ai:tts。鉴权失败会返回中文错误:
{
"success": false,
"message": "API Key 无效或已停用",
"error": {
"code": "invalid_api_key",
"message": "API Key 无效或已停用"
}
}模型发现
查询当前 API Key 可访问的模型:
curl "https://api.tos.run/v1/models" \
-H "Authorization: Bearer $TOS_API_KEY"返回 OpenAI list 形状,只包含当前 Key 有权限访问的模型:
{
"object": "list",
"data": [
{
"id": "gpt-4o-mini",
"object": "model",
"created": 0,
"owned_by": "wujie"
},
{
"id": "gpt-image-2",
"object": "model",
"created": 0,
"owned_by": "wujie-image"
}
]
}ai:llm Key 可用于发现文本模型,ai:image Key 可用于发现图像模型,ai:video Key 可用于发现视频模型;无权限模型不会出现在结果里。
查询单个模型详情:
curl "https://api.tos.run/v1/models/gpt-image-2" \
-H "Authorization: Bearer $TOS_API_KEY"模型不存在或当前 Key 不可访问时返回 404:
{
"success": false,
"message": "模型不存在或当前 API Key 无权访问",
"error": {
"code": "model_not_found",
"message": "模型不存在或当前 API Key 无权访问"
}
}Gemini SDK / 原生客户端可查询 Gemini 形状的模型列表:
curl "https://api.tos.run/v1beta/models" \
-H "Authorization: Bearer $TOS_API_KEY"返回示例:
{
"models": [
{
"name": "models/gemini-3-pro-image",
"displayName": "gemini-3-pro-image",
"version": "001",
"supportedGenerationMethods": [
"generateContent",
"streamGenerateContent"
]
}
]
}也支持 NewAPI 常见的 OpenAI 形状别名:
curl "https://api.tos.run/v1beta/openai/models" \
-H "Authorization: Bearer $TOS_API_KEY"出于安全考虑,/v1beta/models?key=... 这种 query API Key 不作为鉴权来源;请使用 Authorization 或 x-api-key 请求头。
OpenAI 语音别名
NewAPI / OpenAI 常见语音路径可直接使用数据面 Base:
| 方法 | 路径 | scope |
|---|---|---|
POST | /v1/audio/transcriptions | ai:asr |
POST | /v1/audio/translations | ai:asr |
POST | /v1/audio/speech | ai:tts |
translations 当前走同一语音识别链路,不额外做翻译。语音合成兼容 OpenAI 字段 input / response_format,也兼容无界原生字段 text / format。详见 语音识别与语音合成。
额度查询
查询当前 API Key 所属组织的钱包余额与累计消费。余额接口只读取当前 Key 所属组织的数据,需使用带 ai:* scope 的 gk_ API Key。
curl "https://api.tos.run/api/usage/token/" \
-H "Authorization: Bearer $TOS_API_KEY"返回示例:
{
"code": true,
"message": "ok",
"data": {
"object": "token_usage",
"name": "生产服务",
"total_granted": 191.34,
"total_used": 67.89,
"total_available": 123.45,
"unlimited_quota": false,
"model_limits": {},
"model_limits_enabled": false,
"expires_at": 0
}
}字段说明:
| 字段 | 含义 |
|---|---|
total_available | 当前组织钱包余额,单位为元 |
total_used | 当前组织累计消费,单位为元 |
total_granted | total_available + total_used,用于兼容 NewAPI 额度桶 |
unlimited_quota | 固定为 false |
model_limits | 当前不按 NewAPI 模型白名单返回,固定为空对象 |
total_available 是可用余额,不是 API Key 的独立余额上限。同一组织下的 API Key 查询到的是同一个组织钱包;API Key 只决定调用权限与调用日志的归属。
OpenAI Dashboard 余额别名
兼容旧客户端常见的 Dashboard Billing 查询:
| 方法 | 路径 |
|---|---|
GET | /dashboard/billing/subscription |
GET | /v1/dashboard/billing/subscription |
GET | /dashboard/billing/usage |
GET | /v1/dashboard/billing/usage |
示例:
curl "https://api.tos.run/v1/dashboard/billing/subscription" \
-H "Authorization: Bearer $TOS_API_KEY"subscription 返回:
{
"object": "billing_subscription",
"has_payment_method": true,
"soft_limit_usd": 123.45,
"hard_limit_usd": 500,
"system_hard_limit_usd": 500,
"access_until": 0
}为兼容旧字段名,*_usd 字段保留原名;无界模型云返回的是当前组织计费币种的展示金额。
usage 返回:
{
"object": "list",
"total_usage": 6789
}total_usage 沿用 OpenAI Dashboard 旧字段语义,返回当前组织累计消费的最小货币单位值。人民币计费时表示“分”。
调用日志查询
查询当前请求头 API Key 自己的调用日志,需使用带 ai:* scope 的 gk_ API Key:
curl "https://api.tos.run/api/log/token?page_size=20&start_timestamp=1783076400&end_timestamp=1783681200" \
-H "Authorization: Bearer $TOS_API_KEY"上例查询一个时间范围内最近 20 条记录。时间参数使用 Unix 秒;未传时间范围时,默认查询请求时刻前 24 小时的数据。返回 data: [] 表示该 Key 在该时间范围内没有已写入遥测存储的调用记录,并不代表接口不可用。
支持的查询参数:
| 参数 | 含义 |
|---|---|
p / page | 页码,从 1 开始 |
page_size / limit | 每页数量,最大 200 |
start_timestamp | 起始时间,Unix 秒 |
end_timestamp | 结束时间,Unix 秒 |
返回示例:
{
"success": true,
"message": "",
"data": [
{
"id": "call_...",
"created_at": 1783581600,
"type": "llm",
"model_name": "gpt-4o-mini",
"token_name": "生产服务",
"token_id": "key_...",
"quota": 0.12,
"prompt_tokens": 7,
"completion_tokens": 5,
"use_time": 42,
"is_stream": false,
"channel_name": "wujie",
"request_id": "req_...",
"content": ""
}
]
}常用字段说明:
| 字段 | 含义 |
|---|---|
created_at | 调用完成时间,Unix 秒 |
model_name | 实际调用的模型 ID |
prompt_tokens / completion_tokens | 输入 / 输出 token 数 |
quota | 该次调用的实际净计费金额,使用当前组织的计费币种;不是剩余额度,也不是 token 数 |
use_time | 调用耗时,单位为毫秒 |
is_stream | 是否使用流式响应 |
channel_name | 实际处理调用的号源或渠道 |
request_id | 本次调用的请求标识,可用于排障时关联日志 |
content | 最终失败时的错误信息;正常完成时通常为空字符串 |
失败请求
最终返回 4xx 或 5xx 的调用会和成功调用一起出现在时间范围内的日志列表中,content 会包含可展示的错误信息。若请求经过上游重试或故障切换后最终成功,日志按最终成功结果聚合,content 不会把中间失败作为最终错误返回。
当前兼容接口仅支持分页和时间范围查询,暂不支持按失败状态、HTTP 状态码或模型筛选;响应也不单独返回 status / http_code 字段。需要精确筛选失败请求时,请通过控制台调用日志页面处理。
/api/log/token 永远以请求头里的 API Key 为准。URL 里的 key 参数会被忽略,不能用来查询别的 Key。
调用日志依赖网关遥测存储。若遥测暂不可用,接口会返回 log_store_unavailable,请稍后重试。
不兼容项
以下 NewAPI 接口暂不承诺兼容,请按无界模型云原生文档接入:
| NewAPI 能力 | 状态 |
|---|---|
/v1/embeddings | 暂不处理 |
/v1/moderations | 暂未开放 |
/v1/responses compact 相关能力 | 需确认原生 Responses 语义后再开放 |
/v1/images/variations | 暂未开放 |
| Kling / Jimeng / Midjourney / Suno 专有任务路由 | 暂未开放 |