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

# Browse Active Markets

> Retrieves markets and groups that are active and not yet resolved, with optional category filtering

<Tip>
  For category- and property-based filtering (the structured filters Limitless uses to organize markets), use the **Market Pages** endpoints. Resolve a page with [Get Market Page by Path](/api-reference/navigation/get-page-by-path) to read its `baseFilter` and `filterGroups`, then call [List Markets for a Page](/api-reference/navigation/list-page-markets). `GET /markets/active` returns a flat list with basic filtering.
</Tip>

<Note>
  **`limit` is capped at 25.** Values above `25` are rejected with `400` (`limit must not be greater than 25`) — the endpoint never silently truncates. To read more than 25 markets, page with the `page` parameter; the response's `totalMarketsCount` tells you how many are available in total.
</Note>

<Note>
  **`tradeType` filter values.** Selects the market's trading model:

  * `amm` — Automated market maker. Prices are set algorithmically against a liquidity pool, and you trade directly against the curve.
  * `clob` — Central limit order book. Independent YES/NO bids and asks match at prices set by makers and takers. Supports market and limit orders. See [CLOB Overview](/user-guide/clob-overview).
  * `group` — Multi-outcome group (also called NegRisk / category markets). Multiple outcomes are bundled and only one can win; the NO shares across outcomes are linked, which makes collateral more efficient. See [NegRisk Markets](/user-guide/negrisk-overview).
</Note>

<Note>
  **`automationType` filter values.** Selects how a market is created and resolved:

  * `lumy` — Price-oracle-driven markets created by the recurring launch jobs (for example crypto or stock price ladders). Individual markets carry a `price_oracle_id`; group markets qualify when any child does. These resolve automatically at the deadline via the oracle (typically Pyth). The `Lumy` category tag is a branding label and is not the same signal — always filter by `automationType`, not by tag.
  * `manual` — Markets that are not oracle-driven and not sports/esports fixtures. Resolved by the Limitless team against the criteria on the market page, typically within 24–72 hours of the deadline. See [Market Resolution](/user-guide/market-resolution).
  * `sports` — Sports fixture markets (identified by a `fixtureId` or the sports event provider). Resolved from the fixture result feed.
</Note>

<Note>
  **`includeNextMarket` (optional).** Opt in to receive the next round of upfront-scheduled markets, such as crypto price ladders that run in back-to-back windows. When `true`, each affected market includes a `navigation.nextMarket` object with the successor's `slug`, `startAt`, `deadline`, and `tradable` flag. The current market also stays listed briefly during the activation gap, so the series is always represented by exactly one row.

  Use this when you want to prefetch the next round or open a websocket subscription before the current market expires. Leave it unset for the default listing behavior. Cursor tokens are scoped to this option, so do not switch it mid-pagination.

  ```bash theme={null}
  GET /markets/active?includeNextMarket=true
  ```

  The `tradable` flag is conservative in listings — a successor that has not yet activated reports `false`. Fetch the successor directly with [Get Market](/api-reference/markets/get-market) before submitting an order.
</Note>


## OpenAPI

````yaml GET /markets/active
openapi: 3.0.0
info:
  title: Limitless Exchange API
  description: >-

    # Limitless Exchange Trading API


    *Production-ready API for prediction market trading, portfolio management,
    and market data*


    > 🎯 **Quick Navigation**: [Authentication](#tag/authentication) |
    [Markets](#tag/markets) | [Trading](#tag/trading) |
    [Portfolio](#tag/portfolio)


    ---
      


    ## 🚀 Quick Start


    Choose your preferred programming language for complete end-to-end
    implementation:


    ### Overview


    The Limitless Exchange API offers both REST and WebSocket integration:


    **REST API (Trading)**:

    1. **🔐 Authentication**: Use API key for all programmatic access

    2. **📊 Fetch Market Data**: Get market info including venue contract
    addresses (once per market)

    3. **📋 Order Creation**: Build and sign orders using EIP-712 structured
    data

    4. **🚀 Order Submission**: Submit signed orders and receive confirmations


    **WebSocket API (Real-Time Data)**:

    1. **🔌 Connection**: Connect to `/markets` namespace for real-time updates

    2. **📊 Subscriptions**: Subscribe to market prices and position changes

    3. **📡 Events**: Handle live market data and transaction updates


    ### 🔐 Authentication for API Users


    > **⚠️ DEPRECATION NOTICE**: Cookie-based session authentication is
    deprecated and will be removed within weeks. Please migrate to API keys
    immediately.


    | Method | Header | Status |

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

    | **API Key** | `X-API-Key: lmts_...` | ✅ Required for programmatic access |

    | Cookie Session | `Cookie: limitless_session=...` | ⚠️ Deprecated (removal
    imminent) |


    **Getting an API Key**


    API keys can only be created via the Limitless Exchange UI:

    1. Log in to [limitless.exchange](https://limitless.exchange) using your
    wallet

    2. Click your profile menu (top right)

    3. Select "Api keys"

    4. Generate a new key


    **Using Your API Key**


    Include in all requests via the `X-API-Key` header:


    ```bash

    # REST API

    curl -H "X-API-Key: lmts_your_key_here"
    https://api.limitless.exchange/markets


    # WebSocket - pass X-API-Key header during connection handshake

    ```


    ### Migration from Cookie to API Key


    If you're currently using cookie-based authentication, migrate by:


    1. **Generate an API key** via the UI (profile menu → Api keys)

    2. **Replace cookie header** with API key header:


    ```diff

    # Before (deprecated)

    - Cookie: limitless_session=your_session_token


    # After

    + X-API-Key: lmts_your_key_here

    ```


    3. **Remove session management code** - no more login flow or cookie
    handling needed


    ### Important: Venue System for CLOB Markets


    CLOB markets use a **venue system** where each market is associated with
    specific contract addresses. Before placing orders:


    1. **Fetch market data once**: `GET /markets/:slug` returns venue
    information

    2. **Use venue.exchange**: This is the `verifyingContract` for EIP-712 order
    signing

    3. **Cache the venue**: Venue data is static per market - fetch once and
    reuse


    **Sample venue response:**

    ```json

    {
      "venue": {
        "exchange": "0xA1b2C3...",
        "adapter": "0xD4e5F6..."
      }
    }

    ```


    ### Required Approvals


    Before trading, set up token approvals based on order type:


    | Order Type | Market Type | Approve To |

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

    | BUY | All CLOB | USDC → `venue.exchange` |

    | SELL | Simple CLOB | CT → `venue.exchange` |

    | SELL | NegRisk/Grouped | CT → `venue.exchange` AND `venue.adapter` |


    ### Checksummed Addresses


    All addresses must use **checksummed format** (EIP-55 mixed-case):

    - Authentication: `x-account` header

    - Orders: `maker` and `signer` fields

    - Example: `0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed`


    ### Implementation Guides


    **[🐍 Python Quick Start](#description/-python-quick-start)**

    - REST API: eth-account, requests, and web3.py libraries

    - WebSocket: python-socketio, asyncio integration


    **[☕ Java Quick Start](#description/-java-quick-start)**  

    - REST API: Web3j, OkHttp3, and Jackson libraries


    **[📦 Node.js/TypeScript Quick
    Start](#description/-nodejs-typescript-quick-start)**

    - REST API: viem, ethers, and cross-fetch libraries

    - WebSocket: socket.io-client for real-time trading

    - Full TypeScript support with end-to-end examples


    **[🔌 WebSocket Integration](#description/-websocket-integration)**

    - Real-time market data and position updates

    - Production-ready Python client with authentication


    ---
      


    ## 🐍 Python Quick Start


    Complete end-to-end Python implementation for Limitless Exchange API
    integration.
      


    ### 🐍 Python E2E Order Creation Guide


    Complete Python implementation guide is being loaded from external
    documentation...


    **Guide Contents:**

    - 🔐 Complete authentication flow with eth-account

    - 📋 Order construction with Web3.py calculations

    - ✍️ EIP-712 structured data signing

    - 🚀 Order submission with requests library

    - ⚠️ Comprehensive error handling

    - 🛠️ Production deployment considerations


    *For the complete Python guide, ensure the file is available at
    docs/scripts-samples/python-e2e-order-creation.md*
        


    ## ☕ Java Quick Start


    Complete end-to-end Java implementation for Limitless Exchange API
    integration.
      


    ### ☕ Java E2E Order Creation Guide


    Complete Java enterprise implementation guide is being loaded from external
    documentation...


    **Guide Contents:**

    - 🔐 Complete authentication flow with Web3j

    - 📋 Order construction with BigInteger precision

    - ✍️ EIP-712 structured data signing

    - 🚀 Order submission with OkHttp3

    - ⚠️ Enterprise error handling patterns

    - 🏗️ Production Maven project structure


    *For the complete Java guide, ensure the file is available at
    docs/scripts-samples/java-e2e-order-creation.md*
        


    ## 📦 Node.js/TypeScript Quick Start


    Complete end-to-end Node.js/TypeScript implementation for trading and
    WebSocket subscriptions.
      


    ### 📦 Node.js/TypeScript Trading & WebSocket Guide


    Complete Node.js/TypeScript implementation guide is being loaded from
    external documentation...


    **Guide Contents:**

    - 🔐 **Authentication**: Wallet-based auth with ethers and viem

    - 📋 **Order Creation**: EIP-712 signing with viem WalletClient

    - 🚀 **Order Submission**: REST API integration with cross-fetch

    - 🔌 **WebSocket Subscriptions**: socket.io-client for real-time updates

    - 📊 **Market Data**: AMM prices and CLOB orderbook subscriptions

    - ⚠️ **Type Safety**: Full TypeScript support with proper types

    - 🛠️ **Production Ready**: Complete end-to-end working example


    **Key Features:**

    - **Combined Subscriptions**: Subscribe to both AMM and CLOB markets
    simultaneously

    - **Authentication Flow**: Complete wallet-based authentication with session
    management

    - **Trading Integration**: Place orders and receive real-time updates

    - **TypeScript First**: Type-safe implementation with proper interfaces


    *For the complete Node.js guide, ensure the file is available at
    docs/scripts-samples/node-socket-trading-and-subscribe.md*
        


    ## 🔌 WebSocket Integration


    Real-time market data and position updates using WebSocket connections.
      


    ### 🔌 WebSocket Real-Time Integration Guide


    Complete WebSocket implementation guide is being loaded from external
    documentation...


    **Guide Contents:**

    - 🔌 **WebSocket Connection**: python-socketio client with async support

    - 🔐 **Authentication**: JWT session cookie integration

    - 📊 **Market Subscriptions**: Real-time price updates and position changes

    - ⚡ **Event Handling**: Comprehensive event processing patterns

    - 🔄 **Auto-Reconnection**: Production-ready reconnection logic

    - 🛠️ **Error Recovery**: Robust error handling and fallback strategies


    **Key Features:**

    - **Public Mode**: Market price updates without authentication

    - **Authenticated Mode**: Full access to positions and transactions

    - **Multi-Market Support**: Subscribe to multiple markets simultaneously

    - **Production Ready**: Tested patterns for production deployment


    *For the complete WebSocket guide, ensure the file is available at
    docs/scripts-samples/python-socket-subscribe.md*
        
  version: '1.0'
  contact:
    name: API Support
    url: https://limitless.exchange
    email: hey@limitless.network
servers:
  - url: https://api.limitless.exchange
    description: Production API
security: []
tags:
  - name: Authentication
    description: User authentication and session management
  - name: Markets
    description: Browse, search, and analyze prediction markets
  - name: Market Navigation
    description: Navigation tree, market pages, and property filters
  - name: Trading
    description: Create, manage, and cancel orders
  - name: Portfolio
    description: Position tracking, trade history, and performance
  - name: Feed
    description: Public trading activity feeds
paths:
  /markets/active:
    get:
      tags:
        - Markets
      summary: Browse Active Markets
      description: >-
        Retrieves markets and groups that are active and not yet resolved, with
        optional category filtering
      operationId: MarketController_getActiveMarkets[1]
      parameters:
        - name: page
          required: false
          in: query
          description: Page number for pagination
          schema:
            type: number
            example: 1
        - name: limit
          required: false
          in: query
          description: Number of items per page
          schema:
            example: 10
            type: number
        - name: sortBy
          required: false
          in: query
          description: Sort by query parameter
          schema:
            $ref: '#/components/schemas/Object'
        - name: tradeType
          required: false
          in: query
          description: Filter by trade type (amm, clob, or group)
          schema:
            enum:
              - amm
              - clob
              - group
            type: string
        - name: automationType
          required: false
          in: query
          description: Filter by automation type (manual, lumy, or sports)
          schema:
            enum:
              - manual
              - lumy
              - sports
            type: string
        - name: includeNextMarket
          required: false
          in: query
          description: Include upfront-scheduled successor navigation
          schema:
            type: boolean
        - name: categoryId
          required: false
          in: query
          description: Filter markets by category ID
          schema:
            type: number
      responses:
        '200':
          description: Active markets and groups with volume and liquidity data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrowseActiveMarketsResponseDto'
        '500':
          description: Server error when retrieving markets data
components:
  schemas:
    Object:
      type: object
      properties: {}
    BrowseActiveMarketsResponseDto:
      type: object
      properties:
        data:
          type: array
          description: >-
            Array of active markets with complete trading data including volume,
            liquidity, and recent feed events
          example:
            - id: 7495
              address: '0x76d3e2098Be66Aa7E15138F467390f0Eb7349B9b'
              conditionId: >-
                0x812f578437dc536def1412e4e593ef310884262c22868b30c1e58582e5f3e9bf
              title: DOGE Up or Down - Hourly
              description: >-
                This market will resolve to "Up" if the price of DOGE is above
                the opening price...
              collateralToken:
                address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                decimals: 6
                symbol: USDC
              creator:
                name: Limitless
                imageURI: https://limitless.exchange/assets/images/logo.svg
                link: https://x.com/trylimitless
              prices:
                - 42.8
                - 57.2
              categories:
                - Hourly
              tags:
                - Lumy
                - Recurring
                - Hourly
                - Simple Mode
              status: FUNDED
              expired: false
              expirationDate: Sep 1, 2025
              expirationTimestamp: 1756728000000
              volume: '164109293'
              volumeFormatted: '164.109293'
              openInterest: '48310707'
              openInterestFormatted: '48.310707'
              liquidity: '50000000'
              liquidityFormatted: '50.000000'
              tradeType: amm
              marketType: single
              slug: doge-up-or-down-1-hour-1756724413009
              feedEvents:
                - eventType: NEW_TRADE
                  timestamp: '2025-09-01T11:30:31.000Z'
                  user:
                    id: 7080
                    account: '0xea27f6788F083e6070961d3E52A2e596367E04CC'
                    name: GG
                    rankName: Bronze
                    points: '0.00000000'
                  data:
                    title: DOGE Up or Down - Hourly
                    address: '0x76d3e2098Be66Aa7E15138F467390f0Eb7349B9b'
                    strategy: Buy
                    outcome: Down
                    contracts: '9.071313'
                    tradeAmount: '5'
                    tradeAmountUSD: '4.999525'
                    marketId: 7495
          items:
            type: object
            description: Market object with complete trading data (FEMarket type)
            additionalProperties: true
        totalMarketsCount:
          type: number
          description: Total number of active markets available for pagination
          example: 150
      required:
        - data
        - totalMarketsCount

````