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

# Create Contact

> This endpoint creates a new contact.



## OpenAPI

````yaml POST /contacts/create
openapi: 3.0.3
info:
  title: API - Local
  description: >-
    #### Welcome to the official Postman collection of Periskope API


    Periskope APIs enable you automate actions on your WhatsApp phone, and the
    Periskope platform


    - Read more about the APIs & webhooks here -
    [https://docs.periskope.app/api-reference/introduction](https://docs.periskope.app/api-reference/introduction)
        
    - We encourage responsible usage of the APIs. Follow these best practices
    and recommendations for safe actions on WhatsApp -
    [https://docs.periskope.app/get-started/best-practices](https://docs.periskope.app/get-started/best-practices)
        

    #### Getting Started


    ##### Pre-requisites:


    1. **Sign up for a free account on Periskope:** To use the Periskope API,
    you need to have an active Periskope account. If you don’t have one, you can
    sign up for a 7-day free trial [here](https://console.periskope.app).
        
    2. **Scan the QR code from WhatsApp to connect your phone:** A connected
    phone is required to use the APIs
        
    3. **Go to** [Settings &gt;
    API](https://console.periskope.app/settings/api), and generate an API key
    for your organization - The API key is used to authenticate every request.
    Please keep this secure
        

    ##### Using Postman:


    1. **Fork the collection so you can edit values and test the APIs in your
    own postman environment:** To fork the collection, click on the three dots
    next to v1. Then click on create a fork (_shortcut: Ctrl + Alt + F)._
        
    2. **Update the value of the variables in the collection:**  
        \- Update the API key with the key generated in Step 3  
        \- Update the phone number with your connected number. This number will be added to the `x-phone` header across requests
        
        It must be in the format of country code+number, with no special characters or spaces _e.g. +91 98745 32456 becomes 919874532456_
        

    For any help or feedback, please contact us at
    [support@periskope.app](https://mailto:support@periskope.app), or ping us on
    [WhatsApp](https://what.sapp.link/periskope)
  version: 1.0.0
  contact: {}
servers:
  - url: https://api.periskope.app/v1
security:
  - bearerAuth: []
tags:
  - name: contacts
  - name: tickets
  - name: tasks
  - name: phones
  - name: message
  - name: queue
  - name: chats
  - name: group
  - name: members
  - name: webhooks
paths:
  /contacts/create:
    post:
      tags:
        - contacts
      summary: Create Contact
      description: This endpoint creates a new contact.
      operationId: createContact
      parameters:
        - name: x-phone
          in: header
          schema:
            type: string
            example: '{{orgPhone}}'
          description: >-
            Please provide the number of the phone you want to call with this
            API in the header. The number must be in country code + number
            format without any characters or spaces, e.g. 919876543210;
            Alternatively, provide the phone_id (phone-xxxxxxxxxxxx) in the
            header
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - contact_name
                - contact_id
              properties:
                contact_name:
                  type: string
                  example: Test New 1040
                  description: '- Name of the new contact'
                contact_id:
                  type: string
                  example: '919537851844'
                  description: >-
                    - The unique identifier of the contact Must be formatted as
                    country_code + number (e.g., 919537851844).

                    - Do not include special characters
                labels:
                  type: string
                  example: Test, Demo
                  description: >-
                    - A comma-separated list of labels to be assigned to the
                    chats. All labels are case-insensitive.
                     - If any label currently does not exist, it will be created
                is_internal:
                  type: boolean
                  example: true
                  default: false
                  description: >-
                    -  Indicates if the member is an internal user of the
                    organization.
            examples:
              Create Group:
                value:
                  group_name: Test New 1040
                  options:
                    addMembersAdminsOnly: ''
                    description: ''
                    image: ''
                    infoAdminsOnly: ''
                    messagesAdminsOnly: ''
                  participants:
                    - '919537851844'
      responses:
        '200':
          description: 200 OK
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
                example: '*'
            Connection:
              schema:
                type: string
                example: keep-alive
            Content-Length:
              schema:
                type: string
                example: '626'
            Date:
              schema:
                type: string
                example: Mon, 27 Jan 2025 11:07:52 GMT
            ETag:
              schema:
                type: string
                example: W/"272-AQyJPVdKFR/ueu+RdQgUvSj4r7I"
            Keep-Alive:
              schema:
                type: string
                example: timeout=5
            X-Powered-By:
              schema:
                type: string
                example: Express
            X-RateLimit-Limit:
              schema:
                type: string
                example: '10'
            X-RateLimit-Remaining:
              schema:
                type: string
                example: '9'
            X-RateLimit-Reset:
              schema:
                type: string
                example: '1737976074'
            x-periskope-org-id:
              schema:
                type: string
                example: 2997dd64-89bf-48d3-9a22-b314fca017e5
            x-periskope-phone-id:
              schema:
                type: string
                example: phone-bqzvyibhmwkaergr
            x-periskope-trace-id:
              schema:
                type: string
                example: f3da7ae0-dc9e-11ef-92d0-dfa7145a6112
          content:
            application/json:
              schema:
                type: object
                description: >-
                  The response is a contact object. Refer to [the contact object
                  here](/api-reference/objects/the-contact-object)
              examples:
                200 OK:
                  value:
                    chat_ids:
                      - 120363231636311517@g.us
                      - 120363298090795525@g.us
                      - 120363300395249001@g.us
                      - 120363329861739657@g.us
                      - 120363331984403446@g.us
                      - 120363346994879209@g.us
                      - 120363348209472631@g.us
                      - 120363352652386702@g.us
                      - 120363363215130488@g.us
                      - 120363367240230358@g.us
                      - 120363370646127343@g.us
                      - 120363371655584481@g.us
                      - 120363372525172897@g.us
                      - 120363373761356282@g.us
                      - 120363378751945209@g.us
                      - 120363387379991154@g.us
                      - 120363387670530253@g.us
                      - 120363388696354849@g.us
                      - 120363389171465741@g.us
                      - 120363391093262494@g.us
                      - 120363392706769636@g.us
                      - 919537851844@c.us
                    contact_color: '#FA6533'
                    contact_id: 919537851844@c.us
                    contact_image: >-
                      https://storage.googleapis.com/periskope-images/2997dd64-89bf-48d3-9a22-b314fca017e5%2F919537851844%40c.us.jpg?timestamp=1737445692504
                    contact_name: BK Local1
                    contact_type: user
                    is_imported: null
                    is_internal: false
                    is_my_contact: null
                    is_wa_contact: false
                    label_ids:
                      label-ukjqhqngnakncalm: true
                      label-wwfrdqogccexahnv: true
                    labels:
                      - label1
                      - label2
                    org_id: 2997dd64-89bf-48d3-9a22-b314fca017e5
                    updated_at: '2025-01-22T05:41:15.303874+00:00'
      x-codeSamples:
        - lang: TypeScript
          label: Node.js
          source: |-
            import { PeriskopeApi } from '@periskope/periskope-client';

            const client = new PeriskopeApi({
              authToken: 'YOUR_API_KEY',
              phone: 'YOUR_PHONE_NUMBER', // e.g., '919876543210'
            });

            async function createContact() {
              const response = await client.contact.create({
                contact_name: 'BK Local1',
                contact_id: '919537851844'
            });

              console.log(response);
            }

            createContact();
        - lang: cURL
          label: cURL
          source: |-
            curl -X POST \
              https://api.periskope.app/v1/contacts/create \
              -H 'Authorization: Bearer <token>' \
              -H 'Content-Type: application/json' \
              -H 'x-phone: YOUR_PHONE_NUMBER' \
             -d '{
                "contact_name": "BK Local1" 
                "contact_id": '919537851844'
               }'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````