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

# Create conversation

> Start a conversation on behalf of a contact.

The contact is matched by `user_identifier`, then by `email`, and a new contact is created when neither matches.


<Info>Replace `{your-subdomain}` with your workspace's subdomain. <br /> Learn how to find your subdomain in [Workspace subdomain](/getting-started/workspace-subdomain).</Info>


## OpenAPI

````yaml bundled/conversations.yaml POST /conversations
openapi: 3.0.3
info:
  title: NeetoChat Conversations APIs
  version: 1.0.0
servers:
  - description: NeetoChat APIs
    url: https://{your-subdomain}.neetochat.com/api/external/v2
    variables:
      your-subdomain:
        default: spinkart
        description: >-
          Replace **spinkart** with your [workspace's
          subdomain](/getting-started/workspace-subdomain).
security: []
tags:
  - name: Conversations
    description: APIs to list, create and update conversations in the workspace.
  - name: Messages
    description: APIs to read and send messages in a conversation.
paths:
  /conversations:
    post:
      tags:
        - Conversations
      summary: Create conversation
      description: >
        Start a conversation on behalf of a contact.


        The contact is matched by `user_identifier`, then by `email`, and a new
        contact is created when neither matches.
      parameters:
        - $ref: '#/components/parameters/api_key_header'
        - $ref: '#/components/parameters/accept_header'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                visitor_attributes:
                  type: object
                  description: Details of the contact starting the conversation.
                  properties:
                    email:
                      type: string
                      format: email
                      example: sam@example.com
                    name:
                      type: string
                      example: Sam Brown
                    phone_number:
                      type: string
                      example: '+14155550123'
                    user_identifier:
                      type: string
                      description: Your own identifier for the contact.
                      example: customer-1042
                    traits:
                      type: object
                      description: Custom attributes to store on the contact.
                      additionalProperties: true
                      example:
                        plan: Pro
                  required:
                    - email
                messages_attributes:
                  type: array
                  description: >-
                    Messages from the contact that start the conversation. At
                    least one message with a `body` is required.
                  items:
                    type: object
                    properties:
                      body:
                        type: string
                        example: Hi, I need help with a refund.
                    required:
                      - body
                title:
                  type: string
                  example: 'Refund for order #1042'
                status:
                  type: string
                  description: >-
                    Status of the conversation. It must be one of the statuses
                    of your workspace.
                  example: open
                priority:
                  type: string
                  enum:
                    - low
                    - medium
                    - high
                    - urgent
                  example: high
                assignee_email:
                  type: string
                  format: email
                  description: >-
                    Email of the team member to assign the conversation to. It
                    is ignored when no team member has this email.
                  example: oliver@example.com
                group_name:
                  type: string
                  description: >-
                    Name of the group to assign the conversation to. It is
                    ignored when no group has this name.
                  example: Billing
                tags:
                  type: array
                  description: >-
                    Names of the tags to add to the conversation. Tags that
                    don't exist yet are created.
                  items:
                    type: string
                  example:
                    - refund
                    - priority-customer
                ticket_fields:
                  type: object
                  description: >-
                    Ticket field values keyed by the field's name. Use the
                    option label for dropdown fields, an array of labels for
                    multi-select fields and `true` or `false` for checkbox
                    fields.
                  additionalProperties: true
                  example:
                    Order number: '1042'
                origin_page_url:
                  type: string
                  description: URL of the page the conversation was started from.
                  example: https://example.com/pricing
                origin_page_title:
                  type: string
                  description: Title of the page the conversation was started from.
                  example: Pricing
              required:
                - visitor_attributes
                - messages_attributes
      responses:
        '201':
          description: Created - Conversation created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/conversation_response'
        '422':
          description: Unprocessable Entity - The request body is invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
              example:
                error: A conversation must include at least one message.
components:
  parameters:
    api_key_header:
      in: header
      name: X-Api-Key
      description: >-
        Use the X-Api-Key header to provide your workspace API key. Refer to
        [Authentication](/getting-started/authentication) for more information.
      required: true
      schema:
        type: string
        default: your-api-key
    accept_header:
      in: header
      name: Accept
      description: >-
        Specifies the expected response format. Must be set to
        `application/json` for proper API communication.
      required: true
      schema:
        type: string
        enum:
          - application/json
        default: application/json
  schemas:
    conversation_response:
      type: object
      properties:
        conversation:
          $ref: '#/components/schemas/conversation'
    error:
      type: object
      properties:
        error:
          type: string
          example: Conversation does not exist.
    conversation:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: de414e85-a1b5-4240-a465-7b32606980ce
        status:
          type: string
          description: >-
            Name of the conversation's status. The default statuses are `new`,
            `open`, `waiting_on_customer`, `on_hold`, `closed`, `spam` and
            `trash`, and your workspace may also have custom statuses.
          example: open
        title:
          type: string
          nullable: true
          example: 'Refund for order #1042'
        priority:
          type: string
          enum:
            - low
            - medium
            - high
            - urgent
          example: low
        channel_name:
          type: string
          description: Unique identifier of the conversation's chat channel.
          example: b945fd3cd2573017052901d6dbd0832f
        origin_page_url:
          type: string
          nullable: true
          description: URL of the page the conversation was started from.
          example: https://example.com/pricing
        origin_page_title:
          type: string
          nullable: true
          description: Title of the page the conversation was started from.
          example: Pricing
        created_at:
          type: string
          format: date-time
          example: '2026-09-23T18:07:53.661Z'
        updated_at:
          type: string
          format: date-time
          description: >-
            Time the conversation was last changed. A new message or note in the
            conversation also updates it.
          example: '2026-10-05T16:26:58.143Z'
        agent:
          type: object
          description: >-
            Team member assigned to the conversation. All fields are `null` when
            the conversation is unassigned.
          properties:
            id:
              type: string
              format: uuid
              nullable: true
              example: 05665eee-4602-4317-8f7f-767b04274e5f
            name:
              type: string
              nullable: true
              example: Oliver Smith
            email:
              type: string
              nullable: true
              example: oliver@example.com
        group:
          type: object
          description: >-
            Group assigned to the conversation. All fields are `null` when no
            group is assigned.
          properties:
            id:
              type: string
              format: uuid
              nullable: true
              example: null
            name:
              type: string
              nullable: true
              example: null
        visitor:
          type: object
          description: Contact who started the conversation.
          properties:
            id:
              type: string
              format: uuid
              example: 2c79a334-0bc8-44e4-9504-331f59d400ab
            name:
              type: string
              nullable: true
              example: Sam Brown
            email:
              type: string
              nullable: true
              example: sam@example.com
            phone_number:
              type: string
              nullable: true
              example: null
            user_identifier:
              type: string
              nullable: true
              example: null

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.