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

# Create client contact

> Create a new client contact for a specific client and create the linked candidate record. Includes personal information such as name, emails, phone numbers, role, and department.



## OpenAPI

````yaml /api-reference/openapi.json post /clients/contacts/{clientId}
openapi: 3.1.0
info:
  title: Spott API Reference
  version: '0.1'
servers:
  - url: https://api.gospott.com
security: []
tags: []
paths:
  /clients/contacts/{clientId}:
    post:
      tags:
        - Client Contacts
      summary: Create client contact
      description: >-
        Create a new client contact for a specific client and create the linked
        candidate record. Includes personal information such as name, emails,
        phone numbers, role, and department.
      operationId: createNewClientContact
      parameters:
        - name: clientId
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateNewClientContactDto'
      responses:
        '201':
          description: >-
            Client contact created successfully. Returns the client contact ID
            and the linked candidate ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateClientContactResponseDto'
        '400':
          description: Bad request - invalid client contact data
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ExceptionBaseDto'
                  - type: object
                    properties:
                      statusCode:
                        type: number
                        example: 400
                      message:
                        type: string
                        example: ONLY_ONE_PRIMARY_EMAIL_ALLOWED
                      error:
                        type: string
                        example: Bad Request
        '401':
          description: Unauthorized - invalid or missing authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionBaseDto'
        '500':
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionBaseDto'
      security:
        - x-api-key: []
components:
  schemas:
    CreateNewClientContactDto:
      type: object
      properties:
        firstName:
          type: string
          minLength: 1
          maxLength: 100
          pattern: ^(?=.*\p{L})[\p{L}\p{M} '’.-]+$
        lastName:
          type: string
          minLength: 1
          maxLength: 100
          pattern: ^(?=.*\p{L})[\p{L}\p{M} '’.-]+$
        avatarUrl:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
        gender:
          anyOf:
            - type: string
              enum:
                - male
                - female
                - x
            - type: 'null'
        nationality:
          type: array
          items:
            type: string
            enum:
              - Afghan
              - Albanian
              - Algerian
              - American
              - Andorran
              - Angolan
              - Antiguan
              - Argentinean
              - Armenian
              - Australian
              - Austrian
              - Azerbaijani
              - Bahamian
              - Bahraini
              - Bangladeshi
              - Barbadian
              - Barbudan
              - Batswana
              - Belarusian
              - Belgian
              - Belizean
              - Beninese
              - Bhutanese
              - Bolivian
              - Bosnian
              - Brazilian
              - British
              - Bruneian
              - Bulgarian
              - Burkinabe
              - Burmese
              - Burundian
              - Cambodian
              - Cameroonian
              - Canadian
              - Cape Verdean
              - Central African
              - Chadian
              - Chilean
              - Chinese
              - Colombian
              - Comoran
              - Congolese
              - Costa Rican
              - Croatian
              - Cuban
              - Cypriot
              - Czech
              - Danish
              - Djibouti
              - Dominican
              - Dutch
              - East Timorese
              - Ecuadorean
              - Egyptian
              - Emirian
              - Equatorial Guinean
              - Eritrean
              - Estonian
              - Ethiopian
              - Fijian
              - Filipino
              - Finnish
              - French
              - Gabonese
              - Gambian
              - Georgian
              - German
              - Ghanaian
              - Greek
              - Grenadian
              - Guatemalan
              - Guinea-Bissauan
              - Guinean
              - Guyanese
              - Haitian
              - Herzegovinian
              - Honduran
              - Hungarian
              - I-Kiribati
              - Icelander
              - Indian
              - Indonesian
              - Iranian
              - Iraqi
              - Irish
              - Israeli
              - Italian
              - Ivorian
              - Jamaican
              - Japanese
              - Jordanian
              - Kazakhstani
              - Kenyan
              - Kittian and Nevisian
              - Kuwaiti
              - Kyrgyz
              - Laotian
              - Latvian
              - Lebanese
              - Liberian
              - Libyan
              - Liechtensteiner
              - Lithuanian
              - Luxembourger
              - Macedonian
              - Malagasy
              - Malawian
              - Malaysian
              - Maldivian
              - Malian
              - Maltese
              - Marshallese
              - Mauritanian
              - Mauritian
              - Mexican
              - Micronesian
              - Moldovan
              - Monacan
              - Mongolian
              - Moroccan
              - Mosotho
              - Motswana
              - Mozambican
              - Namibian
              - Nauruan
              - Nepalese
              - New Zealander
              - Ni-Vanuatu
              - Nicaraguan
              - Nigerian
              - Nigerien
              - North Korean
              - Northern Irish
              - Norwegian
              - Omani
              - Pakistani
              - Palauan
              - Panamanian
              - Papua New Guinean
              - Paraguayan
              - Peruvian
              - Polish
              - Portuguese
              - Qatari
              - Romanian
              - Russian
              - Rwandan
              - Saint Lucian
              - Salvadoran
              - Samoan
              - San Marinese
              - Sao Tomean
              - Saudi
              - Scottish
              - Senegalese
              - Serbian
              - Seychellois
              - Sierra Leonean
              - Singaporean
              - Slovakian
              - Slovenian
              - Solomon Islander
              - Somali
              - South African
              - South Korean
              - Spanish
              - Sri Lankan
              - Sudanese
              - Surinamer
              - Swazi
              - Swedish
              - Swiss
              - Syrian
              - Taiwanese
              - Tajik
              - Tanzanian
              - Thai
              - Togolese
              - Tongan
              - Trinidadian or Tobagonian
              - Tunisian
              - Turkish
              - Tuvaluan
              - Ugandan
              - Ukrainian
              - Uruguayan
              - Uzbekistani
              - Venezuelan
              - Vietnamese
              - Welsh
              - Yemenite
              - Zambian
              - Zimbabwean
        status:
          type: array
          items:
            type: string
            enum:
              - actively_looking
              - approachable_but_not_actively_looking
              - do_not_contact
              - do_not_poach
              - not_actively_looking
        emails:
          type: array
          items:
            $ref: '#/components/schemas/CreateClientContactEmailDto'
        phoneNumbers:
          type: array
          items:
            $ref: '#/components/schemas/CreateClientContactPhoneNumberDto'
        locations:
          type: array
          items:
            $ref: '#/components/schemas/LocationDto'
        dateOfBirth:
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
        socialMedia:
          type: array
          items:
            type: object
            properties:
              url:
                format: uri
                type: string
              type:
                type: string
                enum:
                  - LINKEDIN
                  - TWITTER
                  - FACEBOOK
                  - INSTAGRAM
              isPrimary:
                type: boolean
            required:
              - url
              - type
        education:
          type: array
          items:
            $ref: '#/components/schemas/CreateCandidateEducationDto'
        workExperiences:
          type: array
          items:
            $ref: '#/components/schemas/CreateCandidateWorkExperienceDto'
        customAttributes:
          type: array
          items:
            type: object
            properties:
              attributeDefinitionId:
                type: string
                minLength: 1
              value: {}
            required:
              - attributeDefinitionId
              - value
        mainContact:
          anyOf:
            - type: object
              properties:
                userId:
                  type: string
                  minLength: 1
              required:
                - userId
            - type: 'null'
        languages:
          type: array
          items:
            $ref: '#/components/schemas/LanguageDto'
        compensation:
          anyOf:
            - $ref: '#/components/schemas/CompensationDto'
            - type: 'null'
        role:
          type: string
        department:
          type: string
        startDate:
          $ref: '#/components/schemas/DateISO'
        endDate:
          $ref: '#/components/schemas/DateISO'
        stageId:
          type: string
        keepShowingAsCandidate:
          type: boolean
      required:
        - firstName
        - lastName
      id: PrivateCreateNewClientContactDto
    CreateClientContactResponseDto:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          description: ID of the client contact record
        candidateId:
          type: string
          minLength: 1
          description: ID of the linked candidate record
      required:
        - id
        - candidateId
      id: PrivateCreateClientContactResponseDto
    ExceptionBaseDto:
      type: object
      properties:
        status:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        message:
          type: string
        requestId:
          type: string
      required:
        - status
        - message
        - requestId
      id: ExceptionBaseDto
    CreateClientContactEmailDto:
      type: object
      properties:
        email:
          type: string
          format: email
          pattern: >-
            ^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$
        purpose:
          anyOf:
            - type: string
              enum:
                - personal
                - work
            - type: 'null'
        isPrimary:
          type: boolean
      required:
        - email
        - purpose
      id: PrivateCreateClientContactEmailDto
    CreateClientContactPhoneNumberDto:
      type: object
      properties:
        phoneNumber:
          type: string
        purpose:
          anyOf:
            - type: string
              enum:
                - personal
                - work
            - type: 'null'
        isPrimary:
          type: boolean
      required:
        - phoneNumber
        - purpose
      id: PrivateCreateClientContactPhoneNumberDto
    LocationDto:
      type: object
      properties:
        street1:
          anyOf:
            - type: string
            - type: 'null'
        street2:
          anyOf:
            - type: string
            - type: 'null'
        postalCode:
          anyOf:
            - type: string
            - type: 'null'
        city:
          anyOf:
            - type: string
            - type: 'null'
        region:
          anyOf:
            - type: string
            - type: 'null'
        state:
          anyOf:
            - type: string
            - type: 'null'
        country:
          anyOf:
            - type: string
            - type: 'null'
        rawCityCountry:
          anyOf:
            - type: string
            - type: 'null'
        latitude:
          anyOf:
            - type: number
            - type: 'null'
        longitude:
          anyOf:
            - type: number
            - type: 'null'
        formattedAddress:
          anyOf:
            - type: string
            - type: 'null'
        type:
          anyOf:
            - $ref: '#/components/schemas/LocationType'
            - type: 'null'
      required:
        - street1
        - street2
        - postalCode
        - city
        - region
        - state
        - country
        - rawCityCountry
        - latitude
        - longitude
        - formattedAddress
        - type
      id: PrivateLocationDto
    DateISO:
      id: DateISO
      format: date-time
      anyOf:
        - type: string
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
        - type: string
          format: date
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
    CreateCandidateEducationDto:
      anyOf:
        - type: object
          properties:
            degree:
              anyOf:
                - type: string
                  enum:
                    - High School
                    - Certificate
                    - Diploma
                    - Associate
                    - Professional
                    - Vocational
                    - Bachelor
                    - Master
                    - Postgraduate Diploma
                    - MBA
                    - LLM
                    - PhD
                    - Postdoctoral
                - type: 'null'
            fieldOfStudy:
              anyOf:
                - type: string
                  minLength: 1
                - type: 'null'
            grade:
              anyOf:
                - type: string
                  minLength: 1
                - type: 'null'
            description:
              anyOf:
                - type: string
                  minLength: 1
                - type: 'null'
            startDate:
              anyOf:
                - $ref: '#/components/schemas/DateISO'
                - type: 'null'
            endDate:
              anyOf:
                - $ref: '#/components/schemas/DateISO'
                - type: 'null'
            companyId:
              type: string
              minLength: 1
          required:
            - degree
            - fieldOfStudy
            - grade
            - description
            - startDate
            - endDate
            - companyId
        - type: object
          properties:
            degree:
              anyOf:
                - type: string
                  enum:
                    - High School
                    - Certificate
                    - Diploma
                    - Associate
                    - Professional
                    - Vocational
                    - Bachelor
                    - Master
                    - Postgraduate Diploma
                    - MBA
                    - LLM
                    - PhD
                    - Postdoctoral
                - type: 'null'
            fieldOfStudy:
              anyOf:
                - type: string
                  minLength: 1
                - type: 'null'
            grade:
              anyOf:
                - type: string
                  minLength: 1
                - type: 'null'
            description:
              anyOf:
                - type: string
                  minLength: 1
                - type: 'null'
            startDate:
              anyOf:
                - $ref: '#/components/schemas/DateISO'
                - type: 'null'
            endDate:
              anyOf:
                - $ref: '#/components/schemas/DateISO'
                - type: 'null'
            company:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
              required:
                - name
          required:
            - degree
            - fieldOfStudy
            - grade
            - description
            - startDate
            - endDate
            - company
      id: PrivateCreateCandidateEducationDto
    CreateCandidateWorkExperienceDto:
      anyOf:
        - type: object
          properties:
            jobTitle:
              type: string
              minLength: 1
            location:
              anyOf:
                - $ref: '#/components/schemas/LocationDto'
                - type: 'null'
            description:
              anyOf:
                - type: string
                - type: 'null'
            startDate:
              anyOf:
                - $ref: '#/components/schemas/DateISO'
                - type: 'null'
            endDate:
              anyOf:
                - $ref: '#/components/schemas/DateISO'
                - type: 'null'
            companyId:
              type: string
              minLength: 1
          required:
            - jobTitle
            - location
            - description
            - startDate
            - endDate
            - companyId
        - type: object
          properties:
            jobTitle:
              type: string
              minLength: 1
            location:
              anyOf:
                - $ref: '#/components/schemas/LocationDto'
                - type: 'null'
            description:
              anyOf:
                - type: string
                - type: 'null'
            startDate:
              anyOf:
                - $ref: '#/components/schemas/DateISO'
                - type: 'null'
            endDate:
              anyOf:
                - $ref: '#/components/schemas/DateISO'
                - type: 'null'
            company:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
              required:
                - name
          required:
            - jobTitle
            - location
            - description
            - startDate
            - endDate
            - company
      id: PrivateCreateCandidateWorkExperienceDto
    LanguageDto:
      type: object
      properties:
        id:
          type: string
          minLength: 1
        language:
          $ref: '#/components/schemas/CandidateLanguage'
        fluency:
          $ref: '#/components/schemas/CandidateFluency'
      required:
        - language
      id: PrivateLanguageDto
    CompensationDto:
      type: object
      properties:
        id:
          type: string
          minLength: 1
        currency:
          $ref: '#/components/schemas/CandidateCurrency'
        totalCompensation:
          anyOf:
            - type: number
            - type: 'null'
        baseCompensation:
          anyOf:
            - type: number
            - type: 'null'
      required:
        - currency
      id: PrivateCompensationDto
    LocationType:
      type: string
      enum:
        - primary_home
        - secondary_home
        - primary_work
        - headquarters
        - regional_office
      id: LocationType
    CandidateLanguage:
      type: string
      enum:
        - Afrikaans
        - Albanian
        - Amharic
        - Arabic
        - Armenian
        - Assamese
        - Aymara
        - Azerbaijani
        - Bangla
        - Basque
        - Belarusian
        - Bemba
        - Berber
        - Bislama
        - Bosnian
        - Bulgarian
        - Burman
        - Catalan
        - Chechen
        - Chewa
        - Chinese (Mandarin)
        - Chinese (Cantonese)
        - Chittagonian
        - Croatian
        - Czech
        - Danish
        - Dari
        - Dhivehi
        - Dutch
        - Dzongkha
        - English
        - Estonian
        - Ewe
        - Fijian
        - Filipino
        - Finnish
        - French
        - Galician
        - Georgian
        - German
        - Greek
        - Guarani
        - Gujarati
        - Haitian Creole
        - Hausa
        - Hebrew
        - Hindi
        - Hungarian
        - Icelandic
        - Igbo
        - Indonesian
        - Irish
        - Italian
        - Japanese
        - Kannada
        - Kazakh
        - Khmer
        - Kinyarwanda
        - Kirundi
        - Korean
        - Kurdish
        - Kyrgyz
        - Lao
        - Latvian
        - Lingala
        - Lithuanian
        - Luganda
        - Luxembourgish
        - Macedonian
        - Malagasy
        - Malay
        - Malayalam
        - Maltese
        - Maori
        - Marathi
        - Moldovan
        - Mongolian
        - Montenegrin
        - Ndebele
        - Nepali
        - Norwegian
        - Odia
        - Oromo
        - Pashto
        - Persian
        - Polish
        - Portuguese
        - Punjabi
        - Quechua
        - Romanian
        - Russian
        - Samoan
        - Sango
        - Serbian
        - Sesotho
        - Setswana
        - Shona
        - Sindhi
        - Sinhala
        - Slovak
        - Slovenian
        - Somali
        - Spanish
        - Swahili
        - Swedish
        - Tajik
        - Tamil
        - Telugu
        - Tetum
        - Thai
        - Tigrinya
        - Tok Pisin
        - Tongan
        - Tsonga
        - Tswana
        - Turkish
        - Turkmen
        - Ukrainian
        - Urdu
        - Uzbek
        - Venda
        - Vietnamese
        - Welsh
        - Xhosa
        - Yoruba
        - Zulu
      id: PrivateCandidateLanguage
    CandidateFluency:
      anyOf:
        - type: string
          enum:
            - Elementary proficiency
            - Limited working proficiency
            - Professional working proficiency
            - Full professional proficiency
            - Native or bilingual proficiency
        - type: 'null'
      id: PrivateCandidateFluency
    CandidateCurrency:
      $ref: '#/components/schemas/DmCurrency'
      id: PrivateCandidateCurrency
    DmCurrency:
      type: string
      enum:
        - AED
        - AFN
        - ALL
        - AMD
        - ANG
        - AOA
        - ARS
        - AUD
        - AWG
        - AZN
        - BAM
        - BBD
        - BDT
        - BGN
        - BHD
        - BIF
        - BMD
        - BND
        - BOB
        - BRL
        - BSD
        - BTC
        - BTN
        - BWP
        - BYN
        - BZD
        - CAD
        - CDF
        - CHF
        - CLF
        - CLP
        - CNH
        - CNY
        - COP
        - CRC
        - CUC
        - CUP
        - CVE
        - CZK
        - DJF
        - DKK
        - DOP
        - DZD
        - EGP
        - ERN
        - ETB
        - EUR
        - FJD
        - FKP
        - GBP
        - GEL
        - GGP
        - GHS
        - GIP
        - GMD
        - GNF
        - GTQ
        - GYD
        - HKD
        - HNL
        - HRK
        - HTG
        - HUF
        - IDR
        - ILS
        - IMP
        - INR
        - IQD
        - IRR
        - ISK
        - JEP
        - JMD
        - JOD
        - JPY
        - KES
        - KGS
        - KHR
        - KMF
        - KPW
        - KRW
        - KWD
        - KYD
        - KZT
        - LAK
        - LBP
        - LKR
        - LRD
        - LSL
        - LYD
        - MAD
        - MDL
        - MGA
        - MKD
        - MMK
        - MNT
        - MOP
        - MRU
        - MUR
        - MVR
        - MWK
        - MXN
        - MYR
        - MZN
        - NAD
        - NGN
        - NIO
        - NOK
        - NPR
        - NZD
        - OMR
        - PAB
        - PEN
        - PGK
        - PHP
        - PKR
        - PLN
        - PYG
        - QAR
        - RON
        - RSD
        - RUB
        - RWF
        - SAR
        - SBD
        - SCR
        - SDG
        - SEK
        - SGD
        - SHP
        - SLE
        - SLL
        - SOS
        - SRD
        - SSP
        - STD
        - STN
        - SVC
        - SYP
        - SZL
        - THB
        - TJS
        - TMT
        - TND
        - TOP
        - TRY
        - TTD
        - TWD
        - TZS
        - UAH
        - UGX
        - USD
        - UYU
        - UZS
        - VEF
        - VES
        - VND
        - VUV
        - WST
        - XAF
        - XAG
        - XAU
        - XCD
        - XCG
        - XDR
        - XOF
        - XPD
        - XPF
        - XPT
        - YER
        - ZAR
        - ZMW
        - ZWG
        - ZWL
      id: DmCurrency
  securitySchemes:
    x-api-key:
      type: apiKey
      name: x-api-key
      in: header
      description: >-
        API key for authentication. Get your API key from Settings → API Keys in
        your Spott dashboard.

````