curl --request GET \
--url https://apiv2.vodex.ai/v1/batches/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://apiv2.vodex.ai/v1/batches/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://apiv2.vodex.ai/v1/batches/{id}', 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://apiv2.vodex.ai/v1/batches/{id}",
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: Bearer <token>"
],
]);
$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://apiv2.vodex.ai/v1/batches/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://apiv2.vodex.ai/v1/batches/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://apiv2.vodex.ai/v1/batches/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"status": "running",
"runNo": 123,
"assistantId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"concurrency": 123,
"retry": {
"on": [
"<string>"
],
"attempts": 5,
"backoffMinutes": 5040.5
},
"window": {
"timezone": "America/New_York",
"start": "09:00",
"end": "20:00",
"days": [
3
]
},
"suppress": [
"<string>"
],
"createdAt": "2023-11-07T05:31:56Z",
"startedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"counts": {},
"countsScope": 123,
"run": 123,
"endReasons": {},
"runRows": 123,
"runAttempts": 123,
"from": {
"strategy": "fixed",
"numbers": [
{
"e164": "<string>",
"weight": 123,
"callsPlaced": 123,
"nextAvailableAt": "2023-11-07T05:31:56Z",
"eligible": true,
"cooldownUntil": "2023-11-07T05:31:56Z",
"cooldownReason": "<string>"
}
]
},
"runs": [
{
"runNo": 123,
"attempts": 123,
"startedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z"
}
],
"pacing": {
"inflight": 123,
"maxDialsPerMinute": 123,
"limitedBy": "none",
"tenantCap": 123,
"tenantInflight": 123
}
}{
"error": "not found"
}{
"error": "not found"
}Fetch a batch
Counts, the number pool, every run, and why the batch is pacing the way it is.
pacing.limitedBy answers “why is my batch slow” without a human:
tenant_cap, concurrency, number_pool, window, or none. A
customer whose batch says concurrency 20 and is somehow running six at a
time is usually looking at five other batches using the rest.
?run= scopes the outcome histogram only. It cannot scope counts:
rows hold current state, so after a restart their statuses describe the
newest run and nothing can make them describe an older one — which is
what countsScope says out loud.
curl --request GET \
--url https://apiv2.vodex.ai/v1/batches/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://apiv2.vodex.ai/v1/batches/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://apiv2.vodex.ai/v1/batches/{id}', 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://apiv2.vodex.ai/v1/batches/{id}",
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: Bearer <token>"
],
]);
$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://apiv2.vodex.ai/v1/batches/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://apiv2.vodex.ai/v1/batches/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://apiv2.vodex.ai/v1/batches/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"status": "running",
"runNo": 123,
"assistantId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"concurrency": 123,
"retry": {
"on": [
"<string>"
],
"attempts": 5,
"backoffMinutes": 5040.5
},
"window": {
"timezone": "America/New_York",
"start": "09:00",
"end": "20:00",
"days": [
3
]
},
"suppress": [
"<string>"
],
"createdAt": "2023-11-07T05:31:56Z",
"startedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"counts": {},
"countsScope": 123,
"run": 123,
"endReasons": {},
"runRows": 123,
"runAttempts": 123,
"from": {
"strategy": "fixed",
"numbers": [
{
"e164": "<string>",
"weight": 123,
"callsPlaced": 123,
"nextAvailableAt": "2023-11-07T05:31:56Z",
"eligible": true,
"cooldownUntil": "2023-11-07T05:31:56Z",
"cooldownReason": "<string>"
}
]
},
"runs": [
{
"runNo": 123,
"attempts": 123,
"startedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z"
}
],
"pacing": {
"inflight": 123,
"maxDialsPerMinute": 123,
"limitedBy": "none",
"tenantCap": 123,
"tenantInflight": 123
}
}{
"error": "not found"
}{
"error": "not found"
}Authorizations
Tenant API key (vdx_live_…) as Authorization: Bearer.
Path Parameters
Query Parameters
Historic run number for endReasons.
Response
The batch.
running, paused, completed, cancelled, failed The assistant's uuid, shown on its configure page in the console. Names and slugs are not accepted.
Show child attributes
Show child attributes
When this batch may dial — outside it, rows wait rather than fail.
Show child attributes
Show child attributes
Row counts by status, plus total.
Show child attributes
Show child attributes
The run counts describes — always the current one.
The run endReasons describes.
Show child attributes
Show child attributes
Present only for a historic ?run=.
Present only for a historic ?run=.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Why the batch is going as fast (or as slowly) as it is.
Show child attributes
Show child attributes