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

Retrieving Issues

Retrieve Issue data from SpeakUp for reporting, analytics, or to keep an external system in sync. The API returns case details, custom field values, form responses, and report metadata.

Two endpoints provide this. The list endpoint returns IDs and timestamps for every Issue your integration can access. The detail endpoint returns one Issue in full. Start with the list to find the id you need, then fetch that Issue by ID.

To update an Issue in SpeakUp, see Updating Issues.

On this page: Endpoints · Permissions · List Issues · Get an Issue · Errors

Endpoints

Method and path What it does
GET /v1/public/issues Lists Issues with basic information.
GET /v1/public/issues/{id} Returns one Issue in full.

Permissions

Requires an App Integration with read only or full access for Issues. See how do I create an App Integration and get API credentials?

List Issues

GET /v1/public/issues

Returns an array of Issues with basic information only. Use the returned id to fetch an Issue in full.

curl -X GET '{API_BASE_URL}/v1/public/issues' \
-H 'Authorization: Bearer <ACCESS_TOKEN>'

Example response:

[
{
"id": 1,
"customId": "SUP-2024-01",
"createdAt": "2025-05-26T07:15:48.663Z",
"updatedAt": "2025-07-20T00:00:51.522Z"
},
{
"id": 2,
"customId": "SUP-2024-02",
"createdAt": "2025-05-26T07:16:09.739Z",
"updatedAt": "2025-07-21T10:14:44.036Z"
}
]
Field Type Description
id Number Unique identifier for the Issue.
customId String Custom identifier, for example SUP-2024-01.
createdAt String ISO 8601 timestamp of creation.
updatedAt String ISO 8601 timestamp of the last update.

Get an Issue

GET /v1/public/issues/{id}

Returns full detail for one Issue, including its custom fields, forms, and report details.

Path parameter Required Description
id Yes The unique identifier of the Issue.
curl -X GET '{API_BASE_URL}/v1/public/issues/1001' \
-H 'Authorization: Bearer <ACCESS_TOKEN>'

Example response, with the nested arrays collapsed. Each is described in its own section below.

{
"id": 1001,
"summary": "Security incident involving unauthorized access",
"description": "A comprehensive security incident report.",
"type": "Case",
"status": "Closed",
"resolution": "Resolved",
"assignee": "Sarah Johnson",
"assigneeId": 45,
"domain": "IT Security",
"labels": ["Security", "High Priority"],
"customId": "SEC-2024-001",
"dueDate": "2024-12-15T17:00:00.000Z",
"parentId": null,
"acknowledgedAt": "2024-12-01T09:15:30.123Z",
"receivedAt": "2024-12-01T09:10:15.456Z",
"closedAt": "2024-12-10T16:45:22.789Z",
"createdAt": "2024-12-01T09:10:15.456Z",
"updatedAt": "2024-12-10T16:45:22.789Z",
"issueFields": [ ... ],
"issueForms": [ ... ],
"reportForms": [ ... ],
"reportDetails": { ... }
}

Query parameters

By default the response contains the Issue only. Set any of these parameters to true to include related data. They can be combined in a single request.

Parameter Adds Read more
messages=true A messages key containing the Issue's messages. Retrieving messages
attachments=true An attachments key. Attachment IDs come from here, and are needed to request a download URL. Downloading attachments
links=true A links key containing Issues linked to this one. See below

When a parameter is not supplied, its key is absent from the response. Values are case sensitive, so use lowercase true.

Each parameter can be used on its own:

curl -X GET '{API_BASE_URL}/v1/public/issues/1001?messages=true' \
-H 'Authorization: Bearer <ACCESS_TOKEN>'

Or combined in one request:

curl -X GET '{API_BASE_URL}/v1/public/issues/1001?messages=true&attachments=true&links=true' \
-H 'Authorization: Bearer <ACCESS_TOKEN>'

Response fields

Field Type Description
id Number Unique identifier for the Issue.
summary String Brief summary.
description String Full description.
type String Issue type, for example Case or Task.
status String Current status, for example In progress or Closed.
resolution String or null Resolution, or null if unresolved.
assignee String or null Name of the assigned User.
assigneeId Number or null ID of the assigned User. Use this value when reassigning.
domain String Domain the Issue belongs to.
labels Array of strings Names of the labels applied to the Issue. Empty array if none.
customId String Custom identifier.
dueDate String or null ISO 8601 due date.
parentId Number or null ID of the parent Issue, if any.
acknowledgedAt String or null ISO 8601 timestamp of acknowledgement.
receivedAt String or null ISO 8601 timestamp of receipt.
closedAt String or null ISO 8601 timestamp of closure.
createdAt String ISO 8601 timestamp of creation.
updatedAt String ISO 8601 timestamp of the last update.
issueFields Array Custom field values. Empty array if the Issue type defines none. See below.
issueForms Array Forms attached to the Issue by case handlers. Empty array if none. See below.
reportForms Array Forms submitted by the reporter. Empty array if none. See below.
reportDetails Object or null Details of the associated report. Null when the Issue did not originate from a report.

Timestamps are ISO 8601. Any field that is not set is returned as null. Custom field and form values are returned as strings, including numbers and booleans.

issueFields

Every field defined for the Issue type is returned, including those not yet filled in, so you can see everything available to read or update. Unfilled fields return a value of null.

Field Type Description
issueFieldId Number Identifier for the field. Use this value when updating.
fieldSystemName String Internal name of the field.
fieldLabel String Label shown to users.
fieldType String One of short text, long text, number, boolean, option list, multiple option list, date, or date time.
fieldWidget String Interface control used, for example dropdown, checkbox, or radio group.
value String or null The field value, or null if not set.

This response is where you find valid issueFieldId values and their types. You need both before updating custom fields.

issueForms

Forms attached to the Issue by case handlers. An Issue with no forms returns an empty array.

Field Type Description
formInstanceId Number Identifier for this instance of the form.
formTemplateName String Name of the form template.
fields Array The form's fields. See below.

Each entry in fields contains:

Field Type Description
fieldSystemName String Internal name of the field.
fieldLabel String Label shown to users.
fieldType String Field type, for example short text, long text, option list, number, or date.
value String or null The submitted value, or null if not set.

reportForms

Forms submitted by the reporter. An Issue with no report forms returns an empty array.

Field Type Description
formInstanceId Number Identifier for this instance of the form.
formTemplateName String Name of the report form template.
fields Array The form's fields. See below.

Report form fields carry one field that Issue form fields do not, translatedValue:

Field Type Description
fieldSystemName String Internal name of the field.
fieldLabel String Label shown to the reporter.
fieldType String Field type, for example short text, long text, option list, or date.
value String or null The value as the reporter submitted it, in their own language.
translatedValue String or null The value translated into your organisation's default language. Null when no translation exists.

reportDetails

Present only when the Issue originated from a report. Issues that did not come from a report return null.

Name and ID pairs are listed together below. Both are returned as separate keys, for example reportLanguage and reportLanguageId.

Field Type Description
status String Status of the report, for example New or Closed.
source String How the report was submitted, for example Web, Phone, or App.
type String Report type, for example Confidential Report or Identified Report.
intakeType String or null Intake method used, for example AI Agent or Voice Drop.
country String or null Country associated with the report.
reportLanguage / reportLanguageId String / Number Language the reporter selected.
systemLanguage / systemLanguageId String / Number Language used to process the report.
reporterName / reporterId String / Number or null Display name and identifier of the reporter.
closerName / closerId String or null / Number or null User who closed the report.
channelName / channelId String / Number Reporting Channel the report came through.
outcomeName String or null Outcome recorded on the report, if one is defined.
consentGiven Boolean or null Whether the reporter gave consent.
blocked Boolean Whether the report is blocked from further action.
lastSeen String ISO 8601 timestamp of the reporter's last interaction.
createdAt String ISO 8601 timestamp of when the report was created.
updatedAt String ISO 8601 timestamp of the last update.
closedAt String or null ISO 8601 timestamp of when the report was closed.

Linked Issues

With links=true, the response gains a links key. Each entry describes one relationship between two Issues. An Issue with no links returns an empty array.

Field Type Description
id Number Identifier for the link itself, not for either Issue.
fromIssueId Number One of the two linked Issues.
toIssueId Number The other linked Issue.
createdAt String ISO 8601 timestamp of when the link was created.
updatedAt String ISO 8601 timestamp of the last update.

Links are bidirectional. Querying an Issue returns every link in which it appears, whether as fromIssueId or as toIssueId, and the same link record appears on both Issues.

Do not assume toIssueId is the related Issue. To find the Issue at the other end of a link, compare both fields against the ID you requested and take whichever does not match.

 

Errors

See the API error reference for the full list.

Status Cause What to do
401 The token is missing, invalid, or expired. Request a new token. Tokens are valid for 1 hour.
403 The Public API package is not enabled. Contact your Customer Success Manager.
404 No Issue exists with that ID, or the integration cannot access it. Check the ID against the list endpoint.

Related