---
title: Errors and limits
description: One error shape, the HTTP status as the code, and the limits a key works within.
section: API
order: 8
---

## The shape

```json
{ "error": "what went wrong, in a sentence" }
```

Every error has this shape, and the HTTP status is the code. One error carries more: the red-flag refusal from [run a workflow](/docs/api/run-a-workflow#red-flags) adds `applicationId` and `flags`.

## Statuses

| Status | Meaning |
| --- | --- |
| 400 | The request is malformed: a missing field, a wrong multipart field name, a file that is not a PDF. |
| 401 | No key, or a wrong or revoked one. |
| 403 | Not something a key, or your role, may do. Also: a run was asked of an organization that has no email yet — a Manager adds one in the app first. |
| 404 | Not there, or not in your organization. |
| 409 | A conflict with the state of the case: a run in flight, a draft workflow, red flags at the gate, nothing new to read. |
| 413 | A file is over the size limit. |
| 429 | Too many requests. `Retry-After` says how many seconds to wait. |
| 502 | The analyzer could not be reached. The case was put back as it was. |

## Limits

| Limit | Value |
| --- | --- |
| Requests per key | 500 a minute |
| Requests per guest key | 10 a minute |
| Guest sandboxes | 10 an hour from one address, 100 a day in all |
| Research questions in a workspace without an email | 20 an hour, 50 a day |
| Briefs in a workspace without an email | 5 an hour, 10 a day |
| Pages a workspace without an email holds | 50 |
| Files per call | 25 |
| File size | 100 MB |
| File type when running a workflow | PDF |

## Doing the same thing twice

A case is created by every successful call to [run a workflow](/docs/api/run-a-workflow) without an `applicationId`. If a call failed after the case was made, the answer carries `applicationId`: continue with that case instead of sending the packet again.
