问答
数据接口调用失败或者没搜到结果,要扣钱吗?
简短回答
在 okdata 上,失败的调用一律不扣费:参数错误、内容已删除、频率限制、平台故障,都不花钱,为这次调用冻结的金额会立刻回到余额。成功但没搜到东西的搜索不一样,它是一次完成的调用,照常计费,小红书搜索是 $0.02。新关键词先只查一页,再决定要不要翻页。
用过积分制工具的团队大概都有这种体验:任务跑到一半失败了,积分照样扣掉。开发者为这个专门提过 issue,比如希望搜索请求失败时不要损失积分。下面把哪些扣费、哪些不扣费逐条列清楚。
逐种情况
| 发生了什么 | 返回码 | 扣费 | 要不要重试 |
|---|---|---|---|
| key 错误或缺失 | unauthorized |
否 | 改好再试 |
| 参数不对 | invalid_params |
否 | 改好再试 |
| 余额不够这次调用 | insufficient_balance |
否 | 充值后再试 |
| 内容已删除、账号不公开 | not_found |
否 | 不要重试 |
| 请求太多 | rate_limited |
否 | 等 retry_after_seconds 后重试 |
| 平台或数据源故障 | upstream_failed、upstream_busy |
否 | 退避后重试 |
| 没有及时返回 | timeout |
暂时未知(null) |
用同一个 Idempotency-Key 重试 |
| 搜索没有结果 | ok,items 为空 |
是,按次价格 | 换关键词 |
背后的机制:调用发出前,先从余额里冻结这次最多可能花的钱。成功按实际价格扣,任何失败都把冻结的钱全部释放。这就是退款,当场完成。
真正会花钱的两种情况
- 结果为空。 一次什么都没搜到的小红书笔记搜索,仍然是完成的搜索:$0.02。新关键词先查一页,再决定翻不翻。
- 按条计费的搜索没有匹配。 公众号搜索按返回的账号数计费,至少按 1 个算:没有匹配也是 $0.058。
相反,查一条已删除的抖音视频返回 not_found,不收费。
留一份清楚的记录
import os, requests
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
body = requests.get("https://api.okdata.online/v1/douyin/videos/get", headers=H,
params={"url": "https://v.douyin.com/xxxxxx/"}, timeout=60).json()
if body["code"] == "ok":
print("扣费", body["meta"]["billing"]["amount"], "余额", body["meta"]["billing"]["balance_after"])
else:
print(body["code"], "charged:", body["charged"], "request_id:", body["request_id"])
遇到超时,用 GET https://api.okdata.online/v1/calls/{request_id} 查这次调用最后怎么结算的。
余额的退款
失败的调用根本不会从余额里扣走,所以没有什么要申请退回的。未使用余额的退款属于服务条款的内容,条款目前还是草稿;如果这一点影响你的采购决定,请发邮件问 hello@okdata.online。所有返回码的说明见错误码,价格见价格页。
更新于