跳转到内容

用量聚合(groupBy 逗号组合 ≤3 维:day/model/source/key/session/currency/purpose;key/session 行键名 keyId/sessionId,无挂靠/未归因行归 "(none)";currency 维 = 分币种成本桶(cost 恒单币禁跨币加总);purpose 维 = 计费归属桶(main/compaction/title/classifier/memory;服务端归因 websearch);?purpose= 过滤单查一类归属(词表 = USAGE_PURPOSES,词表外 400,未归因行不设过滤哨兵、查分布走 groupBy);带 x-tansr-org 头 = org 聚合,owner/admin/billing;?dims=1 聚合行随行返回长尾维度量汇总 dims(键 = 注册词表长尾键 cache_w_5m/cache_w_1h/reasoning_out/web_search 等,零量键不出、全零行不出 dims 键;本端点恒明细径 JSON_EXTRACT 聚合,响应携 dimsBasis:"detail" 如实标注口径——rollup 径报表未物化 dims 恒不含);?saved=1 聚合行随行返回缓存省费三分量汇总 saved={readSaved,writePremium,netSaved}(saved_read/saved_write_premium/saved_net 逐行 SUM,NULL 行不计,售价口径)+ savedKnownRequests 覆盖度分母(= saved 已知行数,requests − 此数 = 快照缺席行;存量窗口覆盖不全故走参数开关不恒随行),响应携 savedBasis:"detail",缺省响应零漂移;可见性红线:聚合行恒不含采购三列 upstreamCost/upstreamKnownRequests/upstreamKnownCost(采购口径仅平台管理员面 /admin/v1/usage-reports 等);协议价三列(恒随行):行携 listCost = Σ COALESCE(list_cost, cost)(牌价)与 discount = listCost − cost(优惠;cost = 实收),牌价客户 listCost ≡ cost、discount 0

GET
/v1/usage
curl --request GET \
--url https://api.tansr.com/v1/usage \
--header 'Authorization: Bearer <token>'
x-tansr-org
string

Org 作用域声明(org 公开 id);服务端校验成员资格与角色,非成员恒 404、角色不够 403

聚合({window, groupBy, dimsBasis?, savedBasis?, data[]:{…, cost, listCost, discount}})

Media typeapplication/json
object
key
additional properties
any
Examplegenerated
{}

Bad_request(window 形状 / groupBy 超 3 维)

Media typeapplication/json
object
error
required
object
code
required

错误码注册表单源派生(src/http/errors.ts ERROR_CODES;码稳定,消费方按码翻译)

string
Allowed values: adjudicator_not_authorized admin_forbidden admin_key_invalid app_disabled app_ip_denied app_key_invalid approval_self_forbidden asr_not_configured asr_quota_exceeded auth_channel_undelivered bad_request conflict content_blocked context_window_exceeded currency_not_supported device_code_denied device_code_expired device_code_pending device_code_slow_down egress_blocked endpoint_disabled envelope_key_undelivered fence_denied forbidden idempotency_conflict idp_untrusted image_not_supported imagegen_not_configured imagegen_quota_exceeded insufficient_balance internal_error invalid_api_key license_required limit_exceeded liquidation_not_enabled model_not_authorized model_not_found nonce_replayed not_found order_state_invalid org_byok_not_available org_ceiling_exceeded otp_invalid otp_rate_limited pay_amount_mismatch pay_channel_undelivered pay_signature_invalid payload_too_large payment_required plan_apps_exceeded plan_concurrency_exceeded plan_end_users_exceeded plan_gate_unavailable plan_members_exceeded plan_required plan_tier_insufficient policy_locked pool_signing_undelivered preflight_required pricing_guard_tripped principal_required protocol_unsupported quota_exceeded rate_limited refund_not_eligible section_not_deliverable session_archived signature_invalid stream_backpressure token_expired tts_not_configured tts_quota_exceeded unauthorized upstream_connect_timeout upstream_disconnected upstream_error upstream_idle_timeout upstream_timeout upstream_total_timeout upstream_ttfb_timeout validation_failed videogen_not_configured videogen_quota_exceeded websearch_not_configured websearch_quota_exceeded
message
required
string
requestId
required
string
detail
object
Example
{
"error": {
"code": "adjudicator_not_authorized"
}
}