# Update a conversation (tags, resolved state)

> Updates the operator-owned fields of a conversation.

Source: https://www.hey.support/docs/api/conversations/update-conversation

---

<ApiEndpoint method="PATCH" path="/conversations/{id}" />

Tags REPLACE the existing array rather than merging, so send the full list you want. Does not emit a webhook — automation-driven edits deliberately do not echo back out.

## Path parameters

<TypeTable
  type={{
  "id": { type: "string", description: "", required: true }
}}
/>

## Request body

<TypeTable
  type={{
  "tags": { type: "string[]", description: "", required: false },
  "is_resolved": { type: "boolean", description: "", required: false }
}}
/>

## Response `200`

<TypeTable
  type={{
  "id": { type: "string", description: "Sqid-encoded conversation id", required: true },
  "chatbot_id": { type: "string", description: "", required: true },
  "visitor_id": { type: "string", description: "", required: false },
  "is_lead": { type: "boolean", description: "", required: true },
  "is_resolved": { type: "boolean", description: "", required: true },
  "status": { type: "string", description: "Lifecycle status. Common values: open, pending_handoff, human_active, resolved.", required: false },
  "tags": { type: "string[]", description: "", required: false },
  "message_count": { type: "integer", description: "", required: true },
  "language_code": { type: "string", description: "", required: false },
  "created_at": { type: "string (date-time)", description: "", required: true },
  "updated_at": { type: "string (date-time)", description: "", required: false }
}}
/>

### Errors

* `400` — Invalid request body
* `401` — Missing or invalid API key
* `404` — Not found
* `429` — Rate limit exceeded

Every error shares [one envelope](/docs/api/errors).

## Example

```bash
curl -X PATCH \
  https://www.hey.support/api/v1/conversations/<id> \
  -H 'Authorization: Bearer hs_live_…' \
  -H 'Content-Type: application/json' \
  -d '{"tags":[],"is_resolved":true}'
```
