---
title: Errors
description: Every error code the API returns.
sidebar:
  order: 7
---

An error is JSON with a `code` you can branch on and a `message` you can show:

```json
{ "error": { "code": "rate_limited", "message": "Rate limit reached for the standard tier. Try again shortly." } }
```

| Status | `code` | When |
|---|---|---|
| 400 | `bad_request` | A parameter is not one the endpoint accepts, such as an unknown `stat` or `status`. |
| 401 | `missing_key` | The request carries no key. |
| 401 | `invalid_key` | The key is unknown, revoked, or expired. |
| 403 | `no_access` | The key's owner has no access right now. |
| 403 | `forbidden` | The account cannot use the API, or this credential cannot be used here. |
| 404 | `not_found` | No such season, team, player, or game, or not revealed yet. |
| 409 | `not_final` | A box score or commentary asked for before the game is final. |
| 429 | `rate_limited` | Past the key's limit. Wait for `Retry-After` seconds. |
| 500 | `unavailable` | Something went wrong on Hockay's side. Try again. |
