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

# Merge Contacts

> Merge two contacts into a single contact. The base contact remains and receives all
data from the mergee contact. After the merge, the mergee contact is permanently deleted.

This action is irreversible. All conversations, labels, and custom attributes from the
mergee contact will be moved to the base contact.




## OpenAPI

````yaml /openapi/application.json post /api/v1/accounts/{account_id}/actions/contact_merge
openapi: 3.1.0
info:
  title: API de Yampi
  description: >-
    API de cuenta de Yampi: chats, inventario, negocios, contratos, tesorería y
    Livia. Autenticación con el header `api_access_token`.
  version: 1.2.0
  termsOfService: https://yampi.ai/terms/
  contact:
    email: hola@yampi.ai
  license:
    name: MIT License
    url: https://opensource.org/licenses/MIT
servers:
  - url: https://app.yampi.ai
    description: Producción
security: []
tags:
  - name: Agents
    description: Agent management APIs
  - name: Canned Responses
    description: Pre-defined responses for common queries
  - name: Contacts
    description: Contact management APIs
  - name: Contact Labels
    description: Manage contact labels
  - name: Conversation Assignments
    description: Manage conversation assignments
  - name: Conversation Labels
    description: Manage conversation labels
  - name: Conversations
    description: Conversation management APIs
  - name: Custom Attributes
    description: Custom fields for contacts and conversations
  - name: Custom Filters
    description: Saved filters for conversations
  - name: Inboxes
    description: Communication channels setup
  - name: Integrations
    description: Third-party integrations
  - name: Messages
    description: Message management APIs
  - name: Profile
    description: User profile APIs
  - name: Reports
    description: Analytics and reporting APIs
  - name: Teams
    description: Team management APIs
  - name: Webhooks
    description: Event notification webhooks
  - name: Automation Rule
    description: Workflow automation rules
  - name: Help Center
    description: Knowledge base management
  - name: Account
    description: Current account profile and settings
  - name: Audit Logs
    description: Account audit log
  - name: Properties
    description: Property portfolio APIs
  - name: Companies
    description: Company CRM APIs
  - name: Opportunities
    description: Opportunity CRM APIs
  - name: Opportunity Reminders
    description: Reminders on opportunities
  - name: Contract Templates
    description: Contract template library
  - name: Contract Submissions
    description: Contract sending and tracking
  - name: Livia
    description: Livia assistants
  - name: Livia Tareas
    description: Livia one-shot AI tasks
  - name: SLA Policies
    description: SLA policy management
  - name: Applied SLAs
    description: SLA instances applied to conversations
  - name: SAML Settings
    description: Account SAML SSO settings
  - name: Treasury Subscriptions
    description: Recurring treasury subscriptions
  - name: Treasury Payments
    description: Treasury payment recording
  - name: Treasury Payouts
    description: Subscription payouts
  - name: Treasury Adjustments
    description: Debit and credit adjustments
  - name: Treasury Rules
    description: Notification, retry, collection and tax rules
  - name: Treasury Dashboard
    description: Treasury dashboard
  - name: Treasury Settings
    description: Treasury account settings
  - name: Treasury Owners
    description: Owner statements
  - name: Treasury Reports
    description: Aging and commission reports
  - name: Livia Documentos
    description: Livia knowledge documents
  - name: Livia Escenarios
    description: Livia assistant scenarios
  - name: Livia Herramientas
    description: Livia custom HTTP tools
  - name: Livia Desk
    description: Livia copilot threads and messages
  - name: Livia Preferencias
    description: Account-level Livia preferences
  - name: Documents
    description: Account document library
  - name: Document Folders
    description: Document library folders
  - name: Calendar Events
    description: Account calendar, availability and booking links
  - name: Agent Tasks
    description: Agent task inbox and lifecycle
  - name: Labels
    description: Account labels
  - name: Notifications
    description: User notifications and notification settings
  - name: Search
    description: Account search and AI search
  - name: Macros
    description: Conversation macros
  - name: Campaigns
    description: Outbound campaigns
  - name: Flow Definitions
    description: Livia flow builder
  - name: Custom Roles
    description: Custom agent roles
  - name: Assignment Policies
    description: Conversation assignment policies
  - name: Requirements
    description: Capture requirements
  - name: Zones
    description: Location zones and cities
  - name: Geocoding
    description: Authenticated geocoding
  - name: Domains
    description: Account custom domains
  - name: Connector Clients
    description: MCP connector client identifiers
  - name: Presigned Contracts
    description: Already-signed contracts uploaded to the account
  - name: Contract Webhooks
    description: Outbound contract webhook URLs
  - name: Contracts Settings
    description: Account contracts settings
  - name: Treasury Disbursements
    description: Owner and agency disbursements
  - name: Treasury Collections
    description: Collection steps, notices, agreements and exceptions
  - name: Treasury Guarantees
    description: Rental guarantees and claims
  - name: Treasury E-Invoices
    description: Electronic invoicing
  - name: Treasury Available Contracts
    description: Completed contracts that can seed subscriptions
  - name: Opportunity Pipelines
    description: CRM funnels
  - name: Opportunity Columns
    description: CRM kanban columns
  - name: Opportunity Lose Reasons
    description: CRM lose reasons
  - name: Requirement Quotes
    description: Priced quotes on capture requirements
  - name: Conversation Participants
    description: Agents participating in a conversation
  - name: Conversation Draft Messages
    description: Per-conversation composer drafts
  - name: MCP
    description: Account-scoped MCP JSON-RPC server
  - name: Treasury Bank Batches
    description: Bank payout files and beneficiary account confirmation
  - name: Contact Assignment Requests
    description: Requests to be assigned a contact
  - name: Onboarding
    description: Account onboarding details
  - name: Owner Portal Invites
    description: Owner portal invite, eligibility and revoke
  - name: Channel Authorizations
    description: Start OAuth or embedded signup for inbox channels
  - name: CSAT Survey Responses
    description: Account CSAT responses, metrics and review notes
  - name: Dashboard
    description: Account dashboard summary and trends
  - name: Dashboard Apps
    description: Embedded dashboard apps
  - name: Bulk Actions
    description: Bulk conversation and contact actions
  - name: Assignable Agents
    description: Agents assignable across a set of inboxes
  - name: Tracking Pixels
    description: Advertising tracking pixels
  - name: Calls
    description: Account call history
  - name: WhatsApp Calls
    description: WhatsApp voice calls
paths:
  /api/v1/accounts/{account_id}/actions/contact_merge:
    parameters:
      - $ref: '#/components/parameters/account_id'
    post:
      tags:
        - Contacts
      summary: Merge Contacts
      description: >
        Merge two contacts into a single contact. The base contact remains and
        receives all

        data from the mergee contact. After the merge, the mergee contact is
        permanently deleted.


        This action is irreversible. All conversations, labels, and custom
        attributes from the

        mergee contact will be moved to the base contact.
      operationId: contactMerge
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - base_contact_id
                - mergee_contact_id
              properties:
                base_contact_id:
                  type: integer
                  description: >-
                    ID of the contact that will remain after the merge and
                    receive all data
                  example: 1
                mergee_contact_id:
                  type: integer
                  description: >-
                    ID of the contact that will be merged into the base contact
                    and deleted
                  example: 2
      responses:
        '200':
          description: Contacts merged successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/contact_base'
        '400':
          description: Bad request - invalid contact IDs or contacts cannot be merged
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error'
        '404':
          description: One or both contacts not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error'
      security:
        - userApiKey: []
components:
  parameters:
    account_id:
      in: path
      name: account_id
      schema:
        type: integer
      required: true
      description: The numeric ID of the account
  schemas:
    contact_base:
      allOf:
        - $ref: '#/components/schemas/generic_id'
        - $ref: '#/components/schemas/contact'
    bad_request_error:
      title: data
      type: object
      properties:
        description:
          type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/request_error'
    generic_id:
      type: object
      properties:
        id:
          type: number
    contact:
      type: object
      properties:
        payload:
          type: array
          items:
            type: object
            properties:
              additional_attributes:
                type: object
                description: >-
                  The object containing additional attributes related to the
                  contact
              availability_status:
                type: string
                description: The availability status of the contact
              email:
                type: string
                description: The email address of the contact
              id:
                type: integer
                description: The ID of the contact
              name:
                type: string
                description: The name of the contact
              phone_number:
                type: string
                description: The phone number of the contact
              blocked:
                type: boolean
                description: Whether the contact is blocked
              identifier:
                type: string
                description: The identifier of the contact
              thumbnail:
                type: string
                description: The thumbnail of the contact
              custom_attributes:
                type: object
                description: The custom attributes of the contact
                example:
                  attribute_key: attribute_value
                  signed_up_at: dd/mm/yyyy
              last_activity_at:
                type: integer
                description: The last activity at of the contact
              created_at:
                type: integer
                description: The created at of the contact
              contact_inboxes:
                type: array
                items:
                  $ref: '#/components/schemas/contact_inboxes'
    request_error:
      type: object
      properties:
        field:
          type: string
        message:
          type: string
        code:
          type: string
    contact_inboxes:
      type: object
      properties:
        source_id:
          type: string
          description: Contact Inbox Source Id
        inbox:
          $ref: '#/components/schemas/inbox_contact'
    inbox_contact:
      type: object
      properties:
        id:
          type: number
          description: ID of the inbox
        avatar_url:
          type: string
          description: The avatar image of the inbox
        channel_id:
          type: number
          description: The ID of the channel
        name:
          type: string
          description: The name of the inbox
        channel_type:
          type: string
          description: The type of the inbox
        provider:
          type: string
          description: The provider of the inbox
  securitySchemes:
    userApiKey:
      type: apiKey
      in: header
      name: api_access_token
      description: >-
        Token de usuario. Envía el valor en el header `api_access_token`. Lo
        obtienes en el perfil (`GET /api/v1/profile`) o al regenerarlo.

````