STOCKFISH 14–19Latest release: 19Explore engines ↗

Learn

UCI

The text protocol chess GUIs use to talk to engines.

The Universal Chess Interface is a line-based protocol: position fen …, go depth 20, and the engine streams info lines until bestmove. This API wraps UCI in JSON so you never parse info lines, and exposes only the options that make sense for a hosted engine (see GET /v1/engines).

Example

♜♞♝♛♚♝♞♜♟♟♟♟♟♟♟♟♙♙♙♙♙♙♙♙♖♘♗♕♔♗♘♖
curl -s https://stockfishapi.com/v1/eval \
  -H "Authorization: Bearer $STOCKFISH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fen":"rnbqkbnr/pp1ppppp/8/2p5/4P3/2P5/PP1P1PPP/RNBQKBNR b KQkq - 0 2","depth":14}'
const res = await fetch("https://stockfishapi.com/v1/eval", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.STOCKFISH_API_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({
    "fen": "rnbqkbnr/pp1ppppp/8/2p5/4P3/2P5/PP1P1PPP/RNBQKBNR b KQkq - 0 2",
    "depth": 14
  }),
});
const data = await res.json();
import os, requests

r = requests.post(
    "https://stockfishapi.com/v1/eval",
    headers={"Authorization": f"Bearer {os.environ['STOCKFISH_API_KEY']}"},
    json={
        "fen": "rnbqkbnr/pp1ppppp/8/2p5/4P3/2P5/PP1P1PPP/RNBQKBNR b KQkq - 0 2",
        "depth": 14
    },
)
data = r.json()