curl --request GET \
--url https://api.withallo.com/v2/api/dialing-queues/current \
--header 'Authorization: <api-key>'import requests
url = "https://api.withallo.com/v2/api/dialing-queues/current"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.withallo.com/v2/api/dialing-queues/current', 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.withallo.com/v2/api/dialing-queues/current",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.withallo.com/v2/api/dialing-queues/current"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.withallo.com/v2/api/dialing-queues/current")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.withallo.com/v2/api/dialing-queues/current")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"number_to": "+12125550010",
"position": 0,
"created_at": "2026-04-30T10:00:00",
"updated_at": "2026-04-30T10:00:00",
"call_start_date": null,
"call_id": null,
"routing_result": null,
"sync_status": "NOT_SYNCED",
"call_status": "QUEUED"
}
],
"pagination": {
"page": 1,
"size": 20,
"total_count": 137,
"total_pages": 7,
"has_more": true
},
"queue": {
"id": "pdl_2xGh7kLmNpQr",
"name": "My Queue",
"creator_id": "usr_abc123",
"assignee_id": "usr_abc123",
"voicemail_handling": "NO_SKIP",
"do_not_disturb": "DISABLED",
"created_at": "2026-04-30T10:00:00",
"updated_at": "2026-04-30T10:00:00"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"retryable": true,
"request_id": "<string>",
"retry_after_seconds": 123
}
}{
"error": {
"type": "not_found_error",
"code": "ASSIGNEE_NOT_FOUND",
"message": "No team member found for the provided 'user_id' or 'email'.",
"retryable": false,
"suggestion": "List your teammates with GET /v2/api/users and use one of their ids as 'user_id', or pass a team-member email."
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"retryable": true,
"request_id": "<string>",
"retry_after_seconds": 123
}
}List current queue numbers
Returns the numbers in the Power Dialer queue currently assigned to the authenticated user, paginated and ordered by position ascending. data is the list of numbers (use page/size and read pagination to page through them); the queue key carries the queue’s metadata (id, name, settings) without its numbers. To target a teammate’s queue, pass either user_id or email as a query parameter (user_id wins when both are sent); the target must belong to the same team as the API key owner. When the user has no queue, the response is 200 with an empty data array, a zeroed pagination, and no queue (not a 404).
curl --request GET \
--url https://api.withallo.com/v2/api/dialing-queues/current \
--header 'Authorization: <api-key>'import requests
url = "https://api.withallo.com/v2/api/dialing-queues/current"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.withallo.com/v2/api/dialing-queues/current', 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.withallo.com/v2/api/dialing-queues/current",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.withallo.com/v2/api/dialing-queues/current"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.withallo.com/v2/api/dialing-queues/current")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.withallo.com/v2/api/dialing-queues/current")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"number_to": "+12125550010",
"position": 0,
"created_at": "2026-04-30T10:00:00",
"updated_at": "2026-04-30T10:00:00",
"call_start_date": null,
"call_id": null,
"routing_result": null,
"sync_status": "NOT_SYNCED",
"call_status": "QUEUED"
}
],
"pagination": {
"page": 1,
"size": 20,
"total_count": 137,
"total_pages": 7,
"has_more": true
},
"queue": {
"id": "pdl_2xGh7kLmNpQr",
"name": "My Queue",
"creator_id": "usr_abc123",
"assignee_id": "usr_abc123",
"voicemail_handling": "NO_SKIP",
"do_not_disturb": "DISABLED",
"created_at": "2026-04-30T10:00:00",
"updated_at": "2026-04-30T10:00:00"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"retryable": true,
"request_id": "<string>",
"retry_after_seconds": 123
}
}{
"error": {
"type": "not_found_error",
"code": "ASSIGNEE_NOT_FOUND",
"message": "No team member found for the provided 'user_id' or 'email'.",
"retryable": false,
"suggestion": "List your teammates with GET /v2/api/users and use one of their ids as 'user_id', or pass a team-member email."
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"retryable": true,
"request_id": "<string>",
"retry_after_seconds": 123
}
}Pagination
This endpoint follows the standard list contract:data is the array of the current queue’s numbers (ordered by position ascending), alongside a top-level pagination block.
page— 1-indexed page number (default1).size— numbers per page (default20, max100).- Read
pagination(total_count,total_pages,has_more) to page through the full list.
voicemail_handling, do_not_disturb, creator/assignee) is returned under the top-level queue key — without the numbers, since those are paginated in data. The queue field stays the same across pages.
When the user has no queue, the response is 200 with an empty data array, a zeroed pagination, and no queue key — not a 404.
Reading call_status
Each number in data carries a call_status field: one status per row, derived from the call placed for it. Use it instead of combining routing_result, not_reached_destination_reason and detected_outbound_voicemail yourself.
| Value | Meaning |
|---|---|
QUEUED | No call has been placed yet, or the call is still in progress. |
SKIPPED | The number was skipped in the Power Dialer and no call was placed. If a call is placed for it later, the status follows that call. |
VOICEMAIL | The call reached a voicemail box. |
CONNECTED | The call was answered at route level (routing_result is ANSWERED) no voicemail was detected and no not_reached_destination_reason is set. |
TRANSFERRED | The call was transferred. |
BUSY | The destination was busy. |
WRONG_NUMBER | The destination is not in service. |
NO_ANSWER | The call ended without an answer: declined, unavailable, ring timeout, network error, or any other final route status (failed, blocked, closed, handled by call flow). |
CONNECTED means the call was answered at route level, not that a conversation took place, so it can over-report real conversations.
A number whose call is in progress shows QUEUED. Counting QUEUED numbers can therefore differ from the remaining count while a call is running.
Targeting a teammate’s queue
By default, this returns the queue assigned to the API key owner. To inspect a teammate’s queue, pass eitheruser_id or email as a query parameter. The teammate must belong to the same team as the API key owner.
user_id— wins when both are provided. Resolve teammate ids viaGET /v2/api/users.email— used only whenuser_idis absent.
404 ASSIGNEE_NOT_FOUND — the same error is returned whether the user doesn’t exist or isn’t a teammate, so API consumers cannot enumerate users.Authorizations
Query Parameters
ID of a teammate to read the queue for. Resolve teammate ids via GET /v2/api/users. Wins over email when both are provided.
"usr-15BB68317A7F06F0C07A3BBD8F244102A6872220"
Email of a teammate to read the queue for. Ignored when user_id is also supplied.
1-indexed page number for the queue's numbers.
x >= 11
Number of numbers per page (max 100).
x <= 10020
Response
A page of the current queue's numbers, ordered by position. Empty data array with zeroed pagination when the user has no queue.
Was this page helpful?