How errors are reported
Every error of the Sally API uses the same JSON body, so one error handler is enough. This page shows that body and what each status code means for your integration.
{
"statusCode": 429,
"message": "Transcription quota exhausted.",
"code": "FUP_LIMIT_EXCEEDED"
}
Quick navigation
1. The error body
code is a stable, machine-readable identifier. It is only present for errors that deserve their own reaction, such as FUP_LIMIT_EXCEEDED or TOO_MANY_CONCURRENT_TRANSCRIPTIONS. Generic errors leave it out, so branch on code when it is there and on statusCode otherwise.
2. The status codes
| Code | Meaning |
|---|---|
400 | The request is invalid: body, query or path failed validation. |
401 | The bearer token is missing or no longer valid. |
403 | You can see the resource, but the operation needs a higher role, for example admin or owner. |
404 | Not found or not visible to you. |
409 | Conflict, for example inviting someone who is already a member or already invited. |
429 | Rate limit exceeded, for uploads also the fair-usage limit. Check code here. |
500 | Internal server error. Retrying later is reasonable. |
3. 403 and 404 mean different things
This means
A 403 tells you the resource exists and your role is too low, which a person can fix. A 404 deliberately tells you nothing: not found and not visible cannot be told apart, so a response never reveals that data exists. Authentication explains why a token sees what it sees.