计费与账单字段
每次调用如何计费、账单里各字段的含义,以及如何在控制台核对。
计费方式
同步调用:请求前按估算冻结,响应后按上游返回的 usage 精确结算,差额即时释放。异步任务:提交时冻结上限,终态后按实际 token 结算。所有金额以微美元记账,账单可逐条复算。
扣费顺序:套餐额度 → 资源包 → 赠送余额 → 可用余额 → 授信额度。
账单字段
| 字段 | 类型 | 说明 |
|---|---|---|
| request_id | string | 与响应头 X-Request-Id 对应。 |
| requested_model / upstream_model | string | 请求的模型与实际路由到的上游模型。 |
| input_tokens / output_tokens / cached_tokens / reasoning_tokens | integer | 各类 token 用量。 |
| charged_micro_usd | integer | 本次扣费(微美元)。 |
| pricing_snapshot | object | 结算时使用的价格快照,历史账单不受后续调价影响。 |
| status_code / error_code | … | HTTP 状态与错误码;4xx/5xx 的失败调用不计费(部分流式中断按已生成部分计)。 |
在控制台核对
用量统计页按日汇总;调用日志页可按模型、状态、时间检索每一条请求;收支明细页展示账本分录(充值、消费、冻结、结算、释放、冲正、返利)。
导出调用日志(CSV)
GET/api/v1/usage/logs.csv
把自己的调用日志下载成 CSV,筛选条件与调用日志列表一致。响应是 text/csv; charset=utf-8 附件,文件名形如 usage-logs-20260902.csv(按导出当天的 UTC 日期命名),正文以 UTF-8 BOM 开头,Excel 可以直接打开而不乱码。
| 字段 | 类型 | 说明 | |
|---|---|---|---|
| model | string | 可选 | 按模型名过滤,最长 160 字符。 |
| status | integer | 可选 | 按 HTTP 状态码过滤,取值 100–599。 |
curl -OJ "$LINK42_CONSOLE/api/v1/usage/logs.csv?model=seedance-2.0&status=200" \
-b "$LINK42_SESSION_COOKIE"created_at,request_id,api_key_prefix,protocol,requested_model,upstream_model,status_code,error_code,input_tokens,output_tokens,cached_tokens,reasoning_tokens,charged_usd,duration_ms,ttft_ms- 单次导出最多 20000 行,超出部分会被截断。需要更长的历史请分时间段导出。
- charged_usd 以美元表示,保留 6 位小数;ttft_ms 在非流式请求上为空。
- 文件以每页 500 行的方式边查边写。如果中途某一页读取失败,下载会在最后一个完整分页处结束,而不是变成一个错误响应。
导出收支明细(CSV)
GET/api/v1/ledger/entries.csv
把自己的账本分录下载成 CSV,筛选条件与收支明细列表一致。文件名形如 ledger-20260902.csv,同样带 UTF-8 BOM,行数上限同样是 20000。
| 字段 | 类型 | 说明 | |
|---|---|---|---|
| type | string | 可选 | 按分录类型过滤:recharge、gift、consume、hold、capture、release、refund、rebate、withdraw、adjust、expire、migration_opening、reversal。 |
| model | string | 可选 | 按模型名过滤,最长 160 字符。 |
| api_key_id | integer | 可选 | 只导出某一把密钥产生的分录。 |
| start | string | 可选 | 起始时间(RFC 3339)。 |
| end | string | 可选 | 结束时间(RFC 3339),必须晚于 start。 |
curl -OJ "$LINK42_CONSOLE/api/v1/ledger/entries.csv?type=consume&start=2026-08-01T00:00:00Z&end=2026-09-01T00:00:00Z" \
-b "$LINK42_SESSION_COOKIE"created_at,transaction_id,tx_type,account_type,amount_usd,balance_after_usd,api_key_prefix,model,request_id,order_no,description- amount_usd 与 balance_after_usd 都以美元表示、保留 6 位小数,负号表示扣减。account_type 是 available / frozen / gift / credit 之一。
- 时间范围不合法(start 不早于 end)返回 422 invalid_time_range,分录类型不在枚举内返回 422 invalid_ledger_type。
代理批发报价
POST/api/v1/agent/wholesale/preview
代理账号可以按自己的价格倍率下单:credit 给自己囤余额,plan 与 pack 给已绑定的客户购买订阅套餐或资源包。preview 只做定价,不创建订单,也不产生任何扣款。
应付金额 = 目录价 × 价格倍率,四舍五入到微美元。multiplier_ppm 以百万分之一为单位,1000000 表示不打折;discount_micro_usd 是目录价与应付金额之差。
| kind | 买什么 | 必填字段 | 谁收到 |
|---|---|---|---|
| credit | 余额 | credit_micro_usd | 代理自己 |
| plan | 订阅套餐 | plan_id + customer_user_id | 指定的客户 |
| pack | 资源包 | pack_id + customer_user_id | 指定的客户 |
| 字段 | 类型 | 说明 | |
|---|---|---|---|
| kind | string | 必填 | credit、plan 或 pack。 |
| credit_micro_usd | integer | 可选 | kind=credit 时必填:购买的余额(微美元),上限 1000000000000(100 万美元)。 |
| plan_id | integer | 可选 | kind=plan 时必填:订阅套餐 id。 |
| pack_id | integer | 可选 | kind=pack 时必填:资源包 id。 |
| customer_user_id | integer | 可选 | kind=plan 或 pack 时必填:受益客户的用户 id,必须已经绑定到本代理。 |
| 字段 | 类型 | 说明 |
|---|---|---|
| kind | string | 回显本次报价的类型。 |
| item_name | string | 套餐或资源包的名称;kind=credit 时为空。 |
| list_price_micro_usd | integer | 目录价(微美元)。kind=credit 时等于请求的余额。 |
| multiplier_ppm | integer | 本代理的价格倍率,单位百万分之一。 |
| payable_micro_usd | integer | 实际应付金额(微美元)。 |
| discount_micro_usd | integer | 优惠金额 = 目录价 − 应付金额。 |
curl -X POST "$LINK42_CONSOLE/api/v1/agent/wholesale/preview" \
-H "Content-Type: application/json" \
-b "$LINK42_SESSION_COOKIE" \
-d '{"kind": "plan", "plan_id": 7, "customer_user_id": 3120}'{
"data": {
"kind": "plan",
"plan_id": 7,
"pack_id": null,
"item_name": "Growth 月度套餐",
"customer_user_id": 3120,
"list_price_micro_usd": 99000000,
"multiplier_ppm": 820000,
"payable_micro_usd": 81180000,
"discount_micro_usd": 17820000
},
"request_id": "req_01J…"
}- 字段组合必须与 kind 严格匹配:credit 不能带 plan_id / pack_id / customer_user_id,plan 与 pack 不能带 credit_micro_usd,也不能把自己当成客户,否则返回 422 wholesale_invalid。
- 客户没有绑定到本代理返回 422 wholesale_customer_not_bound;代理档案不存在返回 404 agent_not_found,被停用返回 403 agent_suspended;价格倍率超出平台允许区间返回 422 wholesale_multiplier_out_of_policy,需要联系运营调整档案。
代理批发下单
POST/api/v1/agent/wholesale/orders
确认报价后,用同样的请求体加上支付渠道创建订单。订单归属代理本人;支付到账后,套餐或资源包会发放给受益客户,credit 则直接进代理自己的余额。
响应是 {order, wholesale, replayed}。order 是标准支付订单,带该渠道的付款信息(pay_url、二维码或 USDT 收款地址);wholesale 是批发记录,保留目录价、倍率、应付金额与受益人。
| 字段 | 类型 | 说明 | |
|---|---|---|---|
| provider | string | 必填 | 支付渠道:stripe、airwallex、easypay 或 usdt_trc20。 |
| method | string | 可选 | 渠道内的支付方式(渠道支持时)。 |
| idempotency_key | string | 可选 | 幂等键;也可以放在 Idempotency-Key 头里。 |
curl -X POST "$LINK42_CONSOLE/api/v1/agent/wholesale/orders" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 9d7258b0da1c42df" \
-b "$LINK42_SESSION_COOKIE" \
-d '{"kind": "plan", "plan_id": 7, "customer_user_id": 3120, "provider": "stripe"}'- 首次创建返回 201;同一个幂等键重放返回 200,且 replayed 为 true,不会重复开单。
- GET /api/v1/agent/wholesale/orders 分页列出本代理的批发订单,支持 status 与 kind 过滤。
- 如果支付订单已创建但批发记录写入失败,平台会立即关闭该订单(close_reason 为 wholesale_record_failed),避免款项被错记到代理自己名下。