跳转到内容
API 指南

错误

以 Markdown 查看 已更新

每个端点都以相同方式失败:一个 HTTP 状态码和一个 JSON 封装。

JSON
{
  "error": {
    "type": "invalid_request",
    "code": "invalid_input",
    "message": "duration must be one of 5, 10.",
    "param": "duration",
    "details": [ { "param": "duration", "message": "duration must be one of 5, 10." } ],
    "request_id": null,
    "doc_url": "https://doitong.com/developers/docs/errors#invalid_input"
  }
}
字段 含义
type 错误的大致类别。根据此字段决定如何处理。
code 确切原因,稳定且机器可读。每个代码在下方都有对应章节;doc_url 链接到该章节。
message 面向人类的说明,可安全地记录或展示给开发者。
param 出错的输入参数或请求头(如果存在)。
details 对于输入错误,列出发现的每个问题:[{ "param", "message" }]。
request_id 与之相关的请求(如果存在)。

返回错误的调用不会收取任何费用。请求在被接受后发生失败时,会保留 failed 状态,在请求对象上携带 error: { "type", "code", "message" },并自动退款。

类型

类型 HTTP 状态码 处理方式
invalid_request 400、413 或 422 修正请求。重试相同调用仍会失败。
authentication_error 401 在 Authorization: Bearer <key> 中发送有效密钥。
permission_error 403 使用具有所需作用域的密钥。
not_found 404 检查模型 id 或请求 id。
insufficient_credits 402 为 API 余额充值(错误中的 top_up_url)。
budget_exceeded 402 该密钥自己的预算已用尽。最终处理方式:请密钥所有者提高预算。
conflict 409 资源当前状态不允许此调用。
rate_limited 429 等待 Retry-After 秒后重试。
upstream_error 502 模型后端失败。可以使用相同的 Idempotency-Key 安全重试:请求会再次运行,且不会收费。
service_unavailable 503 API 已暂停或某个依赖服务不可用。稍后重试。
internal_error 500 我们的程序错误。请重试;如果仍然存在,请联系支持并提供时间和 request_id。

代码

invalid_request

通用格式错误的请求(400)。

invalid_json

请求正文不是有效的 JSON(400)。

invalid_body

请求正文是有效 JSON,但不是对象;模型输入必须是 JSON 对象(400)。

body_too_large

请求正文大于 16 MB(413)。请上传大文件并改为传入其 URL(参见 文件)。

invalid_parameter

查询参数的值错误,例如 limit 不在 1 到 100 之间、wait 不是数字、未知的 status 或 category,或 storage 不是 permanent / temporary(400)。param 会指出该参数。

invalid_category

GET /openapi.json?category= 指定了不存在的类别(400)。GET https://api.doitong.com/v1/categories 会列出类别。

invalid_cursor

列表调用中的 cursor 不属于此列表(400)。请在不带 cursor 的情况下重新开始。

invalid_idempotency_key

Idempotency-Key 请求头为空或超过 255 个字符(400)。

invalid_arguments

MCP 工具调用缺少参数或参数格式错误(仅限 MCP)。param 会指出该参数。

invalid_input

模型输入未通过验证(422):未知参数(消息会建议最接近的有效名称)、缺少必需参数、类型错误、值不在允许的列表或范围内,或同时提供了规范名称和原生名称但值不同。param 是第一个出错的参数,details 列出所有出错参数。不收费。

unsupported_file

文件类型不受支持(422),例如上传了扩展名不受支持的文件,或 content_type 与扩展名不匹配。

invalid_webhook_url

webhook_url 不是公开的 https:// URL(422)。拒绝私有地址、本地地址和普通的 http:// 地址。

missing_api_key

该端点需要 API 密钥,但未发送密钥(401)。

invalid_api_key

密钥未知、已撤销或已过期(401)。

insufficient_scope

密钥缺少此调用所需的作用域(403),例如运行需要 models:run,读取请求和余额需要 models:read。参见 身份验证。

account_disabled

账户已关闭或暂停(403)。其密钥不再有效。

not_found

路径不存在(404)。

model_not_found

不存在具有此 id 的公开模型(404)。使用 GET https://api.doitong.com/v1/models 列出模型。

request_not_found

你的账户中不存在具有此 id 的请求(404)。其他账户的请求永远不可见。

insufficient_credits

账户的 API 余额(API 积分,1,000 API 积分 = $1——不是 Doitong 应用的积分)不足以支付此次调用的价格(402)。响应会在收费前发送。错误中包含 top_up_url;请在 https://doitong.com/developers/dashboard#balance 充值后重试。

JSON
{ "error": { "type": "insufficient_credits", "code": "insufficient_credits",
             "message": "This request costs 560 API credits ($0.56); the API balance is 120 API credits ($0.12). Top up at https://doitong.com/developers/dashboard#balance",
             "top_up_url": "https://doitong.com/developers/dashboard#balance", "doc_url": "https://doitong.com/developers/docs/errors#insufficient_credits" } }

budget_exceeded

此次调用会超出 API 密钥自己的 API 积分预算(402)。预算由密钥所有者设置;在所有者提高预算前,重试没有帮助。

conflict

调用与资源的当前状态冲突(409)。

idempotency_mismatch

Idempotency-Key 已用于不同的请求正文(409)。新操作请使用新密钥。

idempotency_in_progress

具有相同 Idempotency-Key 的请求正在创建(409)。稍后重试以获取该请求。

request_active

请求仍处于 queued 或 running 状态,因此还没有可删除的文件(409)。请求完成后再删除文件。

not_cancelable

请求已经是 succeeded 或 failed,无法取消(409)。

rate_limited

密钥在当前时间窗口内发送了过多请求(429)。参见 X-RateLimit-* 和 Retry-After 请求头。

too_many_inflight

账户已有 10 个处于 queued 或 running 状态的请求(429)。其中一个完成后再启动下一个。

upstream_error

模型后端拒绝或未能处理请求(运行时为 502,或请求以此代码变为 failed)。API 积分会退款。如果后端本身拒绝了输入,调用会返回带有相应消息的 422 invalid_input。

upstream_lost

模型后端不再识别该请求,因此永远不会有结果返回。请求会以此代码结束为 failed(类型为 upstream_error),并获得退款。请重新运行。

timeout

请求运行时间超过限制(图像 15 分钟,视频 60 分钟,其他情况 30 分钟)后被停止。请求会以此代码结束为 failed,并获得退款。

service_unavailable

API 暂时暂停,或文件上传等依赖服务不可用(503)。稍后重试。

internal_error

我们这边发生错误(500)。请重试;如果仍然存在,请联系支持。

charge_failed

由于内部问题,无法向账户收费(500)。请求标记为 failed;未扣除任何费用。请重试。

pricing_unavailable

模型价格尚未配置,因此目前无法报价或运行(500)。