Release Agent Ticket
POST/api/support/agent/tickets/:ticket/release
Drops ownership: assignee and work.owner become null, the working state (work.phase, work.active_until) is cleared, and the ticket returns to the unassigned queue. The status and the stage are left alone. An internal released event is recorded with the reason. Releasing an unowned ticket is a no-op (still 200).
support:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
A human agent may release any claim. The AI agent may only release a ticket it owns — otherwise the request is refused with 409 not_owner.
Path parameters
ticket(integer) — the ticket id.
Request body (optional)
reason(string, nullable, max 40) — a short machine-friendly reason, e.g.needs_billing,out_of_scope. Defaultreleased.
The response is the updated ticket in the agent shape (see Get Agent Ticket for every field, including work).
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). No tenant context — this endpoint is central.
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
- 200
- 401
- 403
- 404
- 409
- 422
- 429
OK
Response Headers
Unauthorized
Response Headers
Forbidden
Response Headers
Not Found
Response Headers
Conflict
Response Headers
Unprocessable Content
Response Headers
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.