> ## 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.

# Get a single bet (deprecated path)

> > **Deprecated path.** This is the pre-split alias of `/fixtures/bets/{bet_id}` and keeps working unchanged — same handler, same request, same response. New integrations should use `/fixtures/bets/{bet_id}`; futures have their own surface under `/futures/*`.

Retrieve a single bet by its ID. The bet must belong to the authenticated client.



## OpenAPI

````yaml /zh/abp-api/openapi.json get /bets/{bet_id}
openapi: 3.1.0
info:
  title: ABP v2 - Automated Bet Placing API
  description: >

    Place bets across 36 bookmakers through a single API.


    ## Authentication


    All endpoints require the `x-api-key` header (except `/health`, `/ready`,
    `/status`, `/metrics`).


    **Swagger UI**: Click the **Authorize** button (lock icon) at the top right,
    enter your API key, and click **Authorize**.


    ## Two surfaces: fixtures and futures


    Selections come in two kinds and each has its own path prefix, so no
    endpoint has to guess which identifiers it was given:


    | | Fixtures | Futures (outrights) |

    |---|---|---|

    | Prefix | `/fixtures/*` | `/futures/*` |

    | Selection | `fixtureId` + `outcomeId` + `playerId` | `futureId` +
    `futureOutcomeId` + `participantId` |

    | Status | fully live | reads live; placement and order/bet reads answer
    `501` |


    Each surface **rejects the other's identifiers** with `422`. The pre-split
    unprefixed paths (`/betslip`, `/place-orders`, `/orders`, `/bets`,
    `/markets`, …) still work unchanged and are listed here as deprecated
    aliases of their `/fixtures/*` equivalents.


    `/accounts`, `/bookmakers`, `/positions` and `/pnl` name no selection and
    stay unprefixed.


    ## Quick Start


    1. **List your accounts**: `GET /accounts`

    2. **Get live odds**: `GET
    /fixtures/betslip?fixtureId=...&outcomeId=...&playerId=0`

    3. **Place an order**: `POST /fixtures/place-orders`

    4. **Track results**: `GET /fixtures/orders` or subscribe to WebSocket
    updates


    ## WebSocket


    Connect to `/ws` for real-time order, bet, and settlement updates.


    ```json

    {"type": "login", "apiKey": "your-api-key", "channels": []}

    ```


    Send an empty `channels` array to receive all updates. Available channels:
    `orders`, `bets`, `settlements`, `accounts`, `balance`, `betslip`,
    `fixtures`, `currencies`, `status`, `emergency`.


    Send `{"type": "ping"}` every 30 seconds to keep the connection alive.
  version: '2.0'
servers:
  - url: https://v2.55-tech.com
    description: Production
security:
  - apiKey: []
tags:
  - name: Orders
    description: Place, retrieve, and cancel betting orders on fixtures
  - name: Bets
    description: Query individual bets placed with bookmakers
  - name: Betslip
    description: Get live odds and metadata for fixtures
  - name: Markets
    description: Get available markets and odds types
  - name: Futures
    description: >-
      Outright markets, keyed by futureId + (futureOutcomeId, participantId).
      Reads are live; placement and order/bet reads answer 501 for now.
  - name: Accounts
    description: Manage bookmaker accounts
  - name: Bookmakers
    description: List supported bookmakers
  - name: Analytics
    description: Positions and profit/loss analytics
paths:
  /bets/{bet_id}:
    get:
      tags:
        - Bets
      summary: Get a single bet (deprecated path)
      description: >-
        > **Deprecated path.** This is the pre-split alias of
        `/fixtures/bets/{bet_id}` and keeps working unchanged — same handler,
        same request, same response. New integrations should use
        `/fixtures/bets/{bet_id}`; futures have their own surface under
        `/futures/*`.


        Retrieve a single bet by its ID. The bet must belong to the
        authenticated client.
      operationId: get_bet_by_id_legacy
      parameters:
        - name: bet_id
          in: path
          required: true
          schema:
            type: integer
          description: Bet ID
      responses:
        '200':
          description: Successfully retrieved bet
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BetResponse'
              example:
                betId: 67890
                orderId: 12345
                bookmaker: pinnacle
                betStatus: CONFIRMED
                settlementStatus: UNSETTLED
                clientName: demo
                testBet: false
                requestUuid: eb45b192-317b-42d5-9f65-af497b9fa8c1
                bookmakerBetId: '3332684214'
                placedPrice: 1.97
                placedStake: 10
                placedCurrency: USD
                placedAt: '2026-02-07T17:29:32+00:00'
                userRef: bettor1234
                account: pinnacle_main
                sentData:
                  stake: 10
                  price: 1.95
                receivedData:
                  betId: '3332684214'
                  status: accepted
                  price: 1.97
                currencyInfo:
                  currency: USD
                  currencyValue: 1
                  updatedAt: '2026-02-07T17:29:32+00:00'
        '401':
          description: Unauthorized — missing or invalid API key
        '404':
          description: Bet not found or not owned by client
        '503':
          description: Database unavailable
      deprecated: true
components:
  schemas:
    BetResponse:
      type: object
      properties:
        betId:
          type: integer
          description: Bet ID
        orderId:
          type: integer
          description: Parent order ID
        bookmaker:
          type: string
          description: Bookmaker slug
        betStatus:
          type: string
          enum:
            - PENDING
            - PLACED
            - CONFIRMED
            - REJECTED
            - CANCELLED
            - FAILED
            - VOID
          description: Bet status
        settlementStatus:
          type: string
          enum:
            - UNSETTLED
            - WON
            - LOST
            - VOID
            - HALF_WON
            - HALF_LOST
            - PUSH
            - CASHOUT
          description: Settlement status
        clientName:
          type: string
          description: Client name
        testBet:
          type: boolean
          description: Whether this is a test bet
        requestUuid:
          type: string
          description: UUID from parent order
        bookmakerBetId:
          type: string
          nullable: true
          description: Bet ID returned by the bookmaker
        betRequestId:
          type: string
          nullable: true
          description: Internal bet request tracking ID
        placedPrice:
          type: number
          nullable: true
          description: Actual odds the bet was placed at
        placedStake:
          type: number
          nullable: true
          description: Stake sent to bookmaker
        placedCurrency:
          type: string
          nullable: true
          description: Currency the bet was placed in
        placedAt:
          type: string
          nullable: true
          description: ISO 8601 placement timestamp
        declineReason:
          type: string
          nullable: true
          description: Reason if bet was declined
        userRef:
          type: string
          nullable: true
          description: User reference from parent order
        account:
          type: string
          nullable: true
          description: Account username used for this bet
        sentData:
          type: object
          nullable: true
          description: Full request payload sent to the bookmaker
        receivedData:
          type: object
          nullable: true
          description: Full response received from the bookmaker
        currencyInfo:
          type: object
          nullable: true
          description: >-
            Exchange rate snapshot for placedCurrency: { currency,
            currencyValue, updatedAt }. Null when no rate is available.
          properties:
            currency:
              type: string
            currencyValue:
              type: number
            updatedAt:
              type: string
        settledAt:
          type: string
          nullable: true
          description: ISO 8601 settlement timestamp
        settlementAmount:
          type: number
          nullable: true
          description: Settlement payout amount
        settlementReason:
          type: string
          nullable: true
          description: Reason for settlement
        oddsInfo:
          type: object
          nullable: true
          description: Odds snapshot at bet time
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication. Contact contact@55-tech.com to obtain a key.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.