ElevenLabs tool: send an SMS to the caller mid-call
curl --request POST \
--url https://your-instance.example.com/api/webhook/elevenlabs/tools/send-sms \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"phone_number": "+14165550100",
"message": "Hi Alex — here's the application link we just talked about: https://app.tetherai.ca/a/MZ4K. Let me know if you have any trouble.",
"called_id": "+12362320246"
}
EOFimport requests
url = "https://your-instance.example.com/api/webhook/elevenlabs/tools/send-sms"
payload = {
"phone_number": "+14165550100",
"message": "Hi Alex — here's the application link we just talked about: https://app.tetherai.ca/a/MZ4K. Let me know if you have any trouble.",
"called_id": "+12362320246"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
phone_number: '+14165550100',
message: 'Hi Alex — here\'s the application link we just talked about: https://app.tetherai.ca/a/MZ4K. Let me know if you have any trouble.',
called_id: '+12362320246'
})
};
fetch('https://your-instance.example.com/api/webhook/elevenlabs/tools/send-sms', 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://your-instance.example.com/api/webhook/elevenlabs/tools/send-sms",
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([
'phone_number' => '+14165550100',
'message' => 'Hi Alex — here\'s the application link we just talked about: https://app.tetherai.ca/a/MZ4K. Let me know if you have any trouble.',
'called_id' => '+12362320246'
]),
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://your-instance.example.com/api/webhook/elevenlabs/tools/send-sms"
payload := strings.NewReader("{\n \"phone_number\": \"+14165550100\",\n \"message\": \"Hi Alex — here's the application link we just talked about: https://app.tetherai.ca/a/MZ4K. Let me know if you have any trouble.\",\n \"called_id\": \"+12362320246\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://your-instance.example.com/api/webhook/elevenlabs/tools/send-sms")
.header("Content-Type", "application/json")
.body("{\n \"phone_number\": \"+14165550100\",\n \"message\": \"Hi Alex — here's the application link we just talked about: https://app.tetherai.ca/a/MZ4K. Let me know if you have any trouble.\",\n \"called_id\": \"+12362320246\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://your-instance.example.com/api/webhook/elevenlabs/tools/send-sms")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"phone_number\": \"+14165550100\",\n \"message\": \"Hi Alex — here's the application link we just talked about: https://app.tetherai.ca/a/MZ4K. Let me know if you have any trouble.\",\n \"called_id\": \"+12362320246\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "SMS sent"
}{
"error": "Webhook processing failed"
}{
"error": "Webhook processing failed"
}Webhooks
ElevenLabs tool: send an SMS to the caller mid-call
Server tool webhook called by the ElevenLabs voice agent mid-call to text the caller a link, confirmation, or follow-up info while the call is still active. Identifies the contact by phone_number within the org scoped from the tool secret, finds or creates the appropriate SMS conversation, and dispatches through the standard sendOutboundMessage helper so it routes via the org’s configured SMS provider (Sinch / TextGrid / Twilio) and appears in the conversation thread as an AI-authored message. The send is marked skipAutomation so it doesn’t retrigger workflows in a loop. Recoverable problems return HTTP 200 with success:false. Authenticated via Bearer token (per-org elevenlabsToolSecret).
POST
/
api
/
webhook
/
elevenlabs
/
tools
/
send-sms
ElevenLabs tool: send an SMS to the caller mid-call
curl --request POST \
--url https://your-instance.example.com/api/webhook/elevenlabs/tools/send-sms \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"phone_number": "+14165550100",
"message": "Hi Alex — here's the application link we just talked about: https://app.tetherai.ca/a/MZ4K. Let me know if you have any trouble.",
"called_id": "+12362320246"
}
EOFimport requests
url = "https://your-instance.example.com/api/webhook/elevenlabs/tools/send-sms"
payload = {
"phone_number": "+14165550100",
"message": "Hi Alex — here's the application link we just talked about: https://app.tetherai.ca/a/MZ4K. Let me know if you have any trouble.",
"called_id": "+12362320246"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
phone_number: '+14165550100',
message: 'Hi Alex — here\'s the application link we just talked about: https://app.tetherai.ca/a/MZ4K. Let me know if you have any trouble.',
called_id: '+12362320246'
})
};
fetch('https://your-instance.example.com/api/webhook/elevenlabs/tools/send-sms', 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://your-instance.example.com/api/webhook/elevenlabs/tools/send-sms",
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([
'phone_number' => '+14165550100',
'message' => 'Hi Alex — here\'s the application link we just talked about: https://app.tetherai.ca/a/MZ4K. Let me know if you have any trouble.',
'called_id' => '+12362320246'
]),
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://your-instance.example.com/api/webhook/elevenlabs/tools/send-sms"
payload := strings.NewReader("{\n \"phone_number\": \"+14165550100\",\n \"message\": \"Hi Alex — here's the application link we just talked about: https://app.tetherai.ca/a/MZ4K. Let me know if you have any trouble.\",\n \"called_id\": \"+12362320246\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://your-instance.example.com/api/webhook/elevenlabs/tools/send-sms")
.header("Content-Type", "application/json")
.body("{\n \"phone_number\": \"+14165550100\",\n \"message\": \"Hi Alex — here's the application link we just talked about: https://app.tetherai.ca/a/MZ4K. Let me know if you have any trouble.\",\n \"called_id\": \"+12362320246\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://your-instance.example.com/api/webhook/elevenlabs/tools/send-sms")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"phone_number\": \"+14165550100\",\n \"message\": \"Hi Alex — here's the application link we just talked about: https://app.tetherai.ca/a/MZ4K. Let me know if you have any trouble.\",\n \"called_id\": \"+12362320246\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "SMS sent"
}{
"error": "Webhook processing failed"
}{
"error": "Webhook processing failed"
}Body
application/json
⌘I