Powered by Stockfish 17 lite NNUE. Free API access is available; paid subscriptions are not enabled.
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
- Full reference for
/eval, including engine versions and options - Python, JavaScript, MCP and Claude