Skip to main content

Update Agent Ticket

PATCH 

/api/support/agent/tickets/:ticket

Partially updates a ticket from the agent console — status, priority, type, visibility, group, assignee, tenant, tags, or the follow-up reminder. Only the fields present in the request are changed; each change is recorded on the ticket's timeline (see List Agent Ticket Events) and, when anything changed, the ticket_updated automation rules run. Changing priority recomputes the SLA due dates.

Required scope: support:write

Grant this scope to your token under Settings → Developer → Personal Access Tokens.

Request body (all fields optional — send only what changes):

  • status (string) — one of: open, in_progress, waiting_on_customer, awaiting_release, resolved, closed
  • priority (string) — one of: low, medium, high, urgent
  • type (string, nullable) — one of: bug, question, feature_request, billing
  • visibility (string) — tenant or requester
  • group_key (string, nullable) — one of the configured group keys (see Get Support Meta)
  • assignee_user_id (integer, nullable) — must be a user with an active support role that can work tickets; send null to unassign
  • tenant_id (string, nullable) — re-associate the ticket with a different tenant; recorded as a tenant_changed event on the ticket's timeline
  • tags[] (array, max 20, each max 40 chars)
  • follow_up_at (string, nullable, ISO-8601 date-time) — a reminder for the assignee; stored in the app timezone (an offset in the value is honoured), recorded as a follow_up_changed event. Send null to clear it.

The response is the updated ticket. The agent view adds group_key, external_ref, note_count, merged_into_ticket_id, sla_policy_id, created_by_user_id, sla_paused_at, snoozed_until (with is_snoozed, true while that moment is still in the future), follow_up_at (the agent's own reminder, or null), the agent-facing status_label, the assignee's email, and ai — the latest completed triage and draft runs that are not withheld. first_response_sla_status and resolution_sla_status report the ticket's two SLA clocks: one of on_track, breaching_soon (past the policy's warning point, by default 75% of the way from creation to the due date), breached, paused (the ticket is waiting on the customer, so neither clock warns), met (responded / resolved before the due date). merged_into is {id, number} once the ticket has been merged into another, otherwise null.

Authentication: Bearer token with the support:write scope, or an authenticated session, from a caller with an active support role that can work tickets (the viewer role is read-only).

If this ticket was merged into another ticket, the request is refused with a 422 whose merged_into (id, number) names the live ticket — send the action there instead.

Request

Responses

OK

Response Headers
    Content-Type