> ## 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 Webhook

> This endpoint creates a new webhook subscription

 Refer to the webhooks section to get the list of available integration names



## OpenAPI

````yaml POST /webhooks
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:
  /webhooks:
    post:
      tags:
        - webhooks
      summary: Create Webhook
      description: |-
        This endpoint creates a new webhook subscription

         Refer to the webhooks section to get the list of available integration names
      operationId: createWebhook
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - hookUrl
                - integrationName
              properties:
                hookUrl:
                  type: string
                  example: https://example.com/webhook
                  description: >-
                    The URL where webhook events will be sent. Must be a valid
                    HTTP or HTTPS URL
                integrationName:
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                  example: message.created
                  description: >-
                    The integration name(s) to subscribe to. Can be a single
                    string or an array of strings
                integrationMetadata:
                  type: object
                  additionalProperties: true
                  description: Optional metadata object for the webhook
                integrationType:
                  type: string
                  example: webhook
                  description: The type of integration
                type:
                  type: string
                  example: webhook
                  description: The webhook type
                name:
                  type: string
                  example: My Webhook
                  description: Optional name for the webhook
            examples:
              Create Webhook:
                value:
                  hookUrl: https://example.com/webhook
                  integrationName: message.created
              Create Webhook with Multiple Events:
                value:
                  hookUrl: https://example.com/webhook
                  integrationName:
                    - message.created
                    - message.updated
                  name: Message Events Webhook
      responses:
        '201':
          description: 201 Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier of the webhook subscription
                    example: 0ef25935-0b78-4660-beeb-f17311793305
                  subscribed_at:
                    type: string
                    description: Timestamp when the webhook was subscribed
                    example: '2025-11-16T11:20:42.038+00:00'
                  is_subscribed:
                    type: boolean
                    description: Whether the webhook is currently active
                    example: true
                  integration_name:
                    type: string
                    description: Name of the event this webhook listens to
                    example: ticket.created
                  integration_type:
                    type: string
                    description: Type of integration
                    example: webhook
                  type:
                    type: string
                    description: Type of the subscription
                    example: webhook
                  integration_metadata:
                    type: object
                    description: Additional metadata about the integration
                    properties:
                      id:
                        type: string
                        description: Metadata ID
                        example: 28ee5da7-d6e5-438b-8b73-9eba97f08269
                      name:
                        type: string
                        description: Metadata name or identifier
                        example: >-
                          https://webhook.site/951e142b-d2e6-420d-a666-f2c4bd8e572c
                  org_id:
                    type: string
                    description: Organization ID that owns this webhook
                    example: 03a52dbe-b8af-47c5-9fd1-e5a622680cad
                  hook_url:
                    type: string
                    description: The URL where webhook events are sent
                    example: https://webhook.site/951e142b-d2e6-420d-a666-f2c4bd8e572c
                  integration_id:
                    type: string
                    description: Unique identifier of the integration
                    example: 28ee5da7-d6e5-438b-8b73-9eba97f08269
              examples:
                201 Created:
                  value:
                    id: 0ef25935-0b78-4660-beeb-f17311793305
                    subscribed_at: '2025-11-16T11:20:42.038+00:00'
                    is_subscribed: true
                    integration_name: ticket.created
                    integration_type: webhook
                    type: webhook
                    integration_metadata:
                      id: 28ee5da7-d6e5-438b-8b73-9eba97f08269
                      name: >-
                        https://webhook.site/951e142b-d2e6-420d-a666-f2c4bd8e572c
                    org_id: 03a52dbe-b8af-47c5-9fd1-e5a622680cad
                    hook_url: https://webhook.site/951e142b-d2e6-420d-a666-f2c4bd8e572c
                    integration_id: 28ee5da7-d6e5-438b-8b73-9eba97f08269
      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 createWebhook() {
              const response = await client.webhooks.create({
                hookUrl: 'https://example.com/webhook',
                integrationName: 'message.created'
              });

              console.log(response);
            }

            createWebhook();
        - lang: cURL
          label: cURL
          source: |-
            curl -X POST \
              https://api.periskope.app/v1/webhooks \
              -H 'Authorization: Bearer <token>' \
              -H 'Content-Type: application/json' \
              -d '{
                "hookUrl": "https://example.com/webhook",
                "integrationName": "message.created"
              }'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````