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

快速开始

一个 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 速率限制。
  • • 若密钥泄漏,在同一页面立即吊销;吊销即时生效。
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/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。

错误码

所有错误均以以下 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 已过期。
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 秒。可再次提交,相同提示词可能成功。

速率限制与配额

  • 单密钥 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。请配合退避策略重试。