Daily webhooks API

The webhooks API from Daily — 2 operation(s) for webhooks.

Operations 5

GET /webhooks /webhooks #
POST /webhooks /webhooks #
GET /webhooks/{id} webhooks/:id #
POST /webhooks/{id} webhooks/:id #
DELETE /webhooks/{id} webhooks/:id #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/daily-webhooks-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

daily-webhooks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Daily batch/rooms Webhooks API
  description: "The Daily REST API offers the ability to manage the following: \n- Overall Domain Configuration\n- Individual Room creation and config management \n- Meeting token creation and validation\n- Recording and compositing management \n- Meeting analytics\n- Logs and metrics\n- Real-time presence\n\nPlease reach out to help@daily.co if we can help with anything"
  version: 1.1.1
  contact:
    name: Daily
    url: https://docs.daily.co
    email: help@daily.co
servers:
- url: https://api.daily.co/v1
security:
- bearerAuth: []
tags:
- name: webhooks
paths:
  /webhooks:
    get:
      summary: /webhooks
      description: Get Webhooks
      operationId: GetWebhooks
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/webhook'
        '400':
          $ref: '#/components/responses/400'
      deprecated: false
      tags:
      - webhooks
      security:
      - bearerAuth: []
    post:
      summary: /webhooks
      description: Create a webhook
      operationId: CreateWebhook
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/post_webhook'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/webhook'
        '400':
          $ref: '#/components/responses/400'
      deprecated: false
      tags:
      - webhooks
      security:
      - bearerAuth: []
  /webhooks/{id}:
    get:
      summary: webhooks/:id
      description: Get info about a webhook
      operationId: GetWebhookConfig
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/webhook'
        '400':
          $ref: '#/components/responses/400'
      deprecated: false
      tags:
      - webhooks
      security:
      - bearerAuth: []
    post:
      summary: webhooks/:id
      description: Update webhook config
      operationId: UpdateWebhookConfig
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/update_webhook'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/webhook'
        '400':
          $ref: '#/components/responses/400'
      deprecated: false
      tags:
      - webhooks
      security:
      - bearerAuth: []
    delete:
      summary: webhooks/:id
      description: Delete a webhook
      operationId: DeleteWebhook
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: '200'
        '400':
          $ref: '#/components/responses/400'
      deprecated: false
      tags:
      - webhooks
      security:
      - bearerAuth: []
components:
  schemas:
    post_webhook:
      type: object
      additionalProperties: false
      properties:
        url:
          type: string
          description: The webhook server endpoint that was provided.
        basicAuth:
          type: string
          description: The basic auth credentials that will be used to POST to the webhook URL.
        retryType:
          type: string
          description: The retry configuration for this webhook endpoint to use. The default is circuit-breaker.
          enum:
          - circuit-breaker
          - exponential
        eventTypes:
          description: The set of event types this webhook is subscribed to.
          type: array
          items:
            type: string
            enum:
            - recording.ready-to-download
            - recording.started
            - recording.error
            - streaming.started
            - streaming.updated
            - streaming.ended
            - streaming.error
            - meeting.started
            - meeting.ended
            - participant.joined
            - participant.left
            - waiting-participant.joined
            - waiting-participant.left
            - batch-processor.job-finished
            - batch-processor.error
            - dialout.connected
            - dialout.error
            - dialout.stopped
            - dialout.warning
            - dialout.answered
            - dialin.ready
            - dialin.connected
            - dialin.error
            - dialin.stopped
            - dialin.warning
            - transcript.ready-to-download
            - transcript.started
            - transcript.error
            - calltransfer.triggered
            - calltransfer.initiated
            - calltransfer.answered
            - calltransfer.completed
        hmac:
          type: string
          description: A secret that can be used to verify the signature of the webhook. If not provided, an hmac will be provisioned for you and returned.
    webhook:
      type: object
      additionalProperties: false
      required:
      - url
      properties:
        uuid:
          type: string
          description: The unique identifier for this webhook.
        url:
          type: string
          description: The webhook server endpoint that was provided.
        hmac:
          type: string
          description: A secret that can be used to verify the signature of the webhook.
        basicAuth:
          type: string
          description: The basic auth credentials that will be used to POST to the webhook URL.
        retryType:
          type: string
          description: The retry configuration for this webhook endpoint to use. The default is circuit-breaker.
          enum:
          - circuit-breaker
          - exponential
        eventTypes:
          description: The set of event types this webhook is subscribed to.
          type: array
          items:
            type: string
            enum:
            - recording.ready-to-download
            - recording.started
            - recording.error
            - streaming.started
            - streaming.updated
            - streaming.ended
            - streaming.error
            - meeting.started
            - meeting.ended
            - participant.joined
            - participant.left
            - waiting-participant.joined
            - waiting-participant.left
            - batch-processor.job-finished
            - batch-processor.error
            - dialout.connected
            - dialout.error
            - dialout.stopped
            - dialout.warning
            - dialout.answered
            - dialin.ready
            - dialin.connected
            - dialin.error
            - dialin.stopped
            - dialin.warning
            - transcript.ready-to-download
            - transcript.started
            - transcript.error
            - calltransfer.triggered
            - calltransfer.initiated
            - calltransfer.answered
            - calltransfer.completed
        state:
          description: The current state of the webhook. "FAILED" | "INACTIVE"
          type: string
        failedCount:
          description: The number of consecutive failures this webhook has made.
          type: number
        lastMomentPushed:
          type: string
          description: The ISO 8601 time of the last moment an event was pushed to the webhook server.
        domainId:
          type: string
          description: The domain ID this webhook is associated with.
        createdAt:
          type: string
          description: The ISO 8601 time of when this webhook was created.
        updatedAt:
          type: string
          description: The ISO 8601 time of when this webhook was last updated.
    update_webhook:
      type: object
      additionalProperties: false
      properties:
        url:
          type: string
          description: The webhook server endpoint that was provided.
        basicAuth:
          type: string
          description: The basic auth credentials that will be used to POST to the webhook URL.
        retryType:
          type: string
          description: The retry configuration for this webhook endpoint to use. The default is circuit-breaker.
          enum:
          - circuit-breaker
          - exponential
        eventTypes:
          description: The set of event types this webhook is subscribed to.
          type: array
          items:
            type: string
            enum:
            - recording.ready-to-download
            - recording.started
            - recording.error
            - streaming.started
            - streaming.updated
            - streaming.ended
            - streaming.error
            - meeting.started
            - meeting.ended
            - participant.joined
            - participant.left
            - waiting-participant.joined
            - waiting-participant.left
            - batch-processor.job-finished
            - batch-processor.error
            - dialout.connected
            - dialout.error
            - dialout.stopped
            - dialout.warning
            - dialout.answered
            - dialin.ready
            - dialin.connected
            - dialin.error
            - dialin.stopped
            - dialin.warning
            - transcript.ready-to-download
            - transcript.started
            - transcript.error
            - calltransfer.triggered
            - calltransfer.initiated
            - calltransfer.answered
            - calltransfer.completed
        hmac:
          type: string
          description: A secret that can be used to verify the signature of the webhook.
  responses:
    '400':
      description: '400'
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
              info:
                type: string
          examples:
            Result:
              value:
                error: invalid-request-error
                info: missing required field
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer