Send a test delivery
curl --request POST \
--url https://api.zapier.com/connections/v1/webhooks/{id}/test \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.zapier.com/connections/v1/webhooks/{id}/test"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.zapier.com/connections/v1/webhooks/{id}/test', 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.zapier.com/connections/v1/webhooks/{id}/test",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.zapier.com/connections/v1/webhooks/{id}/test"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.zapier.com/connections/v1/webhooks/{id}/test")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zapier.com/connections/v1/webhooks/{id}/test")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"errors": [
{
"code": "<string>",
"detail": "<string>",
"status": 123,
"title": "<string>",
"source": {}
}
]
}Connection Webhooks
Send a test delivery
Trigger a sample (synthetic) connection.expiry_scheduled delivery to this webhook’s callback_url, so you can validate your handler and signature verification before relying on real events. The delivered payload is a synthetic example and is clearly marked as a test. In addition to the webhook-id, webhook-timestamp, and webhook-signature headers sent on every delivery, a test delivery also carries a webhook-test: true header.
POST
/
connections
/
v1
/
webhooks
/
{id}
/
test
Send a test delivery
curl --request POST \
--url https://api.zapier.com/connections/v1/webhooks/{id}/test \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.zapier.com/connections/v1/webhooks/{id}/test"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.zapier.com/connections/v1/webhooks/{id}/test', 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.zapier.com/connections/v1/webhooks/{id}/test",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.zapier.com/connections/v1/webhooks/{id}/test"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.zapier.com/connections/v1/webhooks/{id}/test")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zapier.com/connections/v1/webhooks/{id}/test")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"errors": [
{
"code": "<string>",
"detail": "<string>",
"status": 123,
"title": "<string>",
"source": {}
}
]
}Authorizations
OAuth 2.0 authentication.
FlowAuthorization Code
- Authorization URL
- https://zapier.com/oauth/authorize
- Token URL
- https://zapier.com/oauth/token
FlowClient Credentials
- Token URL
- https://zapier.com/oauth/token
Scopes2
connection:webhook:write
Grants connection:webhook:write access
external
Scope that gives access to all Public APIs
Path Parameters
UUID of the connection webhook.
Response
Test delivery enqueued.
Last modified on September 1, 2026
Was this page helpful?