跳转到内容

twp/1 对话(本文档仅收录非流形态;stream:true → SSE 事件语法 t.open/t.delta/t.usage/t.warn/t.close/t.err,单源 = src/contract/twp.ts):参数消毒服务端化(Profile params 剥除/钳制)、meta.requestId 请求层幂等(认证后出网前占位,同 id 成功交换上游调用恒 1 次、计费恒 1 次;完成后重放返缓存结果(非流,携 x-tansr-idempotent-replay: 1)或 409(流式结果不可重放);计量与结算幂等为计费层兜底)、usage_events 恒填 api_key_id、越权模型恒 403 model_not_authorized(未知/授权面外/direct 同拒);上游方言不透传(4xx/5xx 收敛 502 upstream_error);请求签名三头可选(在场恒校验,签名覆盖 rawBody 原始字节)

POST
/t1/exchange
curl --request POST \
--url https://api.tansr.com/t1/exchange \
--header 'Content-Type: application/json' \
--header 'x-tansr-key: <x-tansr-key>' \
--header 'x-tansr-key-id: <x-tansr-key-id>' \
--data '{ "model": "example", "thread": [ { "role": "system", "blocks": [ { "t": "text", "v": "example", "cacheable": true } ] } ], "tools": [ { "name": "example", "description": "example", "inputSchema": {} } ], "params": { "maxTokens": 1, "temperature": 1, "topP": 1, "stop": [ "example" ], "reasoning": "off", "promptTokensEstimate": 1 }, "meta": { "requestId": "example", "sessionId": "example", "client": { "name": "example", "version": "example" }, "purpose": "example" }, "cache": { "skipWrite": true, "key": "example" }, "stream": true }'
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

Media typeapplication/json
object
model
required

Bundle 内 handle;授权面之外恒 403 model_not_authorized

string
>= 1 characters <= 128 characters
thread
required
Array<object>
>= 1 items <= 1000 items
object
role
required
Any of:
string
Allowed value: system
blocks
required
Array
>= 1 items <= 256 items
Any of:
object
t
required
string
Allowed value: text
v
required
string
cacheable
boolean
tools
Array<object>
<= 128 items
object
name
required
string
>= 1 characters <= 128 characters
description
string
<= 4000 characters
inputSchema
required

JSON Schema(上游方言转换原样携带)

object
params
object
maxTokens
integer
>= 1
temperature
number
<= 2
topP
number
<= 1
stop
Array<string>
<= 8 items
reasoning
Any of:
string
Allowed value: off
promptTokensEstimate

末端预估的 prompt token 数(T-A42 贴窗防御):在场且模型有 contextWindow 时,promptTokensEstimate + maxTokens(消毒后)> contextWindow 即 400 context_window_exceeded(预扣/预留之前拦截,零计费);缺席 = 仅既有输出钳制,零变化

integer
>= 1
meta
required
object
requestId
required

幂等键,须 owner 级唯一(推荐 ULID;十王修案 FX-A-12 B-06):计量落库与台账结算按 twp: 幂等,重放零双计;同一 owner 下跨 app 复用同一 requestId 会在计费层撞占位 → 409 idempotency_conflict(看似假冲突,实为撞键);8–15 位纯数字形(时间戳 / 计数器)服务端只记 info 不拒,请迁 ULID

string
>= 8 characters <= 40 characters /^[A-Za-z0-9_-]+$/
sessionId

会话 public id。批ι(RFC-R79-ι)起客户端铸造(ULID 形制,首见幂等登记,见 SESSION_PUBLIC_ID_RE);旧端沿用 /t1/heartbeat 签发值,两代同受理

string
<= 64 characters
client
object
name
required
string
>= 1 characters <= 64 characters
version
required
string
>= 1 characters <= 32 characters
purpose

计费归属用途(G-A10 加法可选;批ι 起词形受理:语义注册表见 TWP_PURPOSES,词表外词形值原样落列如实呈现,非词形 400)

string
<= 16 characters /^[a-z][a-z0-9_-]{0,15}$/
key
additional properties
any
cache
object
skipWrite

一次性请求跳写(anthropic 方言不打消息尾断点;缺席/false = 正常断点)

boolean
key

前缀缓存亲和键(prompt_cache_key / metadata.user_id 素材;缺席回落 meta.sessionId)

string
>= 1 characters <= 128 characters
stream

True → SSE(t.* 事件);缺省/false → 单 JSON

boolean

非流单 JSON(流式为 text/event-stream,不在本文档);幂等缓存重放时携 x-tansr-idempotent-replay: 1(体/计费头 = 完成时刻快照)

Media typeapplication/json
object
exchangeId
required

服务端签发(= x-tansr-request-id)

string
model
required

账套内 handle(回显)

string
blocks
required
Array
Any of:
object
t
required
string
Allowed value: text
v
required
string
cacheable
boolean
usage
required
object
inTokens
required

非缓存输入段(不含缓存读/写命中;差价计费的全价段)

integer
outTokens
required

输出 token

integer
cacheRTokens
required

缓存读命中段(上游未报恒 0;按价目 cacheRPerM 差价计费,未配缓存价回落全价)

integer
cacheWTokens
required

缓存写段(anthropic 系 cache_creation;上游未报恒 0)

integer
cost
required

DECIMAL 字符串(实结)

string
currency
required
string
balanceAfter
required

DECIMAL 字符串(台账终审余额)

string
estimated

本次计量为服务端保守估算(上游缺报/断链补账);实报行键缺席

boolean
estimatedReason
Any of:
string
Allowed value: upstream_usage_missing
dims

长尾计量维度桶(token/次数等整数量);仅非零桶携带;键词表见维度注册表;obs_ 前缀 = 观测位(不参与计费)

object
saved

本次请求缓存净省费(DECIMAL 串,= readSaved − writePremium;销售四列快照直算)

string
stop
required
Any of:
string
Allowed value: end
Example
{
"blocks": [
{
"t": "text",
"cacheable": true
}
],
"usage": {
"estimatedReason": "upstream_usage_missing"
},
"stop": "end"
}

In_progress(T-A23:同 (owner, apiKey, requestId) 请求正在飞行中,按 retryAfterMs 退避后同 id 重试;并发同键单飞)

Media typeapplication/json
object
status
required
string
Allowed value: in_progress
requestId
required

客户端幂等键回显(twp = meta.requestId;compat = idempotency-key 头)

string
retryAfterMs
required

建议重试间隔(毫秒;末端可自定退避)

integer
Example
{
"status": "in_progress"
}

Content_blocked(T-A15 安全审查:入向 deny 恒在余额预扣之前拦截零计费;非流出向 deny 内容不下发、消耗如实;detail.reason 携理由;流式为异步抽检不阻流)/ egress_blocked(T-A24 出网零信任:org BYOK 上游目标命中私网/元数据/回环或非 HTTPS)/ context_window_exceeded(T-A42 贴窗防御:params.promptTokensEstimate 在场且模型有 contextWindow 时,估算入 + 消毒后 maxTokens > contextWindow 恒拒——幂等占位/预留/预扣之前拦截零计费,detail.promptTokensEstimate/maxTokens/contextWindow;字段缺席 = 仅既有输出钳制零变化)

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_key_invalid / signature_invalid / nonce_replayed(T-A34)

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

Insufficient_balance(预检 fail-closed 零上游)

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

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

Idempotency_conflict(T-A23:同 requestId 异载荷;或已完成结果不可重放(流式/超限/中断,detail.replayable=false);或 requestId 已达计费层(reservation 在册)不再重飞——计费层兜底,幂等缓存丢失也恒不双打上游)

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

Rate_limited(key 级 60s 窗,携 Retry-After;App 总闸 quota.rpm 触顶 detail.scope:“app”;SC-34 登记出口的 app_user 令牌径按每终端用户桶计,同一 perMinute 上限,触顶 detail.scope:“endUser”;既有 k 径信封不变)/ quota_exceeded(T-A17 策略包日 token 上限,UTC+8 日界,detail.limit/used/resetAt;T-A23 起计数在占位阶段原子预留(含在途),结算按实结差额校正)

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

Upstream_error(上游拒绝;方言正文不透传,detail.upstreamStatus;幂等记 failed,同 id 可重试)/ upstream_disconnected(T-A35:上游断流;流中形态经 SSE t.err 同码下发)

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

Pricing_guard_tripped(计费模型价格缺失/非法/越界,fail-closed)/ stream_backpressure(T-A35:SSE 下游写背压超限;流中形态经 t.err 同码下发)

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

T-A35 分层超时(各档独立 env 可配,detail.tier/timeoutMs 携触发档):upstream_connect_timeout(建连档,流式径,缺省 10s)/ upstream_ttfb_timeout(首帧档,流式=头→首帧、非流=头+体全程,缺省 120s)/ upstream_idle_timeout(帧间档,缺省 90s;帧间存活恒不杀)/ upstream_total_timeout(总长档,缺省 3600s,仅最终保险);流中触发经 SSE t.err 同码下发(detail 说明档位)

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