Update a webhook endpoint
curl --request PATCH \
--url https://sandbox-api.platform.chipper.ai/v1/webhooks/endpoints/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"description": "<string>",
"events": [
"*"
]
}
'import requests
url = "https://sandbox-api.platform.chipper.ai/v1/webhooks/endpoints/{id}"
payload = {
"url": "<string>",
"description": "<string>",
"events": ["*"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({url: '<string>', description: '<string>', events: ['*']})
};
fetch('https://sandbox-api.platform.chipper.ai/v1/webhooks/endpoints/{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://sandbox-api.platform.chipper.ai/v1/webhooks/endpoints/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'url' => '<string>',
'description' => '<string>',
'events' => [
'*'
]
]),
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://sandbox-api.platform.chipper.ai/v1/webhooks/endpoints/{id}"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"description\": \"<string>\",\n \"events\": [\n \"*\"\n ]\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://sandbox-api.platform.chipper.ai/v1/webhooks/endpoints/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"description\": \"<string>\",\n \"events\": [\n \"*\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-api.platform.chipper.ai/v1/webhooks/endpoints/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"description\": \"<string>\",\n \"events\": [\n \"*\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"endpoint": {
"id": "whe_k3m9x2pq7vn4t8wz1bcd",
"url": "https://api.example.com/chipper/webhooks",
"description": "Production listener",
"events": [
"payout.completed",
"payout.failed",
"collection.completed"
],
"status": "active",
"failureCount": 0,
"disabledReason": "manual",
"createdAt": "2026-08-01T09:12:44.000Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
}{
"error": "validation_error",
"message": "Request validation failed",
"requestId": "req_q7vei435zifs51ia0lqr"
}{
"error": "unauthorized",
"message": "Invalid API key",
"requestId": "req_q7vei435zifs51ia0lqr"
}{
"error": "not_found",
"message": "Webhook endpoint not found",
"requestId": "req_q7vei435zifs51ia0lqr"
}Webhooks
Update a webhook endpoint
Change the URL, description or subscriptions, or set status to pause (disabled) or resume (active) delivery. Setting active also clears failureCount and disabledReason, which is how you recover an auto-disabled endpoint. Non-2xx responses and timeouts (10s) are retried at 30s, 2m, 8m, 32m, 2h, 6h, 6h, 6h — about a day — before the delivery is marked failed. After 10 consecutive failed attempts the endpoint is auto-disabled (disabledReason: consecutive_failures); re-enable it with PATCH status: active.
PATCH
/
v1
/
webhooks
/
endpoints
/
{id}
Update a webhook endpoint
curl --request PATCH \
--url https://sandbox-api.platform.chipper.ai/v1/webhooks/endpoints/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"description": "<string>",
"events": [
"*"
]
}
'import requests
url = "https://sandbox-api.platform.chipper.ai/v1/webhooks/endpoints/{id}"
payload = {
"url": "<string>",
"description": "<string>",
"events": ["*"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({url: '<string>', description: '<string>', events: ['*']})
};
fetch('https://sandbox-api.platform.chipper.ai/v1/webhooks/endpoints/{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://sandbox-api.platform.chipper.ai/v1/webhooks/endpoints/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'url' => '<string>',
'description' => '<string>',
'events' => [
'*'
]
]),
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://sandbox-api.platform.chipper.ai/v1/webhooks/endpoints/{id}"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"description\": \"<string>\",\n \"events\": [\n \"*\"\n ]\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://sandbox-api.platform.chipper.ai/v1/webhooks/endpoints/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"description\": \"<string>\",\n \"events\": [\n \"*\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-api.platform.chipper.ai/v1/webhooks/endpoints/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"description\": \"<string>\",\n \"events\": [\n \"*\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"endpoint": {
"id": "whe_k3m9x2pq7vn4t8wz1bcd",
"url": "https://api.example.com/chipper/webhooks",
"description": "Production listener",
"events": [
"payout.completed",
"payout.failed",
"collection.completed"
],
"status": "active",
"failureCount": 0,
"disabledReason": "manual",
"createdAt": "2026-08-01T09:12:44.000Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
}{
"error": "validation_error",
"message": "Request validation failed",
"requestId": "req_q7vei435zifs51ia0lqr"
}{
"error": "unauthorized",
"message": "Invalid API key",
"requestId": "req_q7vei435zifs51ia0lqr"
}{
"error": "not_found",
"message": "Webhook endpoint not found",
"requestId": "req_q7vei435zifs51ia0lqr"
}Authorizations
Your API key: sk_test_… (sandbox) or sk_live_… (production).
Path Parameters
Webhook endpoint id.
Example:
"whe_k3m9x2pq7vn4t8wz1bcd"
Body
application/json
Response
The updated endpoint.
Show child attributes
Show child attributes
⌘I