The Scribe API uses conventional HTTP status codes and returns a consistent JSON error envelope, so you can handle failures the same way across every endpoint.
Every error response contains an error object:
{
"error": {
"type": "validation_error",
"code": "blank",
"message": "Name can't be blank."
}
}
| Field | Description |
|---|
type | The category of error, such as validation_error or not_found. |
code | A short, stable identifier for the specific error. |
message | A human-readable explanation. |
Validation errors
When a request fails validation, the response also includes a details array that pinpoints each invalid field:
{
"error": {
"type": "validation_error",
"code": "invalid",
"message": "The teammate could not be saved."
},
"details": [
{ "field": "email", "code": "invalid", "message": "Address is invalid." }
]
}
Status codes
| Status | Meaning |
|---|
200 OK | The request succeeded. |
201 Created | The resource was created. |
204 No Content | The request succeeded with no response body, for example after a delete. |
401 Unauthorized | The API key is missing or invalid. See Authentication. |
403 Forbidden | The key lacks the required scope, or the feature is not available on your plan. |
404 Not Found | The resource does not exist, or it belongs to another workspace. |
409 Conflict | The request conflicts with the current state, for example deleting a folder that still contains signatures. |
422 Unprocessable Entity | The request was understood but failed validation. Check the details array. |
Scribe returns 404 rather than 403 when a resource belongs to another workspace, so a key can never confirm whether a resource it cannot access exists.
Handle errors gracefully
- Treat any non-
2xx status as a failure, and read error.type and error.code to decide what to do.
- For
422, surface the details array so the cause can be corrected field by field.
- For
401 and 403, check that the key is valid and carries the scopes the endpoint requires.
- For
409, resolve the conflicting state first, for example empty a folder before deleting it.