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

# Post Webhooks

> Creates a webhook.



## OpenAPI

````yaml post /v1/webhooks
openapi: 3.0.0
info:
  title: AICaller APIs
  description: ''
  version: v1
  contact: {}
servers:
  - url: https://api.aicaller.io
    description: REST API server
security:
  - ApiKeyAuth: []
tags: []
paths:
  /v1/webhooks:
    post:
      tags:
        - Webhooks
      description: Creates a webhook.
      operationId: post--webhooks
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookDto'
      responses:
        '200':
          description: Webhook Successfully Created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateWebhookResponseDto'
        '400':
          description: Bad Request - Invalid input provided.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400ResponseDto'
        '401':
          description: Unauthorized - Not logged in or log in expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401ResponseDto'
        '403':
          description: Forbidden - Not enough permission.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403ResponseDto'
        '404':
          description: Not Found Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404ResponseDto'
        '500':
          description: Internal Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500ResponseDto'
components:
  schemas:
    WebhookDto:
      type: object
      properties:
        teamId:
          type: string
          example: '363573667364666473667332'
          description: The ID of the team to which the webhook belongs.
        url:
          type: string
          example: https://hooks.abc.com/
        subscribedEvents:
          example:
            - phoneCall.completed
          type: array
          items:
            type: string
        method:
          type: string
          example: GET
          enum:
            - GET
            - POST
      required:
        - teamId
        - url
        - subscribedEvents
        - method
    CreateWebhookResponseDto:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/WebhookCreateResponseData'
      required:
        - data
    Error400ResponseDto:
      type: object
      properties:
        error:
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/Error400Dto'
        payload:
          type: object
          readOnly: true
      required:
        - error
        - payload
    Error401ResponseDto:
      type: object
      properties:
        error:
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/Error401Dto'
        payload:
          type: object
          readOnly: true
          example: {}
      required:
        - error
        - payload
    Error403ResponseDto:
      type: object
      properties:
        error:
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/Error403Dto'
        payload:
          type: object
          readOnly: true
          example: {}
      required:
        - error
        - payload
    Error404ResponseDto:
      type: object
      properties:
        error:
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/Error404Dto'
        payload:
          type: object
          readOnly: true
          example: {}
      required:
        - error
        - payload
    Error500ResponseDto:
      type: object
      properties:
        error:
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/Error500Dto'
        payload:
          type: object
          readOnly: true
      required:
        - error
        - payload
    WebhookCreateResponseData:
      type: object
      properties:
        teamId:
          type: string
          example: '363573667364666473667332'
          description: The ID of the team to which the webhook belongs.
        url:
          type: string
          example: https://hooks.abc.com/
        subscribedEvents:
          example:
            - phoneCall.completed
          type: array
          items:
            type: string
        method:
          type: string
          example: GET
          enum:
            - GET
            - POST
        _id:
          type: string
          example: '363573667364666473667332'
          description: The unique identifier for the webhook.
        createAt:
          type: string
          example: '2023-10-12T09:08:00.387Z'
        updatedAt:
          type: string
          example: '2023-10-12T09:08:00.387Z'
        secret:
          type: string
          example: NjUyOTgwMjkpJU0NmY25yzWkJFWDBE12
      required:
        - teamId
        - url
        - subscribedEvents
        - method
        - _id
        - createAt
        - updatedAt
        - secret
    Error400Dto:
      type: object
      properties:
        statusCode:
          type: number
          readOnly: true
          example: 400
        message:
          readOnly: true
          example:
            - Invalid input
          type: array
          items:
            type: string
        error:
          type: string
          readOnly: true
          example: Bad Request
      required:
        - statusCode
        - message
        - error
    Error401Dto:
      type: object
      properties:
        statusCode:
          type: number
          readOnly: true
          example: 401
        message:
          readOnly: true
          example:
            - Unauthorized
          type: array
          items:
            type: string
        error:
          type: string
          readOnly: true
          example: Unauthorized
      required:
        - statusCode
        - message
        - error
    Error403Dto:
      type: object
      properties:
        statusCode:
          type: number
          readOnly: true
          example: 403
        message:
          readOnly: true
          example:
            - Forbidden resource
          type: array
          items:
            type: string
        error:
          type: string
          readOnly: true
          example: Forbidden
      required:
        - statusCode
        - message
        - error
    Error404Dto:
      type: object
      properties:
        statusCode:
          type: number
          readOnly: true
          example: 404
        message:
          readOnly: true
          example:
            - Not Found
          type: array
          items:
            type: string
        error:
          type: string
          readOnly: true
          example: Not Found
      required:
        - statusCode
        - message
        - error
    Error500Dto:
      type: object
      properties:
        error:
          type: string
          readOnly: true
          example: Internal Server Error
        message:
          readOnly: true
          example:
            - INTERNAL_ERROR
          type: array
          items:
            type: string
        statusCode:
          type: number
          readOnly: true
          example: 500
      required:
        - error
        - message
        - statusCode
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: aicaller-api-key

````