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

# Update Contact

> Update an existing contact. Only fields present in the JSON body are applied.



## OpenAPI

````yaml PATCH /contacts/{contact_id}/
openapi: 3.1.0
info:
  title: Outbox AI API
  description: API for managing AI agents (chatbots and voicebots) on the Outbox platform
  version: 1.0.0
servers:
  - url: https://api.getoutbox.ai
security: []
paths:
  /contacts/{contact_id}/:
    patch:
      summary: Update Contact
      description: >-
        Update an existing contact. Only fields present in the JSON body are
        applied.
      parameters:
        - name: contact_id
          in: path
          description: The ID of the contact
          required: true
          schema:
            type: string
      requestBody:
        description: Fields to update (all optional; only sent keys are applied)
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactUpdate'
      responses:
        '200':
          description: Contact updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactUpdated'
        '401':
          description: Unauthorized - Invalid or missing API key
        '404':
          description: Contact not found
      security:
        - CompanyApiKey: []
components:
  schemas:
    ContactUpdate:
      type: object
      description: All fields optional; only keys present in the request are applied.
      properties:
        full_name:
          type: string
          description: Also updates first_name and last_name via parse_name_fields
        first_name:
          type: string
        last_name:
          type: string
        email:
          type: string
          description: Empty string is stored as null
        phone_number:
          type: string
          description: Assigned as provided (no normalization in this handler)
        business_name:
          type: string
        notes:
          type: string
        tags:
          type: array
          items:
            type: string
          description: Replaces the entire tags array
        is_dnd:
          type: boolean
        lead_source:
          type: string
          description: >-
            Same allowed values as create: manual, api, webhook, facebook,
            instagram, import
        custom_fields:
          type: object
          additionalProperties:
            type: string
          description: >-
            Same semantics as POST: only keys that exist as company CustomField
            names are stored.
    ContactUpdated:
      type: object
      description: Response body for PATCH /contacts/{contact_id}/
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          nullable: true
        email:
          type: string
          nullable: true
        phone:
          type: string
          nullable: true
        business_name:
          type: string
          nullable: true
        notes:
          type: string
          nullable: true
        tags:
          type: array
          items:
            type: string
        lead_source:
          type: string
          enum:
            - manual
            - api
            - webhook
            - facebook
            - instagram
            - import
        is_dnd:
          type: boolean
        profile_picture_url:
          type: string
          nullable: true
        last_activity:
          type: string
          format: date-time
          nullable: true
        created_at:
          type: string
          format: date-time
          nullable: true
  securitySchemes:
    CompanyApiKey:
      type: apiKey
      in: header
      name: Authorization
      description: Company API Key

````