Skip to content
English - United Kingdom
  • There are no suggestions because the search field is empty.

API error reference

What each error from the SpeakUp Public API means and how to resolve it. Errors are grouped by HTTP status code, since that is what your integration sees first.

SCIM endpoints return errors in a different format. See SCIM Users API and SCIM Groups API.

On this page: 400 Bad Request · 401 Unauthorized · 403 Forbidden · 404 Not Found · 500 Internal Server Error · Named errors

400 Bad Request

The request was understood but could not be processed. Almost always the request body on a PUT or PATCH.

Cause What to do
The request body is missing. Both PUT and PATCH require a body.
The body is empty, malformed, or contains unrecognised fields. Check the field names against Updating Issues.
A PUT request is missing required fields. The response names the missing fields. Retrieve the Issue first and resend its current values, or use PATCH instead.
A PUT request is missing required custom fields. The response names the missing issueFieldId values. PUT requires every custom field defined for the Issue type.
The body contains fields the Issue type does not support. Sub Issues reject domain, labels, and issueFields. Check the Issue's type first.
The assignee has no access to the Issue. Choose a User with access to the Issue's domain.
The domain is archived. Archived domains cannot be set on an Issue. Choose an active domain.

401 Unauthorized

The request carried no valid token.

Cause What to do
The token is missing from the request. Send it as Authorization: Bearer <ACCESS_TOKEN>.
The token is invalid. Request a new token. See how do I make my first API request?
The token has expired. Tokens are valid for 1 hour. Build token refresh into your integration rather than storing one token.

A 401 on a request that worked an hour ago is almost always expiry.

403 Forbidden

The token is valid, but the integration is not permitted to do this.

Cause What to do
The Public API package is not enabled for your organisation. Contact your Customer Success Manager.
The integration has read only access and the request writes. Updating Issues requires full access for Issues. Access levels are set when the App Integration is created and shown on its detail page. See how do I create an App Integration and get API credentials?
The integration has read only access for Users and Groups and the request provisions. SCIM provisioning requires full access for Users and Groups.

The difference between 401 and 403 is worth internalising. A 401 means try again with a new token. A 403 means the token is fine and the integration's permissions need changing, so retrying will never help.

404 Not Found

Something referenced in the request does not exist, or the integration cannot see it.

Cause What to do
The Issue does not exist, or the integration cannot access it. Check the ID against the list endpoint in Retrieving Issues.
The assigneeId does not exist. The User must exist, be enabled, and not be a service or support user.
The status does not exist. Statuses come from the workflow for the Issue type.
The domain does not exist. Domain names are matched exactly, including case.
One or more issueFieldId values do not exist for the Issue type. Retrieve the Issue to get its valid field IDs. See Retrieving Issues.

A 404 does not distinguish between an Issue that does not exist and one your integration cannot reach. Both return the same response, so an unexpected 404 on an ID you believe is valid is worth checking against the list endpoint before assuming the Issue is gone.

500 Internal Server Error

Something failed on the SpeakUp side. The request may have been valid.

Retry once. If it persists, contact SpeakUp support with the endpoint, the approximate time, and the Issue ID if the request involved one.

Named errors

Some responses carry a named error. These are the ones you are most likely to encounter.

Name Status Meaning
TokenExpiredError 401 The access token is older than 1 hour.
FeatureNotEnabledError 403 The Public API package is not enabled for your organisation.
ForbiddenError 403 The integration's access level does not permit this request.

Related