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

# Add Contacts (Batch)

> Adds multiple contacts in a single request. Limited to 1000 contacts per request.

<Warning>
  This endpoint is deprecated. A V2 replacement is not yet available. See the [Migration Guide](/v2-migration-guide) for details.
</Warning>


## OpenAPI

````yaml openapi.json POST /v1/add-contacts-batch
openapi: 3.0.3
info:
  title: telli API
  version: 1.0.0
  description: API documentation for telli's V1 endpoints
servers:
  - url: https://api.telli.com
security:
  - apiKey: []
paths:
  /v1/add-contacts-batch:
    post:
      summary: Add Contacts Batch
      description: >-
        Adds multiple contacts in a single request. Limited to 1000 contacts per
        request.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - contacts
              properties:
                contacts:
                  type: array
                  items:
                    $ref: '#/components/schemas/Contact'
                  description: Array of contacts to add. Maximum 1000 contacts per request.
      responses:
        '200':
          description: Contacts processed successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  total_processed:
                    type: integer
                    description: Total number of contacts processed
                  total_success:
                    type: integer
                    description: Number of contacts successfully added
                  total_failed:
                    type: integer
                    description: Number of contacts that failed to be added
                  result:
                    type: array
                    items:
                      type: object
                      properties:
                        external_contact_id:
                          type: string
                          description: Your unique internal identifier for the contact
                        status:
                          type: string
                          enum:
                            - success
                            - error
                          description: Status of the contact addition
                        contact_id:
                          type: string
                          format: uuid
                          description: >-
                            The telli contact ID (only present for successful
                            additions)
                        error:
                          type: string
                          description: Error message (only present for failed additions)
              example:
                total_processed: 4
                total_success: 3
                total_failed: 1
                result:
                  - external_contact_id: ext123
                    status: success
                    contact_id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                  - external_contact_id: ext124
                    status: success
                    contact_id: b2c3d4e5-f6a7-8901-bcde-f12345678901
                  - external_contact_id: ext125
                    status: success
                    contact_id: c3d4e5f6-a7b8-9012-cdef-123456789012
                  - external_contact_id: ext125
                    status: error
                    error: External ID already exists, must be unique
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized - Invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Contact:
      type: object
      required:
        - external_contact_id
        - first_name
        - last_name
        - phone_number
      properties:
        external_contact_id:
          type: string
          description: Your unique internal identifier for the contact
        external_url:
          type: string
          format: uri
          description: External URL linking to the contact in your CRM or external system
        salutation:
          type: string
          description: >-
            Formal title or greeting (e.g. 'Mr.', 'Ms.', 'Herr', 'Frau'). If
            empty, will auto guess based on first name for German calls.
        first_name:
          type: string
        last_name:
          type: string
        phone_number:
          type: string
          description: Contact's phone number in E.164 format (e.g. +4917642048466)
        email:
          type: string
          format: email
        contact_details:
          type: object
          description: >-
            Custom variables passed to the AI agent (should be discussed in
            advance). Please send variables in lowercase snake_case. This used
            to be called dynamic_variables, which still works but is deprecated
            and should be replaced with contact_details. Alternatively, you can
            send contact_details_<key> in the body instead of an object.
          additionalProperties:
            anyOf:
              - type: number
              - type: string
        timezone:
          type: string
          description: >-
            IANA timezone identifier (e.g. Europe/Berlin). Defaults to account
            timezone if not set
    Error:
      type: object
      properties:
        message:
          type: string
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: Authorization
      description: 'API key must be provided as: Bearer <api_key>'
      x-bearer-format: Bearer

````