如何用 API 获取翻前策略?
调用 POST /v1/gto/preflop,提交 Hero 的两张牌、Hero 位置以及 Hero 行动前的所有翻前动作。Pokerai API 会推导局面,并返回这手牌的 JSON 策略分布。
hole_cards、positions.hero 和完整的 preflop_actions 序列,并按需选择 preflop_version。把 strategy 中每一项读作频率,而不是推荐动作。核心事实
| 端点 | POST /v1/gto/preflop |
|---|---|
| 必填输入 | hole_cards、positions.hero 和 preflop_actions |
| 输出 | 推导出的 situation、混合 strategy[] 和当前 quota 用量 |
| 配额 | 每次调用扣 1 次通用预解查询,不消耗实时 solve 配额 |
| 适用用途 | 训练、学习、教学、手牌复盘与研究——绝不能用于真钱 RTA |
构造翻前请求
行动线必须明确且有序:从盲注开始,包含 Hero 之前的每次 fold、call 和 raise,并在 Hero 行动前停止。不要把 Hero 放进 preflop_actions。
| 字段 | 如何填写 |
|---|---|
hole_cards | 两张牌组成的无分隔字符串,例如 "AhKh"。 |
positions.hero | 当前 6-max 位置集中的 Hero 位置:SB、BB、UTG、MP、CO 或 BTN。 |
preflop_actions | Hero 之前的完整行动序列。每项包含 position 和 action;非 fold 动作还要带本次新投入的 BB 数 amount,不是累计总额。 |
preflop_version | 可选的策略图表版本 ID。省略则使用平台默认值,或传入 GET /v1/gto/preflop/versions 返回的 ID。 |
最小 curl 请求
curl -s https://pokerai.bet/v1/gto/preflop \
-H "Authorization: Bearer $POKERAI_API_KEY" -H "Content-Type: application/json" \
-d '{"hole_cards":"AhKh","positions":{"hero":"MP"},"preflop_version":"6max_RC_100bb_200NL",
"preflop_actions":[{"position":"SB","action":"small blind","amount":0.5},
{"position":"BB","action":"big blind","amount":1},
{"position":"UTG","action":"raise","amount":3}]}'
读取真实响应
这份已捕获响应与上面的请求一致:Hero 在 MP 持有 AhKh,面对 UTG open。situation 由行动线推导,quota 显示这把 Key 的月度用量。
{"hole_cards": "AhKh", "situation": "Raise", "strategy": [{"action": "raise", "frequency": 1, "amount_bb": 9, "sizing_pot": 0.8}], "quota": {"used": 7, "limit": 100}}
如何理解 mixed frequency
每个 frequency 都是 0 到 1 的概率,同一手牌的行动频率通常合计约为 1。有些牌是纯策略,如上面的响应;另一些牌是真正的混合策略。
例如,一份已捕获响应中,MP 的 9h9s 面对 UTG 加注到 2.5BB 时,fold 为 0.254、call 为 0.106、raise 为 0.64,也就是 25.4% fold、10.6% call、64% raise。API 只给出分布,不会承诺或替你选择推荐动作。
amount_bb 表示什么
对响应中的 raise,amount_bb 表示绝对的“加注到多少个大盲”。它不是请求行动历史里表示本次新增投入的 amount。
| Hero 前的加注次数 | 推导局面 | amount_bb |
|---|---|---|
| 0 | Open | 3 |
| 1 | 3-bet | 9 |
| 2 | 4-bet | 25 |
| 3 次或更多 | 5-bet+ | 100,并带 allin: true |
安全选择 preflop_version
可选的 preflop_version 用来选择翻前策略图表;同一局面在不同版本中的频率可能不同。示例使用 6max_RC_100bb_200NL;省略该字段则使用平台默认版本。
请把 GET /v1/gto/preflop/versions 当作权威发现端点。使用它返回的 ID,不要假设当前 ID、筹码深度或牌局格式将永久不变。
配额与重试
一次翻前查询消耗 1 次通用预解配额。响应中的 quota.used 和 quota.limit 是这把 API Key 当前的月度计数;也可以在控制台查看。
配额用尽后不要立即重试。等待月度重置或调整可用配额;仅对 API 文档标明的瞬时故障使用重试逻辑。
常见错误
| HTTP | 错误 | 原因与修复 |
|---|---|---|
| 400 | invalid_hole_cards | 在 hole_cards 中提交恰好两张有效牌。 |
| 400 | invalid_positions / invalid_actions | 使用文档支持的 Hero 位置,并提交从盲注开始的完整合法行动序列。 |
| 400 | unsupported_preflop_version | 重新请求 GET /v1/gto/preflop/versions,并传入其中一个返回 ID。 |
| 401 | missing_api_key / invalid_api_key | 在 Authorization: Bearer 请求头中发送有效 API Key。 |
| 404 | no_solution | 该局面没有预解数据;应核对或更换局面,不要原样重试。 |
| 429 | quota_exceeded | 月度通用配额已经用尽;立即重试不会解决问题。 |
何时使用,何时不要使用
适合在陪练、学习工具、教学流程、手牌复盘队列、研究和离线 agent 分析中查询翻前策略。把返回频率与版本和输入局面一起保存,让复盘结果可复现。
不要把 Pokerai API 用于真钱牌桌的实时辅助,也不要把混合输出包装成某个动作必然正确或被推荐。条款禁止在真实资金牌桌上提供实时辅助。
不要把 Pokerai API 用于真钱牌桌的实时辅助,也不要把混合输出包装成某个动作必然正确或被推荐。条款禁止真钱 RTA。
Reference、SDK 与后续步骤
- 在线 API reference — POST /v1/gto/preflop 的请求和响应 schema
- 开发者文档 — 鉴权、完整翻前行为、配额与错误详情
- Poker GTO API quickstart — 完成第一次带鉴权的 API 请求
- 中文 OpenAPI snapshot — 供客户端和工具读取的机器契约
- Python SDK — 从公开契约生成的类型化 Python 客户端
- JavaScript / TypeScript SDK — 面向 JavaScript 和 TypeScript 应用的类型化客户端
- MCP server — 供兼容 AI agent 调用的 Pokerai API 工具
- no-RTA 政策 — 真钱牌局的可接受使用边界