如何处理 Pokerai API 错误与重试?
先读取 HTTP 状态和当前端点契约:修正已文档化的 400 与 401,在 429 区分配额耗尽和 solver 容量,并且仅对适用的瞬态 5xx 重试;不要假设固定重试次数或 SLA。
Error schema 定义 error,并且可能含有 message;不要推断未公开的错误码词表,也不要假设每个端点都返回相同字段。核心事实
| 错误形状 | 公开共享 Error schema 含有 error,并且可能含有 message。 |
|---|---|
| 400 / 401 | 适用端点中,400 表示输入无效或缺少字段;401 表示缺少或无效 API key。 |
| 429 | 适用端点声明月度配额耗尽;solver 调度在所有 solver host 忙碌时也可能返回 { "status": "busy" }。 |
| 5xx | 部分适用端点声明临时不可用的后端(502)或可重试的 upstream_unavailable 响应(503)。 |
| 配额 | 公开配额计数器按月计算;OpenAPI 配额响应说明其在每月 1 日重置。请查看 dashboard 和 配额文档了解当前账号状态。 |
| 用途边界 | 仅限训练、教学、手牌复盘、学习和研究;禁止真实资金 RTA。 |
最小请求与脱敏错误响应
下例刻意省略凭据。它演示公开鉴权边界,不会暴露 key 或请求头。
curl -i -s https://pokerai.bet/v1/gto/preflop \
-H "Content-Type: application/json" \
-d '{"hole_cards":"AhKh","positions":{"hero":"UTG"},"preflop_actions":[{"position":"SB","action":"small blind","amount":0.5},{"position":"BB","action":"big blind","amount":1}]}'
OpenAPI Error 示例支持下面这个缺少 key 时的脱敏响应形状:
HTTP 401
{ "error": "missing_api_key" }
诊断错误时,绝不要记录 API key、Authorization 请求头或未脱敏的客户请求 body。
安全重试与退避原则
仅在按当前端点契约分类响应后重试。对于适用的瞬态 502 或可重试 503,使用由你的应用控制、带 jitter 的有界指数退避。对于返回 status: busy 的 solver 调度 429,把它当作容量状态,稍后重试,而不是假定它是配额耗尽。
不要承诺或硬编码重试次数、延迟、SLA、幂等性行为,或超出当前公开契约的错误码含义。重新提交可能消耗配额或改变工作流状态的请求前,应由你的应用自行判断重复执行是否安全。
何时不应重试
不要原样重试适用的 400:将 payload 与当前请求 schema 对比,然后修正无效或缺失的输入。修正支持的 API-key 请求头或 key 前,也不要重试适用的 401。
不要把每个 429 都当成可重试。若响应被文档化为配额耗尽,请查看 dashboard、套餐和月度重置边界。status: busy 这类响应形状属于已文档化的 solver 调度流程,而非共享错误 schema。
配额与 solver 状态
Pokerai API 分开计量预求解查询和实时求解。公开配额响应说明月度计数器会在每月 1 日重置;请使用 dashboard 与定价页查询当前账号限制,不要在 client 中硬编码额度。
Solver status、spot_status 和 node_status 是与共享 Error schema 分离的工作流字段。请遵循已文档化的 solver、tree 和 node contract,不要把这些状态翻译为完成时间或计费保证。
禁止真实资金 RTA
Pokerai API 仅用于训练、教学、手牌复盘、学习和研究。禁止在真实资金牌桌上提供实时辅助。错误处理和重试逻辑不得用于自动化实时牌桌建议。
已文档化状态指南
这些说明仅适用于当前 OpenAPI 响应列表声明了它们的端点。
| HTTP | 公开契约 | 安全的下一步 |
|---|---|---|
400 | 输入无效或缺少字段。 | 修正请求 schema 不匹配;不要原样重试。 |
401 | 缺少或无效 API key。 | 修正鉴权;不要使用同一个缺失或无效凭据重试。 |
429 | 适用端点中的月度配额耗尽;solver 调度也可能报告 status: busy。 | 对于配额,请查看 dashboard 与重置边界。对于已文档化的 busy,使用谨慎退避,不承诺固定重试次数。 |
502 / 503 | 适用端点声明临时不可用的后端或可重试的 upstream_unavailable。 | 使用由应用控制、带 jitter 的有界指数退避;再次查看当前端点契约。 |
SDK、文档与 reference
- 错误处理文档 — 公开错误形状与 solver 状态区别
- 配额文档 — 月度账号计数器说明
- API Reference — 端点级请求和响应 contract
- OpenAPI snapshot — 机器可读的中文公开 contract
- Python SDK 指南 — 官方 client 设置
- JavaScript SDK 指南 — 官方 client 设置
- MCP 指南 — 含人工审核的 agent 集成