Errors#
Conventional HTTP response codes indicate the success or failure of an API request:
2xxcodes indicate success.4xxcodes indicate a failure due to the information provided, such as an omitted required parameter or insufficient permissions.5xxcodes indicate an error on Workiva’s servers.
Code |
Meaning |
Description |
|---|---|---|
400 |
Bad Request |
The request was unacceptable, often due to a missing or invalid parameter, or an attempt to change a read-only field such as an issue’s |
401 |
Unauthorized |
Authentication is missing or invalid. |
403 |
Forbidden |
The caller is not permitted to access this resource. For issues and action tasks, an id that does not exist, one the caller cannot read, and an action task that belongs to a different issue all return |
404 |
Not Found |
The requested resource was not found. |
409 |
Conflict |
The request conflicts with the current state of the target resource — for example, a scope operation attempted on a project that does not support control scoping, or an action task update or state change that is not allowed from the task’s current state, such as a |
429 |
Too Many Requests |
The rate limit has been exceeded; back off and retry. |
500 |
Internal Server Error |
Something went wrong on Workiva’s end. |
503 |
Service Unavailable |
The server can’t handle the request due to a temporary overload or scheduled maintenance. |
504 |
Gateway Timeout |
The request did not complete within a timely manner. |
Error Object#
Name |
Type |
Required |
Description |
|---|---|---|---|
|
string |
true |
A human-readable representation of the error. |
|
string |
false |
A stable, machine-readable identifier for the error. |
|
string |
false |
The target of the error — a |
|
[object] |
false |
Per-item errors (used by batch endpoints). |
|
string |
false |
Machine-readable code for the specific item error. |
|
string |
true |
Human-readable message for the specific item error. |
|
string |
false |
Target of the specific item error, e.g. |
Error Example#
{
"message": "The $filter value could not be parsed.",
"code": "invalidFilter",
"target": "$filter"
}
For a batch request, per-id failures are reported in details:
{
"message": "One or more requested ids could not be returned.",
"code": "invalidRequest",
"details": [
{ "code": "notFound", "message": "No resource with this id was found.", "target": "/data/2" }
]
}
A 400 for a body field names the field as a JSON Pointer in target. For example, a malformed id
in a batch request is reported at its position in data:
{
"message": "Invalid id",
"code": "invalidRequest",
"details": [
{
"message": "Invalid id",
"code": "invalidRequest",
"target": "/data/0"
}
]
}
For issues and action tasks, an id that does not exist and an id the caller cannot read are
indistinguishable by design: both return 403 with code permissionDenied. This includes an
action task requested under an issue it does not belong to, and a batch retrieval that includes
any id that is missing or unreadable (the request returns no partial results).
A failed export is reported on its operation: GET /operations/{operationId} returns the
failed status with the reason in details. See Operations.