---
title: "Change several tickets"
method: POST
path: "/products/help-desk/tickets/bulk"
tags: ["help-desk"]
---

# Change several tickets

`POST /products/help-desk/tickets/bulk`

## Request

- Base URL: `https://api.sparkvault.com/v1`
- URL: `https://api.sparkvault.com/v1/products/help-desk/tickets/bulk`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/sparkvault/apis/sparkvault-api/docs/products/help-desk/tickets/bulk/post.ts> (a function with typed inputs; its response is checked against the schema)

One change to up to 100 tickets, each made on the ticket as it stands; a ticket the change does not fit now is left as it was and named in `stale`, and a ticket whose write failed is named in `failed` with the code of its error, so the change can be made again on it. Every ticket's write has ended when the change is answered. A change malformed whatever the ticket is refused before any ticket is written, with the 400 a change to one ticket answers. Needs a Full License; the organization must hold the help desk.

## Request body

- object
  - `ticket_ids` string[], required
  - `patch` HelpDeskTicketPatch, required: The fields to change; one that names the value already held changes nothing.
    - `status` 'open' | 'waiting_on_customer' | 'on_hold' | 'closed'
    - `close_reason` 'resolved' | 'spam': With status closed. A duplicate closes by merging.
    - `hold_until` integer: With status on_hold: when the hold ends (epoch seconds), within a year.
    - `priority` 'urgent' | 'high' | 'normal' | 'low'
    - `team_id` string, nullable: A team of the organization; null for none.
    - `assignee_id` string, nullable: An active member with a Full License; null for nobody.
    - `tags` string[]: Every tag the ticket keeps.
    - `add_tags` string[]
    - `remove_tags` string[]

## Response `200`

Which tickets changed, which were left as they were, and which could not be written.

- object
  - `data` object, required
    - `updated` string[], required
    - `stale` string[], required
    - `failed` object[], required
      - `ticket_id` string, required
      - `code` string, required: The error code the ticket's write failed with, as an error answer would carry it.
  - `meta` ResponseMeta: Envelope metadata present on every successful response.
    - `api_version` string
    - `request_id` string
    - `response_ms` integer
    - `timestamp` integer: Unix seconds.
    - `pools` object: Storage and bandwidth capacity snapshot for the account.
    - `billing` object
      - `past_due` boolean
    - `quota` object: This minute of the account request budget. Present on authenticated success responses that passed the throttle; absent otherwise.
      - `limit` integer
      - `used` integer
      - `remaining` integer
      - `resets_at` integer: Unix seconds.

## Other responses

- `400`: VALIDATION_ERROR — the ticket list or the change is malformed, or names a team or assignee the desk cannot use. INVALID_TRANSITION — the status move is malformed: a status no ticket has, a close naming neither resolved nor spam, a hold not ending within the next year.
- `401`: AUTHENTICATION_ERROR — missing or invalid credentials.
- `403`: LICENSE_REQUIRED — the member does not hold a Full License. HELP_DESK_SUBSCRIPTION_REQUIRED — the organization does not hold the help desk.

## Changes

- **2026-10-28** `a9a10e328ba5`: 12 info
  - the response property `error/details` became required for the status `400`
  - the response property `error/details` became required for the status `401`
  - the response property `error/details` became required for the status `403`
  - the response property `meta` became required for the status `400`
  - …8 more
- **2026-10-28** `56d7c265a77a`: 3 breaking
  - the response property `error/details` became nullable for the status `400`
  - the response property `error/details` became nullable for the status `401`
  - the response property `error/details` became nullable for the status `403`
- **2026-10-23** `ad4c62db5e08`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sparkvault/apis/sparkvault-api/changes/products/help-desk/tickets/bulk/post.md)

---

[API](https://skmtc.dev/sparkvault/apis/sparkvault-api.md) - [All operations](https://skmtc.dev/sparkvault/apis/sparkvault-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sparkvault/apis/sparkvault-api/revisions/97cfadccd0c0?raw)
