跳转到内容

本户月账单列表:期初/期末余额 + 充值/消耗/退款/调整四桶 + 当月计量汇总;月份降序 ≤24 行;?month=YYYY-MM 精确取一月;账单由平台按月按币生成(一户一月一币一档,多币月份分行、恒不跨币加总),未出账月份/币种不在列(带 x-tansr-org 头 = org 账单,账务面 owner/billing);不可变账单:行携 revision(1 起),缺省每期仅最新版,?revisions=all 取全部历史修订版(同期重生成有差异 = 新版,旧版只读保留;无差异重生成不新增);协议价三列:usage 块携 listCost(牌价合计)/ cost(实收)/ discount(优惠 = listCost − cost,恒等式),牌价客户与存量账单读面 listCost ≡ cost、discount 0(缺席按 cost 归一;勾稽判据 discount 缺席 = 0,存量账单重生成不推修订版)

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

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

账单列表

Media typeapplication/json
object
data
required

月份降序(同月按币种字典序);账单由平台按月按币生成,未出账月份/币种不在列

Array<object>
object
month
required

UTC 自然月

string
/^\d{4}-(0[1-9]|1[0-2])$/
currency
required

记账币种(T-A26:一户一月一币一档,多币月份分行呈现,恒不跨币加总)

string
revision
required

修订版本(T-A36:1 起;缺省仅返回每期最新版,?revisions=all 取全部历史版)

integer
>= 1
openingBalance
required

期初余额(月首时点台账余额),DECIMAL 字符串

string
closingBalance
required

期末余额;勾稽恒等 = 期初 + 充值 − 消耗 − 退款 + 调整

string
recharge
required

充值合计(负债增)

string
consume
required

消耗合计(收入确认)

string
refund
required

退款合计(负债清偿)

string
adjust
required

信用调整净额(带号)

string
usage
required
Any of:
object
requests
required
integer
inTokens
required
integer
outTokens
required
integer
cacheRTokens
required
integer
cacheWTokens
required
integer
cost
required

当月 billable gateway 消耗合计(实收 = 协议价),DECIMAL 字符串

string
listCost
required

牌价合计 = Σ COALESCE(list_cost, cost),DECIMAL 字符串;牌价客户恒 ≡ cost

string
discount
required

协议价优惠合计 = listCost − cost(恒等式;牌价客户与 080 前账单恒 0.000000)

string
generatedAt
required
string
Examplegenerated
{
"data": [
{
"month": "example",
"currency": "example",
"revision": 1,
"openingBalance": "example",
"closingBalance": "example",
"recharge": "example",
"consume": "example",
"refund": "example",
"adjust": "example",
"usage": {
"requests": 1,
"inTokens": 1,
"outTokens": 1,
"cacheRTokens": 1,
"cacheWTokens": 1,
"cost": "example",
"listCost": "example",
"discount": "example"
},
"generatedAt": "example"
}
]
}

Bad_request(month 形状 / revisions 非 ‘all’)

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"
}
}