跳转到内容

创建应用(name 必填)→ {app, apiKey}:ApiKey 密文(tsk_+40 位 base62)唯一一次回显,库存 sha256(org 语境 owner/admin);expiresAt 缺省 now+365d(显式 null = 有意长期,写审计;存量行不动)、signRequired 请求签名强制位(缺省 false)

POST
/v1/apps
curl --request POST \
--url https://api.tansr.com/v1/apps \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "name": "example", "expiresAt": "example", "signRequired": true, "deviceBound": true, "platform": "desktop" }'
x-tansr-org
string

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

Media typeapplication/json
object
name
required
string
>= 1 characters <= 128 characters
expiresAt
Any of:
string
>= 1 characters <= 64 characters
signRequired

请求签名强制位:缺席 = 缺省 true(CW5-7 新键恒强制;未签名 /t1 恒 401 signature_invalid);显式 false = 兼容档(存量集成逃生口);存量键不动

boolean
deviceBound

装置绑定位:true = CLI 派生装置键(同账户同名活跃绑定键唯一,撞名 409 conflict 恒不静默顶替);缺席/false = console 径(名称不设唯一约束);存量键不动

boolean
platform
Any of:
string
Allowed value: desktop

已建(密文唯一一次)

Media typeapplication/json
object
app
required
object
credentialRotationRequired

离组收回旧凭据;应用仍归组织,须当前组织管理员轮换。旧令牌和双头立即失效。

boolean
ownership
object
type
required
Any of:
string
Allowed value: user
orgId
required
Any of:
string
permissions
object
canManage
required
boolean
canDelete
required
boolean
canRequestDeletion
required
boolean
deletionRequestUnavailableReason
string
Allowed value: org_governance_disabled
id
required

ApiKeyId(api_keys.public_id;门户/审计/报表同键,可公开引用)

string
name
required
string
status
required
Any of:
string
Allowed value: active
ipAllowlist
required
Any of:
Array<string>
keyPrefix
required

密文展示前缀(tsk_ + 6);密文仅创建/轮换各回显一次,hash 永不回读

string
expiresAt
required
Any of:
string
signRequired
required

True = 未签名 /t1 请求恒 401 signature_invalid

boolean
platform
required
Any of:
Any of:
string
Allowed value: desktop
deviceBound
required

True = CLI init 派生装置绑定键(走用户层能力控制面,应用配置对其不生效)

boolean
purpose
required
Any of:
string
lastUsedAt
required
Any of:
string
createdAt
required
string
apiKey
required

ApiKey 密文(tsk_ + 40 位 base62)唯一一次回显;库存 sha256

string
Example
{
"app": {
"ownership": {
"type": "user"
},
"permissions": {
"deletionRequestUnavailableReason": "org_governance_disabled"
},
"status": "active",
"platform": "desktop"
}
}

Limit_exceeded(每 owner 应用存量上限,active 档计数;T-A28)

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

Forbidden(org 角色不够 / PAT 缺 control scope)

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(每 IP 认证严档,T-A28)

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