云上创造 用量与计费接口用于查询单次模型请求的 Token 用量与费用、查询累计消费、查看 API Key 的额度与调用明细。本文档描述接口约定,实际请以线上接口返回结果为准。
接口概览
| 接口 | 说明 |
|---|---|
GET /api/log/token | 列出当前 API Key 的调用记录,可按 request_id 反查单次请求 |
GET /v1/dashboard/billing/usage | 查询累计消费金额 |
GET /api/usage/token/ | 查询当前 API Key 的额度上限、已用与剩余额度 |
开始使用
请求地址
本站有两个调用地址,任选一个(两个地址的接口与数据完全一样)。下文使用 $CA_BASE_URL 表示该地址:
https://api.acapi.top国内模型(DeepSeek、Qwen、GLM、Kimi、豆包、MiniMax 等)走这里响应更快
https://acapi.top海外文本模型(GPT、Claude、Gemini、Grok 等)走这里响应更快
区别是国内模型走国内通道响应更快,国外模型走国外通道响应更快;两个 URL 的模型数量都是一样的,同一个 API Key、同样的价格,任选一个都能调用全部模型。OpenAI 兼容客户端的 Base URL 在地址后加 /v1(如 https://api.acapi.top/v1)。
export CA_BASE_URL="https://acapi.top" # 国外通道
# export CA_BASE_URL="https://api.acapi.top" # 国内通道鉴权方式
在每个请求的 Authorization 请求头中携带 云上创造 API Key(本组接口不接受 x-api-key,只带它会返回 401):
Authorization: Bearer <key>查询单次请求的用量与账单
本站不提供按请求 ID 直接取单条的接口。做法是先取该 Key 的调用记录列表,再用请求 ID 与记录中的 request_id 做精确字符串比对。
GET /api/log/token该接口不接受过滤参数,一次返回该 Key 名下的全部记录(上限 1000 条)。请求 ID 取自模型响应头 X-Oneapi-Request-Id。
请求示例
curl -s "$CA_BASE_URL/api/log/token" \
-H "Authorization: Bearer $CA_API_KEY" \
| python3 -c "
import sys, json
target = '202609240033423335882438268d9d6fQREoTpv'
for row in json.load(sys.stdin)['data']:
if row['request_id'] == target:
print(json.dumps(row, ensure_ascii=False, indent=2))
"响应示例
{
"success": true,
"message": "",
"data": [
{
"id": 1,
"created_at": 1790210024,
"type": 2,
"model_name": "claude-opus-5",
"quota": 25,
"prompt_tokens": 27,
"completion_tokens": 9,
"use_time": 2,
"is_stream": false,
"token_name": "123",
"group": "统一调用分组",
"request_id": "202609240033423335882438268d9d6fQREoTpv",
"other": "{\"billing_mode\":\"tiered_expr\",\"cache_tokens\":0,\"matched_tier\":\"base\"}"
}
]
}记录字段说明
| 字段 | 说明 |
|---|---|
request_id | 请求 ID,与响应头 X-Oneapi-Request-Id 完全一致 |
created_at | 请求时间(Unix 秒) |
model_name | 调用的模型 ID(你请求的模型名) |
quota | 本次实际扣费(配额单位,500,000 配额 = $1) |
prompt_tokens | 输入 Token 数,含命中缓存的部分 |
completion_tokens | 输出 Token 数 |
use_time | 耗时(秒) |
is_stream | 是否为流式请求 |
other | JSON 字符串(需先 JSON.parse),含计费模式、命中档位、缓存 Token 数等 |
type | 记录类型:2 = 调用(扣费)记录,5 = 失败记录(quota 为 0) |
content | 失败记录的摘要,形如 失败 <HTTP> <code> <错误文案> | 耗时 Ns;不含渠道信息 |
model_name 是你请求的模型 ID,other 里只有计费与请求相关字段。客户端按可选字段处理,未列出的字段请忽略。other.cache_tokens 是命中缓存读取的 Token 数,且已包含在 prompt_tokens 里。未命中缓存的部分 = prompt_tokens - other.cache_tokens。quota: 0 记账并退回预扣,这类记录不是漏计费。查询累计消费
查询当前鉴权 API Key 的累计消费,只返回一个合计值,不返回逐请求明细。
GET /v1/dashboard/billing/usage虽然接口接受 start_date / end_date,但当前实现不对结果做过滤,返回值恒为累计总额。
请求示例
curl "$CA_BASE_URL/v1/dashboard/billing/usage" \
-H "Authorization: Bearer $CA_API_KEY"响应示例
{
"object": "list",
"total_usage": 15317.105599999999
}total_usage 的单位是美分(0.01 美元),例中的 15317.1056 是 $153.17,不是 $15317。查询 Token 用量明细
要按时间范围做对账,请使用上表 GET /api/log/token 返回的逐条记录,在客户端按 created_at 筛选后自行汇总。
查询 Key 额度
查询当前 API Key 的额度上限、已用与剩余额度。
GET /api/usage/token/该接口无需查询参数,Key 身份从鉴权信息中识别。端点末尾的斜杠需要带上。
请求示例
curl "$CA_BASE_URL/api/usage/token/" \
-H "Authorization: Bearer $CA_API_KEY"响应示例
{
"code": true,
"message": "ok",
"data": {
"object": "token_usage",
"name": "my-key",
"unlimited_quota": true,
"total_granted": 64841106,
"total_used": 76585528,
"total_available": -11744422,
"expires_at": 0,
"model_limits_enabled": false,
"model_limits": {}
}
}额度单位是配额,除以 500,000 即美元。unlimited_quota 为 true 时以账户余额为准,额度三项仅作参考。
常见问题
为什么我只发了一条消息,账单里却有多条记录?
这是正常现象。很多 Agent 客户端并不是“一条用户消息 = 一次模型请求”。例如 Claude CLI、Codex Desktop 这类 Agent 工具,在完成一个任务时,可能会连续发起多轮模型请求:理解需求、读取上下文、调用工具、总结结果、继续规划下一步。此外,有些客户端还会在你没有明确发送新消息时,自动发起一些辅助请求(生成首页推荐内容、加载或总结上下文、检查当前会话状态、为下一步操作做预处理)。账单明细展示的是底层真实模型请求,所以你可能会看到同一时间附近出现多条记录。
简单理解:你看到的是一次操作或一次对话,系统记录的是背后所有真实发生的模型调用。
为什么模型选择 gpt-5.5,但是账单中出现了 gpt-5.4-mini?
Agent 工具可能会把一个任务拆成多个步骤,不同步骤使用不同模型。例如一个步骤用更强模型做规划,另一个步骤用更轻量模型处理简单内容。所以同一轮任务中出现多个模型,不一定代表异常,而是 Agent 客户端在按步骤调用不同模型。
Cache 读取和 Cache 写入是什么?为什么金额差异很大?
Cache 是模型服务的上下文缓存机制。Agent 在连续多轮任务中,经常会重复携带大量上下文(项目文件、历史对话、工具结果等)。
- ·Cache 写入:首次把上下文写入缓存,通常费用较高。
- ·Cache 读取:后续复用已缓存上下文,通常比重新输入便宜很多。
所以你可能会看到某些记录的 Cache 写入很多、费用较高;另一些记录 Cache 读取很多、费用较低。这通常说明 Agent 在复用上下文缓存。
为什么有些请求输入 Tokens 很少,但费用不低?
因为模型计费不只看普通输入和输出 Tokens,还可能包含 Cache 写入、Cache 读取、模型单价差异等因素。尤其是 Claude / Agent 场景中,大量费用可能来自上下文缓存,而不是你本次手动输入的那几句话。
为什么应扣金额和实扣金额不一样?
“应扣金额”可以理解为按模型官方或标准价格计算的参考金额;“实扣金额”是 云上创造 按当前折扣后实际从余额中扣除的金额。如果页面显示 “2.8折”“6折”“1.1折” 等标签,表示本次请求享受了对应折扣。
有快速模式(Fast 模式)吗?
本站暂不支持快速模式:请求里的 service_tier(如 fast、priority)会被忽略,按普通模式处理、按普通价格计费,不会产生额外费用。
生成的图片、视频能保存多久?
生成的图片、视频存放在本站存储地址 https://cdnworke.top/media/<hash>.<ext> 时,结果文件由顶层 retention 字段标注有效期(6 小时),到期自动删除,服务器不长期存储,请及时下载并自行保存。需要长期保存图片可改用 response_format: "b64_json"(直接返回内容,不经服务器存储)。上游直链(非本站存储地址)有效期以上游为准,同样请及时下载(此时响应顶层返回 notice: "下载链接有效期有限,请及时下载",无 expires_at)。响应顶层的 retention.expires_at 是到期时间(Unix 秒)。
为什么感觉消耗越来越快?如何减少额度消耗
- 1.在同一个会话里持续对话,客户端通常会把更多历史消息、文件内容、工具结果等一起带给模型,单次请求的上下文会变长,因此体感上每次消耗会越来越高。建议在长对话后适当开启新会话、压缩上下文;如果只是简单问题,可以选择更轻量的模型,以降低单次消耗。
- 2.如果在一个会话里频繁切换完全不同的任务(先分析代码、再处理图片、再写文案等),新的问题会不断引入不同的上下文,导致原本可复用的缓存被重写或命中率下降。建议把不同类型的任务拆到不同会话里处理,这样更有利于缓存复用。
请求慢、超时或连不上怎么办?
换通道试试。 本站有两个调用地址:国内通道 https://api.acapi.top、国外通道 https://acapi.top,两个 URL 的模型数量都是一样的,API Key、价格都相同。某个通道慢或连不上时,把客户端的 Base URL 换成另一个再试即可,模型名不用改(OpenAI 兼容客户端记得保留 /v1)。见 协议选择 的「通道选择」。
什么时候需要联系客服?
如果你遇到以下情况,可以联系我们排查:
- ·明显没有发起任务,但账单持续产生记录。
- ·短时间内多次重复 Cache 写入,并且没有 Cache 读取。
- ·同一请求出现异常大量重复扣费。
- ·账单模型与你的使用场景完全不符。
- ·实扣金额明显异常。
- ·Agent 调用失败,但仍产生了无法理解的扣费记录。
请进群添加客服,尽量提供请求时间、模型名称、来源和截图,方便我们快速定位。
错误处理
接口调用失败时,响应体包含稳定的错误码和便于排查的信息。/v1/dashboard/* 鉴权失败返回 error 对象:
{
"error": {
"code": "",
"message": "Invalid token (request id: 202609240319094152743578268d9d6j8wBmBgF)",
"type": "new_api_error"
}
}/api/log/token、/api/usage/token/ 鉴权失败返回的是另一种形状(没有 error 对象,也不带 request id):
{"success": false, "message": "Invalid token"}常见错误码
| HTTP 状态码 | error.type | 说明 |
|---|---|---|
| 401 | new_api_error / success: false | API Key 缺失或无效(两种响应形状见上) |
| 429 | (响应体为空) | 查询过于频繁:/api/log/token、/api/usage/token/ 每 IP 每 20 分钟 20 次,其它接口每 IP 每 180 秒 360 次;按 Retry-After 响应头等待后重试,见 速率限制 |
| 500 | new_api_error | 服务内部错误 |
使用建议
- ·
/api/log/token一次返回该 Key 的全部记录且不支持分页,记录多时请缓存结果、避免高频轮询。 - ·价格可能调整。历史账单以返回记录里的
quota为准,不要使用当前价格表反推历史费用。 - ·对查询接口设置合理的重试和超时策略;遇到 429 或 5xx 时使用指数退避重试。