Daily Webhooks API
The Webhooks API from Daily — 2 operation(s) for webhooks.
The Webhooks API from Daily — 2 operation(s) for webhooks.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/daily-co:daily-co-webhooks-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Daily Webhooks API
description: 'The Daily REST API offers the ability to manage the following:
- Overall Domain Configuration
- Individual Room creation and config management
- Meeting token creation and validation
- Recording and compositing management
- Meeting analytics
- Logs and metrics
- Real-time presence
Please 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. Deliveries can be duplicated, and in rare cases a duplicate `participant.joined` or `participant.left` delivery carries a different `id` than the original. Deduplicate those two events on the event `type` plus the payload's `session_id` rather than on `id`. See the [webhooks overview](/reference/rest-api/webhooks) for details.
type: array
items:
type: string
enum:
- recording.ready-to-download
- recording.started
- recording.error
- streaming.started
- streaming.updated
- streaming.ended
- streaming.error
- streaming.warning
- 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.
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. Deliveries can be duplicated, and in rare cases a duplicate `participant.joined` or `participant.left` delivery carries a different `id` than the original. Deduplicate those two events on the event `type` plus the payload's `session_id` rather than on `id`. See the [webhooks overview](/reference/rest-api/webhooks) for details.
type: array
items:
type: string
enum:
- recording.ready-to-download
- recording.started
- recording.error
- streaming.started
- streaming.updated
- streaming.ended
- streaming.error
- streaming.warning
- 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.
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. Deliveries can be duplicated, and in rare cases a duplicate `participant.joined` or `participant.left` delivery carries a different `id` than the original. Deduplicate those two events on the event `type` plus the payload's `session_id` rather than on `id`. See the [webhooks overview](/reference/rest-api/webhooks) for details.
type: array
items:
type: string
enum:
- recording.ready-to-download
- recording.started
- recording.error
- streaming.started
- streaming.updated
- streaming.ended
- streaming.error
- streaming.warning
- 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" | "ACTIVE"
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.
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
x-provenance:
method: harvested
publisher: Daily
source: https://docs.daily.co/openapi.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)