Enable conversation ended webhook
curl --request POST \
--url https://app.autocalls.ai/api/user/assistants/enable-conversation-ended-webhook \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"assistant_id": 123,
"webhook_url": "<string>"
}
'import requests
url = "https://app.autocalls.ai/api/user/assistants/enable-conversation-ended-webhook"
payload = {
"assistant_id": 123,
"webhook_url": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({assistant_id: 123, webhook_url: '<string>'})
};
fetch('https://app.autocalls.ai/api/user/assistants/enable-conversation-ended-webhook', 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://app.autocalls.ai/api/user/assistants/enable-conversation-ended-webhook",
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([
'assistant_id' => 123,
'webhook_url' => '<string>'
]),
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://app.autocalls.ai/api/user/assistants/enable-conversation-ended-webhook"
payload := strings.NewReader("{\n \"assistant_id\": 123,\n \"webhook_url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://app.autocalls.ai/api/user/assistants/enable-conversation-ended-webhook")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"assistant_id\": 123,\n \"webhook_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.autocalls.ai/api/user/assistants/enable-conversation-ended-webhook")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"assistant_id\": 123,\n \"webhook_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "Conversation ended webhook enabled successfully",
"data": []
}
{
"message": "Assistant not found"
}
{
"message": "The given data was invalid.",
"errors": {
"assistant_id": [
"The assistant id field is required."
],
"webhook_url": [
"The webhook url field is required."
]
}
}
Assistants
Enable conversation ended webhook
Enable webhook notifications when a chat conversation ends
POST
/
user
/
assistants
/
enable-conversation-ended-webhook
Enable conversation ended webhook
curl --request POST \
--url https://app.autocalls.ai/api/user/assistants/enable-conversation-ended-webhook \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"assistant_id": 123,
"webhook_url": "<string>"
}
'import requests
url = "https://app.autocalls.ai/api/user/assistants/enable-conversation-ended-webhook"
payload = {
"assistant_id": 123,
"webhook_url": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({assistant_id: 123, webhook_url: '<string>'})
};
fetch('https://app.autocalls.ai/api/user/assistants/enable-conversation-ended-webhook', 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://app.autocalls.ai/api/user/assistants/enable-conversation-ended-webhook",
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([
'assistant_id' => 123,
'webhook_url' => '<string>'
]),
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://app.autocalls.ai/api/user/assistants/enable-conversation-ended-webhook"
payload := strings.NewReader("{\n \"assistant_id\": 123,\n \"webhook_url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://app.autocalls.ai/api/user/assistants/enable-conversation-ended-webhook")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"assistant_id\": 123,\n \"webhook_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.autocalls.ai/api/user/assistants/enable-conversation-ended-webhook")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"assistant_id\": 123,\n \"webhook_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "Conversation ended webhook enabled successfully",
"data": []
}
{
"message": "Assistant not found"
}
{
"message": "The given data was invalid.",
"errors": {
"assistant_id": [
"The assistant id field is required."
],
"webhook_url": [
"The webhook url field is required."
]
}
}
This endpoint enables conversation ended webhook notifications for an assistant, allowing you to receive real-time updates when a chat conversation (WhatsApp or Web Widget) ends. The webhook includes the full transcript, extracted variables, and customer information.
Request Body
The ID of the assistant to enable the conversation ended webhook for
The URL where webhook notifications will be sent when a conversation ends
Response
Success message confirming webhook was enabled
Empty array (reserved for future use)
Error Responses
404 Not Found
Show Error Response
Show Error Response
Error message when the assistant is not found or doesn’t belong to the authenticated user
422 Validation Error
{
"message": "Conversation ended webhook enabled successfully",
"data": []
}
{
"message": "Assistant not found"
}
{
"message": "The given data was invalid.",
"errors": {
"assistant_id": [
"The assistant id field is required."
],
"webhook_url": [
"The webhook url field is required."
]
}
}
⌘I

