# Errors
We use standard HTTP status codes for success or failure.
A typical error response may look something like this:

```json
{
  "errors": [],
  "message": "error message",
  "status": 400
}
```
* `errors` -  List of error details
* `message` - Error description
* `status` - HTTP status code

Some common status codes and messages are:
<table>
<thead>
<tr>
<th>Number</th>
<th>Message</th>
<th>Explanation</th>
</tr>
</thead>
<tbody>
<tr>
<td>200</td>
<td>OK</td>
<td>The request succeeded.</td>
</tr>
<tr>
<td>201</td>
<td>Resource creation</td>
<td>A resource was created.</td>
</tr>
<tr>
<td>401</td>
<td>Unauthorized</td>
<td>The API key is invalid.</td>
</tr>
<tr>
<td>404</td>
<td>Not found</td>
<td>The resource was not found.</td>
</tr>
<tr>
<td>429</td>
<td>Rate limit exceeded</td>
<td>Too many requests. Wait a moment and try again.</td>
</tr>
<tr>
<td>500</td>
<td>Server error</td>
<td>Internal error. Wait a moment and try again. If the issue persists, <a target="_blank" href="https://help.esper.io/hc/en-us/articles/14800200348561-Contacting-Esper-Support">contact Esper.</a></td>
</tr>
</tbody>
</table>
See how our systems are doing by checking our [status page](https://status.esper.cloud/).
