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

# Discover feed

> The home feed: one gameline section per league, in the order the discover cache loads leagues (`nfl, ncaaf, nba, mlb, nhl, ncaab, wnba, epl`). This endpoint is deliberately **not** volume-ranked; only `GET /sub_categories` orders leagues by trading volume, so the two can legitimately disagree on league order.

The response carries no top-level `sub_categories`. The payload is cached, so live availability (`active`, `filters`) is read from `GET /sub_categories`, which computes both per request. `included.sub_categories` is the identity-only index of the leagues the included events, teams and entities belong to.

Cached for 5 seconds.



## OpenAPI

````yaml /predictions/openapi.json get /discover
openapi: 3.1.0
info:
  title: Splash Predictions API
  version: 1.0.0
  description: >-
    Public, read-only endpoints for browsing Splash prediction markets: leagues,
    games, game lines, futures and player props. No authentication is required
    for any endpoint in this reference.
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.
paths:
  /discover:
    get:
      tags:
        - Discover
      summary: Discover feed
      description: >-
        The home feed: one gameline section per league, in the order the
        discover cache loads leagues (`nfl, ncaaf, nba, mlb, nhl, ncaab, wnba,
        epl`). This endpoint is deliberately **not** volume-ranked; only `GET
        /sub_categories` orders leagues by trading volume, so the two can
        legitimately disagree on league order.


        The response carries no top-level `sub_categories`. The payload is
        cached, so live availability (`active`, `filters`) is read from `GET
        /sub_categories`, which computes both per request.
        `included.sub_categories` is the identity-only index of the leagues the
        included events, teams and entities belong to.


        Cached for 5 seconds.
      operationId: getDiscover
      responses:
        '200':
          description: The feed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiscoverResponse'
              example:
                discover:
                  - type: gameline
                    title: NFL This Week
                    sub_category: nfl
                    market_groups:
                      - id: market_group_123
                        sub_category: nfl
                        event_id: game_456
                        type: gameline
                        markets: []
                included:
                  events: []
                  teams: []
                  entities: []
                  sub_categories:
                    - id: nfl
                      name: Pro Football
                      icon_url: https://res.cloudinary.com/...
                status: success
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    DiscoverResponse:
      type: object
      required:
        - discover
        - included
        - status
      properties:
        discover:
          type: array
          items:
            $ref: '#/components/schemas/DiscoverSection'
        included:
          $ref: '#/components/schemas/Included'
        status:
          type: string
          const: success
      title: DiscoverResponse
    DiscoverSection:
      type: object
      description: One league's section of the discover feed.
      required:
        - type
        - title
        - sub_category
        - market_groups
      properties:
        type:
          type: string
          const: gameline
        title:
          type: string
          example: NFL This Week
        sub_category:
          $ref: '#/components/schemas/SubCategoryId'
        market_groups:
          type: array
          items:
            $ref: '#/components/schemas/GamelineMarketGroup'
      title: DiscoverSection
    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'
        teams:
          type: array
          items:
            $ref: '#/components/schemas/Team'
        entities:
          type: array
          items:
            $ref: '#/components/schemas/Entity'
        sub_categories:
          type: array
          items:
            $ref: '#/components/schemas/IncludedSubCategory'
      title: Included
    Error:
      type: object
      required:
        - status
        - error
        - message
      properties:
        status:
          type: string
          const: error
        error:
          type: string
          enum:
            - BAD_REQUEST
            - NOT_FOUND
            - INTERNAL_ERROR
        message:
          type: string
      title: Error
    SubCategoryId:
      type: string
      description: A league id.
      enum:
        - nfl
        - ncaaf
        - nba
        - wnba
        - ncaab
        - mlb
        - nhl
        - epl
        - mls
        - pga
        - wc
      title: SubCategoryId
    GamelineMarketGroup:
      type: object
      description: One game's game line markets.
      required:
        - id
        - event_start
        - event_id
        - type
        - markets
      properties:
        id:
          type: string
        type:
          type: string
          const: gameline
        event_start:
          type: integer
          format: int64
          description: Epoch milliseconds.
        sub_category:
          $ref: '#/components/schemas/SubCategoryId'
        event_id:
          type: string
        markets:
          type: array
          items:
            $ref: '#/components/schemas/GamelineMarket'
      title: GamelineMarketGroup
    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
        name:
          type: string
        league:
          $ref: '#/components/schemas/SubCategoryId'
        start_date:
          type: integer
          format: int64
          description: Epoch milliseconds.
        status:
          $ref: '#/components/schemas/GameStatus'
        home:
          $ref: '#/components/schemas/TeamState'
        away:
          $ref: '#/components/schemas/TeamState'
        state:
          $ref: '#/components/schemas/GameState'
      title: Game
    Team:
      type: object
      required:
        - id
        - name
        - league
        - alias
        - market
        - official_logo
      properties:
        id:
          type: string
        name:
          type: string
          example: Jaguars
        league:
          $ref: '#/components/schemas/SubCategoryId'
        alias:
          type: string
          example: JAX
        market:
          type: string
          example: Jacksonville
        primary_color:
          type: string
        secondary_color:
          type: string
        icon_url:
          type: string
          format: uri
          description: >-
            Absent when neither the team's icon nor its league default has been
            uploaded.
        official_logo:
          type: boolean
          description: >-
            Whether `icon_url` is the league's official logo rather than a
            Splash-made one. A custom logo (an NFL helmet) faces one way, so a
            client mirrors it on one side of a matchup; an official logo must
            never be flipped.
      title: Team
    Entity:
      type: object
      description: A player referenced by a market's `entity_id`.
      required:
        - id
        - name
        - league
        - player_details
      properties:
        id:
          type: string
        name:
          type: string
        league:
          $ref: '#/components/schemas/SubCategoryId'
        current_team_id:
          type: string
          description: Absent for PGA.
        player_details:
          $ref: '#/components/schemas/PlayerDetails'
        icon_url:
          type: string
          format: uri
          description: >-
            The player's jersey in their current team's colors with their number
            (no number in MLB).
      title: Entity
    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'
        name:
          type: string
          example: Pro Football
        icon_url:
          type: string
          format: uri
      title: IncludedSubCategory
    GamelineMarket:
      title: GamelineMarket
      type: object
      description: >-
        A game line 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). Fields marked
        with a type are present only on that type.
      required:
        - id
        - title
        - sub_category
        - type
        - price_yes
        - price_no
        - volume
        - liquidity
        - yes_liquidity
        - no_liquidity
        - status
        - updated_at
        - rules
        - market_group_id
        - event_id
        - event_start
      properties:
        id:
          type: string
          description: >-
            The market id: the instrument to trade and to follow for price
            updates.
        title:
          type: string
        sub_category:
          $ref: '#/components/schemas/SubCategoryId'
        price_yes:
          $ref: '#/components/schemas/MarketPrice'
        price_no:
          $ref: '#/components/schemas/MarketPrice'
        orderbook:
          $ref: '#/components/schemas/Orderbook'
        volume:
          type: number
          description: Dollars traded, rounded to cents.
        liquidity:
          type: number
          description: Dollars resting in the book, rounded to cents.
        yes_liquidity:
          type: number
        no_liquidity:
          type: number
        last_price_yes:
          type: number
          description: >-
            Last trade as a YES price, 4 decimal places. Absent until the market
            has traded.
        last_price_no:
          type: number
          description: >-
            The NO complement of `last_price_yes`. Absent until the market has
            traded.
        status:
          $ref: '#/components/schemas/MarketStatus'
        result:
          $ref: '#/components/schemas/MarketResult'
        updated_at:
          type: integer
          format: int64
          description: Epoch milliseconds.
        rules:
          type: string
          description: The market's resolution rules.
        market_group_id:
          type: string
        type:
          type: string
          enum:
            - spread
            - total
            - moneyline
        event_id:
          type: string
        event_start:
          type: integer
          format: int64
          description: Epoch milliseconds.
        line:
          type: number
          description: >-
            Spread and total. On a spread, the away team's line; the home team
            is at the inverse.
        yes_line_display:
          type: string
          description: Spread and total. Spread `-3.5`, total `O 44.5`.
        no_line_display:
          type: string
          description: Spread and total. Spread `+3.5`, total `U 44.5`.
        team_id:
          type: string
          description: Spread and moneyline. Absent on a `draw` leg.
        yes_team_id:
          type: string
          description: 'Spread, and `two_way` moneyline: the away team, at `line`.'
        no_team_id:
          type: string
          description: >-
            Spread, and `two_way` moneyline: the home team, at the inverse of
            `line`.
        moneyline_type:
          type: string
          enum:
            - two_way
            - one_way
            - draw
          description: >-
            Moneyline only. `two_way` carries both teams; a three-way match
            (soccer) has one `one_way` leg per team plus a `draw` leg with no
            team.
    GameStatus:
      type: string
      enum:
        - SCHEDULED
        - IN_PROGRESS
        - FINISHED
        - FINALIZED
        - CANCELED
      title: GameStatus
    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: Resolve through `included.teams`.
        alias:
          type: string
          example: JAX
        points:
          type: integer
        primary_color:
          type: string
        runs:
          type: integer
          description: Baseball.
        hits:
          type: integer
          description: Baseball.
        errors:
          type: integer
          description: Baseball.
        record:
          $ref: '#/components/schemas/TeamRecord'
      title: TeamState
    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
        league:
          $ref: '#/components/schemas/SubCategoryId'
        clock:
          type: string
        phase:
          type: string
          enum:
            - pregame
            - regulation
            - overtime
            - shootout
        quarter:
          type: integer
        half:
          type: integer
        period:
          type: integer
        balls:
          type: integer
        strikes:
          type: integer
        outs:
          type: integer
        current_inning:
          type: integer
        current_inning_phase:
          type: string
          enum:
            - top
            - bottom
        last_inning:
          type: integer
        last_inning_phase:
          type: string
          enum:
            - top
            - bottom
        double_header:
          type: boolean
        game_number:
          type: integer
        home_score:
          type: integer
        away_score:
          type: integer
        match_status:
          type: string
          enum:
            - not_started
            - 1st_half
            - 2nd_half
            - 1st_extra
            - 2nd_extra
            - penalties
            - interrupted
            - halftime
            - extra_time_halftime
            - ended
        home_penalties:
          type: integer
        away_penalties:
          type: integer
        rounds:
          type: array
          description: Golf only.
          items:
            $ref: '#/components/schemas/GolfRound'
        weather:
          $ref: '#/components/schemas/Weather'
        weather_icon:
          type: string
          enum:
            - rain
            - snow
            - wind
            - cloud
            - night
            - indoor
            - clear
            - unknown
      title: GameState
    PlayerDetails:
      type: object
      required:
        - league
        - first_name
        - last_name
        - abbreviated_name
        - status
      properties:
        league:
          $ref: '#/components/schemas/SubCategoryId'
        first_name:
          type: string
        last_name:
          type: string
        abbreviated_name:
          type: string
        status:
          type: string
        position:
          type: string
          description: Team sports only.
        jersey_number:
          type: string
          description: Team sports only.
        throw_hand:
          type: string
          enum:
            - L
            - R
          description: MLB only.
        bat_hand:
          type: string
          enum:
            - L
            - R
            - B
          description: MLB only.
        statistics:
          $ref: '#/components/schemas/MLBSeasonStatistics'
          description: MLB only.
        splits:
          $ref: '#/components/schemas/MLBPlayerSplits'
          description: MLB only.
        country:
          type: string
          description: PGA only.
        country_abb:
          type: string
          description: PGA only.
        amateur:
          type: boolean
          description: PGA only.
      title: PlayerDetails
    MarketPrice:
      type: object
      description: >-
        One side's price in every display form. `numeric_price` is the per-share
        price between 0 and 1; the strings are ready to render.
      required:
        - american
        - decimal
        - percentage
        - price
        - numeric_price
      properties:
        american:
          type: string
          description: American odds, e.g. `-150`.
          example: '-150'
        decimal:
          type: string
          description: Decimal odds, e.g. `1.67`.
          example: '1.67'
        percentage:
          type: string
          description: Implied probability, e.g. `60%`.
          example: 60%
        price:
          type: string
          description: The per-share price as a string, e.g. `0.60`.
          example: '0.60'
        numeric_price:
          type: number
          description: The per-share price.
          example: 0.6
      title: MarketPrice
    Orderbook:
      type: object
      description: >-
        The book Splash holds for the market, at most ten levels a side. Present
        only on single-group responses.
      required:
        - bids
        - asks
      properties:
        bids:
          $ref: '#/components/schemas/OrderbookSide'
        asks:
          $ref: '#/components/schemas/OrderbookSide'
      title: Orderbook
    MarketStatus:
      type: string
      description: >-
        `active` is tradeable. `expired` closed without settling. `settled` has
        a `result`.
      enum:
        - active
        - expired
        - settled
      title: MarketStatus
    MarketResult:
      type: string
      description: Present once a market settles.
      enum:
        - 'yes'
        - 'no'
        - scalar
      title: MarketResult
    TeamRecord:
      title: TeamRecord
      type: object
      required:
        - wins
        - losses
      properties:
        wins:
          type: integer
        losses:
          type: integer
        ties:
          type: integer
          description: Only in leagues that can tie.
    GolfRound:
      title: GolfRound
      type: object
      description: One round of a golf tournament.
      required:
        - number
        - status
      properties:
        number:
          type: integer
        status:
          $ref: '#/components/schemas/GameStatus'
    Weather:
      type: object
      required:
        - condition
      properties:
        condition:
          type: string
        humidity:
          type: number
        temp:
          type: number
        wind_direction:
          type: string
        wind_speed:
          type: number
      title: Weather
    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'
        pitching:
          $ref: '#/components/schemas/MLBSeasonPitchingStatistics'
    MLBPlayerSplits:
      title: MLBPlayerSplits
      type: object
      description: Hitting splits by opposing pitcher hand.
      properties:
        hitting:
          $ref: '#/components/schemas/MLBPlayerHittingSplits'
    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'
        'no':
          type: array
          items:
            $ref: '#/components/schemas/PriceLevel'
    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
        hits_per_game:
          type: number
        runs_per_game:
          type: number
        rbi_per_game:
          type: number
        total_bases_per_game:
          type: number
        home_runs_per_game:
          type: number
        total_strikeouts_per_game:
          type: number
        stolen_bases_per_game:
          type: number
        at_bats:
          type: number
        hits:
          type: number
        walks:
          type: number
        home_runs:
          type: number
        runs:
          type: number
        rbi:
          type: number
        stolen_bases:
          type: number
        doubles:
          type: number
        games_played:
          type: number
        games_started:
          type: number
        grounded_into_double_play:
          type: number
        hit_by_pitch:
          type: number
        intentional_walks:
          type: number
        plate_appearances:
          type: number
        reached_on_error:
          type: number
        sacrifice_flys:
          type: number
        singles:
          type: number
        slugging_percentage:
          type: number
        total_bases:
          type: number
        total_strikeouts:
          type: number
        triples:
          type: number
        on_base_plus_slugging_percentage:
          type: number
        on_base_percentage:
          type: number
        batting_average:
          type: string
          example: '.287'
    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
        pitch_count:
          type: number
        hits_allowed:
          type: number
        earned_runs:
          type: number
        base_on_balls:
          type: number
        strikeouts:
          type: number
        home_runs_allowed:
          type: number
        earned_run_average:
          type: number
        shutout:
          type: number
        complete_game:
          type: number
        win:
          type: number
        loss:
          type: number
        save:
          type: number
        hold:
          type: number
        blown_save:
          type: number
        quality_start:
          type: number
        total_outs:
          type: number
    MLBPlayerHittingSplits:
      title: MLBPlayerHittingSplits
      type: object
      required:
        - pitching_hand
      properties:
        pitching_hand:
          type: array
          description: One entry per opposing pitcher hand.
          items:
            $ref: '#/components/schemas/MLBSeasonHittingSplitStatistics'
    PriceLevel:
      type: object
      description: One level of the order book.
      required:
        - p
        - q
      properties:
        p:
          type: number
          description: Per-share price.
        q:
          type: number
          description: Shares resting at that price.
      title: PriceLevel
    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.
        at_bats:
          type: number
        hits:
          type: number
        walks:
          type: number
        home_runs:
          type: number
        runs:
          type: number
        rbi:
          type: number
        stolen_bases:
          type: number
        doubles:
          type: number
        hit_by_pitch:
          type: number
        intentional_walks:
          type: number
        singles:
          type: number
        slugging_percentage:
          type: number
        total_strikeouts:
          type: number
        triples:
          type: number
        on_base_plus_slugging_percentage:
          type: number
        on_base_percentage:
          type: number
        batting_average:
          type: string
  responses:
    InternalError:
      description: The request could not be handled.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            status: error
            error: INTERNAL_ERROR
            message: >-
              An internal error has occured and the request could not be
              handled.

````

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