Webhooks
Update Webhook
Change the destination URL or configuration of an existing webhook registration 🔀
PUT
/
v1
/
businesses
/
{businessId}
/
update
/
webhooks
/
{webhookId}
Update Webhook
curl --request PUT \
--url https://api.example.com/v1/businesses/{businessId}/update/webhooks/{webhookId} \
--header 'Content-Type: application/json' \
--data '
{
"address": "<string>",
"configuration": {
"echo": true,
"channelTypes": [
{}
],
"filters": [
{
"field": "<string>",
"expression": "<string>"
}
],
"webengageConfiguration": {
"webengageToken": "<string>",
"webengageWebhookUrl": "<string>"
}
}
}
'import requests
url = "https://api.example.com/v1/businesses/{businessId}/update/webhooks/{webhookId}"
payload = {
"address": "<string>",
"configuration": {
"echo": True,
"channelTypes": [{}],
"filters": [
{
"field": "<string>",
"expression": "<string>"
}
],
"webengageConfiguration": {
"webengageToken": "<string>",
"webengageWebhookUrl": "<string>"
}
}
}
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
address: '<string>',
configuration: {
echo: true,
channelTypes: [{}],
filters: [{field: '<string>', expression: '<string>'}],
webengageConfiguration: {webengageToken: '<string>', webengageWebhookUrl: '<string>'}
}
})
};
fetch('https://api.example.com/v1/businesses/{businessId}/update/webhooks/{webhookId}', 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/v1/businesses/{businessId}/update/webhooks/{webhookId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'address' => '<string>',
'configuration' => [
'echo' => true,
'channelTypes' => [
[
]
],
'filters' => [
[
'field' => '<string>',
'expression' => '<string>'
]
],
'webengageConfiguration' => [
'webengageToken' => '<string>',
'webengageWebhookUrl' => '<string>'
]
]
]),
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/v1/businesses/{businessId}/update/webhooks/{webhookId}"
payload := strings.NewReader("{\n \"address\": \"<string>\",\n \"configuration\": {\n \"echo\": true,\n \"channelTypes\": [\n {}\n ],\n \"filters\": [\n {\n \"field\": \"<string>\",\n \"expression\": \"<string>\"\n }\n ],\n \"webengageConfiguration\": {\n \"webengageToken\": \"<string>\",\n \"webengageWebhookUrl\": \"<string>\"\n }\n }\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.example.com/v1/businesses/{businessId}/update/webhooks/{webhookId}")
.header("Content-Type", "application/json")
.body("{\n \"address\": \"<string>\",\n \"configuration\": {\n \"echo\": true,\n \"channelTypes\": [\n {}\n ],\n \"filters\": [\n {\n \"field\": \"<string>\",\n \"expression\": \"<string>\"\n }\n ],\n \"webengageConfiguration\": {\n \"webengageToken\": \"<string>\",\n \"webengageWebhookUrl\": \"<string>\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/businesses/{businessId}/update/webhooks/{webhookId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"address\": \"<string>\",\n \"configuration\": {\n \"echo\": true,\n \"channelTypes\": [\n {}\n ],\n \"filters\": [\n {\n \"field\": \"<string>\",\n \"expression\": \"<string>\"\n }\n ],\n \"webengageConfiguration\": {\n \"webengageToken\": \"<string>\",\n \"webengageWebhookUrl\": \"<string>\"\n }\n }\n}"
response = http.request(request)
puts response.read_bodyUpdate the destination URL or configuration of an existing webhook registration. Only the fields you include in the request body are changed — omitting a field keeps its current value.
Retrieve the
Endpoint
PUT https://api.connectly.ai/v1/businesses/{businessId}/update/webhooks/{webhookId}
webhookId from the Get webhooks response.
Request body
New destination URL. Must be a publicly accessible HTTPS endpoint.
Updated configuration. Any fields you provide overwrite the existing values.
Show configuration properties
Show configuration properties
When
true, outbound messages sent by your business are echoed back to this webhook.List of channel types to filter events by (e.g.
["whatsapp"]).Examples
Update address only
Update address only
curl --request PUT \
--url https://api.connectly.ai/v1/businesses/{businessId}/update/webhooks/{webhookId} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--data '{
"address": "https://example.com/webhook-v2"
}'
Update configuration only
Update configuration only
curl --request PUT \
--url https://api.connectly.ai/v1/businesses/{businessId}/update/webhooks/{webhookId} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--data '{
"configuration": {
"echo": true,
"channelTypes": ["whatsapp"],
"filters": [
{ "field": "campaign_name", "expression": "prod-*" }
]
}
}'
Update both address and configuration
Update both address and configuration
curl --request PUT \
--url https://api.connectly.ai/v1/businesses/{businessId}/update/webhooks/{webhookId} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--data '{
"address": "https://example.com/webhook-v2",
"configuration": {
"echo": false,
"channelTypes": ["whatsapp"],
"filters": [
{ "field": "campaign_name", "expression": "prod-*" }
]
}
}'
Response
{ "id": "wh_01ARZ3NDEKTSV4RRFFQ69G5FAV" }
Error responses
| Status | Meaning |
|---|---|
400 | Malformed body or invalid field values. |
401 | Missing or invalid X-API-Key. |
404 | The specified webhookId does not exist. |
500 | Internal server error. |
Was this page helpful?
⌘I
