---
title: "Update a conversation"
method: PATCH
path: "/conversations/{conversationId}"
tags: ["Conversations"]
---

# Update a conversation

`PATCH /conversations/{conversationId}`

This operation updates a specific conversation by id.

Fields provided in the input object will be updated, omitted fields *(null)* will be unchanged.

## Path parameters

- `conversationId` string, required

## Headers

- `s-idempotency-key` string

## Request body

- UpdateConversation — Any omitted or null field will not be updated. To clear a field, pass an empty value such as "" or []
  - `archived` boolean — Whether the conversation should be archived (true) or unarchived (false)
  - `assignToMemberId` string — The id of a team or teammate to assign the conversation to. If the specified teammate or team is not a member of the conversation, they will be added as a member.
  - `tagIds` ConversationTagId[] — An array of Spruce conversation tag ids

## Response `200`

ok response

- Conversation
  - `apiURL` string, url, required — An absolute URL for fetching this conversation from the API
  - `appURL` string, url, required — An absolute URL to view the conversation in the Spruce app
  - `archived` boolean, required — Whether or not the conversation is archived
  - `assignedToMemberId` string — The id of the teammate the conversation is assigned to
  - `associatedContactIds` string[] — The ids of the contacts associated with the conversation. This may include contacts that are not a part of the conversation. For example, the conversation may be with parents, but associated with a contact representing their child.
  - `createdAt` string, date-time, required — The date the conversation was created
  - `externalParticipants` object[] — The external participants in the conversation.
    - `contact` string — The id of the contact associated with the participant. This will be omitted if the participant is not a saved contact.
    - `displayName` string, required — The display name of the participant
    - `endpoint` Endpoint
      - `channel` 'email' | 'phone' | 'fax' | 'secure', required — The channel of the endpoint (e.g. 'email', 'phone', 'fax', etc.). More endpoint channels may be added in the future, so ensure while parsing this that you gracefully handle any new/unexpected values.
      - `displayValue` string, required — The display value of the endpoint. This is the value that should be displayed to the user when showing the endpoint, along with the label if it's populated.
      - `id` string, required — The id of the endpoint. For secure (Spruce Link) endpoints, the id format depends on where the endpoint is returned: the list internal endpoints API returns the underlying organization invite id, while a secure endpoint that appears on a conversation is returned with a different, derived value. To determine whether a conversation belongs to a particular Spruce Link, compare `endpoint.rawValue` rather than `endpoint.id`. Endpoint ids for phone, fax, and email channels use the same format across responses.
      - `isInternal` boolean, required — Internal endpoints are endpoints that are owned by your organization, such as your organization's Spruce Phone Numbers or Spruce Links.
      - `label` string — The optional label of the endpoint
      - `object` string, required — String representing the object's type
      - `rawValue` string, required — The raw value of the endpoint. This can be used for programmatically comparing contact values, and is the stable identifier to use when matching a secure endpoint on a conversation back to the corresponding Spruce Link returned by the list internal endpoints API. The raw value for a phone/fax number will be in E164 format.
  - `id` string, required — Spruce's conversation ID
  - `internalEndpoint` Endpoint
    - `channel` 'email' | 'phone' | 'fax' | 'secure', required — The channel of the endpoint (e.g. 'email', 'phone', 'fax', etc.). More endpoint channels may be added in the future, so ensure while parsing this that you gracefully handle any new/unexpected values.
    - `displayValue` string, required — The display value of the endpoint. This is the value that should be displayed to the user when showing the endpoint, along with the label if it's populated.
    - `id` string, required — The id of the endpoint. For secure (Spruce Link) endpoints, the id format depends on where the endpoint is returned: the list internal endpoints API returns the underlying organization invite id, while a secure endpoint that appears on a conversation is returned with a different, derived value. To determine whether a conversation belongs to a particular Spruce Link, compare `endpoint.rawValue` rather than `endpoint.id`. Endpoint ids for phone, fax, and email channels use the same format across responses.
    - `isInternal` boolean, required — Internal endpoints are endpoints that are owned by your organization, such as your organization's Spruce Phone Numbers or Spruce Links.
    - `label` string — The optional label of the endpoint
    - `object` string, required — String representing the object's type
    - `rawValue` string, required — The raw value of the endpoint. This can be used for programmatically comparing contact values, and is the stable identifier to use when matching a secure endpoint on a conversation back to the corresponding Spruce Link returned by the list internal endpoints API. The raw value for a phone/fax number will be in E164 format.
  - `internalMemberIds` string[] — The ids of the teammates, teams and/or your organization that are members of the conversation.
  - `isReadOnly` boolean, required — If the conversation is read-only, messages cannot be sent to it.
  - `lastMessageAt` string, date-time — The time of the conversations latest message
  - `object` string, required — String representing the object's type
  - `subtitle` string — The subtitle of the conversation
  - `tags` ConversationTag[], required
    - `id` string, required — Spruce's conversation tag ID
    - `object` string, required — String representing the object's type
    - `value` string, required — The text value of a conversation tag
  - `title` string, required — The title of the conversation
  - `type` 'email' | 'phone' | 'secure' | 'fax' | 'team' | 'note' | 'other', required — The type of the conversation (e.g. 'email', 'phone', 'secure', etc.). Note that SMS will be in a 'phone' conversation, and video calls will be in a 'secure' conversation. More conversation types may be added in the future, so ensure while parsing this that you gracefully handle any new/unexpected values.

## Other responses

- `400` — bad request
- `404` — not found
- `422` — duplicate request
- `500` — unexpected error

---

[API](https://skmtc.net/sprucehealth/apis/spruce-health-api.md) · [All operations](https://skmtc.net/sprucehealth/apis/spruce-health-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sprucehealth/spruce-health-api/revisions/988e298cd9fd/schema)
