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

# Create contact

> Adds a workspace contact outside a channel conversation, with contact details for later messaging. Use `contacts.list` to check for an existing contact and `contacts.sendMessage` after creating one.



## OpenAPI

````yaml /api-reference/platform-api.json post /v1/contacts
openapi: 3.1.1
info:
  title: ChatbotX
  version: 0.0.1
servers:
  - url: https://app.chatbotx.io/api
security:
  - bearerAuth: []
  - developerAccessToken: []
  - tokenInSearchParams: []
paths:
  /v1/contacts:
    post:
      tags:
        - Contacts
      summary: Create contact
      description: >-
        Adds a workspace contact outside a channel conversation, with contact
        details for later messaging. Use `contacts.list` to check for an
        existing contact and `contacts.sendMessage` after creating one.
      operationId: contacts.create
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                phoneNumber:
                  anyOf:
                    - const: ''
                    - type: string
                      minLength: 10
                      maxLength: 20
                      pattern: \+?\d{10,20}
                  description: >-
                    Contact's phone number. Required when `channel` is
                    `whatsapp`.
                email:
                  anyOf:
                    - const: ''
                    - type: string
                      maxLength: 100
                      format: email
                  description: Contact's email address. Required when `channel` is `smtp`.
                contactId:
                  type: string
                  maxLength: 255
                  description: >-
                    Channel-specific user id (e.g. Messenger PSID). Required for
                    channels other than webchat/omnichannel.
                firstName:
                  type: string
                  maxLength: 100
                  description: Contact's first name.
                lastName:
                  type: string
                  maxLength: 100
                  description: Contact's last name.
                gender:
                  enum:
                    - male
                    - female
                    - unknown
                  type: string
                  description: Contact's gender.
                channel:
                  enum:
                    - omnichannel
                    - webchat
                    - messenger
                    - whatsapp
                    - zalo
                    - smtp
                    - telegram
                    - instagram
                    - threads
                    - tiktok
                    - api
                  type: string
                  description: >-
                    Channel this contact is reachable on; determines which of
                    phoneNumber/email/contactId is required.
                inboxId:
                  type: string
                  pattern: ^\d+$
                  description: >-
                    Inbox id (numeric string) to create the contact in. Get it
                    from `inboxes.list`.
              required:
                - email
                - gender
                - channel
                - inboxId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    properties:
                      id:
                        type: string
                      createdAt:
                        type: string
                        format: date-time
                        x-native-type: date
                      updatedAt:
                        type: string
                        format: date-time
                        x-native-type: date
                      avatar:
                        anyOf:
                          - type: string
                          - type: 'null'
                      phoneNumber:
                        anyOf:
                          - type: string
                          - type: 'null'
                      email:
                        anyOf:
                          - type: string
                          - type: 'null'
                      emailVerified:
                        type: boolean
                      emailOptIn:
                        type: boolean
                      firstName:
                        anyOf:
                          - type: string
                          - type: 'null'
                      lastName:
                        anyOf:
                          - type: string
                          - type: 'null'
                      fullName:
                        anyOf:
                          - type: string
                          - type: 'null'
                      gender:
                        anyOf:
                          - enum:
                              - male
                              - female
                              - unknown
                            type: string
                          - type: 'null'
                      lastReadAt:
                        anyOf:
                          - type: string
                            format: date-time
                            x-native-type: date
                          - type: 'null'
                      ref:
                        anyOf:
                          - type: string
                          - type: 'null'
                      country:
                        anyOf:
                          - type: string
                          - type: 'null'
                      state:
                        anyOf:
                          - type: string
                          - type: 'null'
                      city:
                        anyOf:
                          - type: string
                          - type: 'null'
                      location:
                        anyOf:
                          - anyOf:
                              - anyOf:
                                  - type: string
                                  - type: number
                                  - type: boolean
                                  - type: 'null'
                              - type: object
                                propertyNames:
                                  type: string
                                additionalProperties: {}
                              - type: array
                                items:
                                  anyOf:
                                    - {}
                                    - type: 'null'
                          - type: 'null'
                      locale:
                        anyOf:
                          - type: string
                          - type: 'null'
                      timezone:
                        anyOf:
                          - type: string
                          - type: 'null'
                      subscribedAt:
                        anyOf:
                          - type: string
                            format: date-time
                            x-native-type: date
                          - type: 'null'
                      broadcastSubscribedAt:
                        anyOf:
                          - type: string
                            format: date-time
                            x-native-type: date
                          - type: 'null'
                      blockedAt:
                        anyOf:
                          - type: string
                            format: date-time
                            x-native-type: date
                          - type: 'null'
                      workspaceId:
                        type: string
                    required:
                      - id
                      - createdAt
                      - updatedAt
                      - avatar
                      - phoneNumber
                      - email
                      - emailVerified
                      - emailOptIn
                      - firstName
                      - lastName
                      - fullName
                      - gender
                      - lastReadAt
                      - ref
                      - country
                      - state
                      - city
                      - location
                      - locale
                      - timezone
                      - subscribedAt
                      - broadcastSubscribedAt
                      - blockedAt
                      - workspaceId
                  - type: object
                    properties:
                      contactCustomFields:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                            createdAt:
                              type: string
                              format: date-time
                              x-native-type: date
                            updatedAt:
                              type: string
                              format: date-time
                              x-native-type: date
                            value:
                              type: string
                            contactId:
                              type: string
                            customFieldId:
                              type: string
                          required:
                            - id
                            - createdAt
                            - updatedAt
                            - value
                            - contactId
                            - customFieldId
                      tags:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                            createdAt:
                              type: string
                              format: date-time
                              x-native-type: date
                            updatedAt:
                              type: string
                              format: date-time
                              x-native-type: date
                            name:
                              type: string
                            deletedAt:
                              anyOf:
                                - type: string
                                  format: date-time
                                  x-native-type: date
                                - type: 'null'
                            folderId:
                              anyOf:
                                - type: string
                                - type: 'null'
                            workspaceId:
                              type: string
                          required:
                            - id
                            - createdAt
                            - updatedAt
                            - name
                            - deletedAt
                            - folderId
                            - workspaceId
                      contactNotes:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              pattern: ^\d+$
                            createdAt:
                              type: string
                              format: date-time
                              x-native-type: date
                            updatedAt:
                              type: string
                              format: date-time
                              x-native-type: date
                            text:
                              type: string
                            contactId:
                              type: string
                              pattern: ^\d+$
                            createdById:
                              anyOf:
                                - type: string
                                  pattern: ^\d+$
                                - type: 'null'
                          required:
                            - id
                            - createdAt
                            - updatedAt
                            - text
                            - contactId
                            - createdById
                      contactInboxes:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                            contactId:
                              type: string
                            inboxId:
                              type: string
                            channel:
                              type: string
                            source:
                              type: string
                            sourceId:
                              type: string
                            sourceUserId:
                              anyOf:
                                - type: string
                                - type: 'null'
                            sourceUsername:
                              anyOf:
                                - type: string
                                - type: 'null'
                            language:
                              anyOf:
                                - type: string
                                - type: 'null'
                            lastIncomingMessageAt:
                              anyOf:
                                - type: string
                                  format: date-time
                                  x-native-type: date
                                - type: 'null'
                            contactLastReadAt:
                              anyOf:
                                - type: string
                                  format: date-time
                                  x-native-type: date
                                - type: 'null'
                            inbox:
                              type: object
                              properties:
                                id:
                                  type: string
                                  pattern: ^\d+$
                                createdAt:
                                  type: string
                                  format: date-time
                                  x-native-type: date
                                updatedAt:
                                  type: string
                                  format: date-time
                                  x-native-type: date
                                name:
                                  type: string
                                channel:
                                  type: string
                                sourceId:
                                  type: string
                                workspaceId:
                                  type: string
                                  pattern: ^\d+$
                                status:
                                  type: string
                                disconnectedAt:
                                  anyOf:
                                    - type: string
                                      format: date-time
                                      x-native-type: date
                                    - type: 'null'
                                disconnectReason:
                                  anyOf:
                                    - type: string
                                    - type: 'null'
                              required:
                                - id
                                - createdAt
                                - updatedAt
                                - name
                                - channel
                                - sourceId
                                - workspaceId
                                - status
                                - disconnectedAt
                                - disconnectReason
                          required:
                            - id
                            - contactId
                            - inboxId
                            - channel
                            - source
                            - sourceId
                            - language
                            - lastIncomingMessageAt
                            - inbox
                      conversation:
                        anyOf:
                          - allOf:
                              - type: object
                                properties:
                                  id:
                                    type: string
                                  createdAt:
                                    type: string
                                    format: date-time
                                    x-native-type: date
                                  updatedAt:
                                    type: string
                                    format: date-time
                                    x-native-type: date
                                  botEnabled:
                                    type: boolean
                                  botResumeAt:
                                    anyOf:
                                      - type: string
                                        format: date-time
                                        x-native-type: date
                                      - type: 'null'
                                  archivedAt:
                                    anyOf:
                                      - type: string
                                        format: date-time
                                        x-native-type: date
                                      - type: 'null'
                                  additionalAttributes:
                                    anyOf:
                                      - anyOf:
                                          - anyOf:
                                              - type: string
                                              - type: number
                                              - type: boolean
                                              - type: 'null'
                                          - type: object
                                            propertyNames:
                                              type: string
                                            additionalProperties: {}
                                          - type: array
                                            items:
                                              anyOf:
                                                - {}
                                                - type: 'null'
                                      - type: 'null'
                                  contactLastReadAt:
                                    anyOf:
                                      - type: string
                                        format: date-time
                                        x-native-type: date
                                      - type: 'null'
                                  agentLastReadAt:
                                    anyOf:
                                      - type: string
                                        format: date-time
                                        x-native-type: date
                                      - type: 'null'
                                  aiContextLastMessageId:
                                    anyOf:
                                      - {}
                                      - type: 'null'
                                  lastActivityAt:
                                    anyOf:
                                      - type: string
                                        format: date-time
                                        x-native-type: date
                                      - type: 'null'
                                  followed:
                                    type: boolean
                                  assignedUserId:
                                    anyOf:
                                      - {}
                                      - type: 'null'
                                  assignedInboxTeamId:
                                    anyOf:
                                      - {}
                                      - type: 'null'
                                  workspaceId:
                                    type: string
                                  contactId:
                                    type: string
                                  sourceId:
                                    anyOf:
                                      - type: string
                                      - type: 'null'
                                  lastStep:
                                    anyOf:
                                      - type: string
                                      - type: 'null'
                                  currentStep:
                                    anyOf:
                                      - type: string
                                      - type: 'null'
                                  adminRepliedAt:
                                    anyOf:
                                      - type: string
                                        format: date-time
                                        x-native-type: date
                                      - type: 'null'
                                  contactRepliedAt:
                                    anyOf:
                                      - type: string
                                        format: date-time
                                        x-native-type: date
                                      - type: 'null'
                                required:
                                  - id
                                  - createdAt
                                  - updatedAt
                                  - botEnabled
                                  - botResumeAt
                                  - archivedAt
                                  - additionalAttributes
                                  - contactLastReadAt
                                  - agentLastReadAt
                                  - lastActivityAt
                                  - followed
                                  - workspaceId
                                  - contactId
                                  - sourceId
                                  - lastStep
                                  - currentStep
                                  - adminRepliedAt
                                  - contactRepliedAt
                              - type: object
                                properties:
                                  assignedUser:
                                    anyOf:
                                      - type: object
                                        properties:
                                          id:
                                            type: string
                                          createdAt:
                                            type: string
                                            format: date-time
                                            x-native-type: date
                                          updatedAt:
                                            type: string
                                            format: date-time
                                            x-native-type: date
                                          name:
                                            anyOf:
                                              - type: string
                                              - type: 'null'
                                          email:
                                            type: string
                                          emailVerified:
                                            type: boolean
                                          image:
                                            anyOf:
                                              - type: string
                                              - type: 'null'
                                          isAnonymous:
                                            type: boolean
                                          mustChangePassword:
                                            type: boolean
                                          tenantId: {}
                                        required:
                                          - id
                                          - createdAt
                                          - updatedAt
                                          - name
                                          - email
                                          - emailVerified
                                          - image
                                          - isAnonymous
                                          - mustChangePassword
                                      - type: 'null'
                                  assignedInboxTeam:
                                    anyOf:
                                      - type: object
                                        properties:
                                          id:
                                            type: string
                                          createdAt:
                                            type: string
                                            format: date-time
                                            x-native-type: date
                                          updatedAt:
                                            type: string
                                            format: date-time
                                            x-native-type: date
                                          workspaceId:
                                            type: string
                                          name:
                                            type: string
                                        required:
                                          - id
                                          - createdAt
                                          - updatedAt
                                          - workspaceId
                                          - name
                                      - type: 'null'
                                  inbox:
                                    anyOf:
                                      - type: object
                                        properties:
                                          id:
                                            type: string
                                            pattern: ^\d+$
                                          createdAt:
                                            type: string
                                            format: date-time
                                            x-native-type: date
                                          updatedAt:
                                            type: string
                                            format: date-time
                                            x-native-type: date
                                          name:
                                            type: string
                                          channel:
                                            type: string
                                          sourceId:
                                            type: string
                                          workspaceId:
                                            type: string
                                            pattern: ^\d+$
                                          status:
                                            type: string
                                          disconnectedAt:
                                            anyOf:
                                              - type: string
                                                format: date-time
                                                x-native-type: date
                                              - type: 'null'
                                          disconnectReason:
                                            anyOf:
                                              - type: string
                                              - type: 'null'
                                        required:
                                          - id
                                          - createdAt
                                          - updatedAt
                                          - name
                                          - channel
                                          - sourceId
                                          - workspaceId
                                          - status
                                          - disconnectedAt
                                          - disconnectReason
                                      - type: 'null'
                          - type: 'null'
        '400':
          description: '400'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: businessError
                      status:
                        const: 400
                      message:
                        type: string
                        default: An error occurred while processing your request
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - $ref: '#/components/schemas/UndefinedError'
        '401':
          description: '401'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: UNAUTHORIZED
                      status:
                        const: 401
                      message:
                        type: string
                        default: Authentication required
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: INVALID_CHATBOT_TOKEN
                      status:
                        const: 401
                      message:
                        type: string
                        default: Invalid or missing workspace API token
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - $ref: '#/components/schemas/UndefinedError'
        '403':
          description: '403'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: FORBIDDEN
                      status:
                        const: 403
                      message:
                        type: string
                        default: You do not have permission to perform this action
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: trialExpired
                      status:
                        const: 403
                      message:
                        type: string
                        default: Trial expired
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: macLimitReached
                      status:
                        const: 403
                      message:
                        type: string
                        default: Monthly active contact limit reached
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - $ref: '#/components/schemas/UndefinedError'
        '422':
          description: '422'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: invalidRequestData
                      status:
                        const: 422
                      message:
                        type: string
                        default: Input validation failed
                      data:
                        type: object
                        properties:
                          issues:
                            type: array
                            items:
                              type: object
                              properties:
                                message:
                                  type: string
                                path:
                                  type: array
                                  items:
                                    anyOf:
                                      - type: string
                                      - type: number
                                      - type: object
                                        properties:
                                          key:
                                            anyOf:
                                              - type: string
                                              - type: number
                                        required:
                                          - key
                                        additionalProperties: {}
                              required:
                                - message
                              additionalProperties: {}
                        required:
                          - issues
                        additionalProperties: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                      - data
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: validation
                      status:
                        const: 422
                      message:
                        type: string
                        default: Validation error
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - $ref: '#/components/schemas/UndefinedError'
        '429':
          description: '429'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: tooManyRequests
                      status:
                        const: 429
                      message:
                        type: string
                        default: Too many requests
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - $ref: '#/components/schemas/UndefinedError'
        '500':
          description: '500'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: INTERNAL_SERVER_ERROR
                      status:
                        const: 500
                      message:
                        type: string
                        default: An unexpected error occurred
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - $ref: '#/components/schemas/UndefinedError'
components:
  schemas:
    UndefinedError:
      type: object
      properties:
        defined:
          const: false
        code:
          type: string
        status:
          type: number
        message:
          type: string
        data: {}
      required:
        - defined
        - code
        - status
        - message
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
    developerAccessToken:
      type: http
      scheme: bearer
    tokenInSearchParams:
      type: apiKey
      in: query
      name: token

````