curl -X PUT \
'https://app.talkover.ai/api/v1/agents/9fbef0b7-8d4e-4a08-9207-66c22155721d/webhooks/9fcafbf2-7593-44d6-8cd7-1b221beba62a' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "Updated Webhook Name",
"webhook_url": "https://newexample.com/webhook",
"webhook_secret": "new_secret",
"events": ["event_phone_call_started", "event_conversation_started"],
"timeout": 45,
"max_retries": 5,
"enabled": false
}'
const response = await fetch('https://app.talkover.ai/api/v1/agents/9fbef0b7-8d4e-4a08-9207-66c22155721d/webhooks/9fcafbf2-7593-44d6-8cd7-1b221beba62a', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Updated Webhook Name',
webhook_url: 'https://newexample.com/webhook',
webhook_secret: 'new_secret',
events: ['event_phone_call_started', 'event_conversation_started'],
timeout: 45,
max_retries: 5,
enabled: false
})
});
const data = await response.json();
<?php
$client = new \GuzzleHttp\Client();
$response = $client->put('https://app.talkover.ai/api/v1/agents/9fbef0b7-8d4e-4a08-9207-66c22155721d/webhooks/9fcafbf2-7593-44d6-8cd7-1b221beba62a', [
'headers' => [
'Authorization' => 'Bearer YOUR_TOKEN',
'Content-Type' => 'application/json',
],
'json' => [
'name' => 'Updated Webhook Name',
'webhook_url' => 'https://newexample.com/webhook',
'webhook_secret' => 'new_secret',
'events' => ['event_phone_call_started', 'event_conversation_started'],
'timeout' => 45,
'max_retries' => 5,
'enabled' => false
],
]);
$data = json_decode($response->getBody());
{
"success": true,
"message": "Webhook updated successfully",
"data": {
"id": "9fcafbf2-7593-44d6-8cd7-1b221beba62a",
"agent_id": "9fbef0b7-8d4e-4a08-9207-66c22155721d",
"name": "Updated Webhook Name",
"webhook_url": "https://newexample.com/webhook",
"events": ["event_phone_call_started", "event_conversation_started"],
"timeout": 45,
"max_retries": 5,
"enabled": false,
"created_at": "2025-09-03T23:19:51.000000Z",
"updated_at": "2025-09-03T23:45:30.000000Z",
"events_count": 2,
"status": "disabled"
}
}
Agent Webhooks
Update Webhook
Update an existing webhook configuration
PUT
/
api
/
v1
/
agents
/
{agent_id}
/
webhooks
/
{webhook_id}
curl -X PUT \
'https://app.talkover.ai/api/v1/agents/9fbef0b7-8d4e-4a08-9207-66c22155721d/webhooks/9fcafbf2-7593-44d6-8cd7-1b221beba62a' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "Updated Webhook Name",
"webhook_url": "https://newexample.com/webhook",
"webhook_secret": "new_secret",
"events": ["event_phone_call_started", "event_conversation_started"],
"timeout": 45,
"max_retries": 5,
"enabled": false
}'
const response = await fetch('https://app.talkover.ai/api/v1/agents/9fbef0b7-8d4e-4a08-9207-66c22155721d/webhooks/9fcafbf2-7593-44d6-8cd7-1b221beba62a', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Updated Webhook Name',
webhook_url: 'https://newexample.com/webhook',
webhook_secret: 'new_secret',
events: ['event_phone_call_started', 'event_conversation_started'],
timeout: 45,
max_retries: 5,
enabled: false
})
});
const data = await response.json();
<?php
$client = new \GuzzleHttp\Client();
$response = $client->put('https://app.talkover.ai/api/v1/agents/9fbef0b7-8d4e-4a08-9207-66c22155721d/webhooks/9fcafbf2-7593-44d6-8cd7-1b221beba62a', [
'headers' => [
'Authorization' => 'Bearer YOUR_TOKEN',
'Content-Type' => 'application/json',
],
'json' => [
'name' => 'Updated Webhook Name',
'webhook_url' => 'https://newexample.com/webhook',
'webhook_secret' => 'new_secret',
'events' => ['event_phone_call_started', 'event_conversation_started'],
'timeout' => 45,
'max_retries' => 5,
'enabled' => false
],
]);
$data = json_decode($response->getBody());
{
"success": true,
"message": "Webhook updated successfully",
"data": {
"id": "9fcafbf2-7593-44d6-8cd7-1b221beba62a",
"agent_id": "9fbef0b7-8d4e-4a08-9207-66c22155721d",
"name": "Updated Webhook Name",
"webhook_url": "https://newexample.com/webhook",
"events": ["event_phone_call_started", "event_conversation_started"],
"timeout": 45,
"max_retries": 5,
"enabled": false,
"created_at": "2025-09-03T23:19:51.000000Z",
"updated_at": "2025-09-03T23:45:30.000000Z",
"events_count": 2,
"status": "disabled"
}
}
Overview
Updates an existing webhook configuration. All fields are optional - only provided fields will be updated.Endpoint
string
required
Agent UUID
string
required
Webhook UUID
Request
curl -X PUT \
'https://app.talkover.ai/api/v1/agents/9fbef0b7-8d4e-4a08-9207-66c22155721d/webhooks/9fcafbf2-7593-44d6-8cd7-1b221beba62a' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "Updated Webhook Name",
"webhook_url": "https://newexample.com/webhook",
"webhook_secret": "new_secret",
"events": ["event_phone_call_started", "event_conversation_started"],
"timeout": 45,
"max_retries": 5,
"enabled": false
}'
const response = await fetch('https://app.talkover.ai/api/v1/agents/9fbef0b7-8d4e-4a08-9207-66c22155721d/webhooks/9fcafbf2-7593-44d6-8cd7-1b221beba62a', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Updated Webhook Name',
webhook_url: 'https://newexample.com/webhook',
webhook_secret: 'new_secret',
events: ['event_phone_call_started', 'event_conversation_started'],
timeout: 45,
max_retries: 5,
enabled: false
})
});
const data = await response.json();
<?php
$client = new \GuzzleHttp\Client();
$response = $client->put('https://app.talkover.ai/api/v1/agents/9fbef0b7-8d4e-4a08-9207-66c22155721d/webhooks/9fcafbf2-7593-44d6-8cd7-1b221beba62a', [
'headers' => [
'Authorization' => 'Bearer YOUR_TOKEN',
'Content-Type' => 'application/json',
],
'json' => [
'name' => 'Updated Webhook Name',
'webhook_url' => 'https://newexample.com/webhook',
'webhook_secret' => 'new_secret',
'events' => ['event_phone_call_started', 'event_conversation_started'],
'timeout' => 45,
'max_retries' => 5,
'enabled' => false
],
]);
$data = json_decode($response->getBody());
Response
boolean
Indicates if the webhook was updated successfully
string
Success message
object
Updated webhook object
string
Unique webhook identifier
string
Agent UUID this webhook belongs to
string
Updated webhook name
string
Updated webhook URL
array
Updated array of configured event types
integer
Updated request timeout in seconds
integer
Updated maximum retry attempts
boolean
Updated webhook status
string
ISO 8601 timestamp when webhook was created
string
ISO 8601 timestamp when webhook was last updated
integer
Number of events configured for this webhook
string
Current webhook status
{
"success": true,
"message": "Webhook updated successfully",
"data": {
"id": "9fcafbf2-7593-44d6-8cd7-1b221beba62a",
"agent_id": "9fbef0b7-8d4e-4a08-9207-66c22155721d",
"name": "Updated Webhook Name",
"webhook_url": "https://newexample.com/webhook",
"events": ["event_phone_call_started", "event_conversation_started"],
"timeout": 45,
"max_retries": 5,
"enabled": false,
"created_at": "2025-09-03T23:19:51.000000Z",
"updated_at": "2025-09-03T23:45:30.000000Z",
"events_count": 2,
"status": "disabled"
}
}
Error responses
{
"message": "Missing Bearer Token"
}
{
"success": false,
"message": "Agent not found in this environment."
}
{
"success": false,
"message": "Webhook not found."
}
{
"message": "The given data was invalid.",
"errors": {
"webhook_url": ["The webhook url must be a valid URL."],
"events": ["The events field must contain at least 1 items."]
}
}
Validation rules
- name: Optional, string, maximum 255 characters
- webhook_url: Optional, valid URL, maximum 500 characters
- webhook_secret: Optional, string, maximum 255 characters
- events: Optional, array with minimum 1 event, each event must be from available events list
- timeout: Optional, integer between 5-120 seconds
- max_retries: Optional, integer between 0-10
- enabled: Optional, boolean
Important notes
- All fields are optional - only provided fields will be updated
- Webhook operations automatically clear the agent cache for immediate effect
- Use HTTPS endpoints for webhook URLs in production
- Implement proper signature verification using the webhook secret for security
Related endpoints
- List Agent Webhooks - Get all webhooks for an agent
- Create Webhook - Set up a new webhook
- Get Webhook Details - Retrieve specific webhook information
- Delete Webhook - Remove webhook configuration
- Toggle Webhook Status - Enable/disable webhook
- Test Webhook - Send test payload to verify connectivity
Was this page helpful?