# 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: Unstable 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", "Unstable" ## 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: "

Okay!

" - `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 object who initiated the conversation, which can be a Contact, Admin or Team. Bots and campaigns send messages on behalf of Admins or Teams. For Twitter, this will be blank. - `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: "" - `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" ## Response 403 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" ## Response 404 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"