Powered by Stockfish 17 lite NNUE. Free API access is available; paid subscriptions are not enabled.

Documentation

Quickstart

1. Get a key

curl -X POST https://stockfishapi.com/v1/signup \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com"}'

The response contains api_key. It is shown once; store it as STOCKFISH_API_KEY. You are on the free plan: depth up to 14, 2,000 units a day, 5 requests a second.

2. Evaluate a position

curl -s https://stockfishapi.com/v1/eval \
  -H "Authorization: Bearer $STOCKFISH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fen":"r1bqkbnr/pppp1ppp/2n5/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 2 3","depth":14,"multipv":2}'
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": "r1bqkbnr/pppp1ppp/2n5/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 2 3",
    "depth": 14,
    "multipv": 2
  }),
});
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": "r1bqkbnr/pppp1ppp/2n5/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 2 3",
        "depth": 14,
        "multipv": 2
    },
)
data = r.json()

3. Read what it cost

X-Cost-Units: 2
X-Quota-Remaining: 1998
X-RateLimit-Remaining: 4
X-Engine: stockfish-17-wasm

Before a bigger request, ask for the price: GET /v1/price?depth=20&multipv=3. The engine stops at the quoted node budget, so the quote is a ceiling.

4. When you need more

A 402 carries the plan options and a checkout link. Open it once; the same key keeps working with the new limits within a minute. See errors and pricing.

Next