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

# List games

> Every game in a time window, **including games offered by only one platform and games offered by none**. Each game lists the platforms (venues) where we found markets for it (`platforms`) and, on request, whether each integrated venue was checked (`coverage`). Use `day` + `tz` for a viewer-local day, or `from`/`to` for an explicit UTC window. Results are keyset-paginated.



## OpenAPI

````yaml GET /api/v1/games
openapi: 3.1.0
info:
  title: Vatic API
  version: 1.0.0
  description: >-
    Polymarket price targets, Hyperliquid prediction market data, market
    timestamps, fee calculators, and order management for systematic prediction
    market trading.
servers:
  - url: https://api.vatic.trading
    description: Production
security: []
paths:
  /api/v1/games:
    get:
      tags:
        - Game Graph
      summary: List games with their platforms
      description: >-
        Every game in a time window, **including games offered by only one
        platform and games offered by none**. Each game lists the platforms
        (venues) where we found markets for it (`platforms`) and, on request,
        whether each integrated venue was checked (`coverage`). Use `day` + `tz`
        for a viewer-local day, or `from`/`to` for an explicit UTC window.
        Results are keyset-paginated.
      operationId: listGames
      parameters:
        - name: from
          in: query
          schema:
            type: string
            format: date-time
          description: Window start (inclusive), ISO-8601.
        - name: to
          in: query
          schema:
            type: string
            format: date-time
          description: Window end (exclusive), ISO-8601.
        - name: day
          in: query
          schema:
            type: string
            example: '2026-10-10'
          description: >-
            A local calendar day `YYYY-MM-DD` (use with `tz`; cannot be combined
            with from/to).
        - name: tz
          in: query
          schema:
            type: string
            example: America/Mexico_City
            default: UTC
          description: IANA timezone for `day`.
        - name: days
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 14
            default: 1
          description: Number of consecutive local days starting at `day` (2 = a weekend).
        - name: league
          in: query
          schema:
            type: string
            example: eng.1,esp.1
          description: Comma-separated league codes (see /api/v1/leagues).
        - name: status
          in: query
          schema:
            type: string
            example: scheduled,live
          description: 'Comma-separated: scheduled, live, finished, postponed, cancelled.'
        - name: source
          in: query
          schema:
            type: string
            example: polymarket
          description: Only games offered by these platforms (comma-separated).
        - name: include
          in: query
          schema:
            type: string
            default: platforms
            example: platforms,coverage
          description: '`platforms` (default), `coverage`, both, or empty for neither.'
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 200
            default: 50
        - name: cursor
          in: query
          schema:
            type: string
          description: '`next_cursor` of the previous page.'
      responses:
        '200':
          description: A page of games
          headers:
            ETag:
              schema:
                type: string
              description: Weak ETag; send it back in `If-None-Match` for a 304.
            X-RateLimit-Limit:
              schema:
                type: integer
            X-RateLimit-Remaining:
              schema:
                type: integer
            X-RateLimit-Reset:
              schema:
                type: integer
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/GameGraphGame'
                  next_cursor:
                    type: string
                    nullable: true
                  meta:
                    $ref: '#/components/schemas/GameGraphMeta'
        '400':
          description: Invalid parameter (code `bad_request`)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GameGraphError'
        '401':
          description: Missing or invalid API key (code `unauthorized`)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GameGraphError'
        '429':
          description: Rate limit exceeded (code `rate_limited`); see `Retry-After`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GameGraphError'
        '503':
          description: Auth service unavailable (code `unavailable`)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GameGraphError'
      security:
        - ApiKey: []
components:
  schemas:
    GameGraphGame:
      type: object
      properties:
        id:
          type: string
          example: espn:401879264
        sport:
          type: string
        league:
          type: string
        status:
          type: string
          enum:
            - scheduled
            - live
            - finished
            - postponed
            - cancelled
        home:
          $ref: '#/components/schemas/GameGraphTeam'
        away:
          $ref: '#/components/schemas/GameGraphTeam'
        time:
          type: object
          properties:
            kickoff_at:
              type: string
              format: date-time
            est_end_at:
              type: string
              format: date-time
              description: >-
                Kickoff plus the median measured duration of this league. A
                reference, never a cutoff: `status` decides when a game is over.
            end_p90_at:
              type: string
              format: date-time
              description: Kickoff plus the 90th-percentile duration.
            actual_end_at:
              type: string
              format: date-time
              nullable: true
            est_basis:
              type: string
              nullable: true
            previous_kickoffs:
              type: array
              items:
                type: object
        score:
          type: object
          nullable: true
          description: >-
            Live or final score from the ESPN spine; `null` before kickoff or
            when ESPN has no score. Refreshed about once a minute while a game
            is live, so treat it as minute-fresh, not tick-by-tick.
          properties:
            home:
              type: integer
            away:
              type: integer
            clock:
              type: string
              nullable: true
              example: 67'
            period:
              type: integer
              nullable: true
              description: >-
                1 or 2 for soccer halves, 1-4 for quarters, higher for extra
                periods.
            detail:
              type: string
              nullable: true
              example: HT
              description: 'ESPN short status: 67'', HT, FT, 3rd - 4:32 ...'
            updated_at:
              type: string
              format: date-time
              nullable: true
              description: When any score field last changed.
        spine:
          type: object
          properties:
            source:
              type: string
            event_id:
              type: string
        supersedes:
          type: string
          nullable: true
        redistributable:
          type: string
          enum:
            - 'yes'
            - 'no'
            - unknown
        platforms:
          type: array
          items:
            $ref: '#/components/schemas/GameGraphPlatform'
        coverage:
          type: array
          items:
            $ref: '#/components/schemas/GameGraphCoverage'
    GameGraphMeta:
      type: object
      description: Always present.
      properties:
        as_of:
          type: string
          format: date-time
          description: >-
            When the read model behind this answer was last refreshed (about
            every 15 s).
        redistributable_filter:
          type: string
          enum:
            - yes_only
            - internal
        venues_checked:
          type: array
          items:
            type: string
          description: >-
            Platforms we integrate. A platform missing from a game's `platforms`
            is only "not offered" if its `coverage` says `not_listed`.
        total:
          type: integer
        withheld:
          type: object
          description: >-
            Games that exist but are not returned yet because their sources are
            not cleared for redistribution.
          properties:
            games:
              type: integer
            reason:
              type: string
    GameGraphError:
      type: object
      properties:
        error:
          type: string
        code:
          type: string
          description: >-
            Stable machine-readable code: bad_request, unauthorized, forbidden,
            not_found, method_not_allowed, rate_limited, unavailable, internal.
        hint:
          type: string
      required:
        - error
        - code
    GameGraphTeam:
      type: object
      properties:
        id:
          type: string
          example: soccer:espn:359
        name:
          type: string
        abbreviation:
          type: string
        logo_url:
          type: string
          nullable: true
        sport:
          type: string
        league:
          type: string
    GameGraphPlatform:
      type: object
      description: A platform that offers markets for the game.
      properties:
        source:
          type: string
          example: polymarket
        confidence:
          type: string
          enum:
            - exact
            - high
            - review
          description: >-
            How the link was made. `exact`: both teams matched and the kickoff
            matched. `high`: matched through a swapped home/away or a kickoff
            anchor.
        redistributable:
          type: string
          enum:
            - 'yes'
            - 'no'
            - unknown
        license_note:
          type: string
          nullable: true
        events:
          type: integer
          description: >-
            Venue events linked to this game (a venue has several events per
            game).
        markets_stored:
          type: integer
          description: >-
            Markets we hold for this platform (stored for games close to
            kickoff).
        last_seen:
          type: string
          format: date-time
          nullable: true
    GameGraphCoverage:
      type: object
      properties:
        source:
          type: string
        status:
          type: string
          enum:
            - listed
            - not_listed
            - not_checked
          description: >-
            `listed`: found. `not_listed`: a scan of that league and window
            succeeded recently and the game was not there (platforms often
            create games only a few days ahead). `not_checked`: no recent scan
            covers it.
        checked_at:
          type: string
          format: date-time
          nullable: true
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Required for order endpoints. Obtain your API key from the Vatic
        dashboard.

````

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