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

# Create Conversation



## OpenAPI

````yaml post /api/v1/conversations
openapi: 3.0.0
info:
  title: Libredesk API
  description: >-
    REST API documentation for Libredesk helpdesk system.


    ## Authentication


    The Libredesk API supports two authentication methods:


    ### 1. Basic Authentication

    Use your API key and secret with Basic authentication:

    ```

    Authorization: Basic <base64_encoded_api_key:api_secret>

    ```


    ### 2. Token Authentication  

    Use your API key and secret with token authentication:

    ```

    Authorization: token api_key:api_secret

    ```


    To obtain API credentials, generate them from your agent profile in the
    Libredesk dashboard.
  version: 1.0.0
servers:
  - url: http://localhost:8080
    description: Local development server
security:
  - basicAuth: []
  - tokenAuth: []
paths:
  /api/v1/conversations:
    post:
      tags:
        - Conversations
      summary: Create Conversation
      operationId: handleCreateConversation
      requestBody:
        description: Conversation creation details
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateConversationRequest'
      responses:
        '200':
          description: Conversation created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConversationResponse'
        '401':
          description: Unauthorized
        '500':
          description: Internal server error
      security:
        - basicAuth: []
        - tokenAuth: []
components:
  schemas:
    CreateConversationRequest:
      type: object
      required:
        - content
        - inbox_id
        - contact_email
        - first_name
        - initiator
      properties:
        subject:
          type: string
          description: Conversation subject
        content:
          type: string
          description: Initial message content (Accepts HTML as well)
        inbox_id:
          type: integer
          description: Inbox ID for the conversation
        team_id:
          type: integer
          nullable: true
          description: Team ID to be assigned when conversation is created
        agent_id:
          type: integer
          nullable: true
          description: Agent ID to be assigned when conversation is created
        contact_email:
          type: string
          format: email
          description: Contact's email address
        first_name:
          type: string
          description: Contact's first name
        last_name:
          type: string
          description: Contact's last name
        external_user_id:
          type: string
          description: External identifier for the contact in your own system
          example: crm-9f3a21
        attachments:
          type: array
          items:
            type: integer
          description: Array of attachment IDs
        initiator:
          type: string
          enum:
            - agent
            - contact
          description: >-
            Who initiated the conversation. 'contact' means the first message is
            treated as an incoming message from the contact; 'agent' means the
            first message is an outgoing reply from the agent. Automation rules
            are only evaluated for contact-initiated conversations (incoming
            messages); agent-initiated conversations skip automation rule
            evaluation.
        custom_attributes:
          type: object
          additionalProperties: true
          description: Arbitrary key-value custom attributes to set on the conversation
          example:
            order_id: A-1024
            plan: pro
    ConversationResponse:
      type: object
      properties:
        status:
          type: string
          example: success
        data:
          $ref: '#/components/schemas/Conversation'
    Conversation:
      type: object
      properties:
        id:
          type: integer
          example: 51
          description: Unique conversation ID
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        uuid:
          type: string
          format: uuid
          example: 7d692b95-73dc-4f53-9343-6ed47a3db903
          description: Unique UUID for the conversation
        contact_id:
          type: integer
        inbox_id:
          type: integer
        closed_at:
          type: string
          format: date-time
          nullable: true
        resolved_at:
          type: string
          format: date-time
          nullable: true
        reference_number:
          type: string
          example: '150'
          description: Human-readable reference number for the conversation
        priority:
          type: string
          nullable: true
        priority_id:
          type: integer
          nullable: true
        status:
          type: string
          example: Open
          description: Current status of the conversation (Open, Closed, Resolved)
        status_id:
          type: integer
        first_reply_at:
          type: string
          format: date-time
          nullable: true
        last_reply_at:
          type: string
          format: date-time
          nullable: true
        assigned_user_id:
          type: integer
          nullable: true
        assigned_team_id:
          type: integer
          nullable: true
        assignee_last_seen_at:
          type: string
          format: date-time
        waiting_since:
          type: string
          format: date-time
          nullable: true
        subject:
          type: string
          example: '[GitHub] A third-party GitHub Application has been added'
          description: Subject line of the conversation
        inbox_mail:
          type: string
          format: email
          example: support@example.com
          description: Email address of the inbox
        inbox_name:
          type: string
          example: Support Inbox
          description: Name of the inbox
        inbox_channel:
          type: string
          example: email
          description: Channel type of the inbox (email, web, api)
        tags:
          type: array
          items:
            type: string
        meta:
          type: array
          items:
            type: object
        custom_attributes:
          type: object
        last_message_at:
          type: string
          format: date-time
        last_message:
          type: string
          example: Hey! A third-party GitHub Application was recently authorized...
          description: Content of the last message in the conversation
        last_message_sender:
          type: string
          enum:
            - contact
            - agent
          example: contact
          description: Who sent the last message
        contact:
          $ref: '#/components/schemas/Contact'
        sla_policy_id:
          type: integer
          nullable: true
        sla_policy_name:
          type: string
          nullable: true
        applied_sla_id:
          type: integer
          nullable: true
        first_response_deadline_at:
          type: string
          format: date-time
          nullable: true
        resolution_deadline_at:
          type: string
          format: date-time
          nullable: true
        next_response_deadline_at:
          type: string
          format: date-time
          nullable: true
        next_response_met_at:
          type: string
          format: date-time
          nullable: true
        previous_conversations:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
              created_at:
                type: string
                format: date-time
              updated_at:
                type: string
                format: date-time
              uuid:
                type: string
              contact:
                type: object
                properties:
                  first_name:
                    type: string
                  last_name:
                    type: string
                  avatar_url:
                    type: string
                    nullable: true
              last_message:
                type: string
              last_message_at:
                type: string
                format: date-time
    Contact:
      type: object
      properties:
        id:
          type: integer
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        first_name:
          type: string
        last_name:
          type: string
        email:
          type: string
          format: email
        type:
          type: string
        availability_status:
          type: string
        avatar_url:
          type: string
          nullable: true
        phone_number:
          type: string
          nullable: true
        phone_number_country_code:
          type: string
          nullable: true
        custom_attributes:
          type: object
          nullable: true
        enabled:
          type: boolean
        last_active_at:
          type: string
          format: date-time
          nullable: true
        last_login_at:
          type: string
          format: date-time
          nullable: true
        roles:
          type: array
          items:
            type: string
          nullable: true
        permissions:
          type: array
          items:
            type: string
          nullable: true
        teams:
          type: array
          items:
            type: object
        api_key:
          type: string
          nullable: true
        api_key_last_used_at:
          type: string
          format: date-time
          nullable: true
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        Basic authentication using base64 encoded API key and secret. Format:
        `Authorization: Basic <base64(api_key:api_secret)>`
    tokenAuth:
      type: apiKey
      name: Authorization
      in: header
      description: >-
        Token authentication using API key and secret. Format: `Authorization:
        token api_key:api_secret`

````