| 400 | invalid_input | A symbol can’t be a ticker, none was given, or there were more than 50. Unknown but valid-looking tickers aren’t an error; they come back under not_scored. | Fix the input named in field. |
| 400 | invalid_date | The date isn’t YYYY-MM-DD, or has no published scores (a weekend, a holiday, or today before the scores are out). | Use a recent trading day, or leave date out. |
| 401 | unauthenticated | No key, or the key isn’t recognized. | Send Authorization: Bearer <key>. |
| 401 | key_revoked | The key was deleted. | Create a new key in the console. |
| 402 | plan_required | Your plan doesn’t include today’s scores, or the date is older than your plan’s history. | Subscribe to Plus, or ask for a date within the last 21 trading days. |
| 429 | limit_reached | Your plan’s limit is reached. The whole call is refused and nothing counts. | Wait until resets_at; stocks you’ve seen today still come back. |
| 429 | rate_limited | Too many requests too quickly. | Wait retry_after_seconds, then retry. |
| 503 | model_unavailable | Scores or the plan check can’t be read right now (rare). | Retry after retry_after_seconds. |
| 500 | server_error | Something went wrong on our side. | Retry once; if it happens again, write to support with the request_id. |