跳转到内容

账套配置包 bundle-for-app(末端启动自动审查授权列表的事实源):有效模型集 = app.model_catalog_ids ?? 用户级选择集(恒 ∩ 可服务谓词,采集制无档=空集)、adjudicators 清单(首个为生效档)、contextScheme(schemeId+overrides 合并);ETag/If-None-Match 304;形态 = ClientConfigBundle 扩展(app{id,name} + configVersion 内容指纹,心跳失效订阅锚);分档只施于令牌径:app_user 令牌径仅对 x-tansr-client-features 含 platform-audio 的客户端下发 capabilities.platform 五键 / platformModels 四键 / media 音频两面,缺头恒三键/两键,ETag 按档(Vary 本头);AK/SK 双头径(账套键 / cli 装置键)恒全量、单一 ETag、本头 no-op

GET
/t1/config
curl --request GET \
--url https://api.tansr.com/t1/config \
--header 'x-tansr-key: <x-tansr-key>' \
--header 'x-tansr-key-id: <x-tansr-key-id>'
x-tansr-client-features
string
/^[A-Za-z0-9-]+(\s*,\s*[A-Za-z0-9-]+)*$/

客户端可理解的可选扩展词表(逗号分隔,大小写不敏感,未知词忽略;与服务端 features 反向同形)。词表:platform-audio = 可理解 bundle 音频两面加法键(capabilities.platform.speechToText/textToSpeech、platformModels.speechToText/textToSpeech 与 media.asr/tts)。分档只施于 app_user 令牌径(十王修案 FX-A-05,分册 A S3:分档只保护已发布 .strict() 的旧 SDK,而 SDK 恒走令牌径):令牌径仅对声明者下发五键 / 四键 / 音频两面,缺头恒三键 / 两键,正文与 ETag 按档重算(响应 Vary 本头),同一客户端须在 /t1/config、/t1/handshake、/t1/heartbeat 同携同值,否则 configEtag/bundleEtag 与 bundle 异档、configStale 恒真;owner 径(AK/SK 双头 / 装置键 / PAT)恒全量、单一 ETag,本头为 no-op

x-tansr-ts
string
/^\d{1,15}$/

签名时间戳(unix 秒,十进制串;T-A34):与服务器时钟偏差 >300s → 401 signature_invalid

x-tansr-nonce
string
>= 16 characters <= 128 characters

签名随机数(≥16 字符;T-A34):同 keyId 600s 窗内重现 → 401 nonce_replayed

x-tansr-sign
string
/^[0-9a-f]{64}$/

请求签名(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

账套 bundle

Media typeapplication/json
object
version
required
integer
etag
required
string
publishedAt
required
string
configVersion

配置内容指纹(T-A29 配置失效订阅;恒随内容变化翻转)

string
app
object
id
required
string
name
required
string
expiresAt

派生键过期时刻(ISO;长期键缺席)

string
expiresInDays

剩余天数(floor;长期键缺席)

integer
platform
Any of:
string
Allowed value: desktop
purpose

应用用途(控制台字段,≤240 字符);缺席 = 未声明,SDK 应用协议渲染 “(not declared)” 且裁决准则退回保守

string
systemPrompt

应用系统提示词;按 systemPromptPolicy 与 SDK 显式 system 选用或拼接。旧客户端忽略。

string
<= 16000 characters
systemPromptPolicy
Any of:
string
Allowed value: fallback
capabilities
object
tools
required
object
read
required
boolean
write
required
boolean
edit
required
boolean
glob
required
boolean
grep
required
boolean
list
required
boolean
shell
required
boolean
process
required
boolean
webFetch
required
boolean
webSearch
required
boolean
http
required
boolean
todoWrite
required
boolean
askUser
required
boolean
agent
required
boolean
skills
required
boolean
mcp
required
boolean
customTools
required
boolean
platform
required
object
imageGen
required
boolean
videoGen
required
boolean
webSearch
required
boolean
speechToText
boolean
textToSpeech
boolean
models
required
Array<object>
object
handle
required

CLI 侧模型引用名(tansr/)

string
catalogId
required
string
modelId
required

网关路由用上游模型 ID

string
displayName
required
string
protocol
required
Any of:
string
Allowed value: openai_chat
capabilities
required
object
contextWindow
required
Any of:
integer
recommendedContextTokens
required
Any of:
integer
kind
required

模型形态(结构化列;三级过滤:类别)

string
family
required

模型族(三级过滤:厂商)

string
tags
required

Profile 标签(三级过滤:标签)

Array<string>
manufacturer
required
Any of:
string
pricing
required
Any of:
object
currency
required
string
inPerMillion
required

DECIMAL 字符串

string
outPerMillion
required
string
cacheReadPerMillion
required
string
cacheWritePerMillion
required
string
aliases
required
object
aliasOrigins
object
main
Any of:
string
Allowed value: explicit
fast
Any of:
string
Allowed value: explicit
fastFallbackGroup
Array<string>
directEndpoints
required
Array<object>
object
handle
required
string
baseUrl
required

本地/内网端点,CLI 直连(D3 旁路);token 用量走 client 计量上报(D4)

string
protocol
required
string
modelId
required
string
credentialEnv
required
Any of:
string
adjudicator
required
Any of:
object
profileId
required
string
modelHandle
string
budgets
object
escalation
object
callBudget

M-04 每会话裁决咨询预算(次)= 档 budgets.callBudget ?? org governance.adjudicatorCallBudget;缺席 = sdk 缺省 200

integer
>= 1
locked
boolean
tier
Any of:
string
Allowed value: low
evidenceFingerprint

应用协议评估证据指纹(= 档 evaluation.byProtocol.app.fingerprint;AP-7 起恒指应用协议,不再是任一协议的最近指纹);SDK 与编译内应用协议指纹比对,不等仅发 adjudicator_evidence_drifted 通报,tier 仍按任命生效恒不降档(RFC-U3 任命即授照、证据不是权力);无应用协议证据恒缺键(哪怕有编码协议报告)

string
adjudicators
required
Array<object>
object
profileId
required
string
name

档名(呈现位;owner 径恒发,令牌径不下发——FX-A-13 消费方表 adjudicators[].name)

string
modelHandle
string
budgets

派生裁决链预算(maxUsd / maxCny / maxRounds / callBudget);owner 径恒发;令牌径按消费方表(R-18 首版不下发)

object
escalation

升级模式 {mode};owner 径恒发;令牌径按消费方表(R-18 首版不下发)

object
callBudget

M-04 每会话裁决咨询预算(次)= 档 budgets.callBudget ?? org governance.adjudicatorCallBudget;缺席 = sdk 缺省 200

integer
>= 1
locked
boolean
tier
Any of:
string
Allowed value: low
evidenceFingerprint

应用协议评估证据指纹(= 档 evaluation.byProtocol.app.fingerprint;AP-7 起恒指应用协议,不再是任一协议的最近指纹);SDK 与编译内应用协议指纹比对,不等仅发 adjudicator_evidence_drifted 通报,tier 仍按任命生效恒不降档(RFC-U3 任命即授照、证据不是权力);无应用协议证据恒缺键(哪怕有编码协议报告)

string
contextScheme
required
Any of:
object
schemeId
required
string
stage
required
Any of:
string
Allowed value: production
scheme
required

生效方案参数(白名单键 maxTokens/compactThreshold/pinnedPolicy/notes);T-A42 起窗口预算双键下发:windowBudgetTokens 与 maxTokens(deprecated)同值同源,末端应迁移消费 windowBudgetTokens

object
locked
boolean
guardrails
object
dailyTokenLimit

每 key 每日 in+out token 上限(UTC+8 日界);触顶 429 quota_exceeded

integer
locked
boolean
governance
object
org

Owner 径恒在;令牌径部分父投影缺席(R4)

object
id
required
string
name
required
string
licenseStatus
Any of:
string
Allowed value: none
softLock

License_mode=required 且无 active license 时 true(CLI 只读化+横幅);服务端检查先于限流,平台径无离线宽限(doc/32 §5);owner 径恒在,令牌径部分父投影缺席(R4)

boolean
budgets
object
dailyTokenLimit
required
Any of:
integer
sessionRetentionDays

Org 会话保留天数(M-05):serve 治理扫描 maxAgeDays 缺省 + api /t1/sessions 活跃窗;缺席 = 30 d(SESSION_LEASE_WINDOW_DAYS);R4 起 owner / app_user 两档下发(令牌径 governance 只含本键)

integer
>= 1 <= 3650
websearch
object
enabled
required
boolean
pricePerCall
required

每次调用售价 DECIMAL 串(池内最高价,预扣口径)

string
currency
required
string
dailyLimit
required
Any of:
integer
defaultVendor

平台默认搜索商 vendor 名(指配在场且 active 时出现)

string
platformModels
object
imageGen
required

授权图像模型集(收敛稳定序;首行 = model 缺省生效模型;空 = 平台未配置)

Array<object>
object
model
required

模型引用名(canonical handle;/t1/imagegen model 位可直用)

string
displayName
required
string
constraints
object
size
required

是否受理 size 位(false = 在场即拒,模型定档分辨率)

boolean
seed
required
boolean
negativePrompt
required
boolean
maxImages
required

单请求张数帽(n 超帽由网关钳)

number
imageInput
required
Any of:
object
min
required
number
max
required
number
urlOk
required

受理公网 http(s) URL 形

boolean
b64Ok
required

受理 data:image/*;base64 形

boolean
promptRequired
required

False = 动词行(引用既有任务),prompt 在场即拒

boolean
actionRequired

动词行必携 action{taskId,actionId}

boolean
videoGen
required

授权视频模型集(收敛稳定序;首行 = model 缺省生效模型;空 = 平台未配置)

Array<object>
object
model
required

模型引用名(canonical handle;/t1/videogen model 位可直用)

string
displayName
required
string
constraints
object
durations
required
Any of:
object
kind
required
string
Allowed value: set
values
required
Array<number>
defaultSec
required
number
ratio
Any of:
Array<string>
negativePrompt
required
boolean
seed
required
boolean
imageInput
required
Any of:
object
required
required

True = i2v 专用行,imageUrls 首帧必选

boolean
max
required
number
urlOk
required
boolean
b64Ok
required
boolean
audioInput
required

是否受理 audioUrl 位

boolean
speechToText

授权语音转文字模型集(收敛稳定序;首行 = model 缺省生效模型;空 = 平台未配置)

Array<object>
object
model
required

模型引用名(canonical handle;/t1/asr model 位可直用)

string
displayName
required
string
constraints
object
formats
required

受理音频容器(小写扩展名词表;wav/mp3/m4a/mp4/…)

Array<string>
maxSeconds
required

单请求音频时长帽(秒;平台缺省 600)

number
languages

语种提示词表(缺席 = 上游自动检测)

Array<string>
diarization
required

是否受理 diarize:true 说话人分离(false 行在场即 400 可解释)

boolean
textToSpeech

授权文字转语音模型集(收敛稳定序;首行 = model 缺省生效模型;空 = 平台未配置)

Array<object>
object
model
required

模型引用名(canonical handle;/t1/tts model 位可直用)

string
displayName
required
string
constraints
object
voices
required

可选音色表(voice 位受理域;非表内音色 400 携本表)

Array<object>
object
id
required
string
label
required
string
lang
string
defaultVoice
required

Voice 缺席时的生效音色

string
formats
required

产物格式受理域(‘wav’|‘mp3’;家族不受理的请求格式按首项回落)

Array<string>
maxChars
required

单请求输入字符帽(计费字符口径:1 汉字计 2,其余计 1;平台缺省 2000)

number
outputHosting
Any of:
string
Allowed value: domestic
media

用户层媒体治理段(装置键平台径开面依据):键 = 面名,面在场 ⇔ 该面对本 owner 开;全缺席整段缺席

object
imagegen
object
enabled
required

面对本 owner 开(在场恒 true;关 = 面缺席)

boolean
dailyLimit
required
Any of:
integer
videogen
object
enabled
required

面对本 owner 开(在场恒 true;关 = 面缺席)

boolean
dailyLimit
required
Any of:
integer
asr
object
enabled
required

面对本 owner 开(在场恒 true;关 = 面缺席)

boolean
dailyLimit
required
Any of:
integer
tts
object
enabled
required

面对本 owner 开(在场恒 true;关 = 面缺席)

boolean
dailyLimit
required
Any of:
integer
orgMemory
object
mode
required
Any of:
string
Allowed value: allow
settings
object
values
required

四级(platform→org→team→user)深合并合成产物(对象逐键、数组/标量整体覆盖;X2-2 §1.2)

object
locks
required

Enforce 态锁定键路径集(键级锁,上限 64/层;端側对这些 keyPath 拒下层覆盖 + 一次性示警)

Array<string>
origins
required

逐 keyPath 生效层归因(doctor dump 归因数据源;keyPath 字典序)

object
shadow
required

Shadow 灰度键路径集(下发但端側只示警不生效;enforce 后移出本集)。子树闭包语义(CW5-7 端云对齐):被 shadow 胜出键等值/祖先命中的胜出键全数在集——端側按等值或祖先命中扣住即与本集恒同判

Array<string>
lockOrigins

逐锁定键的锁源层归因(keyPath → 声明该锁的层;同键多层锁定取治理序最高层;keyPath 字典序)

object
plan
object
tier
required
Any of:
string
Allowed value: test
caps
required
object
concurrency
required

并发会话上限(软帽;硬帽 = floor(×1.1))

integer
apps
required

应用数上限(active app-scope 键)

integer
orgMembers
required

组织成员上限(仅 org owner 生效)

integer
monthlyEndUsers
required
Any of:
integer
gatewayLane
required

可登记出口 IP 进网关档(SC-34)

boolean
status
required
Any of:
string
Allowed value: active
expiresAt
required
string
>= 1 characters
lapsedFrom
Any of:
string
Allowed value: test
diagnostics
Array<object>
object
code
required

诊断码(词表:effective_models_empty)

string
message
required

人读说明(中文;运维/末端提示用)

string
Example
{
"app": {
"platform": "desktop"
},
"systemPromptPolicy": "fallback",
"models": [
{
"protocol": "openai_chat"
}
],
"aliasOrigins": {
"main": "explicit",
"fast": "explicit"
},
"adjudicator": {
"tier": "low"
},
"adjudicators": [
{
"tier": "low"
}
],
"contextScheme": {
"stage": "production"
},
"governance": {
"licenseStatus": "none"
},
"platformModels": {
"videoGen": [
{
"constraints": {
"durations": {
"kind": "set"
}
}
}
],
"textToSpeech": [
{
"outputHosting": "domestic"
}
]
},
"media": {
"imagegen": {
"enabled": true
},
"videogen": {
"enabled": true
},
"asr": {
"enabled": true
},
"tts": {
"enabled": true
}
},
"orgMemory": {
"mode": "allow"
},
"plan": {
"tier": "test",
"status": "active",
"lapsedFrom": "test"
}
}

未变(ETag 命中)

App_key_invalid / signature_invalid / nonce_replayed(T-A34;GET 空体 = 空串 sha256)

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

App_disabled / app_ip_denied

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