> ## Documentation Index
> Fetch the complete documentation index at: https://developers.getfernand.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Reply to conversation

Sends a reply message to all recipients in an existing conversation. Automatically includes all to/cc recipients from the original conversation. Supports attachments, delayed sending, and automated actions. Disables AI automation when an agent replies.


## OpenAPI

````yaml https://api.getfernand.com/openapi.json post /conversations/{id}/reply
openapi: 3.0.3
info:
  title: Fernand API Documentation
  version: '3.0'
  description: This is the documentation for the [Fernand](https://getfernand.com) API.
  termsOfService: https://getfernand.com/terms
  contact:
    name: Fernand Support
    url: https://getfernand.com
    email: support@getfernand.com
  x-logo:
    url: https://app.getfernand.com/images/favicon/icon_128.png
servers:
  - url: https://api.getfernand.com
    description: ''
    x-last-modified: 1764750693905
security:
  - apiKeyHeader: []
externalDocs:
  description: You can access our documentation online by visiting https://api.fernand.help
  url: https://api.fernand.help
paths:
  /conversations/{id}/reply:
    post:
      tags:
        - Conversations
      summary: Reply to conversation
      description: >-
        Sends a reply message to all recipients in an existing conversation.
        Automatically includes all to/cc recipients from the original
        conversation. Supports attachments, delayed sending, and automated
        actions. Disables AI automation when an agent replies.
      operationId: replyToConversation
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: ID of the conversation to reply to.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                content:
                  type: string
                  description: >-
                    HTML content of the reply message (optional if only
                    executing actions).
                attachments:
                  type: array
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                        description: Filename of the attachment.
                      type:
                        type: string
                        description: MIME type of the attachment.
                      content:
                        type: string
                        format: byte
                        description: Base64-encoded file content (max 5MB per file).
                  description: Array of file attachments (optional).
                actions:
                  type: array
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                        description: >-
                          Name of the action to execute (e.g., teammates.assign,
                          status.close).
                      data:
                        type: object
                        description: Action-specific parameters.
                      snippet_id:
                        type: integer
                        description: >-
                          ID of the snippet this action came from (for
                          tracking).
                  description: Automated actions to execute after sending (optional).
                delay:
                  type: integer
                  minimum: 0
                  maximum: 86400
                  default: 7
                  description: >-
                    Delay in seconds before sending the reply (0-86400, default
                    7 seconds).
                agent_id:
                  type: integer
                  format: int64
                  description: >-
                    ID of the agent sending this reply (required, to know which
                    agent will be the sender).
                agent_email:
                  type: string
                  description: >-
                    Email of the agent sending this reply (required if agent_id
                    is not provided).
                generated_id:
                  type: string
                  description: >-
                    Client-generated ID to track the message in the response
                    (optional, returned unchanged).
      responses:
        '200':
          description: Reply sent successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Message'
        '202':
          description: Actions were executed but no message was sent (action-only request).
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Invalid input, no recipients, or attachments too large.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
        '403':
          description: >-
            Missing required permission (Selected agent does not have the
            "conversation.reply" role).
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
        '404':
          description: Conversation, agent not found, or organization expired.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
        '429':
          description: Rate limit exceeded (too many requests in a short time).
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
components:
  schemas:
    Message:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the message
          example: m-123456
        conversation_id:
          type: integer
          format: int64
          description: ID of the conversation this message belongs to
          example: 12345
        type:
          type: string
          enum:
            - MESSAGE
          description: Type of entry (always MESSAGE for messages)
          example: MESSAGE
        download_url:
          type: string
          nullable: true
          description: URL to download the original email file (.eml), if available
          example: >-
            https://api.getfernand.com/conversations/a1b2c3d4-e5f6-7890-abcd-ef1234567890/original.eml?token=abc123
        timestamp:
          type: string
          format: date-time
          description: ISO 8601 timestamp when the message was created
          example: '2026-01-21T14:30:00Z'
        agent_id:
          type: integer
          format: int64
          nullable: true
          description: ID of the agent who sent the message (null for incoming messages)
          example: 42
        way:
          type: string
          enum:
            - IN
            - OUT
          description: Direction of the message (IN for incoming, OUT for outgoing)
          example: IN
        contact_id:
          type: integer
          format: int64
          nullable: true
          description: ID of the contact who sent the message (null for outgoing messages)
          example: 789
        message:
          type: string
          description: HTML content of the message body
          example: <p>Hello, I need help with my account.</p>
        attachments:
          type: array
          items:
            $ref: '#/components/schemas/Attachment'
          description: Array of file attachments in the message
        status:
          type: string
          enum:
            - DRAFT
            - PENDING
            - SENT
            - RECEIVED
            - BOUNCED
            - SPAM
            - ERROR
          description: Current status of the message
          example: SENT
        delay:
          type: integer
          format: int32
          description: Delay in seconds before the message is sent (for scheduled messages)
          example: 0
        source:
          type: string
          enum:
            - EMAIL
            - CHAT
          description: Source channel of the message
          example: EMAIL
        unsubscribe_url:
          type: string
          nullable: true
          description: URL for the recipient to unsubscribe, if available
          example: https://newsletter.hooli.com/unsubscribe?token=xyz789
        last_event:
          allOf:
            - $ref: '#/components/schemas/MessageEvent'
          nullable: true
          description: Most recent delivery event for this message
        actions:
          type: array
          items:
            type: object
          description: Array of automated actions triggered by this message
        language:
          type: string
          nullable: true
          description: Detected language code of the message content (e.g., en, fr, es)
          example: en
        is_read:
          type: boolean
          description: >-
            Whether the message has been read by the recipient (chat messages
            only)
          example: false
        is_automated:
          type: boolean
          description: Whether this message was sent automatically by the system
          example: false
      required:
        - id
        - conversation_id
        - type
        - timestamp
        - way
        - status
        - source
      x-computed-hash: f06a9fad859d70eed1fa800c0c475119662f50b53898da1b3e6443b836ce35be
      x-last-modified: 1773150592
    Attachment:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: Unique identifier for the attachment
        name:
          type: string
          maxLength: 250
          description: Name of the attachment file
        url:
          type: string
          format: uri
          description: Download URL for the attachment
        type:
          type: string
          maxLength: 250
          description: MIME type of the attachment (content_type)
        size:
          type: integer
          format: int32
          description: Size of the attachment in bytes
        uuid:
          type: string
          format: uuid
          description: Unique UUID for the attachment
      required:
        - id
        - name
        - url
        - type
        - size
        - uuid
      x-computed-hash: e3f6f020dd720737f6114ca84de8255a075145ec2af171dfba4f88f71cfb4490
      x-last-modified: 1769075324
    MessageEvent:
      type: object
      properties:
        event:
          type: string
          enum:
            - QUEUED
            - CANCELED
            - DELIVERED
            - RECEIVED
            - SOFT_BOUNCE
            - HARD_BOUNCE
            - REJECTED
            - SPAM
            - ERROR
          description: Type of delivery event
          example: DELIVERED
        error_code:
          type: string
          maxLength: 10
          nullable: true
          description: Error code if the event represents a failure
          example: '550'
        reason:
          type: string
          maxLength: 250
          nullable: true
          description: Human-readable description of the event or error
          example: Message delivered successfully
        received_at:
          type: string
          format: date-time
          description: ISO 8601 timestamp when the event was received
          example: '2026-01-21T14:31:00Z'
      required:
        - event
        - received_at
      x-computed-hash: 91b9f7e32e29a071b0d7ea10809ffe841a3ac3f59acecfdf33716d2010e8de35
      x-last-modified: 1769075324
  securitySchemes:
    apiKeyHeader:
      type: apiKey
      description: >-
        Authenticate your account by including your secret key in API requests.

        You can manage your API keys in the
        [Dashboard](https://app.getfernand.com/).


        Authentication to the API is performed by using the HTTP Header
        X-API-Key.
      name: X-API-Key
      in: header
      x-last-modified: 1764750344730

````