Errors and limits
Status codes, the error format and the limits that apply to the API and MCP server.
Error format
Errors come back as JSON with a detail field that explains what went wrong:
422 response
{
"detail": "Add a reason before dismissing this violation."
} For invalid parameters, detail is a list that names each field and the problem.
Status codes
| Code | Meaning |
|---|---|
200, 201 | Success. |
401 | The API key or token is missing, invalid or expired. |
403 | The workspace isn’t on a plan with API access, or you aren’t allowed to do this. |
404 | The resource doesn’t exist in your workspace. IDs from other workspaces return 404 too. |
422 | A parameter or the request body is invalid, or the action isn’t allowed in the current state. |
429 | Too many requests. Wait for the number of seconds in the Retry-After header, then retry. |
5xx | Something went wrong on our side. Retry with a short backoff. |
On the MCP server, the same errors reach the assistant as a readable message, so it can tell you what to change.
Credits
Most calls are free. Two use workspace credits, just like in the app:
check_content(MCP): one AI check of a text.audit_assets(MCP): an audit of one or more assets. Large audits return an estimate first; confirm by repeating the call with theestimate_id.
Reading data and recording review decisions never uses credits. Check your balance with the get_credit_balance tool or in the app.
Limits
| Limit | Value |
|---|---|
| MCP requests | 600 per minute per workspace |
| REST API requests | 300 per minute per workspace |
| Review decisions and comments (MCP and API together) | 120 per minute per workspace |
| Credit-using MCP calls | 20 per minute and 3 at the same time, per workspace |
Text per check_content call | 60,000 characters |
Assets per audit_assets call | 10 |
| Violations per page | 50 (page_size) |
| Audits per list call | 100 (limit) |
| Comment length | 5,000 characters |
| Dismissal reason length | 2,000 characters |
| Violations changed by one group decision | 100; decide on larger groups in the app |
Limits also apply per IP address and per token at our network edge. When you hit a limit you get 429 with a Retry-After header.
Something unclear or missing? Tell us and we'll improve this page.