新把任何智能体接入 UberLLM:一个密钥,所有模型,价格不高于官方价。
UberLLM

错误

UberLLM 返回 OpenAI 风格的错误封装,因此现有的错误处理无需修改即可工作:

{
  "error": {
    "code": "insufficient_credits",
    "message": "Your credit balance is too low to serve this request.",
    "type": "insufficient_credits"
  }
}

推理接口 (/v1/*)

HTTP code 含义 应对措施
402 insufficient_credits 您的预付余额不足以支付请求的预留费用。 请在 控制面板 → 积分 充值。
402 key_spend_cap_exceeded 此 API key 已达到其配置的消费限额(每日 / 每月 / 终身)。 请提高或移除此 API key 的限额,或使用其他 API key。
400 invalid_request 请求正文无法解析,或模型拒绝了请求(消息会说明原因)。 请修正请求;此请求不会重试。
413 request_too_large 请求正文超过 10 MB(通常是作为 base64 发送的图片)。 请将图片作为 https:// 链接发送,或缩短对话。未收取任何费用。
404 model_not_found model ID 不可用。前面加上 uberllm/ 前缀即可:uberllm/deepseek/deepseek-v4.1-flash 可到达 deepseek/deepseek-v4.1-flash。 请检查 GET /v1/models;修正 ID。
400 context_length_exceeded 提示词长度超过了模型所能接受的范围,无论卖家是谁。在 /v1/chat/completions 上,如果没有 models 列表,则由最接近且能接受该提示词的模型进行回复(回复中的 model 会指明该模型);当没有模型能接受时,或在 /v1/messages 上,就会出现此错误。消息会提供两种大小并列出能接受该提示词的模型。 请发送更少的内容,或选择消息中列出的模型。未收取任何费用。
400 tools_not_supported 请求发送了 tools,但模型无法调用它们,无论卖家是谁。替代规则同上。消息会列出可以调用的模型。 请不带工具发送,或选择消息中列出的模型。未收取任何费用。
400 max_price_exceeded 目前在您的 provider.max_price 范围内没有卖家提供此模型(且 models 中的模型也无法接受)。 请提高 max_price,稍后重试,或指定其他模型。未收取任何费用。
400 unsupported_routing_option UberLLM 无法应用 provider 选项(消息会指明该选项)。 请将其省略;参见 模型与路由。
400 invalid_metadata metadata 不是一个最多包含 16 个文本值的对象。 请修正标签;数字应加引号。
400 unknown_capability best-price: / fastest: 别名未指定任何任务。 请使用 chat, image, image-edit, text-to-video, image-to-video, music, speech, transcription 中的一个。
400 wrong_endpoint 模型(或别名)执行的任务与此路由不匹配:将图片、视频、音乐、语音或转录模型发送到 /v1/chat/completions 或 /v1/messages,将聊天模型发送到媒体路由,或语音和转录互换。消息会指明正确的路由。在任何操作运行前被拒绝;未收取任何费用,且“活动”中将其列为“已拒绝”。 请将其发送到消息中指明的路由(也在 /v1/models/{id} 上的 endpoints 中)。
503 no_timing_data 在有足够请求计时以比较模型之前,请求了 fastest:。 请使用 best-price: 或指定一个模型。
429 rate_limited 此 API key 已超出其每分钟请求限制,或市场在自动重试后仍持续进行速率限制。 请退避并带抖动重试;提高此 API key 的速率限制。
503 no_available_provider 即使在自动重试后,目前也没有人能提供该模型(没有卖家,所有卖家都失败或启动过慢,或者您的 provider 选项没有留下任何可路由的对象),或者 best-price: / fastest: 别名未能找到当前可用的任务模型。消息会指明模型或任务。这也包括卖家自己的提供商账户失败的情况:UberLLM 会尝试其他卖家,并且绝不会将该卖家的错误传递给您,仿佛您的 API key 有误一样。 请稍后重试或选择其他模型。未收取任何费用。
503 service_unavailable UberLLM 端出现临时问题。 请在几分钟后重试。

图片、视频和音乐请求会增加一些特有的代码 (image_required, invalid_image_url (一个不指向图片的源图片链接), max_cost_too_low, idempotency_key_reused, artifact_expired);参见 制作视频或图片。

被拒绝或失败的聊天请求会显示在 控制面板 → 活动 中,并附带发送给您的消息。聊天、图片、视频、音乐、语音和转录响应会带有一个 X-Request-Id 标头,其 ID 与其“活动”行相同,包括错误。

在返回错误之前,系统会为您进行重试:最多 4 次尝试,仅在第一个内容字节之前。参见 模型与路由。

预留与中止

UberLLM 在代理之前会预留估算费用,并在实际使用后进行结算。如果请求出错、中止,或者您在流式传输中途断开连接,未使用的预留费用将被释放——您只需为实际生成的内容付费。中止的流会根据分词器估算进行核算,并在 控制面板 → 活动 中标记。

速率限制

按密钥的速率限制采用固定窗口强制执行。在推理服务上,速率限制检查故障关闭——如果 UberLLM 无法验证您的限制,请求将被拒绝,而不是不计量地提供服务。在控制面板 → API 密钥中设置(或提高)每个密钥每分钟的请求限制。

每个已认证的 /v1/* 响应都包含该密钥的当前窗口信息:

请求头 含义
X-RateLimit-Limit 此密钥每分钟可发送的请求数
X-RateLimit-Remaining 当前分钟内剩余的请求数
X-RateLimit-Reset 窗口何时重置(Unix 秒)
Retry-After 当超出此限制 429 时:重试前需等待的秒数

当 X-RateLimit-Remaining 接近 0 时,请放慢速度。当无法读取窗口信息时,请求头将被省略。

卖家 API (/api/v1/seller/*)

这些使用标准的 REST 代码:

HTTP code 含义
400 invalid_request 验证失败(例如,非 HTTPS endpoint_url,缺少 absolute 的价格,multiplier 超出 0 < m ≤ 1.5)。消息会指明字段。
400 model_not_in_catalog model_id 不是已知的目录模型。
401 unauthorized 缺少或无效的仪表板 JWT。
404 seller_not_found 您的组织没有卖家 — 请先调用 POST /api/v1/seller/register。
404 offer_not_found 您的卖家下没有该 ID 的报价。
409 invalid_status_transition 非法状态更改 — 例如,恢复 delisted 报价(下架是最终状态)。

注意:验证探测失败并非错误响应。报价已成功创建/更新,并返回 status: "paused" 和一个 last_probe_error,解释原因 — 修复 endpoint 并将其 PATCH 回 active 以重新探测。请参阅 Sellers。

认证错误

HTTP 含义
401 缺少/无效的 Authorization header。推理密钥是 Bearer ull_...;dashboard endpoint 使用您的账户 JWT。
403 密钥有效但缺少所需的范围(例如,一个仅用于推理的密钥调用了 dashboard endpoint)。