- 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.
This is an experimental endpoint. It requires a valid HMAC secret for authentication in addition to the standard bearer token.
If the conversation is a ticket, the access token must include the write_tickets scope. Without it, the request returns a 401 with the error code token_unauthorized.
Intercom API version.
If you omit the header, the API uses the version set in your app package, and 1.0 if none is set.
An informational message about the send state update.
- The production API serverhttps://api.intercom.io/conversations/{conversation_id}/conversation_parts/{id}
- The european API serverhttps://api.eu.intercom.io/conversations/{conversation_id}/conversation_parts/{id}
- The australian API serverhttps://api.au.intercom.io/conversations/{conversation_id}/conversation_parts/{id}
- Update send state
- Mark part as seen
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"
}'Conversation part updated
The type of conversation part. On the Preview version a part type the API does not recognise is returned as unknown; on earlier versions those parts are returned as comment. Every value other than unknown is also accepted by the include_part_types and exclude_part_types query parameters when retrieving a conversation.
The message body, which may contain HTML. For Twitter, this will show a generic message regarding why the body is obscured.
The time the user was notified with the conversation part.
The IP address of the end user who authored this conversation part, when available. Null otherwise, including for parts not authored by an end user.
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.
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.
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.
What happened to this part for each recipient it was sent to. Null when delivery receipts have not been recorded for this part.
Contains metadata if the message was sent as an email
Metadata for a conversation part
Indicates the current state of conversation when the conversation part was created.
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.
The app package code if this part was created via API. null if the part was not created via API.
A map of the reply text keyed by locale code, with values in the same format as body (HTML by default). Backs the conversation.admin.replied.translated webhook topic. The special original key holds the source locale code of the reply when it is known; every other key is a locale code whose value is the reply text translated into that locale. The translations field does not modify body. Available from API version 2.16. Can be null or omitted, and always is on parts from a contact. The translations are rendered on every request while body can come from a cached copy, so the two can briefly differ. 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>, <div>, or another supported block element to avoid this.
{ "original": "en", "en": "<p>Hello</p>", "fr": "<p>Bonjour</p>" }
- Part type - conversation_attribute_updated_by_workflow
- Part type - conversation_attribute_updated_by_admin
- Part type - conversation_attribute_updated_by_user
- Part type - custom_action_started
- Part type - custom_action_finished
- Part type - operator_workflow_event
- Part type - conversation_tags_updated
- Part type - snoozed
- Part type - priority_changed
- Part type - conversation_sla_applied_by_rule
- Part type - conversation_sla_applied_by_workflow
- Part type - conversation_sla_target_missed
- Part type - conversation_sla_paused
- Part type - conversation_sla_unpaused
- Part type - conversation_sla_removed
- Part type - call_summary
- Part type - ai_agent_event (otp_email_verification_failed)
- Part type - standalone_platform_handoff
- Update send state
- Mark part as seen
{ "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>", "fr": "<p>Bonjour!</p>" } }