Calendly Webhook Subscriptions API

Endpoints for creating, listing, retrieving, and deleting webhook subscriptions that receive real-time event notifications.

OpenAPI Specification

calendly-webhook-subscriptions-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Calendly Scheduling Activity Log Webhook Subscriptions API
  description: The Calendly Scheduling API (v2) is a RESTful API that allows developers to programmatically manage scheduling workflows. It provides endpoints for managing users, organizations, event types, scheduled events, invitees, routing forms, availability schedules, and webhook subscriptions. The API uses JSON for request and response bodies, standard HTTP methods, and supports authentication via personal access tokens and OAuth 2.1. Developers can use it to create events on behalf of invitees, retrieve scheduling data, and integrate Calendly functionality directly into their applications.
  version: 2.0.0
  contact:
    name: Calendly Developer Support
    url: https://developer.calendly.com/
  termsOfService: https://calendly.com/pages/terms
servers:
- url: https://api.calendly.com
  description: Production Server
security:
- bearerAuth: []
tags:
- name: Webhook Subscriptions
  description: Endpoints for creating, listing, retrieving, and deleting webhook subscriptions that receive real-time event notifications.
paths:
  /webhook_subscriptions:
    get:
      operationId: listWebhookSubscriptions
      summary: List webhook subscriptions
      description: Returns a paginated list of webhook subscriptions for the specified user or organization. Each subscription defines the events to listen for and the callback URL to notify.
      tags:
      - Webhook Subscriptions
      parameters:
      - name: user
        in: query
        description: The URI of the user whose webhook subscriptions to list.
        schema:
          type: string
          format: uri
      - name: organization
        in: query
        required: true
        description: The URI of the organization whose webhook subscriptions to list.
        schema:
          type: string
          format: uri
      - name: scope
        in: query
        required: true
        description: The scope of the webhook subscription. Use user for subscriptions scoped to a specific user, or organization for organization-wide subscriptions.
        schema:
          type: string
          enum:
          - user
          - organization
      - $ref: '#/components/parameters/Count'
      - $ref: '#/components/parameters/PageToken'
      responses:
        '200':
          description: Successfully retrieved webhook subscriptions
          content:
            application/json:
              schema:
                type: object
                properties:
                  collection:
                    type: array
                    items:
                      $ref: '#/components/schemas/WebhookSubscription'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createWebhookSubscription
      summary: Create webhook subscription
      description: Creates a new webhook subscription to receive real-time notifications when scheduling events occur. You can subscribe to invitee.created, invitee.canceled, and routing_form_submission.created events.
      tags:
      - Webhook Subscriptions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - url
              - events
              - organization
              - scope
              properties:
                url:
                  type: string
                  format: uri
                  description: The URL where webhook payloads will be delivered.
                events:
                  type: array
                  items:
                    type: string
                    enum:
                    - invitee.created
                    - invitee.canceled
                    - routing_form_submission.created
                  description: The list of event types to subscribe to.
                  minItems: 1
                organization:
                  type: string
                  format: uri
                  description: The URI of the organization for the subscription.
                user:
                  type: string
                  format: uri
                  description: The URI of the user for user-scoped subscriptions.
                scope:
                  type: string
                  enum:
                  - user
                  - organization
                  description: The scope of the webhook subscription.
                signing_key:
                  type: string
                  description: A secret key used to sign webhook payloads for verification.
      responses:
        '201':
          description: Successfully created the webhook subscription
          content:
            application/json:
              schema:
                type: object
                properties:
                  resource:
                    $ref: '#/components/schemas/WebhookSubscription'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /webhook_subscriptions/{uuid}:
    get:
      operationId: getWebhookSubscription
      summary: Get webhook subscription
      description: Returns detailed information about a specific webhook subscription by its UUID, including the callback URL, subscribed events, and scope.
      tags:
      - Webhook Subscriptions
      parameters:
      - $ref: '#/components/parameters/WebhookSubscriptionUuid'
      responses:
        '200':
          description: Successfully retrieved the webhook subscription
          content:
            application/json:
              schema:
                type: object
                properties:
                  resource:
                    $ref: '#/components/schemas/WebhookSubscription'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteWebhookSubscription
      summary: Delete webhook subscription
      description: Deletes a webhook subscription by its UUID. Once deleted, the subscription will no longer receive event notifications.
      tags:
      - Webhook Subscriptions
      parameters:
      - $ref: '#/components/parameters/WebhookSubscriptionUuid'
      responses:
        '204':
          description: Successfully deleted the webhook subscription
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  responses:
    Unauthorized:
      description: Authentication failed. Verify that a valid access token is provided in the Authorization header.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: The request was invalid or malformed. Check the request body and parameters.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource was not found. Verify the UUID or URI is correct.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    Count:
      name: count
      in: query
      description: The number of results to return per page.
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 20
    PageToken:
      name: page_token
      in: query
      description: A token for fetching the next page of results from a previous paginated response.
      schema:
        type: string
    WebhookSubscriptionUuid:
      name: uuid
      in: path
      required: true
      description: The UUID of the webhook subscription.
      schema:
        type: string
  schemas:
    WebhookSubscription:
      type: object
      description: A webhook subscription that receives real-time notifications when scheduling events occur in Calendly.
      properties:
        uri:
          type: string
          format: uri
          description: The canonical URI of the webhook subscription resource.
        callback_url:
          type: string
          format: uri
          description: The URL where webhook payloads are delivered.
        created_at:
          type: string
          format: date-time
          description: The timestamp when the subscription was created.
        updated_at:
          type: string
          format: date-time
          description: The timestamp when the subscription was last updated.
        retry_started_at:
          type: string
          format: date-time
          description: The timestamp when retry attempts started, if applicable.
        state:
          type: string
          enum:
          - active
          - disabled
          description: The current state of the webhook subscription.
        events:
          type: array
          items:
            type: string
            enum:
            - invitee.created
            - invitee.canceled
            - routing_form_submission.created
          description: The list of event types this subscription listens for.
        scope:
          type: string
          enum:
          - user
          - organization
          description: The scope of the subscription.
        organization:
          type: string
          format: uri
          description: The URI of the associated organization.
        user:
          type: string
          format: uri
          description: The URI of the associated user for user-scoped subscriptions.
        creator:
          type: string
          format: uri
          description: The URI of the user who created the subscription.
    Pagination:
      type: object
      description: Pagination information for paginated list responses.
      properties:
        count:
          type: integer
          description: The number of results in the current page.
        next_page:
          type: string
          format: uri
          description: The URL of the next page of results, if available.
        previous_page:
          type: string
          format: uri
          description: The URL of the previous page of results, if available.
        next_page_token:
          type: string
          description: The token to fetch the next page of results.
        previous_page_token:
          type: string
          description: The token to fetch the previous page of results.
    Error:
      type: object
      description: An error response from the Calendly API.
      properties:
        title:
          type: string
          description: A short summary of the error.
        message:
          type: string
          description: A detailed description of the error.
        details:
          type: array
          items:
            type: object
            properties:
              parameter:
                type: string
                description: The parameter that caused the error.
              message:
                type: string
                description: A description of what was wrong with the parameter.
          description: Specific details about validation errors.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Personal access token or OAuth 2.1 access token. Include in the Authorization header as Bearer {token}.
externalDocs:
  description: Calendly API Documentation
  url: https://developer.calendly.com/api-docs