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

# Get an order

> One order by its `order_id`, with its market. Use it when you already hold the id from [Place an order](/predictions/reference/orders/place-an-order) or from [List orders](/predictions/reference/orders/list-orders) and want the current state of that one order: its `status`, how many contracts filled, the average fill price, the fill cost and the fees.

An executed, filled sell also carries `original_buy`, the buy it closed. While the order is queued, or after it was refused before being recorded, the answer is the minimal [PendingOrder](/predictions/types/pending-order) instead of a `404`. This route takes the order id only; if you never received the `order_id` (for example after a timeout), poll [List orders](/predictions/reference/orders/list-orders) with `?request_id=` instead. Poll until `status` is `executed` or `cancelled`.

An order that belongs to another account is a `404`, the same as an id that does not exist.



## OpenAPI

````yaml /predictions/openapi.json get /orders/{id}
openapi: 3.1.0
info:
  title: Splash Predictions API
  version: 1.0.0
  description: >-
    Splash prediction markets: leagues, games, game lines, futures and player
    props, and the signed routes to place orders, read your orders, positions
    and transactions, and read your account's fee settings and cash balance. The
    market endpoints need no authentication; the order, position, account and
    balance endpoints are [signed with an API key](/predictions/authentication).
servers:
  - url: https://api.splashsports.com/predictions-service/api
    description: Production
security: []
tags:
  - name: Discover
    description: The home feed.
  - name: Sub-categories
    description: Leagues, their availability and their tabs.
  - name: Markets
    description: Market group listings and single groups.
  - name: Events
    description: One game's markets, shaped for the game page.
  - name: Orders
    description: Place orders and read them. Signed requests.
  - name: Positions
    description: Read your positions. Signed requests.
  - name: Activity
    description: 'Your transaction history: fills and settlement payouts. Signed requests.'
  - name: Account
    description: Your fee settings, maximum trade and cash balance. Signed requests.
paths:
  /orders/{id}:
    get:
      tags:
        - Orders
      summary: Get an order
      description: >-
        One order by its `order_id`, with its market. Use it when you already
        hold the id from [Place an
        order](/predictions/reference/orders/place-an-order) or from [List
        orders](/predictions/reference/orders/list-orders) and want the current
        state of that one order: its `status`, how many contracts filled, the
        average fill price, the fill cost and the fees.


        An executed, filled sell also carries `original_buy`, the buy it closed.
        While the order is queued, or after it was refused before being
        recorded, the answer is the minimal
        [PendingOrder](/predictions/types/pending-order) instead of a `404`.
        This route takes the order id only; if you never received the `order_id`
        (for example after a timeout), poll [List
        orders](/predictions/reference/orders/list-orders) with `?request_id=`
        instead. Poll until `status` is `executed` or `cancelled`.


        An order that belongs to another account is a `404`, the same as an id
        that does not exist.
      operationId: getOrder
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
          description: >-
            The `order_id` returned when you placed the order (prefix `ord_`).
            Another account's order is a `404`.
          example: ord_6af0d056c50d27e8a6b19f34d0e8c3a1
      responses:
        '200':
          description: >-
            The order with its market. While the order is not yet recorded, it
            comes back as a [PendingOrder](/predictions/types/pending-order),
            without `included`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResponse'
              examples:
                An executed sell, with original_buy:
                  summary: An executed sell, with original_buy
                  value:
                    status: success
                    order:
                      id: ord_6af0d056c50d27e8a6b19f34d0e8c3a1
                      side: 'yes'
                      yes_price: 0.665
                      no_price: 0.335
                      quantity: 10
                      status: executed
                      fill_cost: 0
                      updated_at: 1794166871236
                      created_at: 1794166870000
                      executed_at: 1794166871236
                      remaining_quantity: 0
                      fill_quantity: 10
                      fees: 0.1
                      action: sell
                      splash_action: sell
                      proceeds: 6.65
                      splash_side: 'yes'
                      trade_price: 0.655
                      proceeds_minus_fees: 6.55
                      fill_cost_plus_fees: 0
                      request_id: c47b19e2-0f6d-4b8a-a3e5-71d9f2c08a56
                      time_in_force: FOK
                      realized_pnl: 0.58
                      market_id: pm_6ae1e3c09e1d4c7a2b5f80e3d6a9c412
                      market:
                        id: pm_6ae1e3c09e1d4c7a2b5f80e3d6a9c412
                        provider_ticker: aec-nfl-kc-buf-2026-11-08
                        title: Kansas City Chiefs to win the game?
                        sub_category: nfl
                        type: moneyline
                        event_id: 4b1e9c2a-7d3f-4e5a-8b6c-9d0e1f2a3b4c
                        event_start: 1794160800000
                        moneyline_type: two_way
                        team_id: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
                        yes_team_id: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
                        no_team_id: 768c92aa-75ff-4a43-bcc0-f2fe5c1f0a3e
                        price_yes:
                          american: '-144'
                          decimal: 1.69x
                          percentage: 59%
                          price: $0.59
                          numeric_price: 0.59
                        price_no:
                          american: '+138'
                          decimal: 2.38x
                          percentage: 42%
                          price: $0.42
                          numeric_price: 0.42
                        volume: 184532.17
                        liquidity: 9266.25
                        yes_liquidity: 5378.8
                        no_liquidity: 4334.95
                        last_price_yes: 0.585
                        last_price_no: 0.415
                        status: active
                        updated_at: 1793977442118
                        rules: >-
                          This market resolves to "Yes" if the Kansas City
                          Chiefs win their game against the Buffalo Bills
                          scheduled for November 8, 2026. It resolves to "No" if
                          the Buffalo Bills win. If the game ends in a tie, is
                          canceled, or is postponed past November 15, 2026, the
                          market resolves 50-50.
                        market_group_id: pmgm_6ae1e3c0a3f19c0d7e2b4c58e61f9d02
                      market_title: KC @ BUF • Chiefs to win
                      original_buy:
                        order_ids:
                          - ord_6aedec658f3a61c2d94e07b5a1c6e2d9
                        contracts: 10
                        avg_price: 0.585
                        avg_price_with_fees: 0.597
                        cost: 5.85
                        cost_plus_fees: 5.97
                        placed_at: 1793977445000
                    included:
                      events:
                        - id: 4b1e9c2a-7d3f-4e5a-8b6c-9d0e1f2a3b4c
                          name: Kansas City Chiefs at Buffalo Bills
                          league: nfl
                          start_date: 1794160800000
                          status: SCHEDULED
                          home:
                            id: 768c92aa-75ff-4a43-bcc0-f2fe5c1f0a3e
                            alias: BUF
                            points: 0
                            record:
                              wins: 6
                              losses: 2
                          away:
                            id: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
                            alias: KC
                            points: 0
                            record:
                              wins: 7
                              losses: 1
                          state:
                            sport: football
                            league: nfl
                            clock: '15:00'
                            quarter: 1
                            phase: pregame
                            weather:
                              condition: Partly Cloudy
                              humidity: 62
                              temp: 41
                              wind_direction: WNW
                              wind_speed: 12
                            weather_icon: cloud
                      teams:
                        - id: 768c92aa-75ff-4a43-bcc0-f2fe5c1f0a3e
                          name: Bills
                          league: nfl
                          alias: BUF
                          market: Buffalo
                          primary_color: '#00338D'
                          secondary_color: '#C60C30'
                          icon_url: >-
                            https://res.cloudinary.com/splashsports/image/upload/v1791500098/static/icons/teams/nfl/buf.png
                          official_logo: false
                        - id: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
                          name: Chiefs
                          league: nfl
                          alias: KC
                          market: Kansas City
                          primary_color: '#E31837'
                          secondary_color: '#FFB81C'
                          icon_url: >-
                            https://res.cloudinary.com/splashsports/image/upload/v1791500102/static/icons/teams/nfl/kc.png
                          official_logo: false
                      entities: []
                      sub_categories:
                        - id: nfl
                          name: NFL
                          icon_url: >-
                            https://res.cloudinary.com/splashsports/image/upload/v1786629706/pro_football.png
                  description: >-
                    The sell realized $0.58: $6.55 of proceeds after fees, less
                    the $5.97 the 10 contracts cost with fees.
                An executed NO buy:
                  summary: An executed NO buy
                  value:
                    status: success
                    order:
                      id: ord_6aedecf62b7e94d0c13f58a6e2d7b0c4
                      side: 'yes'
                      yes_price: 0.535
                      no_price: 0.465
                      quantity: 20
                      status: executed
                      fill_cost: 9.3
                      updated_at: 1793977591087
                      created_at: 1793977590000
                      executed_at: 1793977591087
                      remaining_quantity: 0
                      fill_quantity: 20
                      fees: 0.19
                      action: sell
                      splash_action: buy
                      proceeds: 0
                      splash_side: 'no'
                      trade_price: 0.4745
                      proceeds_minus_fees: 0
                      fill_cost_plus_fees: 9.49
                      request_id: 8d2e6f40-1c3b-4a7e-b5d9-2f0a7c6e1b84
                      time_in_force: FOK
                      realized_pnl: 0
                      market_id: pm_6ae1e3c08d5c2a7e3f9b41e6d2c8a604
                      market:
                        id: pm_6ae1e3c08d5c2a7e3f9b41e6d2c8a604
                        provider_ticker: tsc-nfl-kc-buf-2026-11-08-47pt5
                        title: 'Chiefs vs. Bills: Total Points O/U 47.5'
                        sub_category: nfl
                        type: total
                        event_id: 4b1e9c2a-7d3f-4e5a-8b6c-9d0e1f2a3b4c
                        event_start: 1794160800000
                        line: 47.5
                        yes_line_display: O 47.5
                        no_line_display: U 47.5
                        price_yes:
                          american: '-117'
                          decimal: 1.85x
                          percentage: 54%
                          price: $0.54
                          numeric_price: 0.54
                        price_no:
                          american: '+113'
                          decimal: 2.13x
                          percentage: 47%
                          price: $0.47
                          numeric_price: 0.47
                        volume: 71455.92
                        liquidity: 4350.3
                        yes_liquidity: 2298.2
                        no_liquidity: 2211.5
                        last_price_yes: 0.535
                        last_price_no: 0.465
                        status: active
                        updated_at: 1793977442118
                        rules: >-
                          This market resolves to "Yes" if the Kansas City
                          Chiefs and Buffalo Bills combine for more than 47.5
                          points in their game on November 8, 2026, overtime
                          included. Otherwise it resolves to "No".
                        market_group_id: pmgm_6ae1e3c0a3f19c0d7e2b4c58e61f9d02
                      market_title: KC @ BUF • Under 47.5 points
                    included:
                      events:
                        - id: 4b1e9c2a-7d3f-4e5a-8b6c-9d0e1f2a3b4c
                          name: Kansas City Chiefs at Buffalo Bills
                          league: nfl
                          start_date: 1794160800000
                          status: SCHEDULED
                          home:
                            id: 768c92aa-75ff-4a43-bcc0-f2fe5c1f0a3e
                            alias: BUF
                            points: 0
                            record:
                              wins: 6
                              losses: 2
                          away:
                            id: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
                            alias: KC
                            points: 0
                            record:
                              wins: 7
                              losses: 1
                          state:
                            sport: football
                            league: nfl
                            clock: '15:00'
                            quarter: 1
                            phase: pregame
                            weather:
                              condition: Partly Cloudy
                              humidity: 62
                              temp: 41
                              wind_direction: WNW
                              wind_speed: 12
                            weather_icon: cloud
                      teams:
                        - id: 768c92aa-75ff-4a43-bcc0-f2fe5c1f0a3e
                          name: Bills
                          league: nfl
                          alias: BUF
                          market: Buffalo
                          primary_color: '#00338D'
                          secondary_color: '#C60C30'
                          icon_url: >-
                            https://res.cloudinary.com/splashsports/image/upload/v1791500098/static/icons/teams/nfl/buf.png
                          official_logo: false
                        - id: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
                          name: Chiefs
                          league: nfl
                          alias: KC
                          market: Kansas City
                          primary_color: '#E31837'
                          secondary_color: '#FFB81C'
                          icon_url: >-
                            https://res.cloudinary.com/splashsports/image/upload/v1791500102/static/icons/teams/nfl/kc.png
                          official_logo: false
                      entities: []
                      sub_categories:
                        - id: nfl
                          name: NFL
                          icon_url: >-
                            https://res.cloudinary.com/splashsports/image/upload/v1786629706/pro_football.png
                  description: >-
                    A NO buy is routed as a sell of YES, so `action` is `sell`
                    while `splash_action` is `buy` and `splash_side` is `no`.
                Still queued:
                  summary: Still queued
                  value:
                    status: success
                    order:
                      id: ord_6aedec658f3a61c2d94e07b5a1c6e2d9
                      request_id: 3f1c2a9e-5b7d-4e0a-9c1d-8a6b2e4f7d10
                      status: pending
                Refused before it was recorded:
                  summary: Refused before it was recorded
                  value:
                    status: success
                    order:
                      id: ord_6aededb87e1c4b9f2d6a03e8b5c1d7f2
                      request_id: a6d0e3b7-92c4-4f1e-8b5a-d3c7f0e9a214
                      status: cancelled
                      error: Market is not active
        '400':
          $ref: '#/components/responses/TradingBadRequest'
        '401':
          $ref: '#/components/responses/UnauthorizedUserScoped'
        '404':
          $ref: '#/components/responses/TradingNotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '503':
          $ref: '#/components/responses/Unavailable'
      security:
        - SplashAccessKey: []
          SplashAccessTimestamp: []
          SplashAccessSignature: []
      x-codeSamples:
        - lang: bash
          label: cURL
          source: >-
            KEY="your-key-id"

            SECRET="your-secret"

            METHOD="GET"

            URLPATH="/predictions-service/api/orders/ord_6af0d056c50d27e8a6b19f34d0e8c3a1"

            BODY=""


            TS=$(( $(date +%s) * 1000 ))

            SIG=$(printf '%s' "$TS$METHOD$URLPATH$BODY" | openssl dgst -sha256
            -hmac "$SECRET" -binary | base64)


            curl -X "$METHOD" "https://api.splashsports.com$URLPATH" \
              -H "SPLASH-ACCESS-KEY: $KEY" \
              -H "SPLASH-ACCESS-TIMESTAMP: $TS" \
              -H "SPLASH-ACCESS-SIGNATURE: $SIG"
        - lang: python
          label: Python
          source: >-
            import base64, hashlib, hmac, json, time

            import requests


            KEY = "your-key-id"

            SECRET = "your-secret"

            HOST = "https://api.splashsports.com"



            def sign(secret, timestamp, method, path, body):
                message = (timestamp + method + path + body).encode("utf-8")
                digest = hmac.new(secret.encode("utf-8"), message, hashlib.sha256).digest()
                return base64.b64encode(digest).decode("ascii")


            def request(method, path, payload=None):
                body = json.dumps(payload, separators=(",", ":")) if payload is not None else ""
                timestamp = str(int(time.time() * 1000))
                headers = {
                    "Content-Type": "application/json",
                    "SPLASH-ACCESS-KEY": KEY,
                    "SPLASH-ACCESS-TIMESTAMP": timestamp,
                    "SPLASH-ACCESS-SIGNATURE": sign(SECRET, timestamp, method, path, body),
                }
                return requests.request(method, HOST + path, headers=headers, data=body.encode("utf-8"))


            response = request("GET",
            "/predictions-service/api/orders/ord_6af0d056c50d27e8a6b19f34d0e8c3a1")

            print(response.status_code, response.json())
        - lang: typescript
          label: TypeScript
          source: >-
            import { createHmac } from "node:crypto";


            const KEY = "your-key-id";

            const SECRET = "your-secret";

            const HOST = "https://api.splashsports.com";


            function sign(secret: string, timestamp: string, method: string,
            path: string, body: string): string {
              return createHmac("sha256", secret).update(timestamp + method + path + body, "utf8").digest("base64");
            }


            const method = "GET";

            const path =
            "/predictions-service/api/orders/ord_6af0d056c50d27e8a6b19f34d0e8c3a1";

            const body = "";

            const timestamp = Date.now().toString();


            const response = await fetch(HOST + path, {
              method,
              headers: {
                "SPLASH-ACCESS-KEY": KEY,
                "SPLASH-ACCESS-TIMESTAMP": timestamp,
                "SPLASH-ACCESS-SIGNATURE": sign(SECRET, timestamp, method, path, body),
              },
            });

            console.log(response.status, await response.json());
        - lang: go
          label: Go
          source: "package main\n\nimport (\n\t\"bytes\"\n\t\"crypto/hmac\"\n\t\"crypto/sha256\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"strconv\"\n\t\"time\"\n)\n\nconst (\n\tkey    = \"your-key-id\"\n\tsecret = \"your-secret\"\n\thost   = \"https://api.splashsports.com\"\n)\n\nfunc sign(secret, timestamp, method, path string, body []byte) string {\n\tmac := hmac.New(sha256.New, []byte(secret))\n\tmac.Write([]byte(timestamp + method + path))\n\tmac.Write(body)\n\treturn base64.StdEncoding.EncodeToString(mac.Sum(nil))\n}\n\nfunc main() {\n\tmethod := \"GET\"\n\tpath := \"/predictions-service/api/orders/ord_6af0d056c50d27e8a6b19f34d0e8c3a1\"\n\n\tvar body []byte // no body: the signature covers the empty string\n\ttimestamp := strconv.FormatInt(time.Now().UnixMilli(), 10)\n\n\treq, err := http.NewRequest(method, host+path, bytes.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"SPLASH-ACCESS-KEY\", key)\n\treq.Header.Set(\"SPLASH-ACCESS-TIMESTAMP\", timestamp)\n\treq.Header.Set(\"SPLASH-ACCESS-SIGNATURE\", sign(secret, timestamp, method, path, body))\n\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n\tout, _ := io.ReadAll(resp.Body)\n\tfmt.Println(resp.StatusCode, string(out))\n}"
components:
  schemas:
    OrderResponse:
      type: object
      title: OrderResponse
      required:
        - status
        - order
      properties:
        status:
          type: string
          const: success
          description: Always `success` on a 200.
          example: success
        order:
          $ref: '#/components/schemas/OrderDetail'
          description: >-
            The order, with `original_buy` on an executed sell. While the order
            is queued, or after it was refused before being recorded, it is a
            [PendingOrder](/predictions/types/pending-order) instead.
        included:
          $ref: '#/components/schemas/Included'
          description: >-
            The game, teams, player and league the order's market references.
            Absent when `order` is a `PendingOrder`.
      description: While the order is not fully recorded, `order` is a `PendingOrder`.
    OrderDetail:
      type: object
      title: OrderDetail
      description: An `OrderWithMarket`, plus `original_buy` on an executed, filled sell.
      required:
        - id
        - side
        - yes_price
        - no_price
        - quantity
        - status
        - fill_cost
        - updated_at
        - created_at
        - remaining_quantity
        - fill_quantity
        - fees
        - action
        - splash_action
        - proceeds
        - splash_side
        - trade_price
        - proceeds_minus_fees
        - fill_cost_plus_fees
        - request_id
        - time_in_force
        - realized_pnl
        - market_id
        - market
        - market_title
      properties:
        id:
          type: string
          description: >-
            The order id (prefix `ord_`), as `order_id` was returned when you
            placed it.
          example: ord_6aedec658f3a61c2d94e07b5a1c6e2d9
        side:
          $ref: '#/components/schemas/OrderSide'
          description: >-
            The side as Splash routes the order to the exchange. Every order is
            recorded against the YES contract, so this is `yes`; read
            `splash_side` for the side you traded. See [Order
            sides](/predictions/enums#order-sides-splash_side-and-side).
          example: 'yes'
        yes_price:
          type: number
          description: >-
            Price per contract in YES terms, up to 4 decimal places. Until the
            order fills it is your limit price expressed as a YES price; once it
            fills, the average fill price. Always `yes_price + no_price = 1`.
          example: 0.585
        no_price:
          type: number
          description: >-
            The same price in NO terms: `1 - yes_price`. On a NO buy this is
            what you paid per contract, before fees.
          example: 0.415
        quantity:
          type: integer
          description: Contracts requested.
          example: 10
        status:
          $ref: '#/components/schemas/OrderStatus'
          description: >-
            `pending` while queued or in flight, then `executed` (filled) or
            `cancelled` (not filled, or refused). A fill-or-kill order is never
            `resting`. See [Order
            statuses](/predictions/enums#order-statuses-status-on-an-order).
          example: executed
        fill_cost:
          type: number
          description: >-
            Buys: dollars paid for the filled contracts, before fees, up to 4
            decimal places. 0 on a sell and until the order fills.
          example: 5.85
        updated_at:
          type: integer
          format: int64
          description: When the order last changed. Epoch milliseconds.
          example: 1793977446412
        created_at:
          type: integer
          format: int64
          description: When the order was recorded. Epoch milliseconds.
          example: 1793977445000
        executed_at:
          type: integer
          format: int64
          description: When the order executed. Epoch milliseconds. Absent until it does.
          example: 1793977446412
        remaining_quantity:
          type: integer
          description: >-
            Contracts not filled. Equals `quantity` until the exchange reports
            on the order.
          example: 0
        fill_quantity:
          type: integer
          description: >-
            Contracts filled. 0 until the order fills; equal to `quantity` on an
            executed fill-or-kill order.
          example: 10
        fees:
          type: number
          description: >-
            Total fees on the order, Splash's and the exchange provider's, in
            dollars rounded to cents. Charged on top of a buy and out of a
            sell's proceeds. Before the fill it holds only Splash's quoted fee.
          example: 0.12
        action:
          $ref: '#/components/schemas/OrderAction'
          description: >-
            Buy or sell of the YES contract, as routed to the exchange: a YES
            buy or a NO close is `buy`, a NO buy or a YES close is `sell`. Read
            `splash_action` for what you did. See [Order
            actions](/predictions/enums#order-actions-splash_action-and-action).
          example: buy
        splash_action:
          $ref: '#/components/schemas/OrderAction'
          description: >-
            What you did: `buy` opens or adds to a position, `sell` closes it.
            See [Order
            actions](/predictions/enums#order-actions-splash_action-and-action).
          example: buy
        proceeds:
          type: number
          description: >-
            Sells: dollars received for the filled contracts, before fees, up to
            4 decimal places. 0 on a buy and until the order fills.
          example: 0
        splash_side:
          $ref: '#/components/schemas/OrderSide'
          description: >-
            The side you traded: the side you bought on a buy, the side you sold
            on a sell. See [Order
            sides](/predictions/enums#order-sides-splash_side-and-side).
          example: 'yes'
        trade_price:
          type: number
          description: >-
            Your all-in price per contract, up to 4 decimal places: on a buy
            `(fill_cost + fees) / fill_quantity`, on a sell `(proceeds - fees) /
            fill_quantity`. 0 until the order fills.
          example: 0.597
        proceeds_minus_fees:
          type: number
          description: >-
            Sells: `proceeds - fees`, the dollars credited to you, rounded to
            cents. 0 on a buy.
          example: 0
        fill_cost_plus_fees:
          type: number
          description: >-
            Buys: `fill_cost + fees`, the dollars debited from you, rounded to
            cents. 0 on a sell.
          example: 5.97
        request_id:
          type: string
          description: The `request_id` the order was placed with.
          example: 3f1c2a9e-5b7d-4e0a-9c1d-8a6b2e4f7d10
        time_in_force:
          $ref: '#/components/schemas/TimeInForce'
          description: >-
            `FOK` (fill or kill). Every order today is fill-or-kill. See [Time
            in force](/predictions/enums#time-in-force-time_in_force).
          example: FOK
        realized_pnl:
          type: number
          description: >-
            Profit or loss this order locked in, in dollars after all fees,
            rounded to cents. Only an executed sell realizes any: its proceeds
            net of fees minus the cost plus fees of the bought contracts it
            closed, oldest first. 0 on a buy and on an order that did not
            execute.
          example: 0
        market_id:
          type: string
          description: The market the order is on.
          example: pm_6ae1e3c09e1d4c7a2b5f80e3d6a9c412
        market:
          $ref: '#/components/schemas/Market'
          description: >-
            The market as it stands now (current prices and status), not as it
            was when you ordered.
        market_title:
          type: string
          description: >-
            A one-line description of the bet from your side: game, then the
            pick, e.g. `KC @ BUF • Chiefs to win` or `KC @ BUF • Under 47.5
            points`. Empty when it cannot be built.
          example: KC @ BUF • Chiefs to win
        original_buy:
          $ref: '#/components/schemas/OriginalBuy'
          description: >-
            Executed, filled sells only: the opening buys of the position cycle
            this sell closed. Absent otherwise. It covers the whole opening
            buys, while `realized_pnl` covers only the contracts this sell
            closed.
      example:
        id: ord_6af0d056c50d27e8a6b19f34d0e8c3a1
        side: 'yes'
        yes_price: 0.665
        no_price: 0.335
        quantity: 10
        status: executed
        fill_cost: 0
        updated_at: 1794166871236
        created_at: 1794166870000
        executed_at: 1794166871236
        remaining_quantity: 0
        fill_quantity: 10
        fees: 0.1
        action: sell
        splash_action: sell
        proceeds: 6.65
        splash_side: 'yes'
        trade_price: 0.655
        proceeds_minus_fees: 6.55
        fill_cost_plus_fees: 0
        request_id: c47b19e2-0f6d-4b8a-a3e5-71d9f2c08a56
        time_in_force: FOK
        realized_pnl: 0.58
        market_id: pm_6ae1e3c09e1d4c7a2b5f80e3d6a9c412
        market:
          id: pm_6ae1e3c09e1d4c7a2b5f80e3d6a9c412
          provider_ticker: aec-nfl-kc-buf-2026-11-08
          title: Kansas City Chiefs to win the game?
          sub_category: nfl
          type: moneyline
          event_id: 4b1e9c2a-7d3f-4e5a-8b6c-9d0e1f2a3b4c
          event_start: 1794160800000
          moneyline_type: two_way
          team_id: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
          yes_team_id: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
          no_team_id: 768c92aa-75ff-4a43-bcc0-f2fe5c1f0a3e
          price_yes:
            american: '-144'
            decimal: 1.69x
            percentage: 59%
            price: $0.59
            numeric_price: 0.59
          price_no:
            american: '+138'
            decimal: 2.38x
            percentage: 42%
            price: $0.42
            numeric_price: 0.42
          volume: 184532.17
          liquidity: 9266.25
          yes_liquidity: 5378.8
          no_liquidity: 4334.95
          last_price_yes: 0.585
          last_price_no: 0.415
          status: active
          updated_at: 1793977442118
          rules: >-
            This market resolves to "Yes" if the Kansas City Chiefs win their
            game against the Buffalo Bills scheduled for November 8, 2026. It
            resolves to "No" if the Buffalo Bills win. If the game ends in a
            tie, is canceled, or is postponed past November 15, 2026, the market
            resolves 50-50.
          market_group_id: pmgm_6ae1e3c0a3f19c0d7e2b4c58e61f9d02
        market_title: KC @ BUF • Chiefs to win
        original_buy:
          order_ids:
            - ord_6aedec658f3a61c2d94e07b5a1c6e2d9
          contracts: 10
          avg_price: 0.585
          avg_price_with_fees: 0.597
          cost: 5.85
          cost_plus_fees: 5.97
          placed_at: 1793977445000
    Included:
      type: object
      description: >-
        The resources the primary data references. Resolve `event_id`, `team_id`
        and `entity_id` here.
      required:
        - events
        - teams
        - entities
        - sub_categories
      properties:
        events:
          type: array
          items:
            $ref: '#/components/schemas/Game'
          description: Every game the primary data references.
        teams:
          type: array
          items:
            $ref: '#/components/schemas/Team'
          description: >-
            Every team the primary data references, plus both teams of each
            included game.
        entities:
          type: array
          items:
            $ref: '#/components/schemas/Entity'
          description: >-
            Every player the primary data references. On a `group_by=prop_type`
            response, only the players shown.
        sub_categories:
          type: array
          items:
            $ref: '#/components/schemas/IncludedSubCategory'
          description: >-
            The distinct leagues of the included events, teams and entities,
            ordered by `name`. Identity only: `active` and `filters` come from
            `GET /sub_categories`.
      title: Included
      example:
        events:
          - id: 4b1e9c2a-7d3f-4e5a-8b6c-9d0e1f2a3b4c
            name: Kansas City Chiefs at Buffalo Bills
            league: nfl
            start_date: 1794160800000
            status: SCHEDULED
            home:
              id: 768c92aa-75ff-4a43-bcc0-f2fe5c1f0a3e
              alias: BUF
              points: 0
              record:
                wins: 6
                losses: 2
            away:
              id: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
              alias: KC
              points: 0
              record:
                wins: 7
                losses: 1
            state:
              sport: football
              league: nfl
              clock: '15:00'
              quarter: 1
              phase: pregame
              weather:
                condition: Partly Cloudy
                humidity: 62
                temp: 41
                wind_direction: WNW
                wind_speed: 12
              weather_icon: cloud
        teams:
          - id: 768c92aa-75ff-4a43-bcc0-f2fe5c1f0a3e
            name: Bills
            league: nfl
            alias: BUF
            market: Buffalo
            primary_color: '#00338D'
            secondary_color: '#C60C30'
            icon_url: >-
              https://res.cloudinary.com/splashsports/image/upload/v1791500098/static/icons/teams/nfl/buf.png
            official_logo: false
          - id: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
            name: Chiefs
            league: nfl
            alias: KC
            market: Kansas City
            primary_color: '#E31837'
            secondary_color: '#FFB81C'
            icon_url: >-
              https://res.cloudinary.com/splashsports/image/upload/v1791500102/static/icons/teams/nfl/kc.png
            official_logo: false
        entities:
          - id: 11cad59d-90dd-449c-a839-dddaba4fe16c
            name: Patrick Mahomes
            league: nfl
            current_team_id: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
            player_details:
              league: nfl
              first_name: Patrick
              last_name: Mahomes
              abbreviated_name: P.Mahomes
              status: ACT
              position: QB
              jersey_number: '15'
            icon_url: >-
              https://res.cloudinary.com/splashsports/image/upload/e_tint:100:3a0610:0p:8f0f1f:45p:e31837:72p:eb5a6a:100p/l_static:nfl:jersey_grey_stripe/e_colorize:100,co_rgb:ffb81c/fl_layer_apply/l_static:nfl:jersey_white_stripe/fl_layer_apply/l_text:Saira%20Condensed_820_black:15,co_white/fl_layer_apply,g_center,y_40/c_scale,w_255,dpr_2.0/c_mpad,w_300,h_300,b_transparent,dpr_2.0/e_sharpen:60/v1791500312/static/nfl/jersey.png
        sub_categories:
          - id: nfl
            name: NFL
            icon_url: >-
              https://res.cloudinary.com/splashsports/image/upload/v1786629706/pro_football.png
    TradingError:
      type: object
      title: TradingError
      description: >-
        The error body of the signed order and position routes. Same shape as
        the public `Error`, with the codes those routes can return. Branch on
        `error`; `message` is for people. See
        [Errors](/predictions/trading#errors).
      required:
        - status
        - error
        - message
      properties:
        status:
          type: string
          const: error
          description: Always `error` on an error response.
          example: error
        error:
          type: string
          description: >-
            Machine-readable code; branch on this. A string: the values below
            are the ones these routes return today, and a code not listed here
            should be handled by its HTTP status. See [Trading error
            codes](/predictions/enums#trading-error-codes-error).


            - `BAD_REQUEST` (400): invalid body or query, or an order check
            failed.

            - `NOT_AUTHORIZED` (401): the signature check failed, the request
            had no `SPLASH-ACCESS-KEY` header, or `user_id` was passed to `GET
            /orders`, `GET /orders/{id}`, `GET /positions`, `GET
            /positions/{id}` or `GET /transactions`.

            - `FOBIDDEN` (403): `Not authorized to trade`, the account may not
            trade. `FOBIDDEN` is the literal value the API returns (not
            `FORBIDDEN`); match it exactly.

            - `NOT_FOUND` (404): no such order, position or market on your
            account.

            - `DUPLICATE_REQUEST_ID` (409): another account used this
            `request_id`.

            - `UNSUPPORTED_MEDIA_TYPE` (415): a signed body that is not JSON.

            - `INTERNAL_ERROR` (500): the request could not be handled. On `POST
            /trading/orders` the order was not placed; poll the `request_id`,
            then try again with a new one.

            - `TRADING_API_UNAVAILABLE` (503): the Trading API is not taking
            signed requests; retry later.

            - `EXCHANGE_UNAVAILABLE`, `SERVICE_UNAVAILABLE` (503): the order
            could not be placed right now; retry later with a new `request_id`.
            On `GET /balance`, `SERVICE_UNAVAILABLE` means your balance could
            not be read; retry shortly.


            A `429 Too Many Requests` is the rate limit, not one of these codes;
            see [Rate limits](/predictions/rate-limits). Whether an order's
            `request_id` can be reused after an error: see [Order outcomes and
            retries](/predictions/trading#order-outcomes-and-retries).
          example: FOBIDDEN
        message:
          type: string
          description: >-
            Human-readable detail. For `BAD_REQUEST` and `NOT_AUTHORIZED` it
            names the cause, e.g. `Invalid price` or `Invalid signature`. Do not
            branch on it.
          example: Not authorized to trade
      example:
        status: error
        error: FOBIDDEN
        message: Not authorized to trade
    TooManyRequestsError:
      type: object
      title: TooManyRequestsError
      description: >-
        The body of a `429 Too Many Requests`: more than 10 requests per second
        from your IP address. It is not a `TradingError`; branch on the `429`
        status. See [Rate limits](/predictions/rate-limits).
      required:
        - status
        - error
        - message
      properties:
        status:
          type: string
          const: error
          description: Always `error`.
          example: error
        error:
          type: string
          const: TOO_MANY_REQUESTS
          description: Always `TOO_MANY_REQUESTS` on a rate-limited request.
          example: TOO_MANY_REQUESTS
        message:
          type: string
          description: Human-readable detail. Do not branch on it.
          example: Too many requests, try again later
      example:
        status: error
        error: TOO_MANY_REQUESTS
        message: Too many requests, try again later
    Error:
      type: object
      required:
        - status
        - error
        - message
      properties:
        status:
          type: string
          const: error
          description: Always `error` on an error response.
          example: error
        error:
          type: string
          enum:
            - BAD_REQUEST
            - NOT_FOUND
            - INTERNAL_ERROR
          description: >-
            Machine-readable code; branch on this. `BAD_REQUEST` (400),
            `NOT_FOUND` (404) or `INTERNAL_ERROR` (500). See [Error
            codes](/predictions/enums#error-codes-error).
          example: BAD_REQUEST
        message:
          type: string
          description: >-
            Human-readable detail for logs and people. Wording can change; do
            not branch on it.
          example: Invalid request parameters
      title: Error
      example:
        status: error
        error: BAD_REQUEST
        message: Invalid request parameters
    OrderSide:
      type: string
      enum:
        - 'yes'
        - 'no'
      title: OrderSide
      description: >-
        Which side of a market's question. See [Order
        sides](/predictions/enums#order-sides-splash_side-and-side).
      example: 'yes'
    OrderStatus:
      type: string
      enum:
        - pending
        - executed
        - cancelled
        - resting
      title: OrderStatus
      description: >-
        `pending` while queued or in flight, then `executed` or `cancelled`. A
        fill-or-kill order is never `resting`. See [Order
        statuses](/predictions/enums#order-statuses-status-on-an-order).
      example: executed
    OrderAction:
      type: string
      enum:
        - buy
        - sell
      title: OrderAction
      description: >-
        `buy` or `sell`. See [Order
        actions](/predictions/enums#order-actions-splash_action-and-action).
      example: buy
    TimeInForce:
      type: string
      enum:
        - FOK
        - IOC
      title: TimeInForce
      description: >-
        `FOK` (fill or kill) fills completely or is cancelled. `IOC` is not yet
        accepted. See [Time in
        force](/predictions/enums#time-in-force-time_in_force).
      example: FOK
    Market:
      title: Market
      type: object
      description: >-
        Any market. `type` says which shape it is; each shape has its own page:
        [SpreadMarket](/predictions/types/spread-market),
        [TotalMarket](/predictions/types/total-market),
        [MoneylineMarket](/predictions/types/moneyline-market),
        [FutureTeamChampionMarket](/predictions/types/future-team-champion-market),
        [PlayerPropMarket](/predictions/types/player-prop-market). Fields marked
        with a type are present only on that type.
      required:
        - id
        - provider_ticker
        - title
        - sub_category
        - type
        - price_yes
        - price_no
        - volume
        - liquidity
        - yes_liquidity
        - no_liquidity
        - status
        - updated_at
        - rules
        - market_group_id
        - event_start
        - yes_line_display
        - no_line_display
      properties:
        id:
          type: string
          description: >-
            The market id (prefix `pm_`). This is the instrument you trade, sent
            as `market_id` on `POST /trading/orders`, and the id to follow for
            price updates.
          example: pm_6ae1e3c09e1d4c7a2b5f80e3d6a9c412
        provider_ticker:
          type: string
          description: >-
            The market's ticker on the exchange where it trades, in the
            exchange's own format. It identifies the market on the exchange and
            stays the same for the life of the market, so use it to match this
            market against the exchange's own data; to trade, use `id`. Always
            present.
          example: aec-nfl-kc-buf-2026-11-08
        title:
          type: string
          description: >-
            The exchange provider's title for the market, usually the YES side
            as a question. Display text that can change; never parse it or key
            on it.
          example: Kansas City Chiefs to win the game?
        sub_category:
          $ref: '#/components/schemas/SubCategoryId'
          description: The league. See [Leagues](/predictions/enums#leagues-sub_category).
          example: nfl
        price_yes:
          $ref: '#/components/schemas/MarketPrice'
          description: >-
            What one YES contract costs right now: the best YES ask in the book
            Splash holds, in every display form. A YES contract pays $1 if the
            market resolves YES. `price_yes` and `price_no` are both asks, so
            their `numeric_price` values usually sum to a little more than 1;
            the excess is the spread. Reads 0 when nobody is offering YES, and
            while quotes are suspended during an exchange outage.
        price_no:
          $ref: '#/components/schemas/MarketPrice'
          description: >-
            What one NO contract costs right now: the best NO ask, in every
            display form. A NO contract pays $1 if the market resolves NO. Reads
            0 when nobody is offering NO, and during an exchange outage.
        orderbook:
          $ref: '#/components/schemas/Orderbook'
          description: >-
            Splash's copy of the exchange provider's order book for this market,
            at most ten levels a side. Absent when the book is empty and while
            quotes are suspended during an exchange outage.
        volume:
          type: number
          description: >-
            Dollars traded on the exchange in this market, rounded to cents. It
            refreshes with order book updates rather than on every trade, so it
            can trail the latest trade by a few seconds.
          example: 184532.17
        liquidity:
          type: number
          description: >-
            Dollars resting in the book Splash holds: each bid level's price
            times its quantity, summed over the YES and NO ladders and rounded
            to cents. A floor, since the feed carries at most ten levels a side.
            0 whenever `orderbook` is absent.
          example: 9266.25
        yes_liquidity:
          type: number
          description: >-
            Dollars of YES you could buy right now: the YES ask depth valued at
            the ask prices, rounded to cents. 0 means nobody is offering YES, so
            treat the YES side as closed. It is not a share of `liquidity`;
            buyable depth and resting depth are different measures and do not
            add up.
          example: 5378.8
        no_liquidity:
          type: number
          description: >-
            Dollars of NO you could buy right now: the NO ask depth valued at
            the ask prices, rounded to cents. 0 means nobody is offering NO.
          example: 4334.95
        last_price_yes:
          type: number
          description: >-
            The most recent trade as a YES price per contract, up to 4 decimal
            places. Absent until the market has traded. Refreshes with order
            book updates, like `volume`.
          example: 0.585
        last_price_no:
          type: number
          description: >-
            The same trade as a NO price: `1 - last_price_yes`, up to 4 decimal
            places. Present exactly when `last_price_yes` is.
          example: 0.415
        status:
          $ref: '#/components/schemas/MarketStatus'
          description: >-
            `active` is tradeable. `expired` has stopped trading and has not
            settled. `settled` has resolved and carries `result`. See [Market
            statuses](/predictions/enums#market-statuses-status).
          example: active
        result:
          $ref: '#/components/schemas/MarketResult'
          description: >-
            How the market resolved: `yes`, `no`, or `scalar` (resolved to a
            value rather than a side). Absent until the market settles. See
            [Market results](/predictions/enums#market-results-result).
          example: 'yes'
        updated_at:
          type: integer
          format: int64
          description: >-
            When Splash last refreshed this market, from an order book or status
            update. Epoch milliseconds.
          example: 1793977442118
        rules:
          type: string
          description: >-
            The resolution rules the exchange provider publishes for this
            market, as plain text. They decide `result`.
          example: >-
            This market resolves to "Yes" if the Kansas City Chiefs win their
            game against the Buffalo Bills scheduled for November 8, 2026. It
            resolves to "No" if the Buffalo Bills win. If the game ends in a
            tie, is canceled, or is postponed past November 15, 2026, the market
            resolves 50-50.
        market_group_id:
          type: string
          description: >-
            The market group this market belongs to; `GET
            /prediction_markets/{id}` returns the whole group.
          example: pmgm_6ae1e3c0a3f19c0d7e2b4c58e61f9d02
        type:
          type: string
          enum:
            - spread
            - total
            - moneyline
            - future_team_champion
            - player_prop
          description: >-
            Which shape this market is, and so which fields below are present:
            `spread`, `total`, `moneyline`, `future_team_champion` or
            `player_prop`. See [Market
            types](/predictions/enums#market-types-type-on-a-market).
          example: moneyline
        event_id:
          type: string
          description: >-
            All but `future_team_champion`: the game. Resolve it in
            `included.events`.
          example: 4b1e9c2a-7d3f-4e5a-8b6c-9d0e1f2a3b4c
        event_start:
          type: integer
          format: int64
          description: >-
            Scheduled start of the game, epoch milliseconds. On a future, the
            date the exchange provider gives the title event.
          example: 1794160800000
        line:
          type: number
          description: >-
            Spread, total, and a player prop ladder rung (274.5 for "275+").
            Absent on a moneyline, a future and a pool leg.
          example: 47.5
        yes_line_display:
          type: string
          description: >-
            The YES outcome as display text: `-2.5` (spread), `O 47.5` (total),
            `275+` (prop rung), `Yes` (future, pool leg). Absent on a moneyline.
          example: O 47.5
        no_line_display:
          type: string
          description: >-
            The NO outcome as display text: `+2.5`, `U 47.5`, `Under 275`, `No`.
            Absent on a moneyline.
          example: U 47.5
        team_id:
          type: string
          description: >-
            Spread, moneyline (not a `draw` leg), future and player prop: the
            team the market is about, or the player's team.
          example: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
        yes_team_id:
          type: string
          description: 'Spread, and `two_way` moneyline: the team whose side is YES.'
          example: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
        no_team_id:
          type: string
          description: >-
            Spread, and `two_way` moneyline: the team whose side is NO. Buying
            it is buying NO.
          example: 768c92aa-75ff-4a43-bcc0-f2fe5c1f0a3e
        moneyline_type:
          type: string
          enum:
            - two_way
            - one_way
            - draw
          description: >-
            Moneyline only: `two_way`, `one_way` or `draw`. See [Moneyline
            types](/predictions/enums#moneyline-types-moneyline_type).
          example: two_way
        prop_type:
          $ref: '#/components/schemas/PlayerPropType'
          description: >-
            Player prop only. See [Player prop
            types](/predictions/enums#player-prop-types-prop_type).
          example: passing_yards
        prop_type_display:
          type: string
          description: Player prop only. Heading for `prop_type`, e.g. `Anytime TD`.
          example: Passing Yards
        entity_id:
          type: string
          description: Player prop only. The player; resolve it in `included.entities`.
          example: 11cad59d-90dd-449c-a839-dddaba4fe16c
        live_stat_key:
          type: string
          description: >-
            Player prop only. Present when a live in-game stat streams for this
            prop type; its value is the key to read from the
            `player-activity-{event_id}-{entity_id}` channel payload.
          example: passing_yards
        live_stat:
          type: number
          description: >-
            Player prop only. The current value of `live_stat_key`: 0 until the
            player appears, the final figure once the game is over. Present
            exactly when `live_stat_key` is.
          example: 0
        alternate_lines:
          type: array
          description: >-
            Player prop only. The whole ladder, this market included. Absent
            when there is a single line.
          items:
            $ref: '#/components/schemas/PlayerPropLine'
      example:
        id: pm_6ae1e3c09e1d4c7a2b5f80e3d6a9c412
        provider_ticker: aec-nfl-kc-buf-2026-11-08
        title: Kansas City Chiefs to win the game?
        sub_category: nfl
        type: moneyline
        event_id: 4b1e9c2a-7d3f-4e5a-8b6c-9d0e1f2a3b4c
        event_start: 1794160800000
        moneyline_type: two_way
        team_id: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
        yes_team_id: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
        no_team_id: 768c92aa-75ff-4a43-bcc0-f2fe5c1f0a3e
        price_yes:
          american: '-144'
          decimal: 1.69x
          percentage: 59%
          price: $0.59
          numeric_price: 0.59
        price_no:
          american: '+138'
          decimal: 2.38x
          percentage: 42%
          price: $0.42
          numeric_price: 0.42
        volume: 184532.17
        liquidity: 9266.25
        yes_liquidity: 5378.8
        no_liquidity: 4334.95
        last_price_yes: 0.585
        last_price_no: 0.415
        status: active
        updated_at: 1793977442118
        rules: >-
          This market resolves to "Yes" if the Kansas City Chiefs win their game
          against the Buffalo Bills scheduled for November 8, 2026. It resolves
          to "No" if the Buffalo Bills win. If the game ends in a tie, is
          canceled, or is postponed past November 15, 2026, the market resolves
          50-50.
        market_group_id: pmgm_6ae1e3c0a3f19c0d7e2b4c58e61f9d02
    OriginalBuy:
      type: object
      title: OriginalBuy
      description: The executed opening buys of the cycle a sell closed.
      required:
        - order_ids
        - contracts
        - avg_price
        - avg_price_with_fees
        - cost
        - cost_plus_fees
        - placed_at
      properties:
        order_ids:
          type: array
          items:
            type: string
          description: >-
            The executed buys that opened the position this sell closed, oldest
            first.
          example:
            - ord_6aedec658f3a61c2d94e07b5a1c6e2d9
        contracts:
          type: integer
          description: Contracts those buys filled in total.
          example: 10
        avg_price:
          type: number
          description: >-
            Cost per contract excluding fees: `cost / contracts`, up to 4
            decimal places.
          example: 0.585
        avg_price_with_fees:
          type: number
          description: >-
            Cost per contract including fees: `cost_plus_fees / contracts`, up
            to 4 decimal places.
          example: 0.597
        cost:
          type: number
          description: The buys' `fill_cost` summed, in dollars rounded to cents.
          example: 5.85
        cost_plus_fees:
          type: number
          description: The buys' fill cost plus their fees, in dollars rounded to cents.
          example: 5.97
        placed_at:
          type: integer
          format: int64
          description: When the earliest of those buys was placed. Epoch milliseconds.
          example: 1793977445000
      example:
        order_ids:
          - ord_6aedec658f3a61c2d94e07b5a1c6e2d9
        contracts: 10
        avg_price: 0.585
        avg_price_with_fees: 0.597
        cost: 5.85
        cost_plus_fees: 5.97
        placed_at: 1793977445000
    Game:
      type: object
      description: A game (or a golf tournament) referenced by a market's `event_id`.
      required:
        - id
        - name
        - league
        - start_date
        - status
        - state
      properties:
        id:
          type: string
          description: 'The game id: what a market''s `event_id` refers to.'
          example: 4b1e9c2a-7d3f-4e5a-8b6c-9d0e1f2a3b4c
        name:
          type: string
          description: Display name of the game or tournament.
          example: Kansas City Chiefs at Buffalo Bills
        league:
          $ref: '#/components/schemas/SubCategoryId'
          description: The league. See [Leagues](/predictions/enums#leagues-sub_category).
          example: nfl
        start_date:
          type: integer
          format: int64
          description: Scheduled start, epoch milliseconds.
          example: 1794160800000
        status:
          $ref: '#/components/schemas/GameStatus'
          description: >-
            `SCHEDULED`, `IN_PROGRESS`, `FINISHED`, `FINALIZED` or `CANCELED`.
            See [Game status](/predictions/enums#game-status-status-on-a-game).
          example: SCHEDULED
        home:
          $ref: '#/components/schemas/TeamState'
          description: The home team and its live score. Absent on a golf tournament.
        away:
          $ref: '#/components/schemas/TeamState'
          description: The away team and its live score. Absent on a golf tournament.
        state:
          $ref: '#/components/schemas/GameState'
          description: Live state, shaped by `state.sport`.
      title: Game
      example:
        id: 4b1e9c2a-7d3f-4e5a-8b6c-9d0e1f2a3b4c
        name: Kansas City Chiefs at Buffalo Bills
        league: nfl
        start_date: 1794160800000
        status: SCHEDULED
        home:
          id: 768c92aa-75ff-4a43-bcc0-f2fe5c1f0a3e
          alias: BUF
          points: 0
          record:
            wins: 6
            losses: 2
        away:
          id: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
          alias: KC
          points: 0
          record:
            wins: 7
            losses: 1
        state:
          sport: football
          league: nfl
          clock: '15:00'
          quarter: 1
          phase: pregame
          weather:
            condition: Partly Cloudy
            humidity: 62
            temp: 41
            wind_direction: WNW
            wind_speed: 12
          weather_icon: cloud
    Team:
      type: object
      required:
        - id
        - name
        - league
        - alias
        - market
        - official_logo
      properties:
        id:
          type: string
          description: >-
            The team id, as `team_id`, `yes_team_id` and `no_team_id` refer to
            it.
          example: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
        name:
          type: string
          example: Chiefs
          description: The team name without its city, e.g. `Chiefs`.
        league:
          $ref: '#/components/schemas/SubCategoryId'
          description: The league. See [Leagues](/predictions/enums#leagues-sub_category).
          example: nfl
        alias:
          type: string
          example: KC
          description: Team abbreviation, upper case.
        market:
          type: string
          example: Kansas City
          description: The team's city or region, e.g. `Kansas City`.
        primary_color:
          type: string
          description: >-
            The team's primary color as a hex string. Absent when the game feed
            has none.
          example: '#E31837'
        secondary_color:
          type: string
          description: >-
            The team's secondary color as a hex string. Absent when the game
            feed has none.
          example: '#FFB81C'
        icon_url:
          type: string
          format: uri
          description: >-
            The team's icon on Cloudinary, falling back to the league's default
            icon. The URL is version-pinned, so it is safe to cache
            indefinitely. Absent when neither icon exists.
          example: >-
            https://res.cloudinary.com/splashsports/image/upload/v1791500102/static/icons/teams/nfl/kc.png
        official_logo:
          type: boolean
          description: >-
            `true` when `icon_url` is the league's official logo (NHL, MLB, NBA,
            WNBA, EPL, MLS), `false` when Splash drew it (NFL and NCAAF helmets,
            NCAAB crests). A drawn icon faces one way, so mirror the away team's
            icon in a matchup; never mirror an official logo. Always present.
          example: false
      title: Team
      description: A team referenced by a market or a game.
      example:
        id: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
        name: Chiefs
        league: nfl
        alias: KC
        market: Kansas City
        primary_color: '#E31837'
        secondary_color: '#FFB81C'
        icon_url: >-
          https://res.cloudinary.com/splashsports/image/upload/v1791500102/static/icons/teams/nfl/kc.png
        official_logo: false
    Entity:
      type: object
      description: A player referenced by a market's `entity_id`.
      required:
        - id
        - name
        - league
        - player_details
      properties:
        id:
          type: string
          description: The player id, as a market's `entity_id` refers to it.
          example: 11cad59d-90dd-449c-a839-dddaba4fe16c
        name:
          type: string
          description: The player's full name.
          example: Patrick Mahomes
        league:
          $ref: '#/components/schemas/SubCategoryId'
          description: The league. See [Leagues](/predictions/enums#leagues-sub_category).
          example: nfl
        current_team_id:
          type: string
          description: The player's current team. Absent for PGA.
          example: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
        player_details:
          $ref: '#/components/schemas/PlayerDetails'
          description: Biographical details, and season statistics in MLB.
        icon_url:
          type: string
          format: uri
          description: >-
            Team sports: the player's jersey in their current team's colors with
            their number (no number in MLB), rendered by Cloudinary.
            Version-pinned and safe to cache. Absent for PGA.
          example: >-
            https://res.cloudinary.com/splashsports/image/upload/e_tint:100:3a0610:0p:8f0f1f:45p:e31837:72p:eb5a6a:100p/l_static:nfl:jersey_grey_stripe/e_colorize:100,co_rgb:ffb81c/fl_layer_apply/l_static:nfl:jersey_white_stripe/fl_layer_apply/l_text:Saira%20Condensed_820_black:15,co_white/fl_layer_apply,g_center,y_40/c_scale,w_255,dpr_2.0/c_mpad,w_300,h_300,b_transparent,dpr_2.0/e_sharpen:60/v1791500312/static/nfl/jersey.png
      title: Entity
      example:
        id: 11cad59d-90dd-449c-a839-dddaba4fe16c
        name: Patrick Mahomes
        league: nfl
        current_team_id: 6680b4e0-5b6c-4bd1-8f6a-0b4f3b7d9a21
        player_details:
          league: nfl
          first_name: Patrick
          last_name: Mahomes
          abbreviated_name: P.Mahomes
          status: ACT
          position: QB
          jersey_number: '15'
        icon_url: >-
          https://res.cloudinary.com/splashsports/image/upload/e_tint:100:3a0610:0p:8f0f1f:45p:e31837:72p:eb5a6a:100p/l_static:nfl:jersey_grey_stripe/e_colorize:100,co_rgb:ffb81c/fl_layer_apply/l_static:nfl:jersey_white_stripe/fl_layer_apply/l_text:Saira%20Condensed_820_black:15,co_white/fl_layer_apply,g_center,y_40/c_scale,w_255,dpr_2.0/c_mpad,w_300,h_300,b_transparent,dpr_2.0/e_sharpen:60/v1791500312/static/nfl/jersey.png
    IncludedSubCategory:
      type: object
      description: >-
        A league referenced by an `included` block. Identity only: `active` and
        `filters` describe what is tradeable service-wide, which a list derived
        from one response's resources cannot speak to. Those come from `GET
        /sub_categories`.
      required:
        - id
        - name
        - icon_url
      properties:
        id:
          $ref: '#/components/schemas/SubCategoryId'
          description: >-
            The league id. See
            [Leagues](/predictions/enums#leagues-sub_category).
          example: nfl
        name:
          type: string
          description: The league's display-ready label.
          example: NFL
        icon_url:
          type: string
          format: uri
          description: The league's icon.
          example: >-
            https://res.cloudinary.com/splashsports/image/upload/v1786629706/pro_football.png
      title: IncludedSubCategory
      example:
        id: nfl
        name: NFL
        icon_url: >-
          https://res.cloudinary.com/splashsports/image/upload/v1786629706/pro_football.png
    SubCategoryId:
      type: string
      description: >-
        A league id. `pga` and `wc` appear in responses but are not accepted by
        `?sub_category=`. See
        [Leagues](/predictions/enums#leagues-sub_category).
      enum:
        - nfl
        - ncaaf
        - nba
        - wnba
        - ncaab
        - mlb
        - nhl
        - epl
        - mls
        - pga
        - wc
      title: SubCategoryId
      example: nfl
    MarketPrice:
      type: object
      description: >-
        One side's price in every display form. `numeric_price` is the price per
        contract in dollars, between 0 and 0.99; the strings are ready to
        render.
      required:
        - american
        - decimal
        - percentage
        - price
        - numeric_price
      properties:
        american:
          type: string
          description: >-
            American odds for the price, rounded to a whole number, with a sign:
            `-144` for a favourite, `+138` for an underdog. `-10000` when the
            price is 0.
          example: '-144'
        decimal:
          type: string
          description: >-
            Decimal odds, `1 / numeric_price` to 2 places, with an `x` suffix:
            `1.69x`. `0x` when the price is 0.
          example: 1.69x
        percentage:
          type: string
          description: >-
            The implied probability, `numeric_price` as a whole percentage:
            `59%`.
          example: 59%
        price:
          type: string
          description: >-
            The per-contract price in dollars, rounded to cents and formatted
            with a dollar sign: `$0.59`.
          example: $0.59
        numeric_price:
          type: number
          description: >-
            The per-contract price in dollars as a number, up to 4 decimal
            places (the exchange quotes in tenths of a cent), capped at 0.99. 0
            when nobody is offering this side. Use this field for arithmetic;
            the strings are for display.
          example: 0.59
      title: MarketPrice
      example:
        american: '-144'
        decimal: 1.69x
        percentage: 59%
        price: $0.59
        numeric_price: 0.59
    Orderbook:
      type: object
      description: >-
        Splash's copy of the exchange provider's order book for one market, at
        most ten levels a side. Present on list and single-group responses alike
        whenever the book is not empty; absent during an exchange outage. Bids
        are what holders will pay; asks, derived from the opposite side's bids,
        are what you can buy at.
      required:
        - bids
        - asks
      properties:
        bids:
          $ref: '#/components/schemas/OrderbookSide'
          description: >-
            Bids: the YES bids and the NO bids, each ordered by price ascending,
            so the best bid is last.
        asks:
          $ref: '#/components/schemas/OrderbookSide'
          description: >-
            Asks: what you can buy at. Each YES ask is the complement of a NO
            bid (a NO bid at 0.41 is a YES ask at 0.59) and each NO ask the
            complement of a YES bid, ordered by price ascending, so the best ask
            is first.
      title: Orderbook
      example:
        bids:
          'yes':
            - q: 4210
              p: 0.56
            - q: 3185
              p: 0.57
            - q: 2650
              p: 0.58
          'no':
            - q: 3920
              p: 0.39
            - q: 2875
              p: 0.4
            - q: 2140
              p: 0.41
        asks:
          'yes':
            - q: 2140
              p: 0.59
            - q: 2875
              p: 0.6
            - q: 3920
              p: 0.61
          'no':
            - q: 2650
              p: 0.42
            - q: 3185
              p: 0.43
            - q: 4210
              p: 0.44
    MarketStatus:
      type: string
      description: >-
        `active` is tradeable. `expired` closed without settling. `settled` has
        a `result`.
      enum:
        - active
        - expired
        - settled
      title: MarketStatus
      example: active
    MarketResult:
      type: string
      description: >-
        How a settled market resolved: `yes`, `no`, or `scalar` (resolved to a
        value rather than a side). Present once a market settles.
      enum:
        - 'yes'
        - 'no'
        - scalar
      title: MarketResult
      example: 'yes'
    PlayerPropType:
      type: string
      description: >-
        A player prop category. Full table with display titles and which are
        ladders or pools: [Player prop
        types](/predictions/enums#player-prop-types-prop_type).
      enum:
        - touchdowns
        - receiving_yards
        - receptions
        - rushing_yards
        - passing_yards
        - first_touchdown
        - team_first_touchdown
        - passing_touchdowns
        - fantasy_points_ppr
        - passing_completions
        - passing_attempts
        - rushing_attempts
        - scrimmage_yards
        - longest_reception
        - interceptions_thrown
        - most_passing_yards
        - points
        - rebounds
        - assists
        - points_rebounds_assists
        - three_points_made
        - steals
        - blocks
        - double_double
        - goals
        - goals_plus_assists
        - first_goal
        - hits
        - total_bases
        - hits_runs_rbis
        - home_runs
        - rbis
        - stolen_bases
        - strikeouts
        - outs
        - earned_runs_allowed
        - hits_allowed
        - walks_allowed
      title: PlayerPropType
      example: passing_yards
    PlayerPropLine:
      type: object
      description: One rung of a ladder as the line picker shows it.
      required:
        - id
        - provider_ticker
        - yes_line_display
        - no_line_display
        - price_yes
        - price_no
        - yes_liquidity
        - no_liquidity
        - status
        - rules
      properties:
        id:
          type: string
          description: >-
            The market id of this rung: the `market_id` to trade and the id to
            follow for price updates.
          example: pm_6aec4c985f2b7d0e6a3c81b4c9d5e159
        provider_ticker:
          type: string
          description: >-
            The ticker of this line's market on the exchange where it trades, in
            the exchange's own format. Each line is its own market, so this
            identifies the line on the exchange and stays the same for the life
            of the market; use it to match the line against the exchange's own
            data, and `id` to trade it. The line the market leads with has the
            same `id` and ticker as the market. Always present.
          example: astatc-nfl-kc-buf-2026-11-08-passyds-patmah-gte300
        line:
          type: number
          description: 'The half-point strike: 299.5 for "300+". Absent on a pool leg.'
          example: 299.5
        yes_line_display:
          type: string
          description: The YES outcome as display text, e.g. `300+`.
          example: 300+
        no_line_display:
          type: string
          description: The NO outcome as display text, e.g. `Under 300`.
          example: Under 300
        price_yes:
          $ref: '#/components/schemas/MarketPrice'
          description: Best YES ask for this rung, in every display form.
        price_no:
          $ref: '#/components/schemas/MarketPrice'
          description: Best NO ask for this rung, in every display form.
        last_price_yes:
          type: number
          description: >-
            Last trade on this rung as a YES price, up to 4 decimal places.
            Absent until it has traded.
          example: 0.285
        last_price_no:
          type: number
          description: '`1 - last_price_yes`. Present exactly when `last_price_yes` is.'
          example: 0.715
        yes_liquidity:
          type: number
          description: >-
            Dollars of YES buyable on this rung right now, rounded to cents. 0
            means no YES offers.
          example: 529.1
        no_liquidity:
          type: number
          description: >-
            Dollars of NO buyable on this rung right now, rounded to cents. 0
            means no NO offers.
          example: 874
        status:
          $ref: '#/components/schemas/MarketStatus'
          description: >-
            The rung's market status. See [Market
            statuses](/predictions/enums#market-statuses-status).
          example: active
        result:
          $ref: '#/components/schemas/MarketResult'
          description: How the rung resolved. Absent until it settles.
          example: 'no'
        rules:
          type: string
          description: This rung's own resolution rules from the exchange provider.
          example: >-
            This market resolves to "Yes" if Patrick Mahomes records 300+
            passing yards in the Kansas City Chiefs vs. Buffalo Bills game on
            November 8, 2026. If he does not play, it resolves to "No".
      title: PlayerPropLine
      example:
        id: pm_6aec4c985f2b7d0e6a3c81b4c9d5e159
        provider_ticker: astatc-nfl-kc-buf-2026-11-08-passyds-patmah-gte300
        line: 299.5
        yes_line_display: 300+
        no_line_display: Under 300
        price_yes:
          american: '+245'
          decimal: 3.45x
          percentage: 29%
          price: $0.29
          numeric_price: 0.29
        price_no:
          american: '-257'
          decimal: 1.39x
          percentage: 72%
          price: $0.72
          numeric_price: 0.72
        last_price_yes: 0.285
        last_price_no: 0.715
        yes_liquidity: 328.8
        no_liquidity: 835
        status: active
        rules: >-
          This market resolves to "Yes" if Patrick Mahomes records 300+ passing
          yards in the Kansas City Chiefs vs. Buffalo Bills game on November 8,
          2026. If he does not play, it resolves to "No".
    GameStatus:
      type: string
      enum:
        - SCHEDULED
        - IN_PROGRESS
        - FINISHED
        - FINALIZED
        - CANCELED
      title: GameStatus
      description: >-
        A game's status. See [Game
        status](/predictions/enums#game-status-status-on-a-game).
      example: SCHEDULED
    TeamState:
      type: object
      description: One side of a game. Which optional fields appear depends on the sport.
      required:
        - id
        - alias
      properties:
        id:
          type: string
          description: The team. Resolve it in `included.teams`.
          example: 768c92aa-75ff-4a43-bcc0-f2fe5c1f0a3e
        alias:
          type: string
          example: BUF
          description: Team abbreviation, upper case.
        points:
          type: integer
          description: The team's score. Absent on an MLB game, which reports `runs`.
          example: 0
        primary_color:
          type: string
          description: >-
            MLB games only: the team's primary color as a hex string. Other
            leagues' games currently carry it under `primaryColor`; read colors
            from `included.teams[].primary_color` instead.
          example: '#00338D'
        runs:
          type: integer
          description: 'Baseball: runs scored.'
          example: 3
        hits:
          type: integer
          description: 'Baseball: hits. MLB games do not currently carry it.'
          example: 7
        errors:
          type: integer
          description: 'Baseball: errors. MLB games do not currently carry it.'
          example: 0
        record:
          $ref: '#/components/schemas/TeamRecord'
          description: The team's season record, when the game feed has one.
      title: TeamState
      example:
        id: 768c92aa-75ff-4a43-bcc0-f2fe5c1f0a3e
        alias: BUF
        points: 0
        record:
          wins: 6
          losses: 2
    GameState:
      type: object
      description: >-
        Live state, shaped by `sport`. Football and basketball carry `clock`,
        `quarter` (or `half` for NCAAB) and `phase`; hockey `period`, `clock`
        and `phase` (`shootout` included); baseball the count, `current_inning`
        and `current_inning_phase`; soccer `home_score`, `away_score`,
        `match_status` and `clock`; golf `rounds`.
      required:
        - sport
        - league
      properties:
        sport:
          type: string
          enum:
            - basketball
            - football
            - hockey
            - baseball
            - golf
            - soccer
          description: >-
            The sport, which decides the fields below: `football`, `basketball`,
            `hockey`, `baseball`, `soccer` or `golf`.
          example: football
        league:
          $ref: '#/components/schemas/SubCategoryId'
          description: The league. See [Leagues](/predictions/enums#leagues-sub_category).
          example: nfl
        clock:
          type: string
          description: >-
            Football, basketball, hockey and soccer: the game clock as display
            text.
          example: '15:00'
        phase:
          type: string
          enum:
            - pregame
            - regulation
            - overtime
            - shootout
          description: >-
            Football, basketball and hockey: `pregame`, `regulation`,
            `overtime`, or for hockey `shootout`. See [Game
            phase](/predictions/enums#game-phase-state-phase).
          example: pregame
        quarter:
          type: integer
          description: 'Football and NBA/WNBA: the current quarter.'
          example: 1
        half:
          type: integer
          description: 'NCAAB only: the current half.'
          example: 2
        period:
          type: integer
          description: 'Hockey: the current period. Above 3 is overtime.'
          example: 3
        balls:
          type: integer
          description: 'Baseball: balls in the count.'
          example: 2
        strikes:
          type: integer
          description: 'Baseball: strikes in the count.'
          example: 1
        outs:
          type: integer
          description: 'Baseball: outs in the half-inning.'
          example: 1
        current_inning:
          type: integer
          description: 'Baseball: the inning in progress.'
          example: 6
        current_inning_phase:
          type: string
          enum:
            - top
            - bottom
          description: 'Baseball: `top` or `bottom` of `current_inning`.'
          example: bottom
        last_inning:
          type: integer
          description: 'Baseball: the last inning played.'
          example: 5
        last_inning_phase:
          type: string
          enum:
            - top
            - bottom
          description: 'Baseball: `top` or `bottom` of `last_inning`.'
          example: bottom
        double_header:
          type: boolean
          description: 'Baseball: whether the game is part of a doubleheader.'
          example: false
        game_number:
          type: integer
          description: 'Baseball: 1, or 2 for the second game of a doubleheader.'
          example: 1
        home_score:
          type: integer
          description: 'Soccer: home team goals.'
          example: 1
        away_score:
          type: integer
          description: 'Soccer: away team goals.'
          example: 0
        match_status:
          type: string
          enum:
            - not_started
            - 1st_half
            - 2nd_half
            - 1st_extra
            - 2nd_extra
            - penalties
            - interrupted
            - halftime
            - extra_time_halftime
            - ended
          description: >-
            Soccer: the match status. See [Soccer match
            status](/predictions/enums#soccer-match-status-state-match_status).
          example: 2nd_half
        home_penalties:
          type: integer
          description: >-
            Soccer: home team goals in a penalty shootout. Absent unless there
            is one.
          example: 4
        away_penalties:
          type: integer
          description: >-
            Soccer: away team goals in a penalty shootout. Absent unless there
            is one.
          example: 3
        rounds:
          type: array
          description: 'Golf only: the tournament rounds and their status.'
          items:
            $ref: '#/components/schemas/GolfRound'
        weather:
          $ref: '#/components/schemas/Weather'
          description: Conditions at the venue, when the game feed has them.
        weather_icon:
          type: string
          enum:
            - rain
            - snow
            - wind
            - cloud
            - night
            - indoor
            - clear
            - unknown
          description: >-
            An icon key for the conditions, when the game feed has them: `rain`,
            `snow`, `wind`, `cloud`, `night`, `indoor`, `clear` or `unknown`.
          example: cloud
      title: GameState
      example:
        sport: football
        league: nfl
        clock: '15:00'
        quarter: 1
        phase: pregame
        weather:
          condition: Partly Cloudy
          humidity: 62
          temp: 41
          wind_direction: WNW
          wind_speed: 12
        weather_icon: cloud
    PlayerDetails:
      type: object
      required:
        - league
        - first_name
        - last_name
        - abbreviated_name
        - status
      properties:
        league:
          $ref: '#/components/schemas/SubCategoryId'
          description: The league. See [Leagues](/predictions/enums#leagues-sub_category).
          example: nfl
        first_name:
          type: string
          description: The player's first name.
          example: Patrick
        last_name:
          type: string
          description: The player's last name.
          example: Mahomes
        abbreviated_name:
          type: string
          description: Short display name, as the game feed abbreviates it.
          example: P.Mahomes
        status:
          type: string
          description: The player's roster status code as the game feed reports it.
          example: ACT
        position:
          type: string
          description: 'Team sports only: position abbreviation.'
          example: QB
        jersey_number:
          type: string
          description: 'Team sports only: jersey number, as a string.'
          example: '15'
        throw_hand:
          type: string
          enum:
            - L
            - R
          description: 'MLB only: `L` or `R`.'
          example: R
        bat_hand:
          type: string
          enum:
            - L
            - R
            - B
          description: 'MLB only: `L`, `R`, or `B` for a switch hitter.'
          example: R
        statistics:
          $ref: '#/components/schemas/MLBSeasonStatistics'
          description: 'MLB only: season statistics.'
        splits:
          $ref: '#/components/schemas/MLBPlayerSplits'
          description: 'MLB only: hitting splits by opposing pitcher hand.'
        country:
          type: string
          description: 'PGA only: country name.'
          example: United States
        country_abb:
          type: string
          description: 'PGA only: country abbreviation.'
          example: USA
        amateur:
          type: boolean
          description: 'PGA only: whether the player is an amateur.'
          example: false
      title: PlayerDetails
      description: A player's details. Which optional fields appear depends on the league.
      example:
        league: nfl
        first_name: Patrick
        last_name: Mahomes
        abbreviated_name: P.Mahomes
        status: ACT
        position: QB
        jersey_number: '15'
    OrderbookSide:
      title: OrderbookSide
      type: object
      description: The YES and NO levels on one side of the book.
      required:
        - 'yes'
        - 'no'
      properties:
        'yes':
          type: array
          items:
            $ref: '#/components/schemas/PriceLevel'
          description: Levels for the YES contract, price ascending.
        'no':
          type: array
          items:
            $ref: '#/components/schemas/PriceLevel'
          description: Levels for the NO contract, price ascending.
      example:
        'yes':
          - q: 4210
            p: 0.56
          - q: 3185
            p: 0.57
          - q: 2650
            p: 0.58
        'no':
          - q: 3920
            p: 0.39
          - q: 2875
            p: 0.4
          - q: 2140
            p: 0.41
    TeamRecord:
      title: TeamRecord
      type: object
      required:
        - wins
        - losses
      properties:
        wins:
          type: integer
          description: Wins this season.
          example: 7
        losses:
          type: integer
          description: Losses this season.
          example: 1
        ties:
          type: integer
          description: Ties this season. Only in leagues that can tie.
          example: 0
      description: A team's season record.
      example:
        wins: 7
        losses: 1
    GolfRound:
      title: GolfRound
      type: object
      description: One round of a golf tournament.
      required:
        - number
        - status
      properties:
        number:
          type: integer
          description: Round number, from 1.
          example: 2
        status:
          $ref: '#/components/schemas/GameStatus'
          description: The round's status, with the same values as a game's `status`.
          example: IN_PROGRESS
      example:
        number: 2
        status: IN_PROGRESS
    Weather:
      type: object
      required:
        - condition
      properties:
        condition:
          type: string
          description: Conditions at the venue as the game data feed describes them.
          example: Partly Cloudy
        humidity:
          type: number
          description: Relative humidity, percent.
          example: 62
        temp:
          type: number
          description: Temperature at the venue as the game data feed reports it.
          example: 41
        wind_direction:
          type: string
          description: Wind direction as the game data feed reports it.
          example: WNW
        wind_speed:
          type: number
          description: Wind speed as the game data feed reports it.
          example: 12
      title: Weather
      description: Conditions at the venue, from the game data feed.
      example:
        condition: Partly Cloudy
        humidity: 62
        temp: 41
        wind_direction: WNW
        wind_speed: 12
    MLBSeasonStatistics:
      title: MLBSeasonStatistics
      type: object
      description: >-
        A player's season statistics. A hitter carries `hitting`, a pitcher
        `pitching`, a two-way player both.
      properties:
        hitting:
          $ref: '#/components/schemas/MLBSeasonHittingStatistics'
          description: Season hitting. Present for a hitter, and for a two-way player.
        pitching:
          $ref: '#/components/schemas/MLBSeasonPitchingStatistics'
          description: Season pitching. Present for a pitcher, and for a two-way player.
      example:
        hitting:
          at_bats_per_game: 3.62
          hits_per_game: 1.07
          runs_per_game: 0.85
          rbi_per_game: 0.9
          total_bases_per_game: 2.24
          home_runs_per_game: 0.33
          total_strikeouts_per_game: 1.04
          stolen_bases_per_game: 0.06
          at_bats: 543
          hits: 160
          walks: 112
          home_runs: 50
          runs: 128
          rbi: 135
          stolen_bases: 9
          doubles: 26
          games_played: 150
          games_started: 148
          grounded_into_double_play: 14
          hit_by_pitch: 6
          intentional_walks: 18
          plate_appearances: 671
          reached_on_error: 3
          sacrifice_flys: 7
          singles: 82
          slugging_percentage: 0.637
          total_bases: 336
          total_strikeouts: 156
          triples: 2
          on_base_plus_slugging_percentage: 1.071
          on_base_percentage: 0.434
          batting_average: '.295'
    MLBPlayerSplits:
      title: MLBPlayerSplits
      type: object
      description: Hitting splits by opposing pitcher hand.
      properties:
        hitting:
          $ref: '#/components/schemas/MLBPlayerHittingSplits'
          description: Hitting splits. Present for a hitter.
      example:
        hitting:
          pitching_hand:
            - value: L
              at_bats: 131
              hits: 41
              walks: 31
              home_runs: 13
              runs: 33
              rbi: 36
              stolen_bases: 2
              doubles: 7
              hit_by_pitch: 2
              intentional_walks: 5
              singles: 21
              slugging_percentage: 0.672
              total_strikeouts: 35
              triples: 0
              on_base_plus_slugging_percentage: 1.122
              on_base_percentage: 0.45
              batting_average: '.313'
            - value: R
              at_bats: 412
              hits: 119
              walks: 81
              home_runs: 37
              runs: 95
              rbi: 99
              stolen_bases: 2
              doubles: 19
              hit_by_pitch: 2
              intentional_walks: 5
              singles: 61
              slugging_percentage: 0.626
              total_strikeouts: 121
              triples: 2
              on_base_plus_slugging_percentage: 1.056
              on_base_percentage: 0.43
              batting_average: '.289'
    PriceLevel:
      type: object
      description: One level of the order book.
      required:
        - p
        - q
      properties:
        p:
          type: number
          description: Price per contract in dollars, up to 4 decimal places.
          example: 0.58
        q:
          type: number
          description: Contracts resting at that price. Can be fractional.
          example: 2650
      title: PriceLevel
      example:
        q: 2650
        p: 0.58
    MLBSeasonHittingStatistics:
      title: MLBSeasonHittingStatistics
      type: object
      description: Season hitting totals and per-game rates.
      required:
        - at_bats_per_game
        - hits_per_game
        - runs_per_game
        - rbi_per_game
        - total_bases_per_game
        - home_runs_per_game
        - total_strikeouts_per_game
        - stolen_bases_per_game
        - at_bats
        - hits
        - walks
        - home_runs
        - runs
        - rbi
        - stolen_bases
        - doubles
        - games_played
        - games_started
        - grounded_into_double_play
        - hit_by_pitch
        - intentional_walks
        - plate_appearances
        - reached_on_error
        - sacrifice_flys
        - singles
        - slugging_percentage
        - total_bases
        - total_strikeouts
        - triples
        - on_base_plus_slugging_percentage
        - on_base_percentage
        - batting_average
      properties:
        at_bats_per_game:
          type: number
          description: At-bats per game played.
          example: 3.62
        hits_per_game:
          type: number
          description: Hits per game played.
          example: 1.07
        runs_per_game:
          type: number
          description: Runs scored per game played.
          example: 0.85
        rbi_per_game:
          type: number
          description: Runs batted in per game played.
          example: 0.9
        total_bases_per_game:
          type: number
          description: Total bases per game played.
          example: 2.24
        home_runs_per_game:
          type: number
          description: Home runs per game played.
          example: 0.33
        total_strikeouts_per_game:
          type: number
          description: Strikeouts per game played.
          example: 1.04
        stolen_bases_per_game:
          type: number
          description: Stolen bases per game played.
          example: 0.06
        at_bats:
          type: number
          description: At-bats this season.
          example: 543
        hits:
          type: number
          description: Hits this season.
          example: 160
        walks:
          type: number
          description: Walks this season.
          example: 112
        home_runs:
          type: number
          description: Home runs this season.
          example: 50
        runs:
          type: number
          description: Runs scored this season.
          example: 128
        rbi:
          type: number
          description: Runs batted in this season.
          example: 135
        stolen_bases:
          type: number
          description: Stolen bases this season.
          example: 9
        doubles:
          type: number
          description: Doubles this season.
          example: 26
        games_played:
          type: number
          description: Games played this season.
          example: 150
        games_started:
          type: number
          description: Games started this season.
          example: 148
        grounded_into_double_play:
          type: number
          description: Times grounded into a double play.
          example: 14
        hit_by_pitch:
          type: number
          description: Times hit by a pitch.
          example: 6
        intentional_walks:
          type: number
          description: Intentional walks received.
          example: 18
        plate_appearances:
          type: number
          description: Plate appearances this season.
          example: 671
        reached_on_error:
          type: number
          description: Times reached base on an error.
          example: 3
        sacrifice_flys:
          type: number
          description: Sacrifice flies.
          example: 7
        singles:
          type: number
          description: Singles this season.
          example: 82
        slugging_percentage:
          type: number
          description: Slugging percentage, as a decimal.
          example: 0.637
        total_bases:
          type: number
          description: Total bases this season.
          example: 336
        total_strikeouts:
          type: number
          description: Strikeouts this season.
          example: 156
        triples:
          type: number
          description: Triples this season.
          example: 2
        on_base_plus_slugging_percentage:
          type: number
          description: On-base plus slugging (OPS), as a decimal.
          example: 1.071
        on_base_percentage:
          type: number
          description: On-base percentage, as a decimal.
          example: 0.434
        batting_average:
          type: string
          example: '.295'
          description: Batting average as display text, e.g. `.295`.
      example:
        at_bats_per_game: 3.62
        hits_per_game: 1.07
        runs_per_game: 0.85
        rbi_per_game: 0.9
        total_bases_per_game: 2.24
        home_runs_per_game: 0.33
        total_strikeouts_per_game: 1.04
        stolen_bases_per_game: 0.06
        at_bats: 543
        hits: 160
        walks: 112
        home_runs: 50
        runs: 128
        rbi: 135
        stolen_bases: 9
        doubles: 26
        games_played: 150
        games_started: 148
        grounded_into_double_play: 14
        hit_by_pitch: 6
        intentional_walks: 18
        plate_appearances: 671
        reached_on_error: 3
        sacrifice_flys: 7
        singles: 82
        slugging_percentage: 0.637
        total_bases: 336
        total_strikeouts: 156
        triples: 2
        on_base_plus_slugging_percentage: 1.071
        on_base_percentage: 0.434
        batting_average: '.295'
    MLBSeasonPitchingStatistics:
      title: MLBSeasonPitchingStatistics
      type: object
      description: Season pitching totals.
      required:
        - innings_pitched
        - pitch_count
        - hits_allowed
        - earned_runs
        - base_on_balls
        - strikeouts
        - home_runs_allowed
        - earned_run_average
        - shutout
        - complete_game
        - win
        - loss
        - save
        - hold
        - blown_save
        - quality_start
        - total_outs
      properties:
        innings_pitched:
          type: number
          description: >-
            Innings pitched, in baseball notation: `.1` and `.2` are one and two
            outs.
          example: 186.2
        pitch_count:
          type: number
          description: Pitches thrown this season.
          example: 2985
        hits_allowed:
          type: number
          description: Hits allowed.
          example: 151
        earned_runs:
          type: number
          description: Earned runs allowed.
          example: 58
        base_on_balls:
          type: number
          description: Walks issued.
          example: 44
        strikeouts:
          type: number
          description: Strikeouts recorded.
          example: 221
        home_runs_allowed:
          type: number
          description: Home runs allowed.
          example: 19
        earned_run_average:
          type: number
          description: Earned run average.
          example: 2.8
        shutout:
          type: number
          description: Shutouts.
          example: 1
        complete_game:
          type: number
          description: Complete games.
          example: 2
        win:
          type: number
          description: Wins.
          example: 15
        loss:
          type: number
          description: Losses.
          example: 7
        save:
          type: number
          description: Saves.
          example: 0
        hold:
          type: number
          description: Holds.
          example: 0
        blown_save:
          type: number
          description: Blown saves.
          example: 0
        quality_start:
          type: number
          description: Quality starts.
          example: 21
        total_outs:
          type: number
          description: Outs recorded.
          example: 560
      example:
        innings_pitched: 186.2
        pitch_count: 2985
        hits_allowed: 151
        earned_runs: 58
        base_on_balls: 44
        strikeouts: 221
        home_runs_allowed: 19
        earned_run_average: 2.8
        shutout: 1
        complete_game: 2
        win: 15
        loss: 7
        save: 0
        hold: 0
        blown_save: 0
        quality_start: 21
        total_outs: 560
    MLBPlayerHittingSplits:
      title: MLBPlayerHittingSplits
      type: object
      required:
        - pitching_hand
      properties:
        pitching_hand:
          type: array
          description: One entry per opposing pitcher hand, `L` and `R`.
          items:
            $ref: '#/components/schemas/MLBSeasonHittingSplitStatistics'
      description: Hitting splits keyed by opposing pitcher hand.
      example:
        pitching_hand:
          - value: L
            at_bats: 131
            hits: 41
            walks: 31
            home_runs: 13
            runs: 33
            rbi: 36
            stolen_bases: 2
            doubles: 7
            hit_by_pitch: 2
            intentional_walks: 5
            singles: 21
            slugging_percentage: 0.672
            total_strikeouts: 35
            triples: 0
            on_base_plus_slugging_percentage: 1.122
            on_base_percentage: 0.45
            batting_average: '.313'
          - value: R
            at_bats: 412
            hits: 119
            walks: 81
            home_runs: 37
            runs: 95
            rbi: 99
            stolen_bases: 2
            doubles: 19
            hit_by_pitch: 2
            intentional_walks: 5
            singles: 61
            slugging_percentage: 0.626
            total_strikeouts: 121
            triples: 2
            on_base_plus_slugging_percentage: 1.056
            on_base_percentage: 0.43
            batting_average: '.289'
    MLBSeasonHittingSplitStatistics:
      title: MLBSeasonHittingSplitStatistics
      type: object
      description: Season hitting against one pitching hand.
      required:
        - value
        - at_bats
        - hits
        - walks
        - home_runs
        - runs
        - rbi
        - stolen_bases
        - doubles
        - hit_by_pitch
        - intentional_walks
        - singles
        - slugging_percentage
        - total_strikeouts
        - triples
        - on_base_plus_slugging_percentage
        - on_base_percentage
        - batting_average
      properties:
        value:
          type: string
          enum:
            - L
            - R
          description: 'The opposing pitcher''s hand: `L` or `R`.'
          example: L
        at_bats:
          type: number
          description: At-bats against this hand.
          example: 131
        hits:
          type: number
          description: Hits against this hand.
          example: 41
        walks:
          type: number
          description: Walks against this hand.
          example: 31
        home_runs:
          type: number
          description: Home runs against this hand.
          example: 13
        runs:
          type: number
          description: Runs scored against this hand.
          example: 33
        rbi:
          type: number
          description: Runs batted in against this hand.
          example: 36
        stolen_bases:
          type: number
          description: Stolen bases against this hand.
          example: 2
        doubles:
          type: number
          description: Doubles against this hand.
          example: 7
        hit_by_pitch:
          type: number
          description: Times hit by a pitch.
          example: 2
        intentional_walks:
          type: number
          description: Intentional walks received.
          example: 5
        singles:
          type: number
          description: Singles against this hand.
          example: 21
        slugging_percentage:
          type: number
          description: Slugging percentage, as a decimal.
          example: 0.672
        total_strikeouts:
          type: number
          description: Strikeouts against this hand.
          example: 35
        triples:
          type: number
          description: Triples against this hand.
          example: 0
        on_base_plus_slugging_percentage:
          type: number
          description: On-base plus slugging (OPS), as a decimal.
          example: 1.122
        on_base_percentage:
          type: number
          description: On-base percentage, as a decimal.
          example: 0.45
        batting_average:
          type: string
          description: Batting average as display text, e.g. `.295`.
          example: '.313'
      example:
        value: L
        at_bats: 131
        hits: 41
        walks: 31
        home_runs: 13
        runs: 33
        rbi: 36
        stolen_bases: 2
        doubles: 7
        hit_by_pitch: 2
        intentional_walks: 5
        singles: 21
        slugging_percentage: 0.672
        total_strikeouts: 35
        triples: 0
        on_base_plus_slugging_percentage: 1.122
        on_base_percentage: 0.45
        batting_average: '.313'
  responses:
    TradingBadRequest:
      description: >-
        A query or path parameter failed validation (`Invalid request
        parameters`).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TradingError'
          examples:
            A query parameter failed validation:
              summary: A query parameter failed validation
              value:
                status: error
                error: BAD_REQUEST
                message: Invalid request parameters
              description: >-
                For example `?status=filled`, `?limit=0`, or a `request_id` with
                a character outside `A-Z a-z 0-9 _ -`.
    UnauthorizedUserScoped:
      description: >-
        The signature check failed, or the request had no `SPLASH-ACCESS-KEY`
        header. A failed check's `message` is one of `Unknown API key`, `API key
        revoked`, `Timestamp outside the allowed window` or `Invalid signature`.
        `API key revoked` is reported only when the signature is correct, so a
        wrong secret always reads `Invalid signature`. A request without the
        `SPLASH-ACCESS-KEY` header is not an API request and is refused with
        `You are not authorized to perform the requested action.` See
        [Authentication
        errors](/predictions/authentication#authentication-errors). This route
        also refuses `user_id` with the same message: it always acts as the
        key's own account.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TradingError'
          examples:
            Invalid signature:
              summary: Invalid signature
              value:
                status: error
                error: NOT_AUTHORIZED
                message: Invalid signature
              description: >-
                The signature does not match what Splash computed. Check that
                you signed the exact body bytes and the full path including
                `/predictions-service/api` and the query string.
            Timestamp outside the allowed window:
              summary: Timestamp outside the allowed window
              value:
                status: error
                error: NOT_AUTHORIZED
                message: Timestamp outside the allowed window
              description: >-
                `SPLASH-ACCESS-TIMESTAMP` is more than 30 seconds from server
                time. Check your clock.
            Unknown API key:
              summary: Unknown API key
              value:
                status: error
                error: NOT_AUTHORIZED
                message: Unknown API key
            API key revoked:
              summary: API key revoked
              value:
                status: error
                error: NOT_AUTHORIZED
                message: API key revoked
            Missing or misspelled key header:
              summary: Missing or misspelled key header
              value:
                status: error
                error: NOT_AUTHORIZED
                message: You are not authorized to perform the requested action.
              description: >-
                The request carried no `SPLASH-ACCESS-KEY` header, because it
                was not signed or the header name is misspelled. A request
                without the `SPLASH-ACCESS-KEY` header is not an API request and
                is refused. Send all three `SPLASH-ACCESS-*` headers.
            user_id was passed:
              summary: user_id was passed
              value:
                status: error
                error: NOT_AUTHORIZED
                message: You are not authorized to perform the requested action.
              description: >-
                This route always acts as the key's own account, so `user_id` is
                refused rather than ignored. Remove it.
    TradingNotFound:
      description: No such order or position for this account.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TradingError'
          examples:
            No such order or position on your account:
              summary: No such order or position on your account
              value:
                status: error
                error: NOT_FOUND
                message: The requested resource was not found.
              description: >-
                Also what a position or market with no open holding answers. An
                order placed a moment ago does not 404: it answers with a
                PendingOrder until it is recorded.
    RateLimited:
      description: >-
        Too Many Requests: more than 10 requests per second from your IP
        address. The request was not handled and nothing was recorded. If the
        response has a `Retry-After` header, wait that many seconds; otherwise
        back off (about 1 second, with jitter). Then send the same request
        again; on `POST /trading/orders` reuse the same `request_id`. See [Rate
        limits](/predictions/rate-limits).
      headers:
        Retry-After:
          description: >-
            Optional, and may be absent. When present, the number of seconds to
            wait before retrying; when absent, back off about 1 second with
            jitter.
          required: false
          schema:
            type: integer
          example: 1
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TooManyRequestsError'
          examples:
            Over the limit:
              summary: Over the limit
              value:
                status: error
                error: TOO_MANY_REQUESTS
                message: Too many requests, try again later
              description: >-
                More than 10 requests per second from your IP address. Nothing
                was recorded; wait about a second (or the `Retry-After` seconds
                when that header is present) and send the same request again.
    InternalError:
      description: >-
        The request could not be handled. On `POST /trading/orders` the order
        was not placed: poll `GET /orders?request_id=` before trying again. If
        the poll returns the order, follow it; otherwise send the order again
        with a new `request_id`, because this one now reads `cancelled`. See
        [Order outcomes and
        retries](/predictions/trading#order-outcomes-and-retries).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            The request could not be handled:
              summary: The request could not be handled
              value:
                status: error
                error: INTERNAL_ERROR
                message: >-
                  An internal error has occured and the request could not be
                  handled.
              description: >-
                The message is spelled `occured` on the wire. On `POST
                /trading/orders`, poll the `request_id` before trying again,
                then send the order with a new `request_id`.
    Unavailable:
      description: >-
        The Trading API cannot take signed requests right now
        (`TRADING_API_UNAVAILABLE`). Nothing was read or recorded. Retry later.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TradingError'
          examples:
            The Trading API is not available:
              summary: The Trading API is not available
              value:
                status: error
                error: TRADING_API_UNAVAILABLE
                message: The trading API is not available.
  securitySchemes:
    SplashAccessKey:
      type: apiKey
      in: header
      name: SPLASH-ACCESS-KEY
      description: >-
        Your API key id. Keys are issued by Splash on request, never expire, and
        stay valid until Splash revokes them, which it does on request. See
        [Authentication](/predictions/authentication).
    SplashAccessTimestamp:
      type: apiKey
      in: header
      name: SPLASH-ACCESS-TIMESTAMP
      description: Unix milliseconds, within 30 seconds of server time.
    SplashAccessSignature:
      type: apiKey
      in: header
      name: SPLASH-ACCESS-SIGNATURE
      description: >-
        `base64(HMAC-SHA256(secret, timestamp + METHOD + path + body))`. See
        [Authentication](/predictions/authentication).

````

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