开发者对账面:App 键双头鉴权,本 App 用量按 endUserId 分桶(null 桶 = 未归因:App 服务端直调等);?window=Nd(1..90,缺省 7d)/ ?endUserId= 单查(形制外 400 validation_failed)/ ?limit(缺省 50,上限 50 钳制)/ ?offset;行携 cost(CNY 锚 DECIMAL 串)+ byCurrency 分币桶(恒不跨币折算)
GET
/v1/app-usage/by-end-user
const url = 'https://api.tansr.com/v1/app-usage/by-end-user';const options = { method: 'GET', headers: {'x-tansr-key-id': '<x-tansr-key-id>', 'x-tansr-key': '<x-tansr-key>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.tansr.com/v1/app-usage/by-end-user \ --header 'x-tansr-key: <x-tansr-key>' \ --header 'x-tansr-key-id: <x-tansr-key-id>'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”x-tansr-ts
string
签名时间戳(unix 秒,十进制串;T-A34):与服务器时钟偏差 >300s → 401 signature_invalid
x-tansr-nonce
string
签名随机数(≥16 字符;T-A34):同 keyId 600s 窗内重现 → 401 nonce_replayed
x-tansr-sign
string
请求签名(hex 小写;T-A34):HMAC-SHA256(K=sha256(SK 明文) 原始摘要, TWP1-HMAC-SHA256\n{METHOD}\n{path+query}\n{ts}\n{nonce}\n{sha256hex(rawBody)});三头须同现,在场恒校验;app signRequired 或 TANSR_API_TWP_REQUIRE_SIGNATURE=1 时未签名恒 401 signature_invalid
Responses
Section titled “Responses”{window, data: AppUsageByEndUserRow[], total}
Media typeapplication/json
object
window
required
string
data
required
Array<object>
object
requests
required
integer
inTokens
required
integer
outTokens
required
integer
cacheRTokens
required
integer
cacheWTokens
required
integer
cost
required
string
byCurrency
required
Array<object>
object
currency
required
string
requests
required
integer
inTokens
required
integer
outTokens
required
integer
cost
required
string
total
required
integer
Examplegenerated
{ "window": "example", "data": [ { "endUserId": "example", "requests": 1, "inTokens": 1, "outTokens": 1, "cacheRTokens": 1, "cacheWTokens": 1, "cost": "example", "byCurrency": [ { "currency": "example", "requests": 1, "inTokens": 1, "outTokens": 1, "cost": "example" } ] } ], "total": 1}Bad_request(window / limit / offset 形制)
Media typeapplication/json
object
error
required
object
code
required
错误码注册表单源派生(src/http/errors.ts ERROR_CODES;码稳定,消费方按码翻译)
string
message
required
string
requestId
required
string
detail
object
Example
{ "error": { "code": "adjudicator_not_authorized" }}App_key_invalid / signature_invalid
Media typeapplication/json
object
error
required
object
code
required
错误码注册表单源派生(src/http/errors.ts ERROR_CODES;码稳定,消费方按码翻译)
string
message
required
string
requestId
required
string
detail
object
Example
{ "error": { "code": "adjudicator_not_authorized" }}App_disabled / app_ip_denied
Media typeapplication/json
object
error
required
object
code
required
错误码注册表单源派生(src/http/errors.ts ERROR_CODES;码稳定,消费方按码翻译)
string
message
required
string
requestId
required
string
detail
object
Example
{ "error": { "code": "adjudicator_not_authorized" }}本文是否有帮助?
感谢反馈,我们会持续改进这篇文章。