# Retrieve a conversation

You can fetch the details of a single conversation.
This will return a single Conversation model with all its conversation parts.
The maximum number of conversation parts that can be returned via the API is 500. If you have more than that we will return the 500 most recent conversation parts. `include_part_types` and `exclude_part_types` are applied before this limit, so filtering returns the 500 most recent matching parts. `conversation_parts.total_count` counts the parts in this response, after filtering — it is not the conversation's total part count.
For AI agent conversation metadata, please note that you need to have the agent enabled in your workspace, which is a [paid feature](https://www.intercom.com/help/en/articles/8205718-fin-resolutions#h_97f8c2e671).

Endpoint: GET /conversations/{id}
Version: Preview
Security: bearerAuth

## Path parameters:

  - `id` (integer, required)
    The id of the conversation to target

## Query parameters:

  - `display_as` (string)
    Set to plaintext to retrieve conversation messages in plain text. This affects both the body and subject fields. Inline links are rendered as `label (url)`, preserving the link URL alongside the visible text.

  - `include_translations` (boolean)
    If set to true, conversation parts will be translated to the detected language of the conversation.

  - `include_email_history` (boolean)
    If set to true, the source of the conversation will include the email history.

  - `include_monitors` (boolean)
    If set to true, the response will include a `monitor_evaluations` array with any QA monitor results that flagged this conversation.

  - `include_scorecards` (boolean)
    If set to true, the response will include a `scorecards` array with any QA scorecard results for this conversation.

  - `include_part_types` (array)
    A comma-separated list of conversation part types to keep; only parts of these types are returned. Values are the names this version returns in a part's `part_type` field, such as `assignment`, `note` or `snoozed`; an unrecognised name returns a 422 rather than being silently ignored, so a typo fails loudly instead of filtering nothing. Two names need care — a part type this version does not recognise is returned as `unknown`, and `unknown` is not itself an accepted filter value, so those parts are removed by naming the types you do want rather than by filtering them out directly; and the part type that versions below 2.6 return as `note_and_reopen` is named `note_and_unsnooze` here. Up to 50 values are accepted, and `include_part_types` cannot be combined with `exclude_part_types`; both cases return a 422. Supply one comma-separated value; repeating the parameter is not read as a combined list, and only the last occurrence is used. The filter is applied before the conversation parts limit, so the newest matching parts are returned. Available on the Preview version; a 422 is returned on any other version.

  - `exclude_part_types` (array)
    A comma-separated list of conversation part types to drop; parts of these types are omitted and all others are returned. Values are the names this version returns in a part's `part_type` field, such as `assignment`, `note` or `snoozed`; an unrecognised name returns a 422 rather than being silently ignored, so a typo fails loudly instead of filtering nothing. Two names need care — a part type this version does not recognise is returned as `unknown`, and `unknown` is not itself an accepted filter value, so those parts are removed by naming the types you do want rather than by filtering them out directly; and the part type that versions below 2.6 return as `note_and_reopen` is named `note_and_unsnooze` here. Up to 50 values are accepted, and `include_part_types` cannot be combined with `exclude_part_types`; both cases return a 422. Supply one comma-separated value; repeating the parameter is not read as a combined list, and only the last occurrence is used. The filter is applied before the conversation parts limit, so the newest matching parts are returned. Available on the Preview version; a 422 is returned on any other version.

## Header parameters:

  - `Intercom-Version` (string)

## Response 200 fields (application/json):

  - `type` (string)
    Always conversation.
    Example: conversation

  - `id` (string)
    The id representing the conversation.
    Example: 1295

  - `title` (string)
    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)
    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)
    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)
    The priority level of the conversation. Returns one of none, low, medium, high, or urgent.
    Enum: "none", "low", "medium", "high", "urgent"

  - `admin_assignee_id` (integer)
    The id of the admin assigned to the conversation. If it's not assigned to an admin it will return 0.
    Example: 0

  - `team_assignee_id` (integer)
    The id of the team assigned to the conversation. If it's not assigned to a team it will return 0.
    Example: 5017691

  - `company` (object)
    Companies allow you to represent organizations using your product. Each company will have its own description and be associated with contacts. You can fetch, create, update and list companies.

  - `company.type` (string)
    Value is `company`
    Enum: "company"

  - `company.id` (string)
    The Intercom defined id representing the company.
    Example: 531ee472cce572a6ec000006

  - `company.name` (string)
    The name of the company.
    Example: Blue Sun

  - `company.app_id` (string)
    The Intercom defined code of the workspace the company is associated to.
    Example: ecahpwf5

  - `company.plan` (object)

  - `company.plan.type` (string)
    Value is always "plan"
    Example: plan

  - `company.plan.id` (string)
    The id of the plan
    Example: 269315

  - `company.plan.name` (string)
    The name of the plan
    Example: Pro

  - `company.company_id` (string)
    The company id you have defined for the company.
    Example: 6

  - `company.remote_created_at` (integer)
    The time the company was created by you.
    Example: 1663597223

  - `company.created_at` (integer)
    The time the company was added in Intercom.
    Example: 1663597223

  - `company.updated_at` (integer)
    The last time the company was updated.
    Example: 1663597223

  - `company.last_request_at` (integer)
    The time the company last recorded making a request.
    Example: 1663597223

  - `company.size` (integer)
    The number of employees in the company.
    Example: 100

  - `company.website` (string)
    The URL for the company website.
    Example: https://www.intercom.com

  - `company.industry` (string)
    The industry that the company operates in.
    Example: Software

  - `company.monthly_spend` (integer)
    How much revenue the company generates for your business.
    Example: 100

  - `company.session_count` (integer)
    How many sessions the company has recorded.
    Example: 100

  - `company.user_count` (integer)
    The number of users in the company.
    Example: 100

  - `company.tags` (object)
    The list of tags associated with the company

  - `company.tags.type` (string)
    The type of the object
    Enum: "tag.list"

  - `company.tags.tags` (array)

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

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

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

  - `company.segments` (object)
    The list of segments associated with the company

  - `company.segments.type` (string)
    The type of the object
    Enum: "segment.list"

  - `company.segments.segments` (array)

  - `company.segments.segments.type` (string)
    The type of object.
    Enum: "segment"

  - `company.segments.segments.id` (string)
    The unique identifier representing the segment.
    Example: 56203d253cba154d39010062

  - `company.segments.segments.name` (string)
    The name of the segment.
    Example: Active

  - `company.segments.segments.created_at` (integer)
    The time the segment was created.
    Example: 1394621988

  - `company.segments.segments.updated_at` (integer)
    The time the segment was updated.
    Example: 1394622004

  - `company.segments.segments.person_type` (string)
    Type of the contact: contact (lead) or user.
    Enum: "contact", "user"

  - `company.segments.segments.count` (integer)
    The number of items in the user segment. It's returned when `include_count=true` is included in the request.
    Example: 3

  - `company.notes` (object)
    The list of notes associated with the company

  - `company.notes.type` (string)
    The type of the object
    Enum: "note.list"

  - `company.notes.notes` (array)

  - `company.notes.notes.type` (string)
    String representing the object's type. Always has the value `note`.
    Example: note

  - `company.notes.notes.id` (string)
    The id of the note.
    Example: 17495962

  - `company.notes.notes.created_at` (integer)
    The time the note was created.
    Example: 1674589321

  - `company.notes.notes.company` (object)
    Represents the company that the note was created about.

  - `company.notes.notes.company.type` (string)
    String representing the object's type. Always has the value `company`.
    Example: company

  - `company.notes.notes.company.id` (string)
    The id of the company.
    Example: 6329bd9ffe4e2e91dac76188

  - `company.notes.notes.author` (object)
    Admins are teammate accounts that have access to a workspace.

  - `company.notes.notes.author.type` (string)
    String representing the object's type. Always has the value `admin`.
    Example: admin

  - `company.notes.notes.author.id` (string)
    The id representing the admin.
    Example: 1295

  - `company.notes.notes.author.name` (string)
    The name of the admin.
    Example: Joe Example

  - `company.notes.notes.author.email` (string)
    The email of the admin.
    Example: jdoe@example.com

  - `company.notes.notes.author.job_title` (string)
    The job title of the admin.
    Example: Associate

  - `company.notes.notes.author.away_mode_enabled` (boolean)
    Identifies if this admin is currently set in away mode.
    Example: false

  - `company.notes.notes.author.away_mode_reassign` (boolean)
    Identifies if this admin is set to automatically reassign new conversations to the apps default inbox.
    Example: false

  - `company.notes.notes.author.away_status_reason_id` (integer)
    The unique identifier of the away status reason
    Example: 12345

  - `company.notes.notes.author.has_inbox_seat` (boolean)
    Identifies if this admin has a paid inbox seat to restrict/allow features that require them.
    Example: true

  - `company.notes.notes.author.team_ids` (array)
    This object represents the avatar associated with the admin.
    Example: [814865]

  - `company.notes.notes.author.avatar` (string)
    Image for the associated team or teammate
    Example: https://picsum.photos/200/300

  - `company.notes.notes.author.team_priority_level` (object)
    Admin priority levels for teams

  - `company.notes.notes.author.team_priority_level.primary_team_ids` (array)
    The primary team ids for the team
    Example: [814865]

  - `company.notes.notes.author.team_priority_level.secondary_team_ids` (array)
    The secondary team ids for the team
    Example: [493881]

  - `company.notes.notes.author.role` (object)
    The role assigned to this admin. Only present if the admin has a role assigned.

  - `company.notes.notes.author.role.type` (string)
    String representing the object's type. Always has the value `role`.
    Example: role

  - `company.notes.notes.author.role.id` (string)
    The id of the role.
    Example: 1

  - `company.notes.notes.author.role.name` (string)
    The name of the role.
    Example: Support Agent

  - `company.notes.notes.body` (string)
    The body text of the note.
    Example: <p>Text for the note.</p>

  - `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. Only present when the tag is returned as part of a tagging operation on a contact, conversation, ticket, article, internal article, or content snippet.
    Example: 1663597223

  - `tags.tags.applied_by` (object)
    The admin who applied the tag. Only present when the tag is returned as part of a tagging operation on a contact, conversation, ticket, article, internal article, or content snippet.

  - `tags.tags.applied_by.type` (string)
    Example: contact

  - `tags.tags.applied_by.id` (string)
    Example: 1a2b3c

  - `conversation_rating` (object)
    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.updated_at` (integer)
    The time the rating was last updated.
    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)
    The unique identifier for the contact which is provided by the Client.
    Example: 70

  - `source` (object)
    The first message or event that started this conversation. Describes the origin and who initiated it.

  - `source.type` (string)
    The origin of this conversation.
    Example: email

  - `source.id` (string)
    The id of the source message.
    Example: 3

  - `source.delivered_as` (string)
    How the conversation was initiated.
    Example: operator_initiated

  - `source.recipients` (array)
    The recipients of the source message. Only present for email conversations.

  - `source.recipients.type` (string)
    The recipient type. One of `to`, `cc`, or `bcc`.
    Example: to

  - `source.recipients.email` (string)
    The recipient email address.
    Example: user@example.com

  - `source.recipients.drop_reason` (string)
    The reason this recipient was dropped, if applicable.
    Example: null

  - `source.reply_to` (array)
    The Reply-To header addresses of the source message, where a reply will be routed. Can differ from the sender's From address. Only present for email conversations.

  - `source.reply_to.email` (string)
    The Reply-To email address.
    Example: replies@example.com

  - `source.reply_to.name` (string)
    The display name associated with the Reply-To address.
    Example: Support Team

  - `source.subject` (string)
    The message subject. Only present for email conversations.

  - `source.body` (string)
    The message body, which may contain HTML.
    Example: <p>Hey there!</p>

  - `source.author` (object)
    The author who started the conversation. Can be a Contact, Admin, or Bot.

  - `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: Jane Doe

  - `source.author.email` (string)
    The email of the author.
    Example: jane.doe@example.com

  - `source.attachments` (array)
    A list of attachments on the source message.

  - `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)
    The URL where the conversation was started.
    Example: https://intercom.help/company/article/123

  - `source.redacted` (boolean)
    Whether or not the source content has been redacted.
    Example: false

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

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

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

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

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

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

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

  - `source.email_message_metadata.history` (string)
    The HTML content of any quoted or forwarded email history from the initial inbound message
    Example: <div><span>On Jan 28, wrote:</span><blockquote>Previous thread</blockquote></div>

  - `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.

  - `contacts.type` (string)
    Enum: "contact.list"

  - `contacts.contacts` (array)
    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)
    The list of teammates who participated in the conversation (wrote at least one conversation part).

  - `teammates.type` (string)
    The type of the object - `admin.list`.
    Example: admin.list

  - `teammates.teammates` (array)
    The list of teammates who participated in the conversation (wrote at least one conversation part).

  - `first_contact_reply` (object)
    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.type` (string)
    Example: conversation

  - `first_contact_reply.url` (string)
    Example: https://developers.intercom.com/

  - `sla_applied` (object)
    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:
- `hit`: If there’s at least one hit event in the underlying sla_events table, and no “missed” or “canceled” events for the conversation.
- `missed`: 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.
- `active`: 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)
    A Statistics object containing all information required for reporting, with timestamps and calculated metrics.

  - `statistics.type` (string)
    Example: conversation_statistics

  - `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` (array)
    An array of conversation response time objects

  - `statistics.assigned_team_first_response_time.team_id` (integer)
    Id of the assigned team.
    Example: 100

  - `statistics.assigned_team_first_response_time.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.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

  - `statistics.adjusted_handling_time` (integer)
    Adjusted handling time for conversation in seconds. This is the active handling time excluding idle periods when teammates are not actively working on the conversation.
    Example: 1800

  - `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.type` (string)
    Enum: "conversation_part.list"

  - `conversation_parts.conversation_parts` (array)
    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.conversation_parts.type` (string)
    Always conversation_part
    Example: conversation_part

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

  - `conversation_parts.conversation_parts.part_type` (string)
    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.
    Example: comment

  - `conversation_parts.conversation_parts.body` (string)
    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>

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

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

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

  - `conversation_parts.conversation_parts.admin_assignee_id` (integer)
    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

  - `conversation_parts.conversation_parts.team_assignee_id` (integer)
    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

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

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

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

  - `conversation_parts.conversation_parts.author.name` (string)
    The name of the author
    Example: Operator

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

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

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

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

  - `conversation_parts.conversation_parts.external_id` (string)
    The external id of the conversation part
    Example: abcd1234

  - `conversation_parts.conversation_parts.redacted` (boolean)
    Whether or not the conversation part has been redacted.
    Example: false

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

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

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

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

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

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

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

  - `conversation_parts.conversation_parts.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.

  - `conversation_parts.conversation_parts.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

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

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

  - `conversation_parts.conversation_parts.event_details` (object)

  - `conversation_parts.conversation_parts.event_details.workflow` (object)

  - `conversation_parts.conversation_parts.event_details.workflow.name` (string)
    Name of the workflow
    Example: Workflow 1

  - `conversation_parts.conversation_parts.event_details.attribute` (object)

  - `conversation_parts.conversation_parts.event_details.attribute.name` (string)
    Name of the CDA updated
    Example: flight_category

  - `conversation_parts.conversation_parts.event_details.value` (object)

  - `conversation_parts.conversation_parts.event_details.value.name` (string)
    Value of the CDA updated
    Example: vip_status

  - `conversation_parts.conversation_parts.event_details.action` (object)

  - `conversation_parts.conversation_parts.event_details.action.name` (string)
    Name of the action
    Example: Jira Create Issue

  - `conversation_parts.conversation_parts.event_details.event` (object)

  - `conversation_parts.conversation_parts.event_details.event.type` (string)
    Type of the workflow event initiated
    Example: wait_finished

  - `conversation_parts.conversation_parts.event_details.event.result` (string)
    Result of the workflow event
    Example: Finsihed waiting

  - `conversation_parts.conversation_parts.event_details.tags_added` (array)
    Array of tag names that were added
    Example: ["feature-shopify-multi-store","second-tag"]

  - `conversation_parts.conversation_parts.event_details.tags_removed` (array)
    Array of tag names that were removed
    Example: ["feature-embercom-app-serializer-limit-external-plans"]

  - `conversation_parts.conversation_parts.event_details.until` (string)
    Human-readable description of snooze duration
    Example: until tomorrow

  - `conversation_parts.conversation_parts.event_details.custom_until_time` (string)
    ISO timestamp for custom snooze times (null for general snoozes)
    Example: 2025-09-03T18:44:20.146Z

  - `conversation_parts.conversation_parts.event_details.current_priority` (string)
    Current priority level
    Enum: "none", "low", "medium", "high", "urgent"

  - `conversation_parts.conversation_parts.event_details.previous_priority` (string)
    Previous priority level
    Enum: "none", "low", "medium", "high", "urgent"

  - `conversation_parts.conversation_parts.event_details.sla_name` (string)
    Name of the SLA that was applied
    Example: Premium SLA

  - `conversation_parts.conversation_parts.event_details.sla_definition` (object)
    Target times configured for the SLA (in seconds)

  - `conversation_parts.conversation_parts.event_details.sla_definition.first_reply_time` (integer)
    First response time target in seconds
    Example: 300

  - `conversation_parts.conversation_parts.event_details.sla_definition.next_reply_time` (integer)
    Next reply time target in seconds
    Example: 600

  - `conversation_parts.conversation_parts.event_details.sla_definition.resolution_time` (integer)
    Resolution time target in seconds
    Example: 3600

  - `conversation_parts.conversation_parts.event_details.sla_definition.time_to_close` (integer)
    Time to close target in seconds
    Example: 7200

  - `conversation_parts.conversation_parts.event_details.sla_name` (string)
    Name of the SLA
    Example: HandleConversation

  - `conversation_parts.conversation_parts.event_details.sla_target_type` (string)
    Which specific target was missed
    Enum: "first_reply_time", "next_reply_time", "resolution_time", "time_to_close"

  - `conversation_parts.conversation_parts.event_details.current_sla_status` (string)
    Overall SLA status
    Enum: "hit", "missed", "active", "paused", "canceled"

  - `conversation_parts.conversation_parts.event_details.sla_name` (string)
    Name of the SLA being paused
    Example: Premium SLA

  - `conversation_parts.conversation_parts.event_details.current_sla_status` (string)
    Overall SLA status at pause time
    Enum: "active", "hit", "missed", "canceled"

  - `conversation_parts.conversation_parts.event_details.sla_name` (string)
    Name of the SLA being unpaused
    Example: Premium SLA

  - `conversation_parts.conversation_parts.event_details.sla_name` (string)
    Name of the SLA that was removed
    Example: Standard SLA

  - `conversation_parts.conversation_parts.event_details.call_id` (string)
    The id of the call the summary describes
    Example: 3822007689

  - `conversation_parts.conversation_parts.event_details.event` (object)
    The event the part records
    Example: {"type":"otp_email_verification_failed","value":"OTP email verification failed","data":{"otp_email_verification_failed":{"reason":"no_email"}}}

  - `conversation_parts.conversation_parts.event_details.event.type` (string)
    The event type
    Example: otp_email_verification_failed

  - `conversation_parts.conversation_parts.event_details.event.value` (string)
    A readable label for the event
    Example: OTP email verification failed

  - `conversation_parts.conversation_parts.event_details.event.data` (object)
    Data recorded with the event. Empty when the failure was recorded without a reason.
    Example: {"otp_email_verification_failed":{"reason":"no_email"}}

  - `conversation_parts.conversation_parts.event_details.event.data.otp_email_verification_failed` (object)
    Details of the failed verification
    Example: {"reason":"no_email"}

  - `conversation_parts.conversation_parts.event_details.event.data.otp_email_verification_failed.reason` (string)
    Why the one-time passcode email could not verify the contact. Treat this as a free-form string and fall back to value for a reason you do not recognise. no_email means the contact has no email address on record.
    Example: no_email

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

  - `conversation_parts.conversation_parts.translations` (object)
    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>`, `<div>`, or another supported block element to avoid this.
    Example: {"original":"en","en":"<p>Hello</p>","fr":"<p>Bonjour</p>"}

  - `conversation_parts.conversation_parts.translations.original` (string, required)
    The locale code identifying the language the reply was originally written in.
    Example: en

  - `conversation_parts.total_count` (integer)
    A count of the conversation parts in this response, after any `include_part_types` or `exclude_part_types` filter has been applied. This is not the conversation's total part count.
    Example: 1

  - `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.
    Example: false

  - `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)
    Category of the Linked Ticket Object.
    Enum: "Customer", "Back-office", "Tracker", null

  - `ai_topics` (object)
    AI-generated topics and subtopics for the conversation.

  - `ai_topics.type` (string)
    Always ai_topics.
    Example: ai_topics

  - `ai_topics.topics` (array)
    The list of AI-generated topics for this conversation.

  - `ai_topics.topics.type` (string)
    Always ai_topic.
    Example: ai_topic

  - `ai_topics.topics.topic_name` (string)
    The name of the AI-generated topic.
    Example: Billing

  - `ai_topics.topics.subtopics` (array)
    The subtopics under this topic.

  - `ai_topics.topics.subtopics.type` (string)
    Always ai_subtopic.
    Example: ai_subtopic

  - `ai_topics.topics.subtopics.name` (string)
    The name of the subtopic.
    Example: Payment Issues

  - `ai_topics.topics.subtopics.id` (integer)
    The ID of the subtopic.
    Example: 42

  - `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)
    The title of the source that triggered AI Agent involvement in the conversation. If this is `essentials_plan_setup` then it will return `null`.
    Example: My AI Workflow

  - `ai_agent.last_answer_type` (string)
    The type of the last answer delivered by AI Agent. If no answer was delivered then this will return `null`
    Enum: null, "ai_answer", "custom_answer"

  - `ai_agent.resolution_state` (string)
    The resolution state of AI Agent. If no AI or custom answer has been delivered then this will return `null`.
    Enum: "assumed_resolution", "confirmed_resolution", "escalated", "negative_feedback", "procedure_handoff", null

  - `ai_agent.rating` (integer)
    The customer satisfaction rating given to AI Agent, from 1-5.
    Example: 4

  - `ai_agent.rating_remark` (string)
    The customer satisfaction rating remark given to AI Agent.
    Example: Very helpful!

  - `ai_agent.created_at` (integer)
    The time when the AI agent rating was created.
    Example: 1663597260

  - `ai_agent.updated_at` (integer)
    The time when the AI agent rating was last updated.
    Example: 1663597260

  - `ai_agent.content_sources` (object)

  - `ai_agent.content_sources.type` (string)
    Enum: "content_source.list"

  - `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", "internal_article"

  - `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

  - `sales_agent_participated` (boolean)
    Indicates whether the Sales Agent participated in the conversation.
    Example: false

  - `sales_agent` (object)
    Data related to Sales Agent involvement in the conversation.

  - `sales_agent.outcome` (string)
    The fixed outcome of the sales agent interaction, used for billing and tracking.
    Enum: "qualified", "disqualified", "product_discovery", "escalated_to_support", "spam"

  - `sales_agent.routing_outcome` (string)
    The identifier of the user-defined routing outcome selected by the sales agent.
    Example: enterprise_sales

  - `channel` (object)
    The channel through which the conversation was initiated and its current channel.

  - `channel.initial` (string)
    The channel through which the conversation was originally initiated. Possible values include `messenger`, `zendesk_sunshine`, `zendesk_ticket`, `twitter`, `email`. Returns `null` if channel data is unavailable.
    Example: messenger

  - `channel.current` (string)
    The current channel of the conversation. May differ from `initial` if the conversation was migrated between channels. Returns `null` if channel data is unavailable.
    Example: messenger

  - `external_references` (array)
    References linking this conversation to records in an external helpdesk or CRM system. Populated for Fin Standalone workspaces synced from an external platform; an empty array otherwise. Sorted alphabetically by `type` and capped at 20 entries.
    Example: [{"type":"zendesk_ticket","id":"3633338"},{"type":"zendesk_sunshine_conversation","id":"abc-def-uuid"}]

  - `external_references.type` (string)
    The type of external system the reference points to. Possible values include `zendesk_ticket`, `zendesk_sunshine_conversation`, `salesforce_case`, `salesforce_in_app_message_conversation`, `freshdesk_ticket`, `freshchat_conversation`, `hubspot_conversation`, `custom_helpdesk_conversation`, `api_conversation`.
    Example: zendesk_ticket

  - `external_references.id` (string)
    The identifier of the record in the external system. Always serialized as a string, since some external IDs exceed 32-bit integer range.
    Example: 3633338

  - `monitor_evaluations` (array)
    QA monitor evaluations that flagged this conversation. Only included when `include_monitors=true` is passed as a query parameter.

  - `monitor_evaluations.monitor_id` (string)
    The unique identifier of the monitor that produced this evaluation.
    Example: 12345

  - `monitor_evaluations.monitor_name` (string)
    The name of the monitor at the time of evaluation. Null if the monitor has since been deleted.
    Example: Customer complaint handling

  - `monitor_evaluations.monitor_type` (string)
    The type of the monitor. Null if the monitor has since been deleted.
    Example: prompt

  - `monitor_evaluations.result` (string)
    The evaluation outcome reported by the monitor.
    Example: flagged

  - `monitor_evaluations.explanation` (string)
    The reasoning provided by the monitor for its result. May be null if no reasoning was generated.
    Example: The customer mentioned wanting a refund without resolution.

  - `monitor_evaluations.evaluated_at` (integer)
    The time the monitor evaluated this conversation. Null in the rare case the underlying record's timestamp is not yet set.
    Example: 1719493065

  - `scorecards` (array)
    QA scorecard results for this conversation. Only included when `include_scorecards=true` is passed as a query parameter.

  - `scorecards.scorecard_id` (string)
    The unique identifier of the scorecard definition.
    Example: 67890

  - `scorecards.scorecard_version_id` (string)
    The unique identifier of the specific scorecard version that produced this result.
    Example: 67891

  - `scorecards.name` (string)
    The name of the scorecard.
    Example: Standard QA Review

  - `scorecards.scorecard_type` (string)
    The type of scorecard.
    Example: human

  - `scorecards.passed` (boolean)
    Whether the conversation passed the scorecard. Null when the scorecard has not been scored.
    Example: true

  - `scorecards.score` (number)
    The numeric score for the scorecard. Null when the scorecard has not been scored.
    Example: 0.85

  - `scorecards.ai_score` (number)
    The numeric score produced by AI evaluation, if applicable. Null when not AI-scored.
    Example: 0.9

  - `scorecards.evaluated_at` (integer)
    The time the scorecard was last evaluated. Null in the rare case the underlying record's timestamp is not yet set.
    Example: 1719493065

  - `scorecards.reviewed_teammate` (object)
    The teammate (or AI agent) whose handling of the conversation was reviewed by this scorecard.

  - `scorecards.reviewed_teammate.type` (string)
    The kind of reviewee. `ai` if the conversation was handled by Fin or scored without a specific teammate; `admin` if a specific teammate was reviewed.
    Enum: "ai", "admin"

  - `scorecards.reviewed_teammate.admin_id` (string)
    The id of the admin who was reviewed. Present only when `type` is `admin`.
    Example: 991267715

  - `scorecards.reviewer` (object)
    Who reviewed this scorecard. `ai` when Fin auto-reviewed it; `admin` when a teammate did. Null when no review exists for this scorecard or no reviewer has been assigned yet.

  - `scorecards.reviewer.type` (string)
    The kind of reviewer. `ai` if Fin auto-reviewed the scorecard; `admin` if a teammate reviewed it.
    Enum: "ai", "admin"

  - `scorecards.reviewer.admin_id` (string)
    The id of the admin who reviewed the scorecard. Present only when `type` is `admin`.
    Example: 884120017

  - `scorecards.review_status` (string)
    The status of the review of this scorecard, as shown in the QA reviews list in Intercom. `unreviewed` while the review is waiting for a reviewer's verdict; `submitted` once the review has been submitted; `passed_review`, `needs_fix`, `wont_fix` or `fix_complete` when a teammate set a specific outcome. Null when no review exists for this scorecard.
    Enum: "unreviewed", "submitted", "passed_review", "needs_fix", "wont_fix", "fix_complete"

  - `scorecards.notes` (array)
    The notes teammates left on the QA review linked to this scorecard entry. Empty when the scorecard has no linked review.
    Example: [{"id":"9001","created_at":1734537900,"updated_at":1734537900,"author":{"type":"admin","admin_id":"884120017"},"body":"Great empathy in the second reply."}]

  - `scorecards.notes.id` (string)
    The id of the note.
    Example: 9001

  - `scorecards.notes.created_at` (integer)
    The time the note was created.
    Example: 1734537900

  - `scorecards.notes.updated_at` (integer)
    The time the note was last edited. Equal to `created_at` when the note has never been edited.
    Example: 1734537900

  - `scorecards.notes.author` (object)
    Who wrote the note. Null when the teammate who wrote it has since been deleted.

  - `scorecards.notes.author.type` (string)
    The kind of author. `admin` when a teammate wrote the note; `ai` when Fin did.
    Enum: "ai", "admin"

  - `scorecards.notes.author.admin_id` (string)
    The id of the admin who wrote the note. Present only when `type` is `admin`.
    Example: 884120017

  - `scorecards.notes.body` (string)
    The text of the note exactly as the teammate entered it. Plain text; it is not rendered as HTML.
    Example: Great empathy in the second reply.

  - `scorecards.evaluators` (array)
    Per-evaluator results within this scorecard.

  - `scorecards.evaluators.evaluator_id` (string)
    The unique identifier of the evaluator (criterion) within the scorecard.
    Example: 54321

  - `scorecards.evaluators.result` (object)
    The evaluator's result for this conversation. Null if the evaluator was not scored.

  - `scorecards.evaluators.result.value` (string)
    The evaluator's selected value (typically a label such as `pass`, `fail`, or a category identifier).
    Example: pass

  - `scorecards.evaluators.result.source` (string)
    The origin of the result (for example, `ai` or `human`).
    Example: ai

  - `scorecards.evaluators.result.reasoning` (string)
    A free-text explanation of the result.
    Example: The agent acknowledged the issue and resolved it within the same response.

  - `scorecards.evaluators.result.reason_ids` (array)
    Identifiers for structured reasons assigned to the result, if any.
    Example: ["101","102"]

  - `scorecards.evaluators.result.other_text` (string)
    Free-text entered by the reviewer to supplement or stand in for the structured `reason_ids` — typically captured when the reviewer selects an "Other" option or adds a custom note. Null when not provided.
    Example: Agent acknowledged the issue but missed the follow-up question about billing.

## Response 401 fields (application/json):

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

  - `request_id` (string)
    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)
    Optional. Human readable description of the error.
    Example: Access Token Invalid

  - `errors.field` (string)
    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)
    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)
    Optional. Human readable description of the error.
    Example: Access Token Invalid

  - `errors.field` (string)
    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)
    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)
    Optional. Human readable description of the error.
    Example: Access Token Invalid

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

## Response 422 fields (application/json):

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

  - `request_id` (string)
    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)
    Optional. Human readable description of the error.
    Example: Access Token Invalid

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

