Skip to main content
TypeScript

Authorizations

Authorization
string
header
required

Your Periskope API token, sent as Authorization: Bearer <token>. Generate one from the Periskope dashboard under Settings → API & Webhooks. API access requires an active Pro or Enterprise plan.

Path Parameters

ticket_id
string
required

Unique id of the ticket (e.g. ACM-001) — the ticket_id returned when the ticket was created

Minimum string length: 1
Example:

"ACM-001"

Body

application/json
subject
string

New subject for the ticket

Minimum string length: 1
Example:

"Customer cannot access invoices"

assignee
string | null

Email of the member to assign the ticket to. Must be the email of a member of the organization. Pass null or an empty string to unassign the ticket.

Example:

"user@example.com"

status
string

New status of the ticket: 'open', 'inprogress', 'closed' or 'archived'. Setting 'closed' stamps closed_at and records closed_by/closed_message; setting 'open' or 'inprogress' reopens the ticket and clears them. An empty string is ignored (the status is left unchanged).

Example:

"closed"

due_date
string | null

New due date of the ticket. Accepts ISO 8601 (e.g. 2026-02-01T00:00:00Z) and any format parseable as a JavaScript date (YYYY-MM-DD, MM/DD/YYYY, etc.). Epoch timestamps are not supported. Pass null or an empty string to clear the due date.

Example:

"2026-02-01"

priority
string

Priority of the ticket as a string: '1' (low), '2' (medium), '3' (high) or '4' (urgent). An empty string is ignored (the priority is left unchanged/unset).

Example:

"2"

labels
string | null

Comma-separated list of ticket label names, matched case-insensitively. Replaces the entire label set of the ticket. Labels that do not exist yet are created automatically. Pass null or an empty string to remove every label from the ticket.

Example:

"urgent, billing"

custom_properties
object | null

Ticket custom property values to set, as a map of property name or property_id (case-insensitive) → value. Values are validated against the property definitions of the workspace (see the CustomProperty component and the Properties endpoints): text takes any string, date any parseable date, dropdown an option id or label, picklist an array or comma-separated string of option ids or labels, dependent_dropdown an array of per-level ids/labels or a dot-joined id path. file properties cannot be updated via the API. Pass null, an empty string or an empty array as a value to clear that property; properties not included are left unchanged. Passing null or an empty object as custom_properties changes nothing.

Example:
closed_by
string

Email of the member closing the ticket, recorded in close_ticket_metadata. Only used together with status 'closed'; must be the email of a member of the organization. Defaults to 'api' when omitted.

Example:

"user@example.com"

closed_message
string | null

Closing message recorded in close_ticket_metadata. Only used together with status 'closed'.

Example:

"Resolved over call"

Response

The updated ticket with its chat and quoted message

A ticket together with its chat, the message it was raised from and (on GET /tickets/{ticket_id}) the messages attached to it.

chat
object

The chat the ticket is raised on. null in the rare case the chat record is no longer available.

message
object

The message the ticket was raised from (quoted_message_id). Always present as an object — every field in it is null when the ticket is not linked to a message.

ticket
object

The ticket itself

attached_messages
object[]

Messages attached to the ticket. Populated only by GET /tickets/{ticket_id} — always an empty array in create and update responses.