Webhooks
Create Webhook
Create a new outbound webhook for the current account.
The secret is returned only in this response — store it securely.
POST
/
api
/
v1
/
webhooks
Create a new webhook
curl --request POST \
--url https://api.example.com/api/v1/webhooks \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"collection": "<string>",
"events": [
"<string>"
],
"secret": "<string>",
"filter": "<string>",
"enabled": true,
"headers": {}
}
'import requests
url = "https://api.example.com/api/v1/webhooks"
payload = {
"url": "<string>",
"collection": "<string>",
"events": ["<string>"],
"secret": "<string>",
"filter": "<string>",
"enabled": True,
"headers": {}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
url: '<string>',
collection: '<string>',
events: ['<string>'],
secret: '<string>',
filter: '<string>',
enabled: true,
headers: {}
})
};
fetch('https://api.example.com/api/v1/webhooks', 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.example.com/api/v1/webhooks",
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>',
'collection' => '<string>',
'events' => [
'<string>'
],
'secret' => '<string>',
'filter' => '<string>',
'enabled' => true,
'headers' => [
]
]),
CURLOPT_HTTPHEADER => [
"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.example.com/api/v1/webhooks"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"collection\": \"<string>\",\n \"events\": [\n \"<string>\"\n ],\n \"secret\": \"<string>\",\n \"filter\": \"<string>\",\n \"enabled\": true,\n \"headers\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
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.example.com/api/v1/webhooks")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"collection\": \"<string>\",\n \"events\": [\n \"<string>\"\n ],\n \"secret\": \"<string>\",\n \"filter\": \"<string>\",\n \"enabled\": true,\n \"headers\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/webhooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"collection\": \"<string>\",\n \"events\": [\n \"<string>\"\n ],\n \"secret\": \"<string>\",\n \"filter\": \"<string>\",\n \"enabled\": true,\n \"headers\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"account_id": "<string>",
"url": "<string>",
"collection": "<string>",
"events": [
"<string>"
],
"filter": "<string>",
"enabled": true,
"headers": {},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"secret": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Body
application/json
Request body for creating a webhook.
Destination URL for webhook HTTP POST
Required string length:
1 - 2048Collection name to watch
Required string length:
1 - 100Events to fire on: create, update, delete
Minimum array length:
1HMAC-SHA256 signing secret (auto-generated if omitted)
Maximum string length:
100Optional rule expression to conditionally fire webhook
Whether the webhook is active
Optional custom HTTP headers to include in delivery
Show child attributes
Show child attributes
Response
Successful Response
Webhook creation response — includes secret (shown ONCE only).
Signing secret — save this, it will never be shown again
⌘I
Create a new webhook
curl --request POST \
--url https://api.example.com/api/v1/webhooks \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"collection": "<string>",
"events": [
"<string>"
],
"secret": "<string>",
"filter": "<string>",
"enabled": true,
"headers": {}
}
'import requests
url = "https://api.example.com/api/v1/webhooks"
payload = {
"url": "<string>",
"collection": "<string>",
"events": ["<string>"],
"secret": "<string>",
"filter": "<string>",
"enabled": True,
"headers": {}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
url: '<string>',
collection: '<string>',
events: ['<string>'],
secret: '<string>',
filter: '<string>',
enabled: true,
headers: {}
})
};
fetch('https://api.example.com/api/v1/webhooks', 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.example.com/api/v1/webhooks",
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>',
'collection' => '<string>',
'events' => [
'<string>'
],
'secret' => '<string>',
'filter' => '<string>',
'enabled' => true,
'headers' => [
]
]),
CURLOPT_HTTPHEADER => [
"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.example.com/api/v1/webhooks"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"collection\": \"<string>\",\n \"events\": [\n \"<string>\"\n ],\n \"secret\": \"<string>\",\n \"filter\": \"<string>\",\n \"enabled\": true,\n \"headers\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
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.example.com/api/v1/webhooks")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"collection\": \"<string>\",\n \"events\": [\n \"<string>\"\n ],\n \"secret\": \"<string>\",\n \"filter\": \"<string>\",\n \"enabled\": true,\n \"headers\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/webhooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"collection\": \"<string>\",\n \"events\": [\n \"<string>\"\n ],\n \"secret\": \"<string>\",\n \"filter\": \"<string>\",\n \"enabled\": true,\n \"headers\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"account_id": "<string>",
"url": "<string>",
"collection": "<string>",
"events": [
"<string>"
],
"filter": "<string>",
"enabled": true,
"headers": {},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"secret": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}