Skip to content
GET /v1/puzzle

Puzzle by id

Try it live

10 free calls per day — no sign-up, no API key. Goes through the oanor gateway.

Custom headers (optional)
api.oanor.com/lichess-api

It works. Grab an API key and use it in your project.

Get an API key

Code snippets

curl "https://api.oanor.com/lichess-api/v1/puzzle" \
  -H "x-oanor-key: oanor_test_..."
await fetch("https://api.oanor.com/lichess-api/v1/puzzle", {
  headers: { "x-oanor-key": "oanor_test_..." }
});
$ch = curl_init("https://api.oanor.com/lichess-api/v1/puzzle");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-oanor-key: oanor_test_..."]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$out = curl_exec($ch);
import requests
requests.get(
    "https://api.oanor.com/lichess-api/v1/puzzle",
    headers={"x-oanor-key": "oanor_test_..."}
)

Example response

A real response from this endpoint, captured by the latest health check.

{
    "data": {
        "puzzle": {
            "id": "nn1b9",
            "game": {
                "id": "CL8bOq5q",
                "pgn": "e4 e5 Nf3 Nf6 d4 exd4 e5 Ne4 Nxd4 d5 Bd3 Bc5 c3 Nc6 Nxc6 bxc6 Bxe4 dxe4 Qxd8+ Kxd8 Nd2 e3 fxe3 Bxe3 Nf3 Bxc1 Rxc1 Be6 b3 a5 Kf2 a4 Nd4 Bd5 c4 c5 cxd5 cxd4 Rc4 axb3 axb3 Re8 Re1 Ra2+ Kg3 Rb2 Rxd4 Rxb3+ Kf4 Kd7 Rc1 Rb2 Rdc4 Rc8 R1c2 Rxc2 Rxc2 c6 dxc6+ Rxc6 Rxc6 Kxc6 Kf5 Kd7 g4 Ke7 h4 h6 g5 g6+ Ke4",
                "url": "https://lichess.org/CL8bOq5q",
                "perf": "Rapid",
                "clock": "10+0",
                "rated": true,
                "players": [
                    {
                        "id": "l06chess",
                        "name": "l06chess",
                        "color": "white",
                        "rating": 1894
                    },
                    {
                        "id": "thinklikegrandmaster",
                        "name": "Thinklikegrandmaster",
                        "color": "black",
                        "rating": 1865
                    }
                ]
            },
            "plays": 44173,
            "rating": 2019,
            "themes": [
                "veryLong",
                "endgame",
                "zugzwang",
                "crushing",
                "pawnEndgame"
            ],
            "solution": [
                "h6g5",
                "h4g5",
                "e7e6",
                "e4f4",
                "e6d5",
                "e5e6",
                "f7e6"
            ],
            "initial_ply": 70
        }
    },
    "meta": {
        "timestamp": "2026-06-07T16:46:58.384Z",
        "request_id": "e8807046-5fea-413b-ba22-888e101aeee9"
    },
    "status": "ok",
    "message": "Puzzle retrieved successfully",
    "success": true
}