配额

速率限制与配额

限流按密钥摘要与 IP 双维度全局计数。www 与 api 两个入口主机合计计数,不会各算一份。

60/分钟密钥维度每分钟请求数
10 000/天密钥维度每日请求数
600/分钟IP 维度每分钟请求数
响应头 含义
RateLimit-Scope本次计数维度(apikey / ip)
RateLimit-Limit窗口内允许的请求数
RateLimit-Window-Seconds窗口长度(秒)
RateLimit-Retry-After被限流时建议的等待秒数
超出配额

返回 429 rate_limited,响应体带 retry_after 秒数。请以指数退避重试,不要在客户端固定间隔猛轮询。实时用量可调 /api/v1/usage。

分页

cursor-page/1 分页契约

所有列表端点(orders / invoices / submissions)使用同一种分页结构。快照时间戳随响应返回,保证翻页期间数据一致。

# 第一页
curl https://api.quickfindapp.com/api/v1/orders?limit=50 \
  -H "Authorization: Bearer qf_live_xxxxxxxx"

# 响应(节选)
{
  "ok": true,
  "contract": "cursor-page/1",
  "resource": "orders",
  "limit": 50,
  "count": 50,
  "has_more": true,
  "next_cursor": "eyJ…",
  "snapshot_at": "2026-10-16T09:00:00.000Z",
  "orders": [ … ]
}
字段 含义
limit本次生效的每页条数(默认 50、上限 200)
count本页实际返回条数
has_more是否还有下一页
next_cursor下一页游标;末页为 null
snapshot_at快照时间,同一游标序列内数据一致
翻页守则

has_more 为 true 时,把 next_cursor 原样作为 cursor 参数请求下一页;next_cursor 为 null 即末页。游标是不透明字符串,勿解析或拼接。

可靠性

幂等写入

所有 POST 请求建议携带 Idempotency-Key 头。网络超时后重试,使用同一个 Key 不会产生重复副作用。

场景 结果
同一 Key + 同一请求体,首次请求正常执行并记录响应
同一 Key + 同一请求体,重试直接回放首次响应(不重复执行)
同一 Key + 不同请求体409 idempotency_conflict
同一 Key,首次请求仍在处理409 idempotency_in_progress,稍后重试
未携带 Idempotency-Key响应带 X-QF-Idempotency: not_supplied,仍可正常执行

Key 建议使用业务自然键(如你的订单号 + 操作类型),长度上限 200 字符;同一 Key 的处理结果保留有限时间,超时后按新请求处理。

curl -X POST https://api.quickfindapp.com/api/v1/webhooks \
  -H "Authorization: Bearer qf_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: my-app-wh-0001" \
  -d '{"url":"https://example.com/hook","events":["order.paid"]}'