错误与限制
Partner API 返回的每个错误代码,以及它执行的每项限制。
每种失败都有相同的形式。分支依据 error.error_code;记录 描述 供人阅读;切勿根据其文本进行匹配。 error.error_attributes 携带代码所定义的细节,并且是 null 其余部分则为。
{
"description": "story_document:该链接提供的是 \"text/html\",而此输入不接受。请直接指向文件本身。",
"code": "url_type_not_allowed",
"error": {
"id": null,
"error_code": "url_type_not_allowed",
"error_attributes": null,
"user_readable_message": null,
"locale": "en"
}
}代码 重复 error.error_code 适用于较旧客户端;请阅读 error.error_code.
错误代码
| HTTP | 错误代码 | 含义 | 该怎么做 |
|---|---|---|---|
| 400 | invalid_request | 请求体或输入值有误;描述会指出具体的输入 | 修正后重新发送。切勿在未更改的情况下重试。 |
| 400 | url_not_fetchable | 链接无法获取,违反了某条链接规则,或者提供了空文件 | 将其对照检查 通过 URL 传递文件 |
| 400 | url_type_not_allowed | 该链接提供的内容类型不是此输入接受的类型,或者字节内容与其声明的类型不符 | 直接提供文件本身,并使用其真实类型 |
| 400 | url_too_large | 文件超过了该输入的 max_bytes,或者超过了本次运行剩余的字节预算 | 发送更小的文件 |
| 401 | unauthorized | 密钥缺失、格式错误、已撤销或已过期 | 停止并通知相关人员。重试无济于事。 |
| 403 | api_key_credit_limit_reached | 该密钥已达到其某项额度上限; error_attributes.period 说明的是哪一项 | 请让管理员在 Studio 中提高该密钥的限制,或等待日限额或月限额重置 |
| 403 | credits_exhausted | 该组织已没有剩余额度 | 为组织充值 |
| 403 | access_denied | org_id 不是该密钥所属的组织,或该密钥缺少相应范围,或者它可能无权运行此工作流 | 请在 Studio 中检查该密钥的作用域和工作流允许列表 |
| 404 | entity_not_found | 您的组织中不存在这样的工作流、项目、运行或 webhook 端点——或者是某个工作流的运行超出了该密钥的允许列表 | 检查该 ID |
| 409 | idempotency_conflict | 相同的 idempotency_key 携带了不同的请求体到达 | 为新任务使用新密钥 |
| 429 | too_many_requests | 已达到读取限制 | 等待 Retry-After,然后重新发送 |
| 500 | internal_error | 我们的 | 采用退避重试;如果问题仍然存在,请把 x-morphic-trace-id |
限制
| 限制项 | 默认值 | 备注 |
|---|---|---|
| 额度 | 该密钥自身的限制 | 每个密钥共有的总额度,以及可选的日限额和月限额——参见 额度限制 |
| 单次运行的读取次数 | 每个密钥每分钟 30 次 | 每次运行每分钟一次读取就足够了; wait=45 成本更低 |
| 所有运行的读取次数 | 每个密钥每分钟 1,200 次 | 足以同时跟踪数百个运行 |
| 每次运行的链接数 | 10 | 汇总到所有文件输入中 |
| 每次运行的字节数 | 500 MB | 汇总到所有链接中 |
| 每个文件的字节数 | 该输入的 max_bytes | 文档最高 100 MB;媒体上限按每个输入计算 |
| 运行时长 | 24 小时 | 未在……之前完成的运行 expires_at 变为 已过期 |
| Webhook 端点 | 每个组织 10 个 | 添加另一个之前先删除一个 |
启动运行从不受速率限制:密钥的额度限制会限制重试循环可消耗的量,而 idempotency_key 会把重试变成重放。对于我们已讨论过的流量规模,可按需提高读取限制。
计费
通过 API 启动的运行所消耗的额度会记到拥有该密钥的组织名下,并计入发起它的密钥。管理员可在以下位置查看支出: 计费与用量 → 额度活动 在 Studio 中;每个密钥的限制则在 API 密钥 页面中。
即使有人进入 Studio 聊天并接管它,运行仍会继续计入最初发起它的密钥,因此该密钥剩余的预算就是整次运行的预算。
在开始前被拒绝的运行——例如链接有误,或密钥/组织没有额度——不会产生费用。中途失败的运行则已消耗其已完成步骤所对应的费用; credits_used 运行上的该字段会说明具体消耗了多少。