{
  "info": {
    "_postman_id": "6f4faae1-5974-4b4a-9705-a38cd14bd148",
    "name": "Lichess.org API reference Account Tablebase API",
    "description": "# Introduction\nWelcome to the reference for the Lichess API! Lichess is free/libre,\nopen-source chess server powered by volunteers and donations.\n- Get help in the [Lichess Discord channel](https://discord.gg/lichess)\n- API demo app with OAuth2 login and gameplay: [source](https://github.com/lichess-org/api-demo) / [demo](https://lichess-org.github.io/api-demo/)\n- API UI app with OAuth2 login and endpoint forms: [source](https://github.com/lichess-org/api-ui) / [website](https://lichess.org/api/ui)\n- [Contribute to this documentation on Github](https://github.com/lichess-org/api)\n- Check out [Lichess widgets to embed in your website](https://lichess.org/developers)\n- [Download all Lichess rated games](https://database.lichess.org/)\n- [Download all Lichess puzzles with themes, ratings and votes](https://database.lichess.org/#puzzles)\n- [Download all evaluated positions](https://database.lichess.org/#evals)\n\n## Endpoint\nAll requests go to `https://lichess.org` (unless otherwise specified).\n\n## Clients\n- [Python general API](https://github.com/lichess-org/berserk)\n- [MicroPython general API](https://github.com/mkomon/uberserk)\n- [Python general API - async](https://pypi.org/project/async-lichess-sdk)\n- [Python Lichess Bot](https://github.com/lichess-bot-devs/lichess-bot)\n- [Python Board API for Certabo](https://github.com/haklein/certabo-lichess)\n- [Java general API](https://github.com/tors42/chariot)\n- [JavaScript & TypeScript general API](https://github.com/devjiwonchoi/equine)\n- [LichessNET - C# API Wrapper](https://github.com/Rabergsel/LichessNET)\n- [.NET general API](https://github.com/Dblike/LichessSharp)\n\n## Rate limiting\nAll requests are rate limited using various strategies,\nto ensure the API remains responsive for everyone.\nOnly make one request at a time.\nIf you receive an HTTP response with a [429 status](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#429),\nyou have exceded one of the rate limits.\nIn most cases, waiting one minute before retrying will be sufficient, but some limits may require longer.\nReduce your request frequency before retrying.\n\n## Streaming with ND-JSON\nSome 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.\n\nHere's a [JavaScript utility function](https://gist.github.com/ornicar/a097406810939cf7be1df8ea30e94f3e) to help reading NDJSON streamed responses.\n\n## Authentication\n### Which authentication method is right for me?\n[Read about the Lichess API authentication methods and code examples](https://github.com/lichess-org/api/blob/master/example/README.md)\n\n### Personal Access Token\nPersonal API access tokens allow you to quickly interact with Lichess API without going through an OAuth flow.\n- [Generate a personal access token](https://lichess.org/account/oauth/token)\n- `curl https://lichess.org/api/account -H \"Authorization: Bearer {token}\"`\n- [NodeJS example](https://github.com/lichess-org/api/tree/master/example/oauth-personal-token)\n\n### Token Security\n- Keep your tokens secret. Do not share them in public repositories or public forums.\n- 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.\n- 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.\n- If you suspect a token has been compromised, revoke it immediately.\n\nTo see your active tokens or revoke them, see [your Personal API access tokens](https://lichess.org/account/oauth/token).\n\n### Authorization Code Flow with PKCE\nThe authorization code flow with PKCE allows your users to **login with Lichess**.\nLichess supports unregistered and public clients (no client authentication, choose any unique client id).\nThe only accepted code challenge method is `S256`.\nAccess tokens are long-lived (expect one year), unless they are revoked.\nRefresh tokens are not supported.\n\nSee the [documentation for the OAuth endpoints](#tag/OAuth) or\nthe [PKCE RFC](https://datatracker.ietf.org/doc/html/rfc7636#section-4) for a precise protocol description.\n\n- [Demo app](https://lichess-org.github.io/api-demo/)\n- [Minimal client-side example](https://github.com/lichess-org/api/tree/master/example/oauth-app)\n- [Flask/Python example](https://github.com/lakinwecker/lichess-oauth-flask)\n- [Java example](https://github.com/tors42/lichess-oauth-pkce-app)\n- [NodeJS Passport strategy to login with Lichess OAuth2](https://www.npmjs.com/package/passport-lichess)\n\n#### Real life examples\n- [PyChess](https://github.com/gbtami/pychess-variants) ([source code](https://github.com/gbtami/pychess-variants))\n- [Lichess4545](https://www.lichess4545.com/) ([source code](https://github.com/cyanfish/heltour))\n- [English Chess Federation](https://ecf.octoknight.com/)\n- [Rotherham Online Chess](https://rotherhamonlinechess.azurewebsites.net/tournaments)\n\n### Token format\nAccess tokens and authorization codes match `^[A-Za-z0-9_]+$`.\nThe length of tokens can be increased without notice. Make sure your application can handle at least 512 characters.\nBy convention tokens have a recognizable prefix, but do not rely on this.\n\n\nContact Support:\n Name: Lichess.org API\n Email: contact@lichess.org",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "createdAt": "2026-07-28T02:06:56.000Z",
    "updatedAt": "2026-07-28T02:06:56.000Z",
    "lastUpdatedBy": "35240",
    "uid": "35240-6f4faae1-5974-4b4a-9705-a38cd14bd148"
  },
  "item": [
    {
      "name": "standard",
      "item": [
        {
          "name": "Tablebase lookup",
          "id": "86fde590-f6f0-4aa1-8818-3976993e7e77",
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          },
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "https://tablebase.lichess.org/standard?fen=<string>&dtc=never",
              "protocol": "https",
              "host": [
                "tablebase",
                "lichess",
                "org"
              ],
              "path": [
                "standard"
              ],
              "query": [
                {
                  "description": "(Required) X-FEN of the position. Underscores allowed.",
                  "key": "fen",
                  "value": "<string>"
                },
                {
                  "description": "When to query the tablebase for `dtc` values. The default is\n`auxiliary`, i.e., only when the position is not covered by one of the\nother tablebases.\n",
                  "key": "dtc",
                  "value": "never"
                }
              ]
            },
            "description": "**Endpoint: <https://tablebase.lichess.org>**\n\nExample: `curl http://tablebase.lichess.org/standard?fen=4k3/6KP/8/8/8/8/7p/8_w_-_-_0_1`\n"
          },
          "response": [
            {
              "id": "8daab290-0230-4e3e-85b0-450a36bce387",
              "name": "The tablebase information for the position in standard chess.",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "https://tablebase.lichess.org/standard?fen=<string>&dtc=never",
                  "protocol": "https",
                  "host": [
                    "tablebase",
                    "lichess",
                    "org"
                  ],
                  "path": [
                    "standard"
                  ],
                  "query": [
                    {
                      "description": "(Required) X-FEN of the position. Underscores allowed.",
                      "key": "fen",
                      "value": "<string>"
                    },
                    {
                      "description": "When to query the tablebase for `dtc` values. The default is\n`auxiliary`, i.e., only when the position is not covered by one of the\nother tablebases.\n",
                      "key": "dtc",
                      "value": "never"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "Access-Control-Allow-Origin",
                  "value": "'*'"
                }
              ],
              "cookie": [],
              "responseTime": null,
              "body": "{\n  \"category\": \"syzygy-win\",\n  \"moves\": [\n    {\n      \"uci\": \"<string>\",\n      \"san\": \"<string>\",\n      \"category\": \"unknown\",\n      \"dtz\": \"<null,integer>\",\n      \"precise_dtz\": \"<null,integer>\",\n      \"dtc\": \"<null,integer>\",\n      \"dtm\": \"<null,integer>\",\n      \"dtw\": \"<null,integer>\",\n      \"zeroing\": \"<boolean>\",\n      \"conversion\": \"<boolean>\",\n      \"checkmate\": \"<boolean>\",\n      \"stalemate\": \"<boolean>\",\n      \"variant_win\": \"<boolean>\",\n      \"variant_loss\": \"<boolean>\",\n      \"insufficient_material\": \"<boolean>\"\n    },\n    {\n      \"uci\": \"<string>\",\n      \"san\": \"<string>\",\n      \"category\": \"win\",\n      \"dtz\": \"<null,integer>\",\n      \"precise_dtz\": \"<null,integer>\",\n      \"dtc\": \"<null,integer>\",\n      \"dtm\": \"<null,integer>\",\n      \"dtw\": \"<null,integer>\",\n      \"zeroing\": \"<boolean>\",\n      \"conversion\": \"<boolean>\",\n      \"checkmate\": \"<boolean>\",\n      \"stalemate\": \"<boolean>\",\n      \"variant_win\": \"<boolean>\",\n      \"variant_loss\": \"<boolean>\",\n      \"insufficient_material\": \"<boolean>\"\n    }\n  ],\n  \"dtz\": \"<null,integer>\",\n  \"precise_dtz\": \"<null,integer>\",\n  \"dtc\": \"<null,integer>\",\n  \"dtm\": \"<null,integer>\",\n  \"dtw\": \"<null,integer>\",\n  \"checkmate\": \"<boolean>\",\n  \"stalemate\": \"<boolean>\",\n  \"variant_win\": \"<boolean>\",\n  \"variant_loss\": \"<boolean>\",\n  \"insufficient_material\": \"<boolean>\"\n}",
              "createdAt": "2026-07-28T02:06:57.000Z",
              "updatedAt": "2026-07-28T02:06:57.000Z",
              "uid": "35240-8daab290-0230-4e3e-85b0-450a36bce387"
            }
          ],
          "createdAt": "2026-07-28T02:06:57.000Z",
          "updatedAt": "2026-07-28T02:06:57.000Z",
          "uid": "35240-86fde590-f6f0-4aa1-8818-3976993e7e77"
        }
      ],
      "id": "265b6aed-0a4b-4e3f-a430-a86313166345",
      "createdAt": "2026-07-28T02:06:57.000Z",
      "updatedAt": "2026-07-28T02:06:57.000Z",
      "uid": "35240-265b6aed-0a4b-4e3f-a430-a86313166345"
    },
    {
      "name": "atomic",
      "item": [
        {
          "name": "Tablebase lookup for Atomic chess",
          "id": "13483c44-da99-4c00-bf32-2124788b00ba",
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          },
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "https://tablebase.lichess.org/atomic?fen=<string>",
              "protocol": "https",
              "host": [
                "tablebase",
                "lichess",
                "org"
              ],
              "path": [
                "atomic"
              ],
              "query": [
                {
                  "description": "(Required) X-FEN of the position. Underscores allowed.",
                  "key": "fen",
                  "value": "<string>"
                }
              ]
            },
            "description": "**Endpoint: <https://tablebase.lichess.org>**\n"
          },
          "response": [
            {
              "id": "ee9a5a08-c379-4184-90a8-0c2986fffd45",
              "name": "The tablebase information for the position in atomic chess.",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "https://tablebase.lichess.org/atomic?fen=<string>",
                  "protocol": "https",
                  "host": [
                    "tablebase",
                    "lichess",
                    "org"
                  ],
                  "path": [
                    "atomic"
                  ],
                  "query": [
                    {
                      "description": "(Required) X-FEN of the position. Underscores allowed.",
                      "key": "fen",
                      "value": "<string>"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "Access-Control-Allow-Origin",
                  "value": "'*'"
                }
              ],
              "cookie": [],
              "responseTime": null,
              "body": "{\n  \"category\": \"syzygy-win\",\n  \"moves\": [\n    {\n      \"uci\": \"<string>\",\n      \"san\": \"<string>\",\n      \"category\": \"unknown\",\n      \"dtz\": \"<null,integer>\",\n      \"precise_dtz\": \"<null,integer>\",\n      \"dtc\": \"<null,integer>\",\n      \"dtm\": \"<null,integer>\",\n      \"dtw\": \"<null,integer>\",\n      \"zeroing\": \"<boolean>\",\n      \"conversion\": \"<boolean>\",\n      \"checkmate\": \"<boolean>\",\n      \"stalemate\": \"<boolean>\",\n      \"variant_win\": \"<boolean>\",\n      \"variant_loss\": \"<boolean>\",\n      \"insufficient_material\": \"<boolean>\"\n    },\n    {\n      \"uci\": \"<string>\",\n      \"san\": \"<string>\",\n      \"category\": \"win\",\n      \"dtz\": \"<null,integer>\",\n      \"precise_dtz\": \"<null,integer>\",\n      \"dtc\": \"<null,integer>\",\n      \"dtm\": \"<null,integer>\",\n      \"dtw\": \"<null,integer>\",\n      \"zeroing\": \"<boolean>\",\n      \"conversion\": \"<boolean>\",\n      \"checkmate\": \"<boolean>\",\n      \"stalemate\": \"<boolean>\",\n      \"variant_win\": \"<boolean>\",\n      \"variant_loss\": \"<boolean>\",\n      \"insufficient_material\": \"<boolean>\"\n    }\n  ],\n  \"dtz\": \"<null,integer>\",\n  \"precise_dtz\": \"<null,integer>\",\n  \"dtc\": \"<null,integer>\",\n  \"dtm\": \"<null,integer>\",\n  \"dtw\": \"<null,integer>\",\n  \"checkmate\": \"<boolean>\",\n  \"stalemate\": \"<boolean>\",\n  \"variant_win\": \"<boolean>\",\n  \"variant_loss\": \"<boolean>\",\n  \"insufficient_material\": \"<boolean>\"\n}",
              "createdAt": "2026-07-28T02:06:57.000Z",
              "updatedAt": "2026-07-28T02:06:57.000Z",
              "uid": "35240-ee9a5a08-c379-4184-90a8-0c2986fffd45"
            }
          ],
          "createdAt": "2026-07-28T02:06:57.000Z",
          "updatedAt": "2026-07-28T02:06:57.000Z",
          "uid": "35240-13483c44-da99-4c00-bf32-2124788b00ba"
        }
      ],
      "id": "9698e6ea-fece-4e63-a50f-919d0cdb7191",
      "createdAt": "2026-07-28T02:06:57.000Z",
      "updatedAt": "2026-07-28T02:06:57.000Z",
      "uid": "35240-9698e6ea-fece-4e63-a50f-919d0cdb7191"
    },
    {
      "name": "antichess",
      "item": [
        {
          "name": "Tablebase lookup for Antichess",
          "id": "08db556a-edcb-4371-8cfb-f122efa616b0",
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          },
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "https://tablebase.lichess.org/antichess?fen=<string>",
              "protocol": "https",
              "host": [
                "tablebase",
                "lichess",
                "org"
              ],
              "path": [
                "antichess"
              ],
              "query": [
                {
                  "description": "(Required) X-FEN of the position. Underscores allowed.",
                  "key": "fen",
                  "value": "<string>"
                }
              ]
            },
            "description": "**Endpoint: <https://tablebase.lichess.org>**\n"
          },
          "response": [
            {
              "id": "a6cada11-736d-4069-9e6c-78209b39b83b",
              "name": "The tablebase information for the position in antichess.",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "https://tablebase.lichess.org/antichess?fen=<string>",
                  "protocol": "https",
                  "host": [
                    "tablebase",
                    "lichess",
                    "org"
                  ],
                  "path": [
                    "antichess"
                  ],
                  "query": [
                    {
                      "description": "(Required) X-FEN of the position. Underscores allowed.",
                      "key": "fen",
                      "value": "<string>"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "Access-Control-Allow-Origin",
                  "value": "'*'"
                }
              ],
              "cookie": [],
              "responseTime": null,
              "body": "{\n  \"category\": \"syzygy-win\",\n  \"moves\": [\n    {\n      \"uci\": \"<string>\",\n      \"san\": \"<string>\",\n      \"category\": \"unknown\",\n      \"dtz\": \"<null,integer>\",\n      \"precise_dtz\": \"<null,integer>\",\n      \"dtc\": \"<null,integer>\",\n      \"dtm\": \"<null,integer>\",\n      \"dtw\": \"<null,integer>\",\n      \"zeroing\": \"<boolean>\",\n      \"conversion\": \"<boolean>\",\n      \"checkmate\": \"<boolean>\",\n      \"stalemate\": \"<boolean>\",\n      \"variant_win\": \"<boolean>\",\n      \"variant_loss\": \"<boolean>\",\n      \"insufficient_material\": \"<boolean>\"\n    },\n    {\n      \"uci\": \"<string>\",\n      \"san\": \"<string>\",\n      \"category\": \"win\",\n      \"dtz\": \"<null,integer>\",\n      \"precise_dtz\": \"<null,integer>\",\n      \"dtc\": \"<null,integer>\",\n      \"dtm\": \"<null,integer>\",\n      \"dtw\": \"<null,integer>\",\n      \"zeroing\": \"<boolean>\",\n      \"conversion\": \"<boolean>\",\n      \"checkmate\": \"<boolean>\",\n      \"stalemate\": \"<boolean>\",\n      \"variant_win\": \"<boolean>\",\n      \"variant_loss\": \"<boolean>\",\n      \"insufficient_material\": \"<boolean>\"\n    }\n  ],\n  \"dtz\": \"<null,integer>\",\n  \"precise_dtz\": \"<null,integer>\",\n  \"dtc\": \"<null,integer>\",\n  \"dtm\": \"<null,integer>\",\n  \"dtw\": \"<null,integer>\",\n  \"checkmate\": \"<boolean>\",\n  \"stalemate\": \"<boolean>\",\n  \"variant_win\": \"<boolean>\",\n  \"variant_loss\": \"<boolean>\",\n  \"insufficient_material\": \"<boolean>\"\n}",
              "createdAt": "2026-07-28T02:06:57.000Z",
              "updatedAt": "2026-07-28T02:06:57.000Z",
              "uid": "35240-a6cada11-736d-4069-9e6c-78209b39b83b"
            }
          ],
          "createdAt": "2026-07-28T02:06:57.000Z",
          "updatedAt": "2026-07-28T02:06:57.000Z",
          "uid": "35240-08db556a-edcb-4371-8cfb-f122efa616b0"
        }
      ],
      "id": "fc34f172-fa7f-4718-9e82-a2a7bdd92b7c",
      "createdAt": "2026-07-28T02:06:57.000Z",
      "updatedAt": "2026-07-28T02:06:57.000Z",
      "uid": "35240-fc34f172-fa7f-4718-9e82-a2a7bdd92b7c"
    }
  ],
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://lichess.org"
    }
  ]
}