curl --request POST \
--url https://api.daily.co/v1/webhooks/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"basicAuth": "<string>",
"eventTypes": [],
"hmac": "<string>"
}
'import requests
url = "https://api.daily.co/v1/webhooks/{id}"
payload = {
"url": "<string>",
"basicAuth": "<string>",
"eventTypes": [],
"hmac": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({url: '<string>', basicAuth: '<string>', eventTypes: [], hmac: '<string>'})
};
fetch('https://api.daily.co/v1/webhooks/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.daily.co/v1/webhooks/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'url' => '<string>',
'basicAuth' => '<string>',
'eventTypes' => [
],
'hmac' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.daily.co/v1/webhooks/{id}"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"basicAuth\": \"<string>\",\n \"eventTypes\": [],\n \"hmac\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.daily.co/v1/webhooks/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"basicAuth\": \"<string>\",\n \"eventTypes\": [],\n \"hmac\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.daily.co/v1/webhooks/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"basicAuth\": \"<string>\",\n \"eventTypes\": [],\n \"hmac\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"url": "<string>",
"uuid": "<string>",
"hmac": "<string>",
"basicAuth": "<string>",
"retryType": "circuit-breaker",
"eventTypes": [
"recording.ready-to-download"
],
"state": "<string>",
"failedCount": 123,
"lastMomentPushed": "<string>",
"domainId": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>"
}{
"error": "invalid-request-error",
"info": "missing required field"
}Update Webhook Config
Update webhook config
curl --request POST \
--url https://api.daily.co/v1/webhooks/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"basicAuth": "<string>",
"eventTypes": [],
"hmac": "<string>"
}
'import requests
url = "https://api.daily.co/v1/webhooks/{id}"
payload = {
"url": "<string>",
"basicAuth": "<string>",
"eventTypes": [],
"hmac": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({url: '<string>', basicAuth: '<string>', eventTypes: [], hmac: '<string>'})
};
fetch('https://api.daily.co/v1/webhooks/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.daily.co/v1/webhooks/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'url' => '<string>',
'basicAuth' => '<string>',
'eventTypes' => [
],
'hmac' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.daily.co/v1/webhooks/{id}"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"basicAuth\": \"<string>\",\n \"eventTypes\": [],\n \"hmac\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.daily.co/v1/webhooks/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"basicAuth\": \"<string>\",\n \"eventTypes\": [],\n \"hmac\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.daily.co/v1/webhooks/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"basicAuth\": \"<string>\",\n \"eventTypes\": [],\n \"hmac\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"url": "<string>",
"uuid": "<string>",
"hmac": "<string>",
"basicAuth": "<string>",
"retryType": "circuit-breaker",
"eventTypes": [
"recording.ready-to-download"
],
"state": "<string>",
"failedCount": 123,
"lastMomentPushed": "<string>",
"domainId": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>"
}{
"error": "invalid-request-error",
"info": "missing required field"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
The webhook server endpoint that was provided.
The basic auth credentials that will be used to POST to the webhook URL.
The retry configuration for this webhook endpoint to use. The default is circuit-breaker.
circuit-breaker, exponential The set of event types this webhook is subscribed to.
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 A secret that can be used to verify the signature of the webhook.
Response
200
The webhook server endpoint that was provided.
The unique identifier for this webhook.
A secret that can be used to verify the signature of the webhook.
The basic auth credentials that will be used to POST to the webhook URL.
The retry configuration for this webhook endpoint to use. The default is circuit-breaker.
circuit-breaker, exponential The set of event types this webhook is subscribed to.
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 The current state of the webhook. "FAILED" | "INACTIVE"
The number of consecutive failures this webhook has made.
The ISO 8601 time of the last moment an event was pushed to the webhook server.
The domain ID this webhook is associated with.
The ISO 8601 time of when this webhook was created.
The ISO 8601 time of when this webhook was last updated.