报错与重试
34 个错误码用同一个结构:每个都写明扣没扣费、要不要重试、该改什么。报错一律扣 $0.00,只有 settlement_unknown 这 1 个例外,它自己会写明。
一个报错长什么样
所有接口都是这个结构,连没进到任何接口的请求也是。
{
"code": "insufficient_balance",
"request_id": "8199dc1a-af29-4911-80c8-437718bfa8fb",
"message": "The balance is too low",
"message_zh": "余额不足",
"charged": false,
"retry": "after_fix",
"required": "0.002",
"available": "0.0009",
"docs_url": "https://dataxapi.com/docs/errors#insufficient_balance"
}字段
前六个每次都有,其余的有内容时才出现。
每次都有
codestring固定的错误代码。程序里按它判断,不要按文字判断。request_idstring这次请求的编号,响应头 X-Request-Id 里也有。找我们时带上它。messagestring一句英文说明,取自下面这张表。message_zhstring同一句话的中文。chargedboolean | nullfalse 是没扣费。null 是不知道,只有 settlement_unknown 会这样,不能当成没扣。retrystringno 不要重试,yes 可以,once 只能再试一次,after_fix 改了再试,same_key 只能用同一个幂等键再发。有内容时才出现
retry_after_secondsinteger要等多少秒,和响应头 Retry-After 是同一个数。paramstring出问题的那个参数。problemsarray参数错在哪,逐条列出。reasonstring同一个代码下的哪一种:不存在还是私密,速率还是并发,Key 的日、月还是总额上限。requiredstring这次调用需要多少钱,美元。availablestring余额或这把 Key 的上限还剩多少。docs_urlurl这个代码在本页的链接。全部错误代码
一共 34 个。只有一个可能已经扣费,它自己会写明。
HTTP代码、含义、怎么办扣费重试
400
invalid_params参数不合法改掉 param 指出的参数,problems 里逐条写了错在哪。不扣改了再试400
request_not_served这种参数组合现在取不了去掉或换掉其中一个参数。接口页上写了哪些组合能用。不扣改了再试400
max_price_exceeded这次调用的最高价超过了你设的上限把 X-Max-Price 调高或者不带。required 是这次最多要多少。不扣改了再试400
cursor_invalid游标不存在next_cursor 要原样传回,或者从第一页重新开始。不扣不能400
cursor_mismatch游标不是用这个接口和这组参数取得的游标只能配它当初那个接口和那组参数用。不扣改了再试401
unauthorized没有带凭证,或凭证无效、已停用、已过期在 Authorization: Bearer 里带上你的 Key,并到控制台确认这把 Key 还在用。不扣不能402
insufficient_balance余额不足充值。required 和 available 是需要多少、还剩多少。不扣改了再试402
key_budget_exceeded超出这把 Key 的金额上限到控制台调高这把 Key 的上限,或者换一把 Key。reason 写明超的是日、月还是总额。不扣改了再试402
run_budget_exceeded超出这一轮任务的金额或次数上限开一轮新的任务,预算设大一些。一轮任务的预算不能追加。不扣不能403
account_suspended账户已停用请联系我们。恢复之前调用都不会成功。不扣不能403
forbidden这个凭证不能带这个选项去掉这个凭证不能带的那个请求头。不扣不能403
key_scope_denied这把 Key 不能调用这个接口到控制台把这个接口加进这把 Key 的范围,或者换一把有权限的 Key。不扣不能404
not_found对象不存在、私密或已删除不用重试。reason 写明是不存在,还是私密或已删。不扣不能404
result_not_found没有这个请求号的结果核对请求号。已经释放的调用没有结果可读。不扣不能404
run_not_found没有这个运行编号核对运行编号。不扣不能404
unknown_endpoint没有这个接口对照 API 参考核对路径。路径就是接口编号把点换成斜杠。旧路径会在 moved_to 里写明搬去了哪。不扣不能409
call_in_progress这个幂等键的调用还在执行,稍后用同一个键再取稍等一下,用同一个 Idempotency-Key 把同样的请求再发一次。不扣只能用同一个幂等键409
idempotency_conflict这个幂等键已用于另一个请求新的请求用一个新的键。不扣改了再试410
cursor_expired游标已过期,请从第一页重新开始从第一页重新开始。page.cursor_expires_at 会提前告诉你什么时候过期。不扣不能410
result_expired结果只保留 24 小时,已删除重新调一次。这是一次新的调用,照常收费。不扣不能410
run_expired这一轮任务已到期,不能再发起调用开一轮新的任务。不扣不能429
rate_limited请求过快或同时进行的调用过多有 retry_after_seconds 就等这么久;没有的话,等你自己进行中的调用结束一个。不扣能429
cost_cap_exceeded这个账户今天的额度已用完等到 Retry-After 给出的时间。不扣能429
uncharged_cost_limit这个账户今天没取到数据、也没扣费的调用太多,这类接口到明天(UTC)再调等到明天(UTC),Retry-After 给出了时间。被限的只是没取到数据、也没扣费的那类调用。不扣能500
settlement_unknown这次调用的结算状态未知,请用同一个幂等键或请求号查询不要当成没扣费。用同一个 Idempotency-Key 把同样的请求再发一次,或者按请求号查这次调用。不确定只能用同一个幂等键500
internal_error服务内部出错重试。这次占用的金额已经放回。不扣能502
upstream_failed数据来源出错重试。带同一个 Idempotency-Key,不会扣第二次。不扣能502
upstream_changed数据来源返回的结构变了稍后重试。修好之前接口可能会自动暂停,状态页会写明。不扣能502
upstream_unclear数据来源的返回无法判断,最多重试一次重试一次,还不行就停。不扣只能再试一次503
upstream_busy数据来源繁忙,请稍后重试等 retry_after_seconds 秒再试。不扣能503
capability_paused这个接口已暂停看状态页,接口恢复后再试。不扣能503
overloaded服务繁忙,请稍后重试等几秒再试。不扣能504
timeout没有在时限内取到数据,可以用同一个幂等键重试用同一个 Idempotency-Key 重试。不扣能