# Update a conversation part

You can update properties of a conversation part. Currently supports updating the send state of an external reply or marking a part as seen by an admin.

{% admonition type="warning" name="Experimental" %}
  This is an experimental endpoint. It requires a valid HMAC secret for authentication in addition to the standard bearer token.
{% /admonition %}

Endpoint: PUT /conversations/{conversation_id}/conversation_parts/{id}
Version: Preview
Security: bearerAuth

## Header parameters:

  - `Intercom-Version` (string)
    Intercom API version.By default, it's equal to the version set in the app package.
    Enum: "1.0", "1.1", "1.2", "1.3", "1.4", "2.0", "2.1", "2.2", "2.3", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "Preview"

## Path parameters:

  - `conversation_id` (string, required)
    The identifier for the conversation as given by Intercom.
    Example: "123"

  - `id` (string, required)
    The identifier for the conversation part.
    Example: "456"

## Request fields (application/json):

  - `send_state` (string)
    The send state to set on the external reply.
    Example: "sent"

  - `info_message` (string)
    An informational message about the send state update.
    Example: "Message delivered successfully"

  - `seen` (boolean)
    Set to true to mark the conversation part as seen.
    Example: true

  - `admin_id` (string)
    The id of the admin marking the part as seen.
    Example: "991267694"

  - `experimental` (boolean, required)
    Must be true to use this experimental endpoint.
    Example: true

  - `secret` (string, required)
    HMAC secret for authenticating the experimental request.
    Example: "hmac_secret_value"

## Response 200 fields (application/json):

  - `type` (string)
    Always conversation_part
    Example: "conversation_part"

  - `id` (string)
    The id representing the conversation part.
    Example: "3"

  - `part_type` (string)
    The type of conversation part.
    Example: "comment"

  - `body` (string,null)
    The message body, which may contain HTML. For Twitter, this will show a generic message regarding why the body is obscured.
    Example: "<p>Okay!</p>"

  - `created_at` (integer)
    The time the conversation part was created.
    Example: 1663597223

  - `updated_at` (integer)
    The last time the conversation part was updated.
    Example: 1663597260

  - `notified_at` (integer)
    The time the user was notified with the conversation part.
    Example: 1663597260

  - `assigned_to` (object)
    reference to another object

  - `assigned_to.type` (string)
    Example: "contact"

  - `assigned_to.id` (string,null)
    Example: "1a2b3c"

  - `author` (object)
    The author of this conversation part. Can be a Contact, Admin, or Bot.

  - `author.type` (string)
    The type of the author
    Example: "admin"

  - `author.id` (string)
    The id of the author
    Example: "274"

  - `author.name` (string,null)
    The name of the author
    Example: "Operator"

  - `author.email` (string)
    The email of the author
    Example: "operator+abcd1234@intercom.io"

  - `author.from_ai_agent` (boolean)
    If this conversation part was sent by the AI Agent
    Example: true

  - `author.is_ai_answer` (boolean)
    If this conversation part body was generated by the AI Agent

  - `attachments` (array)
    A list of attachments for the part.

  - `attachments.type` (string)
    The type of attachment
    Example: "upload"

  - `attachments.name` (string)
    The name of the attachment
    Example: "example.png"

  - `attachments.url` (string)
    The URL of the attachment
    Example: "https://picsum.photos/200/300"

  - `attachments.content_type` (string)
    The content type of the attachment
    Example: "image/png"

  - `attachments.filesize` (integer)
    The size of the attachment
    Example: 100

  - `attachments.width` (integer)
    The width of the attachment
    Example: 100

  - `attachments.height` (integer)
    The height of the attachment
    Example: 100

  - `external_id` (string,null)
    The external id of the conversation part
    Example: "abcd1234"

  - `redacted` (boolean)
    Whether or not the conversation part has been redacted.

  - `email_message_metadata` (object)
    Contains metadata if the message was sent as an email

  - `email_message_metadata.subject` (string)
    The subject of the email
    Example: "Question about my order"

  - `email_message_metadata.email_address_headers` (array)
    A list of an email address headers.

  - `email_message_metadata.email_address_headers.type` (string)
    The type of email address header
    Example: "from"

  - `email_message_metadata.email_address_headers.email_address` (string)
    The email address
    Example: "jdoe@example.com"

  - `email_message_metadata.email_address_headers.name` (string,null)
    The name associated with the email address
    Example: "Joe Example"

  - `email_message_metadata.message_id` (string,null)
    The unique identifier for the email message as specified in the Message-ID header
    Example: "<CADKw7xrXzqSn8v3mP8K8Q8yZ6K8Q8yZ6@mail.gmail.com>"

  - `metadata` (object)
    Metadata for a conversation part

  - `metadata.quick_reply_options` (array)
    The quick reply options sent by the Admin or bot, presented in this conversation part.

  - `metadata.quick_reply_options.translations` (object,null)
    The translations for the quick reply option.
    Example: {"en":"Hello","fr":"Bonjour"}

  - `metadata.quick_reply_options.text` (string, required)
    The text to display in this quick reply option.

  - `metadata.quick_reply_options.uuid` (string, required)
    A unique identifier for this quick reply option. This value will be available within the metadata of the comment conversation part that is created when a user clicks on this reply option.

  - `metadata.quick_reply_uuid` (string)
    The unique identifier for the quick reply option that was clicked by the end user.
    Example: "123e4567-e89b-12d3-a456-426614174000"

  - `state` (string)
    Indicates the current state of conversation when the conversation part was created.
    Enum: "open", "closed", "snoozed"

  - `tags` (array,null)
    A list of tags objects associated with the conversation part.

  - `tags.type` (string)
    value is "tag"
    Example: "tag"

  - `tags.id` (string)
    The id of the tag
    Example: "123456"

  - `tags.name` (string)
    The name of the tag
    Example: "Test tag"

  - `event_details` (object)

  - `app_package_code` (string,null)
    The app package code if this part was created via API. null if the part was not created via API.
    Example: "test-integration"

## Response 401 fields (application/json):

  - `type` (string, required)
    The type is error.list
    Example: "error.list"

  - `request_id` (string,null)
    Example: "f93ecfa8-d08a-4325-8694-89aeb89c8f85"

  - `errors` (array, required)
    An array of one or more error objects

  - `errors.code` (string, required)
    A string indicating the kind of error, used to further qualify the HTTP response code
    Example: "unauthorized"

  - `errors.message` (string,null)
    Optional. Human readable description of the error.
    Example: "Access Token Invalid"

  - `errors.field` (string,null)
    Optional. Used to identify a particular field or query parameter that was in error.
    Example: "email"


