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

# Resolve Stable Slug

> Resolve a stable recurring URL slug (e.g. btc-hourly-price) to the currently active market or ladder group

Recurring series (5-minute, hourly, daily crypto, etc.) each expose a **stable slug**. The stable slug always points at the currently active slot instead of a specific dated slug. Use this endpoint to link to or fetch "the current BTC hourly market" without knowing which slot is open.

The path parameter is `slug` (not `stableSlug`). Pass the stable identifier, for example `btc-hourly-price`.

* `200` — resolved market or ladder group data (single market or group).
* `404` — no market or group is currently active for that stable slug.

<Tip>
  To pre-fetch upcoming slots for the same series, use [Market Timeline](/api-reference/markets/timeline).
</Tip>


## OpenAPI

````yaml GET /markets/stable/{slug}
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/stable/{slug}:
    get:
      tags:
        - Markets
      summary: Resolve Stable Slug
      description: >-
        Resolves a stable recurring URL slug to the current active market or
        ladder group
      operationId: MarketController_findByStableSlug
      parameters:
        - name: slug
          required: true
          in: path
          description: Stable slug identifier (e.g. btc-hourly-price)
          schema:
            example: btc-hourly-price
            type: string
      responses:
        '200':
          description: Resolved market or group data (single market or ladder group)
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/StandaloneClobMarketResponseDto'
                  - $ref: '#/components/schemas/NegRiskGroupResponseDto'
                  - $ref: '#/components/schemas/AmmMarketResponseDto'
        '404':
          description: No market or group found for the given stable slug
components:
  schemas:
    StandaloneClobMarketResponseDto:
      type: object
      properties:
        id:
          type: number
          description: Market ID
          example: 7494
        conditionId:
          type: string
          description: Condition ID
          example: '0x947b8e6812bf8ac27687fa25b642d6a25bf5c7292068e5aef129d9d26e9780b8'
        negRiskRequestId:
          type: string
          description: NegRisk request ID
          example: null
          nullable: true
        description:
          type: string
          description: Market description
        collateralToken:
          $ref: '#/components/schemas/CollateralTokenDto'
        title:
          type: string
          description: Market title
        proxyTitle:
          type: string
          description: Proxy title
          nullable: true
        expirationDate:
          type: string
          description: Expiration date
        expirationTimestamp:
          type: number
          description: Expiration timestamp
        createdAt:
          type: string
          description: Created timestamp
        updatedAt:
          type: string
          description: Updated timestamp
        categories:
          description: Categories
          type: array
          items:
            type: string
        status:
          type: string
          description: Market status
        expired:
          type: boolean
          description: Is expired
        creator:
          $ref: '#/components/schemas/CreatorDto'
        tags:
          description: Tags
          type: array
          items:
            type: string
        frequency:
          type: string
          description: Schedule frequency for timeline
          example: minutely
        subFrequency:
          type: string
          description: Schedule sub-frequency for timeline
          nullable: true
          example: minutes_5
        volume:
          type: string
          description: Volume
        volumeFormatted:
          type: string
          description: Formatted volume
        tokens:
          $ref: '#/components/schemas/TokenPairDto'
        prices:
          description: Prices
          type: array
          items:
            type: number
        tradePrices:
          $ref: '#/components/schemas/TradePricesDto'
        isRewardable:
          type: boolean
          description: Is rewardable
        slug:
          type: string
          description: Market slug
        tradeType:
          type: string
          description: Trade type
          example: clob
        marketType:
          type: string
          description: Market type
          example: single
        priorityIndex:
          type: number
          description: Priority index
        winningOutcomeIndex:
          type: number
          description: Winning outcome index
          nullable: true
        metadata:
          $ref: '#/components/schemas/MetadataDto'
        settings:
          $ref: '#/components/schemas/MarketSettingsDto'
        logo:
          type: string
          description: Market logo
          nullable: true
        source:
          type: string
          description: Market source (e.g. ugm:crypto, ugm:sports)
          nullable: true
        feedEvents:
          description: Feed events
          type: array
          items:
            $ref: '#/components/schemas/FeedEventDto'
        properties:
          description: Admin-assigned market analytics properties
          type: array
          items:
            $ref: '#/components/schemas/PublicMarketPropertyDto'
      required:
        - id
        - conditionId
        - negRiskRequestId
        - description
        - collateralToken
        - title
        - proxyTitle
        - expirationDate
        - expirationTimestamp
        - createdAt
        - updatedAt
        - categories
        - status
        - expired
        - creator
        - tags
        - volume
        - volumeFormatted
        - tokens
        - prices
        - tradePrices
        - isRewardable
        - slug
        - tradeType
        - marketType
        - priorityIndex
        - winningOutcomeIndex
        - metadata
        - settings
        - logo
        - source
        - properties
    NegRiskGroupResponseDto:
      type: object
      properties:
        id:
          type: number
          description: Group ID
          example: 10000078
        slug:
          type: string
          description: Group slug
        outcomeTokens:
          description: Outcome tokens
          type: array
          items:
            type: string
        title:
          type: string
          description: Group title
        ogImageURI:
          type: string
          description: OG image URI
        imageUrl:
          type: string
          description: Group image URL
          nullable: true
        expirationDate:
          type: string
          description: Expiration date
        expirationTimestamp:
          type: number
          description: Expiration timestamp
        expired:
          type: boolean
          description: Is expired
        creator:
          $ref: '#/components/schemas/CreatorDto'
        collateralToken:
          $ref: '#/components/schemas/CollateralTokenDto'
        tags:
          description: Tags
          type: array
          items:
            type: string
        frequency:
          type: string
          description: Schedule frequency for timeline
          example: minutely
        subFrequency:
          type: string
          description: Schedule sub-frequency for timeline
          nullable: true
          example: minutes_5
        tradeType:
          type: string
          description: Trade type
          example: clob
        marketType:
          type: string
          description: Market type
          example: group
        createdAt:
          type: string
          description: Created timestamp
        updatedAt:
          type: string
          description: Updated timestamp
        categories:
          description: Categories
          type: array
          items:
            type: string
        status:
          type: string
          description: Status
        priorityIndex:
          type: number
          description: Priority index
        properties:
          description: Admin-assigned group analytics properties
          type: array
          items:
            $ref: '#/components/schemas/PublicMarketPropertyDto'
        negRiskMarketId:
          type: string
          description: NegRisk market ID
        markets:
          description: Markets in the group
          type: array
          items:
            $ref: '#/components/schemas/GroupMarketDto'
        metadata:
          $ref: '#/components/schemas/MetadataDto'
        volume:
          type: string
          description: Volume
        volumeFormatted:
          type: string
          description: Formatted volume
        dailyReward:
          type: string
          description: Daily reward
        source:
          type: string
          description: Market source (e.g. ugm:crypto, ugm:sports)
          nullable: true
        feedEvents:
          description: Feed events
          type: array
          items:
            $ref: '#/components/schemas/FeedEventDto'
      required:
        - id
        - slug
        - outcomeTokens
        - title
        - ogImageURI
        - imageUrl
        - expirationDate
        - expirationTimestamp
        - expired
        - creator
        - collateralToken
        - tags
        - tradeType
        - marketType
        - createdAt
        - updatedAt
        - categories
        - status
        - priorityIndex
        - properties
        - negRiskMarketId
        - markets
        - metadata
        - volume
        - volumeFormatted
        - dailyReward
        - source
        - feedEvents
    AmmMarketResponseDto:
      type: object
      properties:
        id:
          type: number
          description: Market ID
          example: 7497
        properties:
          description: Admin-assigned market analytics properties
          type: array
          items:
            $ref: '#/components/schemas/PublicMarketPropertyDto'
        address:
          type: string
          description: Market address
        conditionId:
          type: string
          description: Condition ID
        description:
          type: string
          description: Market description
        collateralToken:
          $ref: '#/components/schemas/CollateralTokenDto'
        title:
          type: string
          description: Market title
        proxyTitle:
          type: string
          description: Proxy title
          nullable: true
        positionIds:
          description: Position IDs
          type: array
          items:
            type: string
        ogImageURI:
          type: string
          description: OG image URI
          nullable: true
        expirationDate:
          type: string
          description: Expiration date
        expirationTimestamp:
          type: number
          description: Expiration timestamp
        createdAt:
          type: string
          description: Created timestamp
        updatedAt:
          type: string
          description: Updated timestamp
        categories:
          description: Categories
          type: array
          items:
            type: string
        winningOutcomeIndex:
          type: number
          description: Winning outcome index
          nullable: true
        status:
          type: string
          description: Market status
        expired:
          type: boolean
          description: Is expired
        creator:
          $ref: '#/components/schemas/CreatorDto'
        tags:
          description: Tags
          type: array
          items:
            type: string
        openInterest:
          type: string
          description: Open interest
        openInterestFormatted:
          type: string
          description: Formatted open interest
        volume:
          type: string
          description: Volume
        volumeFormatted:
          type: string
          description: Formatted volume
        liquidity:
          type: string
          description: Liquidity
        liquidityFormatted:
          type: string
          description: Formatted liquidity
        slug:
          type: string
          description: Market slug
        tradeType:
          type: string
          description: Trade type
          example: amm
        marketType:
          type: string
          description: Market type
          example: single
        priorityIndex:
          type: number
          description: Priority index
        metadata:
          $ref: '#/components/schemas/MetadataDto'
        logo:
          type: string
          description: Market logo
          nullable: true
        source:
          type: string
          description: Market source (e.g. ugm:crypto, ugm:sports)
          nullable: true
        feedEvents:
          description: Feed events
          type: array
          items:
            $ref: '#/components/schemas/FeedEventDto'
      required:
        - id
        - properties
        - address
        - conditionId
        - description
        - collateralToken
        - title
        - proxyTitle
        - positionIds
        - ogImageURI
        - expirationDate
        - expirationTimestamp
        - createdAt
        - updatedAt
        - categories
        - winningOutcomeIndex
        - status
        - expired
        - creator
        - tags
        - openInterest
        - openInterestFormatted
        - volume
        - volumeFormatted
        - liquidity
        - liquidityFormatted
        - slug
        - tradeType
        - marketType
        - priorityIndex
        - metadata
        - logo
        - source
        - feedEvents
    CollateralTokenDto:
      type: object
      properties:
        address:
          type: string
          description: Token contract address
          example: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
        decimals:
          type: number
          description: Token decimal places
          example: 6
        symbol:
          type: string
          description: Token symbol
          example: USDC
      required:
        - address
        - decimals
        - symbol
    CreatorDto:
      type: object
      properties:
        name:
          type: string
          description: Creator display name
          example: Limitless
        imageURI:
          type: string
          description: Creator profile image URI
          example: https://limitless.exchange/assets/images/logo.svg
          nullable: true
        link:
          type: string
          description: Creator social media link
          example: https://x.com/trylimitless
          nullable: true
        address:
          type: string
          description: Creator wallet address
          example: '0x55257A9a03601B0587Ab4752FD42A87c4Bad2e1e'
      required:
        - name
        - imageURI
        - link
        - address
    TokenPairDto:
      type: object
      properties:
        'yes':
          type: string
          description: YES token ID
          example: >-
            78695809706775235377718830617502491971378663350108823320552375535762230401980
        'no':
          type: string
          description: NO token ID
          example: >-
            8642544735724967665477930445154251213223700833624811358896571351781151616445
      required:
        - 'yes'
        - 'no'
    TradePricesDto:
      type: object
      properties:
        buy:
          type: object
          description: Buy prices for market and limit orders
          properties:
            market:
              type: array
              items:
                type: number
              example:
                - 0.997
                - 0.997
            limit:
              type: array
              items:
                type: number
              example:
                - 0.003
                - 0.003
        sell:
          type: object
          description: Sell prices for market and limit orders
          properties:
            market:
              type: array
              items:
                type: number
              example:
                - 0.003
                - 0.003
            limit:
              type: array
              items:
                type: number
              example:
                - 0.997
                - 0.997
      required:
        - buy
        - sell
    MetadataDto:
      type: object
      properties:
        fee:
          type: boolean
          description: Whether market has fees enabled
          example: true
        isBannered:
          type: boolean
          description: Whether market is featured in banner
          example: false
        isPolyArbitrage:
          type: boolean
          description: Whether market supports Polygon arbitrage
          example: false
        shouldMarketMake:
          type: boolean
          description: Whether market should be market made
          example: false
      required:
        - fee
        - isBannered
        - isPolyArbitrage
    MarketSettingsDto:
      type: object
      properties:
        minSize:
          type: string
          description: Minimum trade size in wei
          example: '50000000'
        maxSpread:
          type: number
          description: Maximum spread allowed
          example: 0.035
        dailyReward:
          type: string
          description: Daily reward amount
          example: '20'
        rewardsEpoch:
          type: string
          description: Rewards epoch in decimal format
          example: '0.013888888888888888'
        c:
          type: string
          description: C parameter
          example: '3'
      required:
        - minSize
        - maxSpread
        - dailyReward
        - rewardsEpoch
        - c
    FeedEventDto:
      type: object
      properties:
        eventType:
          type: string
          description: Type of feed event
          example: NEW_TRADE
          enum:
            - NEW_TRADE
            - MARKET_CREATED
            - MARKET_RESOLVED
        timestamp:
          type: string
          description: Event timestamp in ISO format
          example: '2025-09-01T11:30:31.000Z'
        user:
          description: User who triggered the event
          allOf:
            - $ref: '#/components/schemas/FeedEventUserDto'
        data:
          description: Event-specific data
          allOf:
            - $ref: '#/components/schemas/FeedEventDataDto'
        bodyHash:
          type: string
          description: Unique hash for the event
          example: '01100995'
      required:
        - eventType
        - timestamp
        - user
        - data
        - bodyHash
    PublicMarketPropertyDto:
      type: object
      properties:
        propertyKeySlug:
          type: string
          description: Property key slug
          example: domain
        value:
          description: Assigned property value
          oneOf:
            - type: string
            - type: array
              items:
                type: string
          example: sports
      required:
        - propertyKeySlug
        - value
    GroupMarketDto:
      type: object
      properties:
        id:
          type: number
          description: Market ID
          example: 7494
        conditionId:
          type: string
          description: Condition ID
          example: '0x947b8e6812bf8ac27687fa25b642d6a25bf5c7292068e5aef129d9d26e9780b8'
        negRiskRequestId:
          type: string
          description: NegRisk request ID
          example: null
          nullable: true
        description:
          type: string
          description: Market description
        collateralToken:
          $ref: '#/components/schemas/CollateralTokenDto'
        title:
          type: string
          description: Market title
        proxyTitle:
          type: string
          description: Proxy title
          nullable: true
        expirationDate:
          type: string
          description: Expiration date
        expirationTimestamp:
          type: number
          description: Expiration timestamp
        createdAt:
          type: string
          description: Created timestamp
        updatedAt:
          type: string
          description: Updated timestamp
        categories:
          description: Categories
          type: array
          items:
            type: string
        status:
          type: string
          description: Market status
        expired:
          type: boolean
          description: Is expired
        creator:
          $ref: '#/components/schemas/CreatorDto'
        tags:
          description: Tags
          type: array
          items:
            type: string
        frequency:
          type: string
          description: Schedule frequency for timeline
          example: minutely
        subFrequency:
          type: string
          description: Schedule sub-frequency for timeline
          nullable: true
          example: minutes_5
        volume:
          type: string
          description: Volume
        volumeFormatted:
          type: string
          description: Formatted volume
        tokens:
          $ref: '#/components/schemas/TokenPairDto'
        prices:
          description: Prices
          type: array
          items:
            type: number
        tradePrices:
          $ref: '#/components/schemas/TradePricesDto'
        isRewardable:
          type: boolean
          description: Is rewardable
        slug:
          type: string
          description: Market slug
        tradeType:
          type: string
          description: Trade type
          example: clob
        marketType:
          type: string
          description: Market type
          example: single
        priorityIndex:
          type: number
          description: Priority index
        winningOutcomeIndex:
          type: number
          description: Winning outcome index
          nullable: true
        metadata:
          $ref: '#/components/schemas/MetadataDto'
        settings:
          $ref: '#/components/schemas/MarketSettingsDto'
        logo:
          type: string
          description: Market logo
          nullable: true
        source:
          type: string
          description: Market source (e.g. ugm:crypto, ugm:sports)
          nullable: true
        feedEvents:
          description: Feed events
          type: array
          items:
            $ref: '#/components/schemas/FeedEventDto'
        orderInGroup:
          type: number
          description: Order in group
      required:
        - id
        - conditionId
        - negRiskRequestId
        - description
        - collateralToken
        - title
        - proxyTitle
        - expirationDate
        - expirationTimestamp
        - createdAt
        - updatedAt
        - categories
        - status
        - expired
        - creator
        - tags
        - volume
        - volumeFormatted
        - tokens
        - prices
        - tradePrices
        - isRewardable
        - slug
        - tradeType
        - marketType
        - priorityIndex
        - winningOutcomeIndex
        - metadata
        - settings
        - logo
        - source
    FeedEventUserDto:
      type: object
      properties:
        id:
          type: number
          description: User ID
          example: 7080
        account:
          type: string
          description: User wallet address
          example: '0xea27f6788F083e6070961d3E52A2e596367E04CC'
        username:
          type: string
          description: Username
          example: null
          nullable: true
        displayName:
          type: string
          description: Display name
          example: GG
          nullable: true
        rankName:
          type: string
          description: User ranking name
          example: Bronze
        points:
          type: string
          description: User points balance
          example: '0.00000000'
        name:
          type: string
          description: User display name for feed events
          example: GG
        imageURI:
          type: string
          description: User profile image URI
          example: null
          nullable: true
      required:
        - account
        - username
        - displayName
        - imageURI
    FeedEventDataDto:
      type: object
      properties:
        title:
          type: string
          description: Market title
          example: DOGE Up or Down - Hourly
        address:
          type: string
          description: Market contract address
          example: '0x76d3e2098Be66Aa7E15138F467390f0Eb7349B9b'
        slug:
          type: string
          description: Market slug
          example: doge-up-or-down-1-hour-1756136880125
        strategy:
          type: string
          description: Trading strategy
          example: Buy
          enum:
            - Buy
            - Sell
        outcome:
          type: string
          description: Market outcome
          example: Down
          enum:
            - 'YES'
            - 'NO'
            - Up
            - Down
        contracts:
          type: string
          description: Number of contracts traded
          example: '9.071313'
        txHash:
          type: string
          description: Transaction hash
          example: '0xe8a4464daf3561f6be5fef4d1bc64184c4f6fe9d6306ab7297fe7ed63a24df1c'
        symbol:
          type: string
          description: Collateral token symbol
          example: USDC
        tradeAmount:
          type: string
          description: Trade amount in collateral token
          example: '5'
        tradeAmountUSD:
          type: string
          description: Trade amount in USD
          example: '4.999525'
        marketId:
          type: number
          description: Market ID
          example: 7495
      required:
        - title
        - address
        - strategy
        - outcome
        - contracts
        - txHash
        - symbol
        - tradeAmount
        - tradeAmountUSD
        - marketId

````