# Redact a conversation part You can redact a conversation part or the source message of a conversation (as seen in the source object). {% admonition type="info" name="Redacting parts and messages" %} If you are redacting a conversation part, it must have a . If you are redacting a source message, it must have been created by a contact. We will return a error if these criteria are not met. {% /admonition %} Endpoint: POST /conversations/redact Version: 2.13 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", "Unstable" ## Response 200 fields (application/json): - `type` (string) Always conversation. Example: "conversation" - `id` (string) The id representing the conversation. Example: "1295" - `title` (string,null) The title given to the conversation. Example: "Conversation Title" - `created_at` (integer) The time the conversation was created. Example: 1663597223 - `updated_at` (integer) The last time the conversation was updated. Example: 1663597260 - `waiting_since` (integer,null) The last time a Contact responded to an Admin. In other words, the time a customer started waiting for a response. Set to null if last reply is from an Admin. Example: 1663597260 - `snoozed_until` (integer,null) If set this is the time in the future when this conversation will be marked as open. i.e. it will be in a snoozed state until this time. i.e. it will be in a snoozed state until this time. Example: 1663597260 - `open` (boolean) Indicates whether a conversation is open (true) or closed (false). Example: true - `state` (string) Can be set to "open", "closed" or "snoozed". Enum: "open", "closed", "snoozed" - `read` (boolean) Indicates whether a conversation has been read. Example: true - `priority` (string) If marked as priority, it will return priority or else not_priority. Enum: "priority", "not_priority" - `admin_assignee_id` (integer,null) The id of the admin assigned to the conversation. If it's not assigned to an admin it will return null. - `team_assignee_id` (string,null) The id of the team assigned to the conversation. If it's not assigned to a team it will return null. Example: "5017691" - `tags` (object) A list of tags objects associated with a conversation - `tags.type` (string) The type of the object Enum: "tag.list" - `tags.tags` (array) A list of tags objects associated with the conversation. - `tags.tags.type` (string) value is "tag" Example: "tag" - `tags.tags.id` (string) The id of the tag Example: "123456" - `tags.tags.name` (string) The name of the tag Example: "Test tag" - `tags.tags.applied_at` (integer) The time when the tag was applied to the object Example: 1663597223 - `tags.tags.applied_by` (object) reference to another object - `tags.tags.applied_by.type` (string) Example: "contact" - `tags.tags.applied_by.id` (string,null) Example: "1a2b3c" - `conversation_rating` (object,null) The Conversation Rating object which contains information on the rating and/or remark added by a Contact and the Admin assigned to the conversation. - `conversation_rating.rating` (integer) The rating, between 1 and 5, for the conversation. Example: 5 - `conversation_rating.remark` (string) An optional field to add a remark to correspond to the number rating - `conversation_rating.created_at` (integer) The time the rating was requested in the conversation being rated. Example: 1671028894 - `conversation_rating.contact` (object) reference to contact object - `conversation_rating.contact.type` (string) always contact Enum: "contact" - `conversation_rating.contact.id` (string) The unique identifier for the contact which is given by Intercom. Example: "5ba682d23d7cf92bef87bfd4" - `conversation_rating.contact.external_id` (string,null) The unique identifier for the contact which is provided by the Client. Example: "70" - `conversation_rating.teammate` (object) reference to another object - `source` (object) The type of the conversation part that started this conversation. Can be Contact, Admin, Campaign, Automated or Operator initiated. - `source.type` (string) This includes conversation, email, facebook, instagram, phone_call, phone_switch, push, sms, twitter and whatsapp. Enum: "conversation", "email", "facebook", "instagram", "phone_call", "phone_switch", "push", "sms", "twitter", "whatsapp" - `source.id` (string) The id representing the message. Example: "3" - `source.delivered_as` (string) The conversation's initiation type. Possible values are customer_initiated, campaigns_initiated (legacy campaigns), operator_initiated (Custom bot), automated (Series and other outbounds with dynamic audience message) and admin_initiated (fixed audience message, ticket initiated by an admin, group email). Example: "operator_initiated" - `source.subject` (string) Optional. The message subject. For Twitter, this will show a generic message regarding why the subject is obscured. - `source.body` (string) The message body, which may contain HTML. For Twitter, this will show a generic message regarding why the body is obscured. Example: "
Hey there!
" - `source.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. - `source.author.type` (string) The type of the author Example: "admin" - `source.author.id` (string) The id of the author Example: "274" - `source.author.name` (string) The name of the author Example: "Operator" - `source.author.email` (string) The email of the author Example: "operator+abcd1234@intercom.io" - `source.attachments` (array) A list of attachments for the part. - `source.attachments.type` (string) The type of attachment Example: "upload" - `source.attachments.name` (string) The name of the attachment Example: "example.png" - `source.attachments.url` (string) The URL of the attachment Example: "https://picsum.photos/200/300" - `source.attachments.content_type` (string) The content type of the attachment Example: "image/png" - `source.attachments.filesize` (integer) The size of the attachment Example: 100 - `source.attachments.width` (integer) The width of the attachment Example: 100 - `source.attachments.height` (integer) The height of the attachment Example: 100 - `source.url` (string,null) The URL where the conversation was started. For Twitter, Email, and Bots, this will be blank. - `source.redacted` (boolean) Whether or not the source message has been redacted. Only applicable for contact initiated messages. - `contacts` (object) The list of contacts (users or leads) involved in this conversation. This will only contain one customer unless more were added via the group conversation feature. - `teammates` (object,null) The list of teammates who participated in the conversation (wrote at least one conversation part). - `teammates.type` (string) The type of the object - . Example: "admin.list" - `first_contact_reply` (object,null) An object containing information on the first users message. For a contact initiated message this will represent the users original message. - `first_contact_reply.created_at` (integer) Example: 1663597223 - `first_contact_reply.url` (string,null) Example: "https://developers.intercom.com/" - `sla_applied` (object,null) The SLA Applied object contains the details for which SLA has been applied to this conversation. Important: if there are any canceled sla_events for the conversation - meaning an SLA has been manually removed from a conversation, the sla_status will always be returned as null. - `sla_applied.type` (string) object type Example: "conversation_sla_summary" - `sla_applied.sla_name` (string) The name of the SLA as given by the teammate when it was created. - `sla_applied.sla_status` (string) SLA statuses: - : If there’s at least one hit event in the underlying sla_events table, and no “missed” or “canceled” events for the conversation. - : If there are any missed sla_events for the conversation and no canceled events. If there’s even a single missed sla event, the status will always be missed. A missed status is not applied when the SLA expires, only the next time a teammate replies. - : An SLA has been applied to a conversation, but has not yet been fulfilled. SLA status is active only if there are no “hit, “missed”, or “canceled” events. Enum: "hit", "missed", "cancelled", "active" - `statistics` (object,null) A Statistics object containing all information required for reporting, with timestamps and calculated metrics. - `statistics.time_to_assignment` (integer) Duration until last assignment before first admin reply. In seconds. Example: 2310 - `statistics.time_to_admin_reply` (integer) Duration until first admin reply. Subtracts out of business hours. In seconds. Example: 2310 - `statistics.time_to_first_close` (integer) Duration until conversation was closed first time. Subtracts out of business hours. In seconds. Example: 2310 - `statistics.time_to_last_close` (integer) Duration until conversation was closed last time. Subtracts out of business hours. In seconds. Example: 2310 - `statistics.median_time_to_reply` (integer) Median based on all admin replies after a contact reply. Subtracts out of business hours. In seconds. Example: 2310 - `statistics.first_contact_reply_at` (integer) Time of first text conversation part from a contact. Example: 1663597233 - `statistics.first_assignment_at` (integer) Time of first assignment after first_contact_reply_at. Example: 1663597233 - `statistics.first_admin_reply_at` (integer) Time of first admin reply after first_contact_reply_at. Example: 1663597233 - `statistics.first_close_at` (integer) Time of first close after first_contact_reply_at. Example: 1663597233 - `statistics.last_assignment_at` (integer) Time of last assignment after first_contact_reply_at. Example: 1663597233 - `statistics.last_assignment_admin_reply_at` (integer) Time of first admin reply since most recent assignment. Example: 1663597233 - `statistics.last_contact_reply_at` (integer) Time of the last conversation part from a contact. Example: 1663597233 - `statistics.last_admin_reply_at` (integer) Time of the last conversation part from an admin. Example: 1663597233 - `statistics.last_close_at` (integer) Time of the last conversation close. Example: 1663597233 - `statistics.last_closed_by_id` (string) The last admin who closed the conversation. Returns a reference to an Admin object. Example: "c3po" - `statistics.count_reopens` (integer) Number of reopens after first_contact_reply_at. Example: 1 - `statistics.count_assignments` (integer) Number of assignments after first_contact_reply_at. Example: 1 - `statistics.count_conversation_parts` (integer) Total number of conversation parts. Example: 1 - `statistics.assigned_team_first_response_time_by_team` (array) An array of conversation response time objects - `statistics.assigned_team_first_response_time_by_team.team_id` (integer) Id of the assigned team. Example: 100 - `statistics.assigned_team_first_response_time_by_team.team_name` (string) Name of the assigned Team, null if team does not exist, Unassigned if no team is assigned. Example: "Team One" - `statistics.assigned_team_first_response_time_by_team.response_time` (integer) First response time of assigned team in seconds. Example: 2310 - `statistics.assigned_team_first_response_time_in_office_hours` (array) An array of conversation response time objects within office hours - `statistics.handling_time` (integer) Time from conversation assignment to conversation close in seconds. Example: 2310 - `conversation_parts` (object) A list of Conversation Part objects for each part message in the conversation. This is only returned when Retrieving a Conversation, and ignored when Listing all Conversations. There is a limit of 500 parts. - `conversation_parts.total_count` (integer) Example: 2 - `linked_objects` (object) An object containing metadata about linked conversations and linked tickets. Up to 1000 can be returned. - `linked_objects.type` (string) Always list. Enum: "list" - `linked_objects.total_count` (integer) The total number of linked objects. Example: 100 - `linked_objects.has_more` (boolean) Whether or not there are more linked objects than returned. - `linked_objects.data` (array) An array containing the linked conversations and linked tickets. - `linked_objects.data.type` (string) ticket or conversation Enum: "ticket", "conversation" - `linked_objects.data.id` (string) The ID of the linked object Example: "7583" - `linked_objects.data.category` (string,null) Category of the Linked Ticket Object. Enum: "Customer", "Back-office", "Tracker", null - `ai_agent_participated` (boolean) Indicates whether the AI Agent participated in the conversation. Example: true - `ai_agent` (object) Data related to AI Agent involvement in the conversation. - `ai_agent.source_type` (string) The type of the source that triggered AI Agent involvement in the conversation. Enum: "essentials_plan_setup", "profile", "workflow", "workflow_preview", "fin_preview" - `ai_agent.source_title` (string,null) The title of the source that triggered AI Agent involvement in the conversation. If this is then it will return . Example: "My AI Workflow" - `ai_agent.last_answer_type` (string,null) The type of the last answer delivered by AI Agent. If no answer was delivered then this will return Enum: null, "ai_answer", "custom_answer" - `ai_agent.resolution_state` (string,null) The resolution state of AI Agent. If no AI or custom answer has been delivered then this will return . Enum: "assumed_resolution", "confirmed_resolution", "routed_to_team", "abandoned", null - `ai_agent.rating` (integer,null) The customer satisfaction rating given to AI Agent, from 1-5. Example: 4 - `ai_agent.rating_remark` (string,null) The customer satisfaction rating remark given to AI Agent. Example: "Very helpful!" - `ai_agent.content_sources` (object) - `ai_agent.content_sources.total_count` (integer) The total number of content sources used by AI Agent in the conversation. Example: 1 - `ai_agent.content_sources.content_sources` (array) The content sources used by AI Agent in the conversation. - `ai_agent.content_sources.content_sources.content_type` (string) The type of the content source. Enum: "file", "article", "external_content", "content_snippet", "workflow_connector_action" - `ai_agent.content_sources.content_sources.url` (string) The internal URL linking to the content source for teammates. Example: "/fin-ai-agent/content?content=content_snippet&id=3234924" - `ai_agent.content_sources.content_sources.title` (string) The title of the content source. Example: "My internal content snippet" - `ai_agent.content_sources.content_sources.locale` (string) The ISO 639 language code of the content source. Example: "en" ## 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 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"