Limits & Access
Plans, rate limits, authentication, and how to get an API key.
Plans
ChessGrammar offers a free tier and paid tiers. Free is unauthenticated and rate-limited per IP; paid tiers use an API key and unlock higher throughput.
| Plan | Price | Rate limit | Auth | Base URL |
|---|---|---|---|---|
| Free | $0/mo | 30 req/min | None | https://chessgrammar.com/api/v1 |
| Builder | $29/mo | 120 req/min | API key | https://api.chessgrammar.com/v1 |
| Scale | $59/mo | 500 req/min | API key | https://api.chessgrammar.com/v1 |
| Custom | On request | Unlimited / dedicated | API key | Contact us |
Scale also includes priority email support. Custom plans cover dedicated infrastructure, on-premise, or volume agreements — get in touch.
Current prices are introductory. Early subscribers keep their rate locked when prices increase with the v3 engine release.
Rate limit responses
When a rate limit is exceeded, the API returns HTTP 429:
{"error": "Rate limit exceeded"}
For the free tier's daily game analysis cap:
{"error": "Daily game analysis limit reached. Upgrade for higher limits."}
Getting an API key
- Go to Pricing and choose Builder or Scale.
- Complete checkout via Stripe.
- Your API key (
cg_…) is issued immediately and visible in your dashboard. - Send it on every request to
api.chessgrammar.com/v1in theAuthorizationheader:
curl -X POST https://api.chessgrammar.com/v1/extract \
-H "Content-Type: application/json" \
-H "Authorization: Bearer cg_YOUR_API_KEY" \
-d '{"fen": "..."}'
Treat your key like a password — do not commit it to source control or expose it client-side.
Best practices
- Use L1 for bulk scanning — fast structural scan suits high-volume position screening
- Two-pass analysis — scan with L1 first, then call L2 only on positions where L1 found candidates
- Cache results — the API is deterministic; the same FEN always returns the same result
- Filter by pattern — use the
patternsparameter to reduce response size when you only need specific tactics