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

# Get last trade prices (batch)

> Batch last trade prices (request-body form).



## OpenAPI

````yaml /api-reference/openapi.yaml post /last-trades-prices
openapi: 3.0.3
info:
  title: XO Orderbook API
  description: |
    Public REST surface of the XO CLOB API.

    XO mainnet chain id is `3223`. The EIP-712 order domain is
    `XO Market CLOB` with `verifyingContract` set to the
    [CTF Exchange](/) address. See
    [Smart accounts](../guides/smart-accounts) for the smart-account
    identity model and ERC-1271 order signing.

    Wire conventions:
      * Prices are trimmed decimal strings (e.g. `"0.5"`, `"0.555"`).
      * Sizes are decimal-string integers in human shares.
      * Timestamps in trade and book responses are stringified Unix
        seconds / milliseconds (the SDK uses `TimestampSeconds<String>`
        / `TimestampMilliSeconds<String>`).
      * Token IDs are decimal U256 strings; condition IDs are
        `0x`-prefixed 32-byte hex.
  version: 1.0.0
  contact:
    name: XO Market
    url: https://beta.xo.market
servers:
  - url: https://orderbooks.xo.market
    description: Mainnet (XO chain id 3223)
security: []
tags:
  - name: Authentication
    description: >-
      Create and manage API keys. The L1 ClobAuth EIP-712 flow mints HMAC
      credentials that authenticate every other private request.
  - name: Market Data
    description: >-
      Public reads for books, prices, midpoints, spreads, last trades, and price
      history. Also includes server time and per-token configuration.
  - name: Markets
    description: >-
      Discovery for tradable markets, including pagination and SDK-compatible
      simplified shapes.
  - name: Trade
    description: Place, cancel, and inspect orders and trades for the authenticated maker.
  - name: Account
    description: Maker balance, allowance, positions, and claimable settled positions.
paths:
  /last-trades-prices:
    description: |
      Both GET and POST route to the same handler. GET accepts a JSON
      body for client compatibility. Tokens with no trade data are
      silently omitted from the response.
    post:
      tags:
        - Market Data
      summary: Get last trade prices (batch)
      description: Batch last trade prices (request-body form).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LastTradesPricesRequest'
            examples:
              two_tokens:
                value:
                  - token_id: >-
                      26516164265702901957933644848127860370782874751279270726689263951695181556943
                  - token_id: >-
                      13730057904096984444199595880113152612639388204530324084054099203558669491245
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LastTradesPricesResponse'
              examples:
                populated:
                  summary: both tokens have trades (illustrative)
                  value:
                    - token_id: >-
                        26516164265702901957933644848127860370782874751279270726689263951695181556943
                      price: '0.553'
                      side: BUY
                    - token_id: >-
                        13730057904096984444199595880113152612639388204530324084054099203558669491245
                      price: '0.447'
                      side: SELL
      x-codeSamples:
        - lang: Rust
          label: xo-orderbook-client-rs
          source: >
            // Same SDK call as the GET form — the client picks the verb.

            use xo_orderbook_client::orderbook::{Client, Config};

            use
            xo_orderbook_client::orderbook::types::request::LastTradePriceRequest;

            use xo_orderbook_client::types::U256;


            let client = Client::new("https://orderbooks.xo.market",
            Config::default())?;

            let token_id = U256::from_str_radix(
                "26516164265702901957933644848127860370782874751279270726689263951695181556943",
                10,
            )?;

            let resp = client
                .last_trades_prices(&[LastTradePriceRequest { token_id }])
                .await?;
components:
  schemas:
    LastTradesPricesRequest:
      type: array
      description: |
        Batch request body for clients that use `GET` with a JSON body.
      items:
        type: object
        required:
          - token_id
        properties:
          token_id:
            type: string
    LastTradesPricesResponse:
      type: array
      description: |
        Tokens with no trade data are silently omitted (verified
        against the canonical CLOB on 2026-04-17). The singular
        `/last-trade-price` instead returns `"0.5"`/`""` for empty
        tokens.
      items:
        type: object
        required:
          - price
          - side
          - token_id
        properties:
          price:
            type: string
          side:
            type: string
            enum:
              - BUY
              - SELL
              - ''
          token_id:
            type: string

````