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
integer
required
The ID of the assistant to enable the conversation ended webhook for
string
required
The URL where webhook notifications will be sent when a conversation ends
Response
string
Success message confirming webhook was enabled
array
Empty array (reserved for future use)
Error Responses
Show Error Response
Show Error Response
string
Error message when the assistant is not found or doesn’t belong to the authenticated user
{
"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

