> ## Documentation Index
> Fetch the complete documentation index at: https://docs.55-tech.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ABP API 概述 - 自动投注

> ABP v2 API 概述。通过单一统一API在32家博彩公司进行投注，具备智能路由、部分成交、实时跟踪和自动结算功能。

## 什么是 ABP？

**自动投注（ABP）** API 由 [55-Tech](https://55-tech.com/) 提供，让您通过单一集成在32家博彩公司进行投注。无需构建和维护各个博彩公司的连接器，ABP 处理从投注到结算的全部生命周期。

**核心能力：**

* **账户管理** — 博彩公司账户的完整CRUD操作，支持优先级选择、每账户投注限额和多币种
* **投注单获取** — 在下注前获取所有已配置博彩公司的任何赛事/结果的实时赔率和限额
* **期货支持** — 使用 `futureId` 和 `participantId` 在冠军/期货市场下注（即将推出）
* **智能订单路由** — 下达单个或批量订单；ABP 自动按赔率和限额选择最佳博彩公司
* **投注跟踪** — 从下注到确认和结算，完整审计追踪监控每一注
* **持仓和盈亏分析** — 按博彩公司、账户或用户引用分组的汇总敞口和盈亏视图

## 数据流

<Steps>
  <Step title="通过 OddsPapi v5 发现赛事和赔率">
    您的应用使用 [OddsPapi v5 API](https://docs.oddspapi.io/) 发现赛事、市场、结果和实时赔率。OddsPapi 是数据层 — ABP 是建立在其之上的执行层。两个 API 共享赛事ID和结果ID。
  </Step>

  <Step title="从 ABP 获取投注单">
    下注前，调用 `GET /betslip?fixtureId=...&outcomeId=...&playerId=...` 获取所有已配置博彩公司账户的汇总赔率和限额。对于期货市场，使用 `futureId` 替代 `fixtureId`，并添加 `participantId`。ABP 解析投注限额（账户 > 博彩公司 > 赔率）并返回每个博彩公司的有效最小/最大值。
  </Step>

  <Step title="通过 ABP 下单">
    发送 `POST /place-orders` 包含一个或多个订单。每个订单针对赛事（`fixtureId`）或期货（`futureId`）。ABP 根据价格、可用限额和账户优先级将每个订单路由到最佳博彩公司。每个博彩公司集成下注并回报确认或拒绝。
  </Step>

  <Step title="通过 WebSocket 接收实时更新">
    连接 `WS /ws` 接收订单状态变更、投注确认、结算、余额更新和系统事件的实时推送。无需轮询。
  </Step>

  <Step title="查询历史和分析">
    使用 `GET /orders`、`GET /bets` 查询订单/投注历史（支持游标分页），使用 `GET /positions`、`GET /pnl` 查看汇总敞口和盈亏分析。
  </Step>
</Steps>

## 基础URL

```
https://v2.55-tech.com
```

## 关键概念

### 订单 vs 投注

**订单**是您的下注指令。**投注**是在博彩公司实际放置的注单。使用部分成交或多博彩公司路由时，一个订单可能产生多个投注。

### 请求去重

每个订单需要唯一的 `requestUuid`（UUID格式）。ABP 使用服务端去重（30分钟TTL）防止重复下注。重复的订单会被静默跳过；如果请求中的**每个**订单都是重复的，则请求返回 `409 Conflict`。

### 订单生命周期

```
PENDING → PROCESSING → FILLED / PARTIALLY_FILLED / REJECTED / EXPIRED / CANCELLED / FAILED
```

* **PENDING** — 订单已接收并排队
* **PROCESSING** — 正在路由到博彩公司
* **FILLED** — 全部投注额已成功下注
* **PARTIALLY\_FILLED** — 部分投注额已下注，剩余已过期或无容量
* **REJECTED** — 验证失败（赔率不对、赛事无效等）
* **EXPIRED** — 订单 `expiresAt` 时间已到（默认：5秒，最长：24小时）
* **CANCELLED** — 客户端显式取消
* **FAILED** — 下注过程中出现内部错误

### 投注生命周期

```
PENDING → PLACED → CONFIRMED / REJECTED / CANCELLED / FAILED / VOID
```

* **PENDING** — 投注已创建，等待博彩公司响应
* **PLACED** — 已发送到博彩公司，等待确认
* **CONFIRMED** — 博彩公司已接受投注
* **REJECTED** — 博彩公司拒绝了投注
* **CANCELLED** — 确认前投注已取消
* **FAILED** — 下注过程中出现内部错误
* **VOID** — 博彩公司取消了投注

### 结算生命周期

```
UNSETTLED → WON / LOST / VOID / HALF_WON / HALF_LOST / PUSH / CASHOUT
```

* **UNSETTLED** — 投注进行中，等待结果
* **WON** — 全赢
* **LOST** — 全输
* **VOID** — 投注作废（退还投注额）
* **HALF\_WON** — 亚洲盘部分赢
* **HALF\_LOST** — 亚洲盘部分输
* **PUSH** — 退还投注额（平局）
* **CASHOUT** — 以协商价格提前提款

### 账户优先级

每个博彩公司账户有一个 `priority` 字段（值越高越优先）。下单时，ABP 为每个博彩公司优先选择最高优先级的活跃账户。

### 限额级联

投注限额按优先级顺序解析：**账户限额 > 博彩公司限额 > 赔率限额**。

例如，如果账户 `minStake: 10`，博彩公司默认 `minStake: 1`，赔率条目显示 `limitMin: 5`，有效最低值为 `10`（来自账户覆盖）。

### 期货（即将推出）

ABP 支持**期货**（冠军）市场以及标准的赛事市场。期货使用 `futureId` 标识冠军市场，使用 `participantId` 指定选择（例如赢得联赛/锦标赛的球队或球员）。

**与赛事订单的主要区别：**

|       | 赛事订单                                     | 期货订单                                                  |
| ----- | ---------------------------------------- | ----------------------------------------------------- |
| 标识符   | `fixtureId`                              | `futureId`                                            |
| 选择    | `outcomeId` + `playerId`                 | `outcomeId` + `playerId` + `participantId`            |
| 投注单   | `GET /betslip?fixtureId=...`             | `GET /betslip?futureId=...`                           |
| 市场键格式 | `fixtureId:bookmaker:outcomeId:playerId` | `futureId:bookmaker:outcomeId:playerId:participantId` |

**当前状态：** 数据模型和投注单基础设施已就绪。期货的订单下达和投注单获取目前返回 `501 Not Implemented`。将在即将发布的版本中启用。

### 博彩公司标识

博彩公司通过标识字符串识别（例如 `pinnacle`、`betfair-ex`、`polymarket`）。使用 `GET /bookmakers` 列出所有32家支持的博彩公司及其默认投注限额。

## 端点一览

| 类别            | 端点                                                                                    | 描述                     |
| ------------- | ------------------------------------------------------------------------------------- | ---------------------- |
| **账户**        | `GET/POST/PATCH/DELETE /accounts`                                                     | 管理博彩公司账户（凭证、余额、优先级、限额） |
| **投注单**       | `GET /betslip`                                                                        | 下注前获取实时赔率和限额（赛事和期货）    |
| **订单**        | `POST /place-orders`, `POST /cancel-orders`, `POST /cancel-all-orders`, `GET /orders` | 下单、取消和跟踪订单             |
| **投注**        | `GET /bets`, `GET /bets/{bet_id}`                                                     | 查看单个投注结果               |
| **分析**        | `GET /positions`, `GET /pnl`                                                          | 汇总敞口和盈亏                |
| **博彩公司**      | `GET /bookmakers`                                                                     | 列出所有支持的博彩公司            |
| **市场**        | `GET /markets`                                                                        | 可用市场和赔率类型              |
| **WebSocket** | `WS /ws`                                                                              | 实时更新                   |

## 支持的博彩公司

**传统体育博彩：** pinnacle, pinnacleb2b, betamapola, betcris, bookmaker.eu, cloudbet, cloudbetb2b, justbet, kaiyun, matchbook, monkeyline.vip, novig.us, 198bet, paradisewager, sharpbet, singbet, sports411.ag, 3et, 3et++

**博彩交易所：** betfair-ex, smarkets, limitless-ex

**预测市场：** polymarket, polymarket.us, kalshi, predict.fun, prophetx, sx.bet, vertex, 4casters

**Punter平台：** punter.io, punter.io++

## 可靠性

ABP 包含生产级可靠性功能：

* **熔断器** — 每博彩公司熔断器防止级联故障并自动恢复
* **指数退避重试** — 用于瞬态故障
* **紧急控制** — 在系统维护期间订单可能会被临时暂停
* **速率限制** — 每API密钥的速率限制（每客户可配置）

## 数据源

ABP 从 [OddsPapi v5](https://docs.oddspapi.io/) 获取实时赔率数据。ABP 中的赛事ID和结果ID直接对应 OddsPapi 标识符。您的应用应使用 OddsPapi 发现赛事和市场，然后使用 ABP 执行投注。

## 常见问题

<AccordionGroup>
  <Accordion title="ABP 是对冲还是直接下注？">
    ABP **直接**向博彩公司下注——它不是对冲或做市引擎。您发送订单，ABP 将其路由到最优账户、下注并跟踪至结算。数据层是 [OddsPapi v5](https://docs.oddspapi.io/)；ABP 是其上的执行层。
  </Accordion>

  <Accordion title="订单与投注有什么区别？">
    **订单**是您下注的指令。**投注**是在博彩公司实际下达的赌注。当涉及部分成交或多博彩公司路由时，一个订单可产生多个投注。详见[核心概念](/zh/abp-api/concepts#订单与投注)。
  </Accordion>

  <Accordion title="幂等性 / requestUuid 如何工作？">
    每个订单携带唯一的 `requestUuid`（UUID 格式）。ABP 在服务端去重 **30 分钟**——重复订单会被静默跳过；若请求中**每个**订单都是重复的，则返回 `409 Conflict`。详见[核心概念](/zh/abp-api/concepts#幂等性与请求去重)。
  </Accordion>

  <Accordion title="ABP 支持部分成交和多博彩公司路由吗？">
    支持。设置 `acceptPartialStake: true` 让单个订单跨多个投注成交，并传入 `bookmakers` 列表（或省略以自动选择）以分散到多个场所。ABP 强制执行加权平均价格约束，使您的有效价格保持在 `orderPrice` 或以上。详见[订单下注](/zh/abp-api/order-placement)。
  </Accordion>

  <Accordion title="支持哪些博彩公司？">
    涵盖传统体育博彩、博彩交易所、预测市场和 Punter 平台共 32 家博彩公司。各场所的能力（清扫、结算、投注单）有所不同——见[博彩公司能力矩阵](/zh/abp-api/bookmakers)。
  </Accordion>

  <Accordion title="我可以在不实际下注的情况下测试吗？">
    可以。设置 `testOrder: true` 会走完整的校验与路由流程（额度、价格检查、账户选择），但**不会**向博彩公司发送投注——这是上线前确认请求体与 ID 正确的最快方式。见[快速入门](/zh/abp-api/quickstart#步骤3下单)。
  </Accordion>

  <Accordion title="ABP 用于生产交易的可靠性如何？">
    ABP 运行每博彩公司熔断器、带退避的重试、两级紧急控制，以及带 ack/replay 的可靠 WebSocket 投递。断连后的恢复是有界的——通过 REST 对账任何 `seq` 间隙。见[可靠性与运维](/zh/abp-api/reliability)。
  </Accordion>
</AccordionGroup>

## 💬 询问 AI 助手

想用您喜欢的 AI 探索或询问关于此 API 的问题吗？

点击下方任一链接——每个链接都会在所选工具中打开完整文档包并附带预填提示：

* [询问 ChatGPT](https://chatgpt.com/?prompt=Read+from+https%3A%2F%2Fdocs.55-tech.com%2Fllms-full.txt+and+help+me+with+this+API.)
* [询问 Claude](https://claude.ai/?prompt=Please+read+https%3A%2F%2Fdocs.55-tech.com%2Fllms-full.txt+and+help+me+use+this+API.)
* [询问 Perplexity](https://www.perplexity.ai/search?q=Read+from+https%3A%2F%2Fdocs.55-tech.com%2Fllms-full.txt)
* [询问 Gemini](https://gemini.google.com/app?query=Read+from+https%3A%2F%2Fdocs.55-tech.com%2Fllms-full.txt+and+help+me+use+this+API.)

## 下一步

<Columns cols={2}>
  <Card title="身份验证" icon="key" href="/zh/abp-api/authentication">
    设置您的API密钥。
  </Card>

  <Card title="快速入门" icon="rocket" href="/zh/abp-api/quickstart">
    5步完成您的首次投注。
  </Card>
</Columns>
