Return hold verbs while a caller waits in a queue
curl --request POST \
--url https://api.orbit.devotel.io/api/v1/jambonz/queue-wait \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"call_sid": "5f9c3b1a-2d4e-4f6a-8b0c-1e2d3f4a5b6c",
"queue_position": 3,
"queue_size": 7,
"queue_time": 42
}
'import requests
url = "https://api.orbit.devotel.io/api/v1/jambonz/queue-wait"
payload = {
"call_sid": "5f9c3b1a-2d4e-4f6a-8b0c-1e2d3f4a5b6c",
"queue_position": 3,
"queue_size": 7,
"queue_time": 42
}
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({
call_sid: '5f9c3b1a-2d4e-4f6a-8b0c-1e2d3f4a5b6c',
queue_position: 3,
queue_size: 7,
queue_time: 42
})
};
fetch('https://api.orbit.devotel.io/api/v1/jambonz/queue-wait', 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.orbit.devotel.io/api/v1/jambonz/queue-wait",
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([
'call_sid' => '5f9c3b1a-2d4e-4f6a-8b0c-1e2d3f4a5b6c',
'queue_position' => 3,
'queue_size' => 7,
'queue_time' => 42
]),
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://api.orbit.devotel.io/api/v1/jambonz/queue-wait"
payload := strings.NewReader("{\n \"call_sid\": \"5f9c3b1a-2d4e-4f6a-8b0c-1e2d3f4a5b6c\",\n \"queue_position\": 3,\n \"queue_size\": 7,\n \"queue_time\": 42\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://api.orbit.devotel.io/api/v1/jambonz/queue-wait")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"call_sid\": \"5f9c3b1a-2d4e-4f6a-8b0c-1e2d3f4a5b6c\",\n \"queue_position\": 3,\n \"queue_size\": 7,\n \"queue_time\": 42\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbit.devotel.io/api/v1/jambonz/queue-wait")
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 \"call_sid\": \"5f9c3b1a-2d4e-4f6a-8b0c-1e2d3f4a5b6c\",\n \"queue_position\": 3,\n \"queue_size\": 7,\n \"queue_time\": 42\n}"
response = http.request(request)
puts response.read_body[
{
"verb": "play",
"url": "https://assets.example/hold-music.mp3"
},
{
"verb": "say",
"text": "You are caller number 3. Estimated wait is about 2 minutes."
}
]API Reference
Return hold verbs while a caller waits in a queue
Internal jambonz enqueue wait-hook, polled every few seconds for every caller waiting in a contact-center queue. It returns the verbs to run for this tick: hold music, position or estimated-wait announcements, and an optional mid-queue keypress prompt, chosen from the caller’s live queue position and the queue configuration. Signed with the jambonz webhook HMAC. Fails open with an empty verb array (the caller stays enqueued and the next tick retries) rather than dropping a live caller.
POST
/
api
/
v1
/
jambonz
/
queue-wait
Return hold verbs while a caller waits in a queue
curl --request POST \
--url https://api.orbit.devotel.io/api/v1/jambonz/queue-wait \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"call_sid": "5f9c3b1a-2d4e-4f6a-8b0c-1e2d3f4a5b6c",
"queue_position": 3,
"queue_size": 7,
"queue_time": 42
}
'import requests
url = "https://api.orbit.devotel.io/api/v1/jambonz/queue-wait"
payload = {
"call_sid": "5f9c3b1a-2d4e-4f6a-8b0c-1e2d3f4a5b6c",
"queue_position": 3,
"queue_size": 7,
"queue_time": 42
}
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({
call_sid: '5f9c3b1a-2d4e-4f6a-8b0c-1e2d3f4a5b6c',
queue_position: 3,
queue_size: 7,
queue_time: 42
})
};
fetch('https://api.orbit.devotel.io/api/v1/jambonz/queue-wait', 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.orbit.devotel.io/api/v1/jambonz/queue-wait",
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([
'call_sid' => '5f9c3b1a-2d4e-4f6a-8b0c-1e2d3f4a5b6c',
'queue_position' => 3,
'queue_size' => 7,
'queue_time' => 42
]),
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://api.orbit.devotel.io/api/v1/jambonz/queue-wait"
payload := strings.NewReader("{\n \"call_sid\": \"5f9c3b1a-2d4e-4f6a-8b0c-1e2d3f4a5b6c\",\n \"queue_position\": 3,\n \"queue_size\": 7,\n \"queue_time\": 42\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://api.orbit.devotel.io/api/v1/jambonz/queue-wait")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"call_sid\": \"5f9c3b1a-2d4e-4f6a-8b0c-1e2d3f4a5b6c\",\n \"queue_position\": 3,\n \"queue_size\": 7,\n \"queue_time\": 42\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbit.devotel.io/api/v1/jambonz/queue-wait")
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 \"call_sid\": \"5f9c3b1a-2d4e-4f6a-8b0c-1e2d3f4a5b6c\",\n \"queue_position\": 3,\n \"queue_size\": 7,\n \"queue_time\": 42\n}"
response = http.request(request)
puts response.read_body[
{
"verb": "play",
"url": "https://assets.example/hold-music.mp3"
},
{
"verb": "say",
"text": "You are caller number 3. Estimated wait is about 2 minutes."
}
]Authorizations
BearerApiKey
Dashboard JWT token from Clerk
Body
application/json
Response
200 - application/json
The jambonz verb array to run for this wait tick (hold music and/or an announcement). An empty array leaves the caller enqueued with no action this tick.
⌘I