Reference
Error Handling
All error responses follow a consistent JSON structure with an error code and a human-readable message. Use the error code for programmatic handling and the message for display purposes.
| Status | Meaning |
|---|---|
| 400 | Bad request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Not found |
| 409 | Conflict |
| 410 | Gone |
| 429 | Rate limited |
| 503 | Service unavailable |
Error response format
JSON
{
"error": "invalid_word",
"message": "Word is not in the dictionary or does not use the correct letters."
}The CLI API uses a flat error format with top-level
error and message fields. The Word API uses a nested format: { error: { code, message } }. Game-specific codes use snake_case (e.g. invalid_word), while infrastructure codes use SCREAMING_SNAKE_CASE (e.g. RATE_LIMIT_EXCEEDED).Common error codes
| Error code | Endpoint |
|---|---|
| invalid_word | POST guess |
| puzzle_in_progress | GET reveal |
| no_hints_remaining | POST hint |
| puzzle_complete | POST guess |
| expired_code | POST auth/poll |
| consumed | POST auth/poll |
| already_claimed | POST auth/complete |
Always check the
error field for programmatic handling. The message is human-readable and safe to show to users, but may change between API versions — don't match on it.Was this page helpful?