# Reply to a conversation

You can reply to a conversation with a message from an admin or on behalf of a contact, or with a note for admins.

Endpoint: POST /conversations/{id}/reply
Version: 2.9
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", "Preview"

## Path parameters:

  - `id` (string, required)
    The Intercom provisioned identifier for the conversation or the string "last" to reply to the last part of the conversation
    Example: "123 or \"last\""

## 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` (integer,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,null)
    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, or ticket.
    Example: 1663597223

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

  - `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: "f3b87a2e09d514c6c2e79b9a"

  - `conversation_rating.teammate` (object)
    reference to another object

  - `conversation_rating.teammate.type` (string)
    Example: "contact"

  - `conversation_rating.teammate.id` (string,null)
    Example: "1a2b3c"

  - `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: "<p>Hey there!</p>"

  - `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,null)
    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.

  - `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,null)
    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,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.type` (string)
    Example: "conversation"

  - `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:
            - 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,null)
    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

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

  - `conversation_parts.conversation_parts.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: "<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.assigned_to` (object)
    reference to another object

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

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

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

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

  - `conversation_parts.total_count` (integer)
    Example: 2

## 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"


