---
title: "Update a ticket"
method: PATCH
path: "/api/v1/tickets/{id}"
tags: ["tickets"]
---

# Update a ticket

`PATCH /api/v1/tickets/{id}`

## Request

- Base URL: `https://app.blueticked.com`
- URL: `https://app.blueticked.com/api/v1/tickets/{id}`
- Auth: HTTP bearer

Work a ticket from your own tooling: status, priority, title, assignee, team.

status: open | in_progress | resolved. priority: low | normal | high | urgent. title: a string or null to clear. assigned_to: an ACTIVE workspace member's user id, or null to unassign. team_id: a team in your workspace, or null to clear.

The assignee must be able to see the ticket's business: a workspace admin or owner, or a member granted that business. Anyone else is refused with `validation_failed` (the same rule the dashboard applies), so a ticket can never land on a desk that cannot see it.

Resolving fires ticket.resolved (webhook + the ticket.resolved automation event); reopening fires ticket.reopened; an assignee change fires ticket.assigned; other changes (priority, title, team, status to in_progress) fire ticket.updated.

## Path parameters

- `id` string, required

## Request body

- object
  - `status` 'open' | 'in_progress' | 'resolved'

## Response `200`

Success

- object
  - `ticket` object, required
    - `category` string, required
    - `title` string, nullable, required
    - `priority` 'low' | 'normal' | 'high' | 'urgent', required
    - `assigned_to` string, nullable, required
    - `team_id` string, nullable, required
    - `contact_id` string, nullable, required
    - `conversation_id` string, nullable, required
    - `business_id` string, nullable, required
    - `resolved_at` string, nullable, required
    - `sla_breached_at` string, nullable, required
    - `fields` object, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `id` string, uuid, required
    - `number` number, required
    - `status` 'open' | 'in_progress' | 'resolved', required
  - `request_id` string, required

## Other responses

- `400`: Validation failed
- `401`: Unauthorized: missing or invalid API key
- `402`: Insufficient wallet balance
- `403`: Forbidden: scope, plan limit, or suspension
- `404`: Not found
- `409`: Conflict (idempotency-key reuse or resource in use)
- `413`: Request body above the endpoint's size limit
- `422`: Understood but refused: the request is well-formed, the action is not permitted for this resource
- `429`: Rate limited
- `500`: Internal error
- `502`: An upstream provider refused or failed the request
- `503`: Channel or send queue unavailable

---

[API](https://skmtc.dev/blueticked/apis/blueticked-api.md) · [All operations](https://skmtc.dev/blueticked/apis/blueticked-api/llms.txt) · [OpenAPI document](https://skmtc.dev/blueticked/apis/blueticked-api/revisions/07132284f4ff?raw)
