Skip to content

Conversation Parts

Update and redact individual conversation parts

Update a conversation part

Request

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.

Experimental

This is an experimental endpoint. It requires a valid HMAC secret for authentication in addition to the standard bearer token.

Security
bearerAuth
Path
conversation_idstringrequired

The identifier for the conversation as given by Intercom.

Example:123
idstringrequired

The identifier for the conversation part.

Example:456
Headers
Intercom-Versionstring(intercom_version)

Intercom API version.
By default, it's equal to the version set in the app package.

Default:"Preview"
Enum:"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example:Preview
Bodyapplication/json
send_statestring

The send state to set on the external reply.

Example:"sent"
info_messagestring

An informational message about the send state update.

Example:"Message delivered successfully"
seenboolean

Set to true to mark the conversation part as seen.

Example:true
admin_idstring

The id of the admin marking the part as seen.

Example:"991267694"
experimentalbooleanrequired

Must be true to use this experimental endpoint.

Example:true
secretstringrequired

HMAC secret for authenticating the experimental request.

Example:"hmac_secret_value"
curl -i -X PUT \
  https://api.intercom.io/conversations/123/conversation_parts/456 \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'Intercom-Version: Preview' \
  -d '{
    "send_state": "sent",
    "info_message": "Message delivered successfully",
    "experimental": true,
    "secret": "hmac_secret_value"
  }'

Responses

Conversation part updated

Bodyapplication/json
typestring

Always conversation_part

Example:"conversation_part"
idstring

The id representing the conversation part.

Example:"3"
part_typestring

The type of conversation part.

Example:"comment"
bodystring or 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_atinteger, (date-time)

The time the conversation part was created.

Example:1663597223
updated_atinteger, (date-time)

The last time the conversation part was updated.

Example:1663597260
notified_atinteger, (date-time)

The time the user was notified with the conversation part.

Example:1663597260
assigned_toobject or null(Reference)

The assignee this conversation_part assigned the conversation to, as a reference whose type is admin, team or bot. When the part unassigned the conversation, type is nobody_admin and id is null. Null when the part did not change the assignment, or when the assignee has since been deleted.

admin_assignee_idinteger or null

The id of the teammate that this conversation_part assigned the conversation to, or 0 if the part removed the teammate. Null or absent when the part did not change the teammate, including an unassignment that did not name which assignee it cleared. A bot is reported here, because assignment treats anything that is not a team as a teammate.

Example:991267715
team_assignee_idinteger or null

The id of the team that this conversation_part assigned the conversation to, or 0 if the part removed the team. Null or absent when the part did not change the team, including an unassignment that did not name which assignee it cleared. A part can assign a team and a teammate at the same time, for example when the team uses Round Robin distribution and the teammate is resolved inline. In that case assigned_to reports only the teammate, and these two fields report each assignee separately.

Example:5017691

The author of this conversation part. Can be a Contact, Admin, or Bot.

attachmentsArray of objects(Conversation part attachments)

A list of attachments for the part.

external_idstring or null

The external id of the conversation part

Example:"abcd1234"
redactedboolean

Whether or not the conversation part has been redacted.

Example:false
email_message_metadataobject or null(Email Message Metadata)

Contains metadata if the message was sent as an email

metadataobject or null(Conversation Part Metadata)

Metadata for a conversation part

statestring

Indicates the current state of conversation when the conversation part was created.

Enum:"open""closed""snoozed"
Example:"open"
tagsArray of objects or null(Tag)

A list of tags objects associated with the conversation part.

event_details(Part type - conversation_attribute_updated_by_workflow (object or null)) or (Part type - conversation_attribute_updated_by_admin (object or null)) or (Part type - conversation_attribute_updated_by_user (object or null)) or (Part type - custom_action_started (object or null)) or (Part type - custom_action_finished (object or null)) or (Part type - operator_workflow_event (object or null)) or (Part type - conversation_tags_updated (object or null)) or (Part type - snoozed (object or null)) or (Part type - priority_changed (object or null)) or (Part type - conversation_sla_applied_by_rule (object or null)) or (Part type - conversation_sla_applied_by_workflow (object or null)) or (Part type - conversation_sla_target_missed (object or null)) or (Part type - conversation_sla_paused (object or null)) or (Part type - conversation_sla_unpaused (object or null)) or (Part type - conversation_sla_removed (object or null)) or (Part type - call_summary (object or null))(Event details of Workflow & actions)
Any of:

Contains details about the workflow that was triggered and any Custom Data Attributes (CDAs) that were modified during the workflow execution for conversation part type conversation_attribute_updated_by_workflow.

app_package_codestring or null

The app package code if this part was created via API. null if the part was not created via API.

Example:"test-integration"
translationsobject or null

A map of the reply text keyed by locale code, with values in the same HTML format as body. Only present on the Preview API version and backs the conversation.admin.replied.translated webhook topic. The special original key holds the source locale code of the reply; every other key is a locale code whose value is the reply text translated into that locale. The translations field does not modify body; body carries the reply as authored. Available in the Preview API version only (set Intercom-Version: Preview). This webhook topic is not sent for every translated reply: it is suppressed when the reply's body contains any text outside an HTML block element, which includes plain-text replies created through the REST API. Wrap the body in <p> or another supported block element to avoid this; <div> is removed when the reply is saved, which leaves its text bare and still suppresses the topic.

Example:
{ "original": "en", "en": "<p>Hello</p>", "fr": "<p>Bonjour</p>" }
Response
{ "type": "conversation_part", "id": "456", "part_type": "comment", "body": "<p>Hello there!</p>", "created_at": 1734537559, "updated_at": 1734537561, "notified_at": 1734537559, "assigned_to": null, "author": { "id": "991267694", "type": "admin", "name": "Ciaran Lee", "email": "admin@email.com" }, "attachments": [], "external_id": null, "external_reply_send_state": "sent", "translations": { "original": "en", "en": "<p>Hello there!</p>", "es": "<p>¡Hola!</p>" } }