Lichess Opening Explorer API

Lookup positions from the [Lichess opening explorer](https://lichess.org/analysis#explorer). Runs . > [!important] > The hostname for these endpoints is `explorer.lichess.org` and not `lichess.org`.

OpenAPI Specification

lichess-opening-explorer-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  version: 2.0.144
  title: Lichess.org API reference Account Opening Explorer API
  contact:
    name: Lichess.org API
    url: https://lichess.org/api
    email: contact@lichess.org
  x-logo:
    url: https://lichess1.org/assets/logo/lichess-pad12.svg
  license:
    name: AGPL-3.0-or-later
    url: https://www.gnu.org/licenses/agpl-3.0.txt
  description: '# Introduction

    Welcome to the reference for the Lichess API! Lichess is free/libre,

    open-source chess server powered by volunteers and donations.

    - Get help in the [Lichess Discord channel](https://discord.gg/lichess)

    - API demo app with OAuth2 login and gameplay: [source](https://github.com/lichess-org/api-demo) / [demo](https://lichess-org.github.io/api-demo/)

    - API UI app with OAuth2 login and endpoint forms: [source](https://github.com/lichess-org/api-ui) / [website](https://lichess.org/api/ui)

    - [Contribute to this documentation on Github](https://github.com/lichess-org/api)

    - Check out [Lichess widgets to embed in your website](https://lichess.org/developers)

    - [Download all Lichess rated games](https://database.lichess.org/)

    - [Download all Lichess puzzles with themes, ratings and votes](https://database.lichess.org/#puzzles)

    - [Download all evaluated positions](https://database.lichess.org/#evals)


    ## Endpoint

    All requests go to `https://lichess.org` (unless otherwise specified).


    ## Clients

    - [Python general API](https://github.com/lichess-org/berserk)

    - [MicroPython general API](https://github.com/mkomon/uberserk)

    - [Python general API - async](https://pypi.org/project/async-lichess-sdk)

    - [Python Lichess Bot](https://github.com/lichess-bot-devs/lichess-bot)

    - [Python Board API for Certabo](https://github.com/haklein/certabo-lichess)

    - [Java general API](https://github.com/tors42/chariot)

    - [JavaScript & TypeScript general API](https://github.com/devjiwonchoi/equine)

    - [LichessNET - C# API Wrapper](https://github.com/Rabergsel/LichessNET)

    - [.NET general API](https://github.com/Dblike/LichessSharp)


    ## Rate limiting

    All requests are rate limited using various strategies,

    to ensure the API remains responsive for everyone.

    Only make one request at a time.

    If you receive an HTTP response with a [429 status](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#429),

    you have exceded one of the rate limits.

    In most cases, waiting one minute before retrying will be sufficient, but some limits may require longer.

    Reduce your request frequency before retrying.


    ## Streaming with ND-JSON

    Some API endpoints stream their responses as [Newline Delimited JSON a.k.a. **nd-json**](https://github.com/ndjson/ndjson-spec), with one JSON object per line.


    Here''s a [JavaScript utility function](https://gist.github.com/ornicar/a097406810939cf7be1df8ea30e94f3e) to help reading NDJSON streamed responses.


    ## Authentication

    ### Which authentication method is right for me?

    [Read about the Lichess API authentication methods and code examples](https://github.com/lichess-org/api/blob/master/example/README.md)


    ### Personal Access Token

    Personal API access tokens allow you to quickly interact with Lichess API without going through an OAuth flow.

    - [Generate a personal access token](https://lichess.org/account/oauth/token)

    - `curl https://lichess.org/api/account -H "Authorization: Bearer {token}"`

    - [NodeJS example](https://github.com/lichess-org/api/tree/master/example/oauth-personal-token)


    ### Token Security

    - Keep your tokens secret. Do not share them in public repositories or public forums.

    - Your tokens can be used to make your account perform arbitrary actions (within the limits of the tokens'' scope). You remain responsible for all activities on your account.

    - Do not hardcode tokens in your application''s code. Use environment variables or a secure storage and ensure they are not shipped/exposed to users. Be especially careful that they are not included in frontend bundles or apps that are shipped to users.

    - If you suspect a token has been compromised, revoke it immediately.


    To see your active tokens or revoke them, see [your Personal API access tokens](https://lichess.org/account/oauth/token).


    ### Authorization Code Flow with PKCE

    The authorization code flow with PKCE allows your users to **login with Lichess**.

    Lichess supports unregistered and public clients (no client authentication, choose any unique client id).

    The only accepted code challenge method is `S256`.

    Access tokens are long-lived (expect one year), unless they are revoked.

    Refresh tokens are not supported.


    See the [documentation for the OAuth endpoints](#tag/OAuth) or

    the [PKCE RFC](https://datatracker.ietf.org/doc/html/rfc7636#section-4) for a precise protocol description.


    - [Demo app](https://lichess-org.github.io/api-demo/)

    - [Minimal client-side example](https://github.com/lichess-org/api/tree/master/example/oauth-app)

    - [Flask/Python example](https://github.com/lakinwecker/lichess-oauth-flask)

    - [Java example](https://github.com/tors42/lichess-oauth-pkce-app)

    - [NodeJS Passport strategy to login with Lichess OAuth2](https://www.npmjs.com/package/passport-lichess)


    #### Real life examples

    - [PyChess](https://github.com/gbtami/pychess-variants) ([source code](https://github.com/gbtami/pychess-variants))

    - [Lichess4545](https://www.lichess4545.com/) ([source code](https://github.com/cyanfish/heltour))

    - [English Chess Federation](https://ecf.octoknight.com/)

    - [Rotherham Online Chess](https://rotherhamonlinechess.azurewebsites.net/tournaments)


    ### Token format

    Access tokens and authorization codes match `^[A-Za-z0-9_]+$`.

    The length of tokens can be increased without notice. Make sure your application can handle at least 512 characters.

    By convention tokens have a recognizable prefix, but do not rely on this.

    '
servers:
- url: https://lichess.org
- url: https://lichess.dev
- url: http://localhost:{port}
  variables:
    port:
      default: '8080'
- url: http://l.org
tags:
- name: Opening Explorer
  description: 'Lookup positions from the [Lichess opening explorer](https://lichess.org/analysis#explorer).


    Runs <https://github.com/lichess-org/lila-openingexplorer>.


    > [!important]

    > The hostname for these endpoints is `explorer.lichess.org` and not `lichess.org`.

    '
paths:
  /masters:
    get:
      operationId: openingExplorerMaster
      summary: Masters database
      description: '**Endpoint: <https://explorer.lichess.org/masters>**


        Example: `curl https://explorer.lichess.org/masters?play=d2d4,d7d5,c2c4,c7c6,c4d5`

        '
      tags:
      - Opening Explorer
      servers:
      - url: https://explorer.lichess.org
      - url: http://localhost:{port}
        variables:
          port:
            default: '9002'
      security:
      - OAuth2: []
      parameters:
      - in: query
        name: fen
        description: X-FEN of the root position
        schema:
          type: string
        example: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
      - in: query
        name: play
        description: 'Comma separated sequence of legal moves in UCI notation.

          Play additional moves starting from `fen`.

          Required to find an opening name, if `fen` is not an exact match

          for a named position.

          '
        schema:
          type: string
          default: ''
        example: d2d4,d7d5,c2c4,c7c6,c4d5
      - in: query
        name: since
        description: Include only games from this year or later
        schema:
          type: integer
          default: 1952
      - in: query
        name: until
        description: Include only games from this year or earlier
        schema:
          type: integer
      - in: query
        name: moves
        description: Number of most common moves to display
        schema:
          type: integer
          default: 12
      - in: query
        name: topGames
        description: Number of top games to display
        schema:
          type: integer
          default: 15
          maximum: 15
      responses:
        '200':
          description: Opening statistics and game references for the position.
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
                default: '''*'''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpeningExplorerMasters'
              examples:
                default:
                  $ref: '#/components/examples/openingExplorer-masters.json'
  /lichess:
    get:
      operationId: openingExplorerLichess
      summary: Lichess games
      description: '**Endpoint: <https://explorer.lichess.org/lichess>**


        Aggregated rated games from all Lichess players.


        Example: `curl https://explorer.lichess.org/lichess?variant=standard&speeds=blitz,rapid,classical&ratings=2200,2500&fen=rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR%20w%20KQkq%20-%200%201`

        '
      tags:
      - Opening Explorer
      servers:
      - url: https://explorer.lichess.org
      - url: http://localhost:{port}
        variables:
          port:
            default: '9002'
      security:
      - OAuth2: []
      parameters:
      - in: query
        name: variant
        description: Variant
        schema:
          $ref: '#/components/schemas/VariantKey'
          default: standard
      - in: query
        name: fen
        description: X-FEN or EPD of the root position
        schema:
          type: string
        example: rnbqkbnr/ppp1pppp/8/3pP3/8/8/PPPP1PPP/RNBQKBNR b KQkq - 0 2
      - in: query
        name: play
        description: 'Comma separated sequence of legal moves in UCI notation.

          Play additional moves starting from `fen`.

          Required to find an opening name, if `fen` is not an exact match

          for a named position.

          '
        schema:
          type: string
          default: ''
        example: d2d4,d7d5,c2c4,c7c6,c4d5
      - in: query
        name: speeds
        description: Comma separated list of game speeds to filter by
        schema:
          type: array
          items:
            $ref: '#/components/schemas/Speed'
      - in: query
        name: ratings
        description: 'Comma separated list of ratings groups to filter by.

          Each group ranges from its value to the next higher

          group in the enum (`0` from 0 to 999, `1000` from 1000 to 1199,

          ..., `2500` from 2500 to any rating above).

          '
        schema:
          type: array
          items:
            type: integer
            enum:
            - 0
            - 1000
            - 1200
            - 1400
            - 1600
            - 1800
            - 2000
            - 2200
            - 2500
      - in: query
        name: since
        description: Include only games from this month or later
        schema:
          type: string
          default: 1952-01
      - in: query
        name: until
        description: Include only games from this month or earlier
        schema:
          type: string
          default: 3000-12
      - in: query
        name: moves
        description: Number of most common moves to display
        schema:
          type: integer
          default: 12
      - in: query
        name: topGames
        description: 'Maximum number of top games to display.


          Due to the way banned users are handled internally, the response may

          contain fewer games than expected.

          '
        schema:
          type: integer
          default: 4
          maximum: 4
      - in: query
        name: recentGames
        description: 'Maximum number of recent games to display.


          Due to the way banned users are handled internally, the response may

          contain fewer games than expected.

          '
        schema:
          type: integer
          default: 4
          maximum: 4
      - in: query
        name: history
        description: Optionally retrieve history
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Opening statistics and game references for the position.
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
                default: '''*'''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpeningExplorerLichess'
              examples:
                default:
                  $ref: '#/components/examples/openingExplorer-lichess.json'
  /player:
    get:
      operationId: openingExplorerPlayer
      summary: Player games
      description: '**Endpoint: <https://explorer.lichess.org/player>**


        Games of a Lichess player.


        Responds with a stream of [newline delimited JSON](#description/streaming-with-nd-json). Will start indexing

        on demand, immediately respond with the current results, and stream

        more updates until indexing is complete. The stream is throttled

        and deduplicated. Empty lines may be sent to avoid timeouts.


        Will index new games at most once per minute, and revisit previously

        ongoing games at most once every day.


        Example: `curl https://explorer.lichess.org/player?player=revoof&color=white&play=d2d4,d7d5&recentGames=1`

        '
      tags:
      - Opening Explorer
      servers:
      - url: https://explorer.lichess.org
      - url: http://localhost:{port}
        variables:
          port:
            default: '9002'
      security:
      - OAuth2: []
      parameters:
      - in: query
        name: player
        description: Username or ID of the player
        schema:
          type: string
        example: revoof
        required: true
      - in: query
        name: color
        description: Look for games with *player* on the given side
        schema:
          type: string
          enum:
          - white
          - black
        example: white
        required: true
      - in: query
        name: variant
        description: Variant
        schema:
          $ref: '#/components/schemas/VariantKey'
          default: standard
      - in: query
        name: fen
        description: X-FEN of the root position
        schema:
          type: string
        example: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
      - in: query
        name: play
        description: 'Comma separated sequence of legal moves in UCI notation.

          Play additional moves starting from `fen`.

          Required to find an opening name, if `fen` is not an exact match

          for a named position.

          '
        schema:
          type: string
          default: ''
        example: d2d4,d7d5
      - in: query
        name: speeds
        description: Comma separated list of game speeds to look for
        schema:
          type: array
          items:
            $ref: '#/components/schemas/Speed'
      - in: query
        name: modes
        description: Comma separated list of modes
        schema:
          type: array
          items:
            type: string
            enum:
            - casual
            - rated
      - in: query
        name: since
        description: Include only games from this month or later
        schema:
          type: string
          default: 1952-01
      - in: query
        name: until
        description: Include only games from this month or earlier
        schema:
          type: string
          default: 3000-12
      - in: query
        name: moves
        description: Number of most common moves to display
        schema:
          type: integer
      - in: query
        name: recentGames
        description: Number of recent games to display
        schema:
          type: integer
          default: 8
          maximum: 8
      responses:
        '200':
          description: Opening statistics and game references for the position.
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
                default: '''*'''
          content:
            application/x-ndjson:
              schema:
                $ref: '#/components/schemas/OpeningExplorerPlayer'
              examples:
                default:
                  $ref: '#/components/examples/openingExplorer-player.json'
  /masters/pgn/{gameId}:
    get:
      operationId: openingExplorerMasterGame
      summary: OTB master game
      description: '**Endpoint: `https://explorer.lichess.org/masters/pgn/{gameId}`**


        Example: `curl https://explorer.lichess.org/masters/pgn/aAbqI4ey`

        '
      tags:
      - Opening Explorer
      servers:
      - url: https://explorer.lichess.org
      - url: http://localhost:{port}
        variables:
          port:
            default: '9002'
      security:
      - OAuth2: []
      parameters:
      - in: path
        name: gameId
        schema:
          type: string
        required: true
      responses:
        '200':
          description: The PGN representation of the game.
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
                default: '''*'''
          content:
            application/x-chess-pgn:
              schema:
                type: string
                description: Game PGN
              examples:
                pgn:
                  $ref: '#/components/examples/openingExplorer-otbMasterGame.pgn'
components:
  schemas:
    OpeningExplorerPlayerGame:
      type: object
      properties:
        id:
          type: string
        winner:
          oneOf:
          - $ref: '#/components/schemas/GameColor'
          - type: 'null'
        speed:
          $ref: '#/components/schemas/Speed'
        mode:
          type: string
          enum:
          - rated
          - casual
        white:
          $ref: '#/components/schemas/OpeningExplorerGamePlayer'
        black:
          $ref: '#/components/schemas/OpeningExplorerGamePlayer'
        year:
          type: integer
        month:
          type: string
      required:
      - id
      - winner
      - speed
      - mode
      - white
      - black
      - year
      - month
    Speed:
      type: string
      enum:
      - ultraBullet
      - bullet
      - blitz
      - rapid
      - classical
      - correspondence
    OpeningExplorerPlayer:
      type: object
      properties:
        opening:
          oneOf:
          - $ref: '#/components/schemas/OpeningExplorerOpening'
          - type: 'null'
        queuePosition:
          type: integer
          description: Waiting for other players to be indexed first
        white:
          type: integer
        draws:
          type: integer
        black:
          type: integer
        moves:
          type: array
          items:
            type: object
            properties:
              uci:
                type: string
              san:
                type: string
              averageOpponentRating:
                type: integer
              performance:
                type: integer
              white:
                type: integer
              draws:
                type: integer
              black:
                type: integer
              game:
                oneOf:
                - $ref: '#/components/schemas/OpeningExplorerPlayerGame'
                - type: 'null'
              opening:
                oneOf:
                - $ref: '#/components/schemas/OpeningExplorerOpening'
                - type: 'null'
            required:
            - uci
            - san
            - averageOpponentRating
            - performance
            - white
            - draws
            - black
            - game
            - opening
        recentGames:
          type: array
          items:
            allOf:
            - type: object
              properties:
                uci:
                  type: string
              required:
              - uci
            - $ref: '#/components/schemas/OpeningExplorerPlayerGame'
      required:
      - opening
      - queuePosition
      - white
      - draws
      - black
      - moves
      - recentGames
      example:
        opening:
          eco: D00
          name: Queen's Pawn Game
        queuePosition: 25
        white: 366
        draws: 23
        black: 279
        moves:
        - uci: c2c4
          san: c4
          averageOpponentRating: 1695
          performance: 1744
          white: 361
          draws: 23
          black: 272
          game: null
          opening:
            eco: D06
            name: Queen's Gambit
        - uci: c2c3
          san: c3
          averageOpponentRating: 1797
          performance: 1797
          white: 2
          draws: 0
          black: 2
          game: null
          opening: null
        - uci: e2e4
          san: e4
          averageOpponentRating: 1762
          performance: 1640
          white: 1
          draws: 0
          black: 2
          game: null
          opening:
            eco: D00
            name: Blackmar-Diemer Gambit
        - uci: g1f3
          san: Nf3
          averageOpponentRating: 1497
          performance: 1374
          white: 1
          draws: 0
          black: 2
          game: null
          opening:
            eco: D02
            name: 'Queen''s Pawn Game: Zukertort Variation'
        - uci: h2h4
          san: h4
          averageOpponentRating: 1674
          performance: 874
          white: 0
          draws: 0
          black: 1
          game:
            id: 9vA24xBn
            winner: black
            speed: bullet
            mode: rated
            black:
              name: MentalBlood
              rating: 1674
            white:
              name: revoof
              rating: 1657
            year: 2020
            month: 2020-06
          opening: null
        recentGames:
        - uci: c2c4
          id: ycZbWQZO
          winner: white
          speed: bullet
          mode: rated
          black:
            name: Winavesh
            rating: 1700
          white:
            name: revoof
            rating: 1700
          year: 2024
          month: 2024-11
    OpeningExplorerMastersGame:
      type: object
      properties:
        id:
          type: string
        winner:
          oneOf:
          - $ref: '#/components/schemas/GameColor'
          - type: 'null'
        white:
          $ref: '#/components/schemas/OpeningExplorerGamePlayer'
        black:
          $ref: '#/components/schemas/OpeningExplorerGamePlayer'
        year:
          type: integer
        month:
          type: string
      required:
      - id
      - winner
      - white
      - black
      - year
    OpeningExplorerLichessGame:
      type: object
      properties:
        id:
          type: string
        winner:
          oneOf:
          - $ref: '#/components/schemas/GameColor'
          - type: 'null'
        speed:
          $ref: '#/components/schemas/Speed'
        white:
          $ref: '#/components/schemas/OpeningExplorerGamePlayer'
        black:
          $ref: '#/components/schemas/OpeningExplorerGamePlayer'
        year:
          type: number
        month:
          type:
          - string
          - 'null'
      required:
      - id
      - winner
      - white
      - black
      - year
      - month
    OpeningExplorerMasters:
      type: object
      properties:
        opening:
          oneOf:
          - $ref: '#/components/schemas/OpeningExplorerOpening'
          - type: 'null'
        white:
          type: integer
        draws:
          type: integer
        black:
          type: integer
        moves:
          type: array
          items:
            properties:
              uci:
                type: string
              san:
                type: string
              averageRating:
                type: integer
              white:
                type: integer
              draws:
                type: integer
              black:
                type: integer
              game:
                oneOf:
                - $ref: '#/components/schemas/OpeningExplorerMastersGame'
                - type: 'null'
              opening:
                oneOf:
                - $ref: '#/components/schemas/OpeningExplorerOpening'
                - type: 'null'
            required:
            - uci
            - san
            - averageRating
            - white
            - draws
            - black
            - game
            - opening
        topGames:
          type: array
          items:
            allOf:
            - type: object
              properties:
                uci:
                  type: string
              required:
              - uci
            - $ref: '#/components/schemas/OpeningExplorerMastersGame'
      required:
      - opening
      - white
      - draws
      - black
      - moves
      - topGames
    VariantKey:
      type: string
      enum:
      - standard
      - chess960
      - crazyhouse
      - antichess
      - atomic
      - horde
      - kingOfTheHill
      - racingKings
      - threeCheck
      - fromPosition
      example: standard
      default: standard
    GameColor:
      type: string
      enum:
      - white
      - black
    OpeningExplorerGamePlayer:
      type: object
      properties:
        name:
          type: string
        rating:
          type: integer
      required:
      - name
      - rating
    OpeningExplorerLichess:
      type: object
      properties:
        opening:
          oneOf:
          - $ref: '#/components/schemas/OpeningExplorerOpening'
          - type: 'null'
        white:
          type: integer
        draws:
          type: integer
        black:
          type: integer
        moves:
          type: array
          items:
            type: object
            properties:
              uci:
                type: string
              san:
                type: string
              averageRating:
                type: integer
              white:
                type: integer
              draws:
                type: integer
              black:
                type: integer
              game:
                oneOf:
                - $ref: '#/components/schemas/OpeningExplorerLichessGame'
                - type: 'null'
              opening:
                oneOf:
                - $ref: '#/components/schemas/OpeningExplorerOpening'
                - type: 'null'
            required:
            - uci
            - san
            - averageRating
            - white
            - draws
            - black
            - game
            - opening
        topGames:
          type: array
          items:
            allOf:
            - type: object
              properties:
                uci:
                  type: string
              required:
              - uci
            - $ref: '#/components/schemas/OpeningExplorerLichessGame'
        recentGames:
          type: array
          items:
            allOf:
            - type: object
              properties:
                uci:
                  type: string
              required:
              - uci
            - $ref: '#/components/schemas/OpeningExplorerLichessGame'
        history:
          type: array
          items:
            type: object
            properties:
              month:
                type: string
              white:
                type: integer
              draws:
                type: integer
              black:
                type: integer
            required:
            - month
            - white
            - draws
            - black
      required:
      - opening
      - white
      - draws
      - black
      - moves
      - topGames
    OpeningExplorerOpening:
      type: object
      properties:
        eco:
          type: string
        name:
          type: string
      required:
      - eco
      - name
  examples:
    openingExplorer-otbMasterGame.pgn:
      value: '[Event "Wch Blitz"]

        [Site "Astana"]

        [Date "2012.07.10"]

        [Round "23"]

        [White "Carlsen, Magnus"]

        [Black "Chadaev, Nikolay"]

        [Result "1-0"]

        [WhiteElo "2837"]

        [BlackElo "2580"]


        1. e4 e5 2. f4 d5 3. exd5 exf4 4. Nf3 Nf6 5. c4 c6 6. d4 cxd5 7. c5 Nc6 8. Bb5 Be7 9. O-O O-O 10. Bxf4 Bg4 11. Nc3 Ne4 12. Qd3 Bf5 13. Qe3 Bf6 14. Bxc6 bxc6 15. Ne5 Bxe5 16. Bxe5 Bg6 17. Nxe4 Bxe4 18. Qg3 f6 19. Bd6 Re8 20. b4 Bg6 21. a4 a6 22. h4 Qd7 23. h5 Bxh5 24. Rxf6 Qg4 25. Qxg4 Bxg4 26. Rf4 Bh5 27. Raf1 h6 28. Be5 Ra7 29. b5 axb5 30. axb5 cxb5 31. c6 Raa8 32. c7 Kh7 33. Rb1 Be2 34. Rf7 Rg8 35. Re7 Bc4 36. Kh2 Rae8 37. Rd7 Ra8 38. Rb2 Raf8 39. g4 Ra8 40. Rf2 b4 41. Rff7 h5 42. Rxg7+ Rxg7 43. Rxg7+ 1-0

        '
    openingExplorer-lichess.json:
      value:
        white: 5061745
        draws: 492487
        black: 4458129
        moves:
        - uci: c6d5
          san: cxd5
          averageRating: 1806
          white: 4517660
          draws: 450366
          black: 4016728
          game: null
          opening: null
        - uci: d8d5
          san: Qxd5
          averageRating: 1662
          white: 236785
          draws: 17561
          black: 170379
          game: null
          opening: null
        - uci: g8f6
          san: Nf6
          averageRating: 1973
          white: 195502
          draws: 17425
          black: 184987
          game: null
          opening:
            eco: D06
            name: 'Queen''s Gambit Declined: Marshall Defense, Tan Gambit'
        - uci: e7e6
          san: e6
          averageRating: 1839
          white: 40807
          draws: 2695
          black: 32332
          game: null
          opening: null
        - uci: d8a5
          san: Qa5+
          averageRating: 1436
          white: 19458
          draws: 1221
          black: 13712
          game: null
          opening: null
        - uci: c8f5
          san: Bf5
          averageRating: 1705
          white: 17503
          draws: 1118
          black: 15374
          game: null
          opening: null
        - uci: c6c5
          san: c5
          averageRating: 1802
          white: 11081
          draws: 678
          black: 6174
          game: null
          opening: null
        - uci: g7g6
          san: g6
          averageRating: 1861
          white: 3867
          draws: 325
          black: 3561
          game: null
          opening: null
        - uci: c8g4
          san: Bg4
          averageRating: 1866
          white: 3775
          draws: 255
          black: 3715
          game: null
          opening: null
        - uci: e7e5
          san: e5
          averageRating: 1820
          white: 2796
          draws: 156
          black: 2555
          game: null
          opening: null
        - uci: a7a6
          san: a6
          averageRating: 1877
          white: 2180
          draws: 139
          black: 1876
          game: null
          opening: null
        - uci: b8d7
          san: Nd7
          averageRating: 1627
          white: 2302
          draws: 119
          black: 1574
          game: null
          opening: null
        recentGames:
        - uci: c6d5
          id: PFRcQXaV
          winner: white
          speed: bullet
          mode: rated
          black:
            name: chaotic_logic
            rating: 2611
          white:
            name: AritzMancha
            rating: 2626
          year: 2026
          month: 2026-01
        - uci: c6d5
          id: 1Eu0KMO6
          winner: white
          speed: blitz
          mode: rated
          black:
            name: Helmy-Saber2
            rating: 2160
          white:
            name: denk_er
            rating: 2222
          year: 2026
          month: 2026-01
        - uci: c6d5
          id: Oykwl4gi
          winner: white
          speed: blitz
          mode: rated
          black:
            name: JonKi1002
            rating: 1831
          white:
            name: KonstantinXCII
            rating: 1940
          year: 2026
          month: 2026-01
        - uci: c6d5
          id: ayG0PtAu
          winner: black
          speed: bullet
          mode: rated
          black:
            name: IlyaGaon
            rating: 1364
   

# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lichess/refs/heads/main/openapi/lichess-opening-explorer-api-openapi.yml