API Docs

API 文档

兼容 OpenAI。将 base_url 设为 https://api.eastx.ai/v1,即可直接复用现有 SDK 代码。

在找商户管理 API?

本页介绍的是 终端用户推理 API —— 即对 /v1/* — 通过任意兼容 OpenAI 的 SDK 调用。若您是白标租户管理员,希望以编程方式管理品牌、定价、财务或自定义域名,请使用独立的 商户管理 API:token 前缀 sk-mgmt-*,base path /api/v1/merchant/*。请在 Console 的 API 密钥 中签发 token;可浏览的 OpenAPI 文档位于 admin.eastx.ai/api/v1/merchant/docs。

/api/v1/merchant/finance/*:汇总、按模型明细和趋势统一以用户实际消费额为收入,costUsd 为已记录的上游供应商成本,而非平台批发价。毛利 = 实际消费额 − 上游成本,与主站一致。可结算为扣收单费后的参考值,月度结算及平台抽成规则不变。

快速开始

一个 chat completions 调用 —— 选择您熟悉的客户端。

curl https://api.eastx.ai/v1/chat/completions \
  -H "Authorization: Bearer $EASTX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "messages": [
      {"role": "user", "content": "Hello!"}
    ]
  }'

鉴权

所有端点均要求在 Authorization 请求头中携带 API 密钥:

Authorization: Bearer sk-eastx-<your-key>
  • • 密钥在 /keys 页面创建,且仅展示一次 —— 请妥善保存。
  • • 创建密钥时可选配置单密钥消费上限、RPM 速率限制、可用模型名单与来源 IP 白名单。设置了 IP 白名单后,仅名单内的 IPv4/CIDR 来源可调用(否则返回 403);留空则不限制来源 IP。
  • • 若密钥泄漏,在同一页面立即吊销;吊销即时生效。
POST/api/v1/auth/slider/challenge

门户登录:获取滑块拼图

密码登录和邮箱验证码发信前,用户明确操作后获取 PNG 拼图。返回 challengeId、backgroundImage、pieceImage、width:320、height:160、pieceSize:44、pieceY;有效期120秒,不返回正确横坐标。白标门户应携带 tenantSlug。

请求体

{
  "email": "user@example.com",
  "tenantSlug": "acme"
}

示例

curl $PORTAL_ORIGIN/api/v1/auth/slider/challenge -H "Content-Type: application/json" -d '{"email":"user@example.com","tenantSlug":"acme"}'
POST/api/v1/auth/slider/verify

门户登录:验证拼图位置

提交用户拖动后的横坐标 offset(原始320像素图片坐标)。成功返回 {captchaToken,expiresIn:300},票据绑定邮箱、租户和来源IP,一次性使用。答错或过期后重新获取拼图。

请求体

{
  "email": "user@example.com",
  "tenantSlug": "acme",
  "challengeId": "<challengeId>",
  "offset": 180
}

示例

curl $PORTAL_ORIGIN/api/v1/auth/slider/verify -H "Content-Type: application/json" -d '{"email":"user@example.com","tenantSlug":"acme","challengeId":"<challengeId>","offset":180}'
  • • 示例180仅展示数值类型;实际位移必须由用户根据当次图片拖动确定。
POST/api/v1/auth/login

门户登录:邮箱密码

必须携带刚通过滑块获得的 captchaToken;缺失返回 captcha_required,伪造、过期或重复使用返回 invalid_captcha,不签发登录会话。每次尝试后重新验证,包括密码错误或网络失败。

请求体

{
  "email": "user@example.com",
  "password": "<password>",
  "captchaToken": "<captchaToken>",
  "tenantSlug": "acme"
}

示例

curl -c cookies.txt $PORTAL_ORIGIN/api/v1/auth/login -H "Content-Type: application/json" -d '{"email":"user@example.com","password":"<password>","captchaToken":"<captchaToken>","tenantSlug":"acme"}'
  • • 此要求仅用于门户用户登录,不增加 API Key 调用 /v1/* 的滑块要求。
POST/api/v1/auth/email-code/send

门户登录:发送邮箱验证码

purpose 为 login 或 signup 时,发信均要求新的一次性 captchaToken。收到邮件后调用 /api/v1/auth/email-code/confirm,携带同一 email、tenantSlug、purpose 和六位 code,无须再次滑块验证。原有邮箱/IP/全局发信限额继续生效。

请求体

{
  "email": "user@example.com",
  "purpose": "login",
  "captchaToken": "<captchaToken>",
  "tenantSlug": "acme"
}

示例

curl $PORTAL_ORIGIN/api/v1/auth/email-code/send -H "Content-Type: application/json" -d '{"email":"user@example.com","purpose":"login","captchaToken":"<captchaToken>","tenantSlug":"acme"}'
GET/api/v1/merchant/apply/captcha

商户申请:图形验证码

公开接口,返回 {captchaId,imageSvg,expiresInSeconds:300}。以图片展示自托管 SVG,由申请人填写算式答案。支持手动刷新,不需要登录或 API Key。

示例

curl $PORTAL_ORIGIN/api/v1/merchant/apply/captcha
POST/api/v1/merchant/apply/email-code/send

商户申请:发送邮箱验证码

申请人明确点击发送后调用;邮箱和子域名去除首尾空格并转小写。不会自动发送邮件。

请求体

{
  "email": "founder@acme.com",
  "slug": "acme",
  "captchaId": "<captchaId>",
  "captchaCode": "<math answer>"
}

示例

curl $PORTAL_ORIGIN/api/v1/merchant/apply/email-code/send -H "Content-Type: application/json" -d '{"email":"founder@acme.com","slug":"acme","captchaId":"<captchaId>","captchaCode":"<math answer>"}'
  • • 成功返回 {cooldownSeconds:60}。倒计时结束后可重发;每次发送尝试后刷新一次性图形验证码。发送失败不显示成功。
  • • 邮箱验证码为 6 位数字,仅用于当前邮箱及子域名;修改任一项后清空已输入验证码。服务端负责最终校验,前端校验不代表邮箱已验证。
  • • 错误包括 captcha_invalid、email_domain_invalid、email_code_unavailable、rate_limit_exceeded、contact_email_reserved、slug_reserved、slug_taken 和 validation_failed。
POST/api/v1/merchant/apply

商户申请:提交 / 补验历史申请

提交时必须携带收到的 6 位 emailCode。子域名须为 2–32 位小写字母、数字及连字符,不能以连字符开头或结尾。

请求体

{
  "slug": "acme",
  "contactEmail": "founder@acme.com",
  "emailCode": "123456",
  "name": "Acme AI",
  "contactName": "Jane",
  "applyMessage": "Our use case"
}

示例

curl $PORTAL_ORIGIN/api/v1/merchant/apply -H "Content-Type: application/json" -d '{"slug":"acme","contactEmail":"founder@acme.com","emailCode":"<six digits from email>"}'
  • • 错误包括 email_code_invalid、email_code_unavailable、rate_limit_exceeded、contact_email_reserved、slug_reserved、slug_taken、application_changed 和 validation_failed。状态变化后请确认原邮箱和子域名并重新获取验证码。
  • • 原有已开通或待审核工作区使用完全匹配的原 slug、原联系邮箱和有效验证码补验,成功返回 {reverificationOnly:true}。仅记录邮箱验证凭据,不覆盖原品牌名、联系人或申请说明,不改变原状态,也不表示审核通过或重新激活。子域名可用性提示仅供参考,不应阻止补验。
GET/v1/models

列出模型

返回当前账户可调用的模型目录。即将上线和已停用的模型会被过滤掉。

示例

curl https://api.eastx.ai/v1/models \
  -H "Authorization: Bearer $EASTX_API_KEY"
  • • 每条记录都带有 OpenAI 风格的字段(id、object、created、owned_by),并额外包含 display_name、input_price_per_1m、output_price_per_1m。大多数 OpenAI SDK 会忽略未知字段。
GET/v1/models/{id}

获取单个模型

按 id 查询单个模型。部分 SDK 会在客户端初始化时调用此端点校验模型名是否有效。

示例

curl https://api.eastx.ai/v1/models/claude-sonnet-4-6 \
  -H "Authorization: Bearer $EASTX_API_KEY"
  • • 若 id 未知或已停用,返回 404 model_not_found。
POST/v1/chat/completions

对话补全

兼容 OpenAI 的 chat completions 端点。支持流式(SSE)与非流式两种模式。token 用量在上游计费,您的余额会在每次请求结束时扣减。

请求体

{
  "model": "claude-sonnet-4-6",
  "messages": [
    {"role": "system", "content": "You are concise."},
    {"role": "user", "content": "Explain JWT in one sentence."}
  ],
  "max_tokens": 256,
  "temperature": 0.2,
  "stream": false
}

示例

curl https://api.eastx.ai/v1/chat/completions \
  -H "Authorization: Bearer $EASTX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "messages": [{"role":"user","content":"hi"}],
    "max_tokens": 32
  }'
  • • 如需流式响应,请设置 "stream": true。每个 SSE 事件形如 "data: {...}",承载一个 OpenAI 风格的 chunk,其中 "choices[0].delta.content" 为增量文本,最后一个非 DONE chunk 会带上 "choices[0].finish_reason"。请持续消费,直到读到 "data: [DONE]"。
  • • Vision 与 tool / function calling 会透传到支持这些能力的上游模型(如 Claude、qwen-vl-*、GPT 系列)。详见下方示例。
  • • 在调用前会按最坏情况(input + max_tokens × output 价格)预扣余额。余额不足返回 402。
  • • 推理模型(如 gpt-5.5)会将思维链按 output_tokens 计费 —— 您看到的 usage.completion_tokens 可能超过可见消息的长度。思维链本身不会在响应中暴露,与 OpenAI o 系列保持一致。

Tool / function calling

请求体

{
  "model": "claude-sonnet-4-6",
  "messages": [
    {"role": "user", "content": "What's the weather in Paris?"}
  ],
  "tools": [{
    "type": "function",
    "function": {
      "name": "get_weather",
      "description": "Get the current weather for a city.",
      "parameters": {
        "type": "object",
        "properties": {"city": {"type": "string"}},
        "required": ["city"]
      }
    }
  }]
}
  • • 由模型自主决定是否调用工具。一旦调用,响应的 "choices[0].message.tool_calls" 会列出函数名与 JSON 参数,"finish_reason" 为 "tool_calls"。请将工具执行结果以 {"role":"tool", ...} 的消息形式继续发起后续请求。
  • • 并非所有上游都支持工具调用。当前 Anthropic Claude、Qwen 系列以及大多数 OpenAI 兼容模型支持;小型开源模型往往不支持。

Vision(图像输入)

请求体

{
  "model": "claude-sonnet-4-6",
  "messages": [{
    "role": "user",
    "content": [
      {"type": "text", "text": "What is in this image?"},
      {"type": "image_url", "image_url": {"url": "https://example.com/cat.jpg"}}
    ]
  }]
}
  • • 将每条 user 消息的 "content" 由字符串改为分段数组。"image_url" 同时接受 HTTPS URL 与 "data:image/<mime>;base64,<...>" 形式的 data URL。
  • • 请选用支持视觉的模型(如 claude-sonnet-4-6、qwen-vl-plus)。向纯文本模型发送图像的行为取决于上游 —— 可能返回 400,也可能静默丢弃图像。
POST/v1/responses

Responses API(兼容)

兼容 OpenAI Responses 的文字和图片输入,支持文字流式输出。鉴权、模型白名单、额度和计费与 Chat Completions 相同。

请求体

{
  "model": "kimi-k3",
  "input": [{"role":"user","content":[{"type":"input_text","text":"Say hello"}]}],
  "max_output_tokens": 128,
  "stream": false
}

示例

curl https://api.eastx.ai/v1/responses \
  -H "Authorization: Bearer $EASTX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"kimi-k3","input":"Say hello","max_output_tokens":128}'
  • • 请求使用 input 和 max_output_tokens,响应包含 output 和 usage;流式输出为 response.* 命名 SSE 事件。
  • • 工具调用、previous_response_id、服务端保存的会话状态和不支持的字段会明确返回 400,不会静默忽略。
  • • input_video 是实验性的上游扩展,会映射到 video_url;图片和视频能否成功取决于所选上游,协议兼容层不能代替上游支持媒体格式。
POST/v1/messages

Anthropic Messages(兼容)

Anthropic Messages API 兼容端点。基于 Anthropic SDK 的工具(Claude Code、ZCode 等)把 base URL 指向这里即可直接使用 EastX。请求在内部翻译为 chat-completions 处理,鉴权、模型名单、限速、计费与 OpenAI 端点完全一致。

请求体

{
  "model": "claude-sonnet-4-6",
  "max_tokens": 1024,
  "system": "You are concise.",
  "messages": [
    {"role": "user", "content": "Explain JWT in one sentence."}
  ],
  "stream": false
}

示例

curl https://api.eastx.ai/v1/messages \
  -H "x-api-key: $EASTX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 256,
    "messages": [{"role":"user","content":"hi"}]
  }'
  • • 鉴权同时接受 Anthropic 风格的 "x-api-key: <key>" 和 "Authorization: Bearer <key>" —— 用的都是同一把 sk-eastx-* 密钥。
  • • 流式输出为标准 Anthropic SSE 事件(message_start、content_block_delta、message_delta、message_stop)。工具调用与图像输入双向翻译。
  • • 请求中的 "thinking" 参数会被接受但不转发 —— 模型是否思考由上游自行决定。会输出推理过程的模型(如 DeepSeek)以标准 Anthropic "thinking" 内容块返回。
  • • POST /v1/messages/count_tokens 返回本地估算值(约 4 字符/token),不打上游、不计费。

在 ZCode 中使用 EastX

请求体

// %USERPROFILE%\.zcode\cli\config.json  (macOS/Linux: ~/.zcode/cli/config.json)
{
  "provider": {
    "eastx": {
      "kind": "openai-compatible",
      "name": "EastX",
      "options": {
        "baseURL": "https://api.eastx.ai/v1",
        "apiKey": "sk-eastx-...",
        "apiKeyRequired": true,
        "includeUsage": true
      },
      "models": {
        "claude-sonnet-4-6": { "name": "Claude Sonnet 4.6" },
        "deepseek-v4-pro":   { "name": "DeepSeek V4 Pro" }
      }
    }
  },
  "model": { "main": "eastx/claude-sonnet-4-6", "lite": "eastx/deepseek-v4-pro" }
}
  • • ZCode 桌面版:模型设置 → 添加供应商 → API 格式选 "Chat Completions",Base URL 填 "https://<api-host>/v1"(必须带 /v1 后缀),API Key 填 sk-eastx-...,再从 /models 页或 GET /v1/models 原样复制模型 id 加入模型列表。
  • • ZCode CLI(无界面):按上方示例创建 config.json。模型引用必须写成 "供应商id/模型id" 格式。
  • • 给模型配置思考档位后,ZCode 会改走 /v1/messages 而非 /chat/completions —— 本端点上线后两条路都通。
POST/v1/embeddings

向量

为一个或多个字符串生成向量。此端点仅接受 modality=embedding 的模型(对话模型会返回 400 wrong_endpoint)。

请求体

{
  "model": "text-embedding-v3",
  "input": "Hello, world."
}

示例

curl https://api.eastx.ai/v1/embeddings \
  -H "Authorization: Bearer $EASTX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "text-embedding-v3",
    "input": ["hello", "world"]
  }'
  • • input 支持单个字符串或字符串数组。
  • • 仅按 input token 计费(output_tokens = 0)。
POST/v1/images/generations

图像生成

根据文本提示词生成图像。EastX 封装了阿里云的异步任务 API,因此客户端看到的是同步响应 —— 典型延迟 3-10 秒。按张计费,与分辨率无关。

请求体

{
  "model": "qwen-image-plus",
  "prompt": "a red apple on a wooden table",
  "n": 1,
  "size": "1024x1024"
}

示例

curl https://api.eastx.ai/v1/images/generations \
  -H "Authorization: Bearer $EASTX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen-image-plus",
    "prompt": "a red apple on a wooden table",
    "n": 1,
    "size": "1024x1024"
  }'
  • • 响应结构:{"created":<ts>,"data":[{"url":"<signed-oss-url>","revised_prompt":"..."}]}。
  • • n 最多为 4。可选尺寸取决于具体模型;1024x1024 各模型均支持。
  • • URL 是临时签名的 OSS 链接 —— 请在约 1 小时内下载并自行托管。
  • • 内部轮询超时为 90 秒;过长的任务返回 504 upstream_timeout。

计费说明

按次计费,以美元结算,请求完成后从余额扣除。定价页给出的单价均为每 100 万 tokens 的价格。

  • • 按实际用量结算:以上游返回的本次请求 token 数(输入 + 输出)计费,不按估算值。请求失败不计费。
  • • 调用前的余额校验:转发前会按最坏情况估算本次花费(input + max_tokens,且按该请求可能落到的最贵档计价)来校验余额。余额不足时在调用上游之前就返回 402。
  • • 阶梯计价:部分模型不是单一价,而是分档计价 —— 单价取决于输入有多长、模型是否进行了推理,少数模型还取决于调用时段。最便宜档与最贵档可能相差 10 倍,每次请求按其真实输入 token 数落到的那一档计费。所有分档模型都会在定价页标注「阶梯计价」徽章,展开即可看到每一档的单价。这类模型在目录里显示的价格是它最便宜的那一档。
  • • 思考档如何判定:请求中声明了思考(enable_thinking、reasoning_effort 或 thinking.type),**或者**响应中实际包含推理内容,两者满足其一即按思考档计费。部分模型不需要显式声明就会默认思考,上游此时同样按思考档收费。
  • • 缓存命中:当上游报告命中提示词缓存时,输入中命中的那部分按该模型的缓存命中价计费,其余部分按常规输入价计费。分档模型的缓存命中价同样分档,与该次请求落到的档位一致。
  • • 核对某一笔扣费:每次调用命中的档位会显示在控制台首页的调用记录里。若仍有疑问,请把 request id 发给我们,我们会与上游账单逐笔核对。

错误码

所有错误均以以下 JSON 结构返回:{"error":{"code":"...","message":"...","type":"..."}}。HTTP 状态码与 error.code 的对应关系如下表。

type 字段按家族对错误码归类,便于您据此分支处理,而无需逐个匹配名称:auth_error(密钥问题)、invalid_request_error(请求输入)、rate_limit(RPM 上限)、billing_error(余额 / 上限)、upstream_error(上游服务商)、server_error(少见 —— EastX 自身问题)。

HTTPerror.code触发场景
400bad_request缺少必填字段,或请求体格式有误。请查看 error.message 获取详情。
400wrong_endpoint模型 modality 与端点不匹配(例如把对话模型用于 /v1/embeddings)。
401missing_key缺少 Authorization 请求头。请发送 "Authorization: Bearer sk-eastx-..."。
401invalid_key密钥不存在或已吊销。请到 /keys 重新创建。
402insufficient_balance最坏情况成本超过账户余额。请前往 /recharge 充值。
402cap_reached已达到单密钥消费上限(balanceCapUsd)。请调高上限或更换新密钥。
403disabledAPI 密钥被管理员停用。
403expiredAPI 密钥的 expiresAt 已过期。
403model_not_allowed该密钥设置了可用模型名单,所请求的模型不在其中。请到 /keys 编辑名单,或改用未限制的密钥。
404model_not_found未知的模型 id。请调用 /v1/models 查看可用列表。
429rate_limit_exceeded触发了单密钥的 RPM 速率限制。请降低请求速率或拆分到多个密钥。
429tenant_rate_limit_exceeded触发了租户级 RPM 上限 —— 该上限是租户下所有密钥的合计。与上方单密钥 429 不同。请联系租户管理员调高上限。
500pricing_misconfigured该模型在 EastX 侧缺少价格配置(少见的管理端 bug)。请稍后重试;如持续出现,请将模型 id 告知支持。
502upstream_unreachable无法连接上游服务商。通常是临时性问题 —— 请配合退避策略重试。
502upstream_error上游返回错误。响应 message 中包含上游详情及 upstream_status。
502image_generation_failed上游图像任务未成功(返回 FAILED 或为空)。请重试、调整提示词,或更换图像模型。
503upstream_unavailable该渠道下所有上游 token 均处于冷却或停用状态。EastX 已感知到该问题。
504upstream_timeout图像生成耗时超过 90 秒。可再次提交,相同提示词可能成功。

Seedance 视频任务

使用 EastX API Key 创建视频任务,再用返回的 id 查询。成功后从 content.video_url 读取视频地址。视频任务不使用对话接口。

  • seedance-2-0 / seedance-2-0-fast / seedance-2-0-mini: 4–15 秒; seedance-2-5: 4–30 秒.
  • 分辨率和价格:用 GET /v1/models/{model} 查询 video_pricing;未配置价格的分辨率不能提交。
  • 比例:16:9、9:16、1:1、21:9、4:3、3:4。默认时长 4 秒,默认不生成音频。

创建任务

curl 'https://api.eastx.ai/v1/contents/generations/tasks' \
  -H "Authorization: Bearer $EASTX_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: my-video-001' \
  -d '{"model":"seedance-2-5","content":[{"type":"text","text":"A paper plane glides over a lake at sunrise."}],"resolution":"720p","duration":4,"ratio":"16:9","generate_audio":false}'

查询任务

curl 'https://api.eastx.ai/v1/contents/generations/tasks/<task_id>' \
  -H "Authorization: Bearer $EASTX_API_KEY"

queued 为排队,processing 为生成中,succeeded 为成功,failed 为失败。每隔约 10 秒查询同一任务即可。创建时预占余额与 Key 额度,成功按 usage.total_tokens 结算,明确失败退回预占;查询不会重复扣费。

同一任务重试创建时保持相同 Idempotency-Key 和请求参数,避免重复生成。pending_confirmation 表示提交结果待核实,请查询原任务并联系支持,不要重新创建。billing_pending 表示结果已生成但需要补足余额或提高原 Key 额度,结清后才能获取视频。

参考素材放在 content[]:图片使用 image_url 与 reference_image、first_frame 或 last_frame;视频使用 video_url 与 reference_video;音频使用 audio_url 与 reference_audio。URL 为 HTTPS 或已有权限的 asset:// 引用,不接受本地文件路径或 Base64。

模型服务状态

GET /v1/models 和模型详情返回 service_status:normal 表示存在可用上游,paused 表示服务暂停中。暂停型号保留在列表中,仍可使用原模型 ID 发起请求以触发恢复尝试;人工停用或维护的型号不会自动恢复。

上游明确返回额度不足时自动暂停;多个上游中只要有一个可用,模型保持正常。冷却 10 分钟后,由下一次实际请求尝试恢复,同一上游只放行一次并发恢复尝试。没有后台定时探测或额外测试请求。全部不可用时返回 503,请稍后重试。

智能路由

在 API Key 设置中选择默认路由、智能自动、价格优先、速度优先或成功率优先。仅在同一对话模型有多个可用报价时生效,不改变模型权限与 IP 限制。

{
  "model": "gpt-6.1-sol",
  "routing_priority": "price",
  "messages": [
    {
      "role": "user",
      "content": "Hello"
    }
  ]
}

请求覆盖顺序:routing_priority → provider.sort → x-eastx-routing 请求头 → API Key 设置。有效值为 default、auto、price、speed、success_rate。支持 /v1/chat/completions 和 /v1/messages。

价格优先按请求预计费用排序;速度和成功率使用当前租户近 24 小时记录,无历史时采用保守估计,不能保证每次最快。默认路由保留原顺序并追加备用来源。目录显示各报价最高单价,实际按成功渠道的价格及档位结算;商户自定义零售价保持有效。余额预检覆盖可能故障切换的最高报价。

速率限制与配额

  • • 单密钥 RPM:每个 API 密钥都有每分钟请求数上限(默认 60)。超出后返回 429 rate_limit_exceeded。可在 /keys 页面调整单密钥的上限。
  • • 租户级 RPM 上限:在白标租户中,租户管理员可设置租户级 RPM 上限,作用于该租户下所有密钥的合计请求。触发时返回 429 并附带 tenant_rate_limit_exceeded —— 与单密钥 429 区分开,便于您在重试逻辑中分别处理。此时增加密钥数无法绕过;请联系租户管理员调高上限。
  • • 账户余额:每次成功请求都会从您的 USD 余额扣费。余额不足返回 402;请前往 /recharge 充值。
  • • 单密钥消费上限:可选的 balanceCapUsd 在累计消费达到上限后停用该密钥。适合在客户端 App 中嵌入短期密钥的场景。
  • • 上游冷却:若某渠道下所有上游 token 都处于冷却或异常状态,gateway 将返回 503 upstream_unavailable。请配合退避策略重试。