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

# Update contact fields

> Update contact fields (standard and custom/AI fields by name). You can also set `companyId` to associate the contact with an existing company, or `null` to clear the current association. The contact's own country is stored as `leadCountry`; responses expose it as `contactCountry`, and `contactCountry` is also accepted here as a write alias for `leadCountry`.

    > **Required scope:** `CONTACTS_WRITE`
    >
    > **Rate limit:** 30 requests per minute

Accepted standard fields (auto-updated):
- linkedInProfileId
- firstName
- jobTitle
- lastName
- linkedinProfileUrl
- personalEmails
- phones
- professionalEmail
- mobilePhone
- geoRegion
- leadCountry
- profileBio
- yearsInCompany
- yearsInRole
- lastLinkedInPost
- jobChange
- mentionedInNews
- promotion
- leadCRMId
- previousPositions
- languages
- linkedInHeadline
- companyId (special association field; use an existing company ID or null)

Custom/AI fields are also allowed by name and are client-specific.



## OpenAPI

````yaml https://openapi.enginy.ai/definitions.json patch /v1/contact/{contactId}
openapi: 3.1.0
info:
  title: Enginy API
  version: 1.0.0
  description: Public API for Enginy platform
servers:
  - url: https://openapi.enginy.ai
    description: Configured server
security: []
tags:
  - name: AI Variables
    description: >-
      Manage AI variables and discover the entity fields you can reference in
      prompts and entity requests.
  - name: Inbox
    description: >-
      Inbox endpoints for listing contact threads, reading thread messages,
      managing tags, and sending manual replies.
  - name: Workflows
    description: >-
      Build, validate, publish, run, and inspect advanced (graph) workflows,
      plus the block/condition catalog needed to author a workflow plan.
paths:
  /v1/contact/{contactId}:
    patch:
      tags:
        - Contacts
      summary: Update contact fields
      description: >-
        Update contact fields (standard and custom/AI fields by name). You can
        also set `companyId` to associate the contact with an existing company,
        or `null` to clear the current association. The contact's own country is
        stored as `leadCountry`; responses expose it as `contactCountry`, and
        `contactCountry` is also accepted here as a write alias for
        `leadCountry`.

            > **Required scope:** `CONTACTS_WRITE`
            >
            > **Rate limit:** 30 requests per minute

        Accepted standard fields (auto-updated):

        - linkedInProfileId

        - firstName

        - jobTitle

        - lastName

        - linkedinProfileUrl

        - personalEmails

        - phones

        - professionalEmail

        - mobilePhone

        - geoRegion

        - leadCountry

        - profileBio

        - yearsInCompany

        - yearsInRole

        - lastLinkedInPost

        - jobChange

        - mentionedInNews

        - promotion

        - leadCRMId

        - previousPositions

        - languages

        - linkedInHeadline

        - companyId (special association field; use an existing company ID or
        null)


        Custom/AI fields are also allowed by name and are client-specific.
      parameters:
        - schema:
            type: string
            description: The contact ID
          required: true
          description: The contact ID
          name: contactId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties: {}
              description: >-
                Fields to update on the contact. Supports standard and custom/AI
                fields by name. Use `GET /v1/contacts/fields` (MCP tool
                `get_contact_field_metadata`) to discover valid contact field
                names for `fields`, `include`, `exclude`, and update payloads.
            examples:
              basic:
                summary: Update standard contact fields
                value:
                  firstName: Ada
                  lastName: Lovelace
                  jobTitle: CTO
                  linkedInProfileUrl: https://www.linkedin.com/in/adalovelace
                  contactCountry: United States
              updateAssociation:
                summary: Associate the contact with an existing company
                value:
                  companyId: 12345
              withCustomFields:
                summary: Update custom/AI fields by name
                value:
                  customFieldName: Value from API
                  contactAiVariable: Generated summary
              clearField:
                summary: Clear a field using null
                value:
                  mobilePhone: null
      responses:
        '200':
          description: Contact updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                      - success
                  message:
                    type: string
                  data:
                    type: object
                    properties:
                      id:
                        type: number
                        description: Unique identifier for the contact
                      appUrl:
                        type: string
                        format: uri
                        description: Direct Enginy app URL for opening this contact.
                      firstName:
                        type:
                          - string
                          - 'null'
                        description: First name of the contact
                      lastName:
                        type:
                          - string
                          - 'null'
                        description: Last name of the contact
                      jobTitle:
                        type:
                          - string
                          - 'null'
                        description: Job title of the contact
                      jobFunction:
                        type:
                          - string
                          - 'null'
                        description: >-
                          Job function of the contact (e.g. "Sales",
                          "Engineering"). Null when unknown.
                      jobLevel:
                        type:
                          - string
                          - 'null'
                        description: >-
                          Seniority level of the contact (e.g. "VP",
                          "Director"). Null when unknown.
                      linkedInProfileUrl:
                        type:
                          - string
                          - 'null'
                        description: LinkedIn profile URL of the contact
                      professionalEmail:
                        type:
                          - string
                          - 'null'
                        description: Professional email address of the contact
                      personalEmails:
                        type:
                          - string
                          - 'null'
                        description: Personal email addresses (comma-separated)
                      mobilePhone:
                        type:
                          - string
                          - 'null'
                        description: Mobile phone number of the contact
                      phones:
                        type:
                          - string
                          - 'null'
                        description: Other phone numbers (comma-separated)
                      imageUrl:
                        type:
                          - string
                          - 'null'
                        description: Profile image URL
                      companyId:
                        type:
                          - number
                          - 'null'
                        description: ID of the company associated with the contact
                      company:
                        type:
                          - object
                          - 'null'
                        properties:
                          id:
                            type: number
                            description: Company ID
                          appUrl:
                            type: string
                            format: uri
                            description: >-
                              Direct Enginy app URL for opening the associated
                              company.
                          name:
                            type:
                              - string
                              - 'null'
                            description: Company name
                          domain:
                            type:
                              - string
                              - 'null'
                            description: Company website domain
                          companyLinkedInUrl:
                            type:
                              - string
                              - 'null'
                            description: Company LinkedIn URL
                        required:
                          - id
                          - appUrl
                          - name
                          - domain
                          - companyLinkedInUrl
                        description: Company details
                      emailVerificationStatus:
                        type: string
                        description: Email verification status
                      contactCountry:
                        type:
                          - string
                          - 'null'
                        description: Country of the contact
                      linkedInHeadline:
                        type:
                          - string
                          - 'null'
                        description: LinkedIn headline
                      numberOfConnections:
                        type:
                          - number
                          - 'null'
                        description: Number of LinkedIn connections
                      contactCRMId:
                        type:
                          - string
                          - 'null'
                        description: CRM contact ID
                      leadCRMId:
                        type:
                          - string
                          - 'null'
                        description: CRM lead ID
                      isInCRM:
                        type: boolean
                        description: Whether the contact is synced with CRM
                      lastContactedAt:
                        type:
                          - string
                          - 'null'
                        format: date-time
                        description: >-
                          Date and time of the most recent outbound message sent
                          to this contact across all campaigns. Null when the
                          contact has never been messaged.
                      smartFieldExplanations:
                        type: object
                        additionalProperties:
                          type: string
                        description: >-
                          Map of smart field names to their explanation
                          (returned when smart fields are requested).
                      createdAt:
                        type: string
                        format: date-time
                        description: Date and time when the contact was created
                      updatedAt:
                        type: string
                        format: date-time
                        description: Date and time when the contact was last updated
                    required:
                      - id
                      - appUrl
                      - firstName
                      - lastName
                      - jobTitle
                      - jobFunction
                      - jobLevel
                      - linkedInProfileUrl
                      - professionalEmail
                      - personalEmails
                      - mobilePhone
                      - phones
                      - imageUrl
                      - companyId
                      - company
                      - emailVerificationStatus
                      - contactCountry
                      - linkedInHeadline
                      - numberOfConnections
                      - contactCRMId
                      - leadCRMId
                      - isInCRM
                      - lastContactedAt
                      - createdAt
                      - updatedAt
                required:
                  - status
                  - message
                  - data
        '400':
          description: Bad request - invalid fields or values
        '404':
          description: Contact not found
      security:
        - apiKey: []
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key

````