Update many tickets at once
Multi-ticket update. Skips tickets whose current status doesn't legally permit the requested mutation (so a bulk "Mark solved" on a list that includes already-merged tickets safely...
/v1/tickets/bulkAdmin- Operation id
- bulk_update
- Access
- An editor or a viewer is refused.
/v1/tickets/bulkMulti-ticket update. Skips tickets whose current status doesn't legally permit the requested mutation (so a bulk "Mark solved" on a list that includes already-merged tickets safely no-ops on those).
At most 200 ids per call, and at least one. A skip is not a failure:
the response reports updated_ids and skipped_ids so a caller can see
exactly which tickets moved, and a partly skipped call is still a 200.
Solving in bulk has the same side effects as solving one at a time,
including the CSAT request on each ticket that reaches solved for the
first time.
A repeated id is one submission: the caller gets one bucket entry per
distinct id, so updated + skipped counts tickets rather than array slots.
Every effective change emits a ticket_event so the audit timeline holds.
Tenancy: the request is scoped to one workspace, and the credential presented is what selects it. A caller with no membership in that workspace is refused with 404, which is indistinguishable from a workspace that does not exist.
Authorisation: admin or owner. An editor or viewer receives 403 insufficient_role.
Access: Authorization: Bearer carrying either a realm access token or an API key. A key must hold the tickets:write scope, and the workspace role of the person who owns it must meet the floor above.
A realm-issued access token, presented as Authorization: Bearer <token>. It acts as the person who signed in, and every operation resolves their workspace role live from the membership record.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/tickets/bulk" \ -H "Content-Type: application/json" \ -d '{ "ticket_ids": [ "5e8b0c31-7a4d-4f92-b6c8-1d3e2a5f7b90", "1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f" ], "status": "solved", "assignee_id": "3fe98b76-2409-5003-b75a-93e56b450433" }'{ "submitted": 2, "updated_ids": [ "5e8b0c31-7a4d-4f92-b6c8-1d3e2a5f7b90" ], "skipped_ids": [ "1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f" ], "updated": 1, "skipped": 1}