curl --request GET \
--url https://api.ryvo.so/v1/batch-calls/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ryvo.so/v1/batch-calls/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.ryvo.so/v1/batch-calls/{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://api.ryvo.so/v1/batch-calls/{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://api.ryvo.so/v1/batch-calls/{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://api.ryvo.so/v1/batch-calls/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ryvo.so/v1/batch-calls/{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": "2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f",
"provider_batch_id": "btcal_01abcdef",
"name": "September follow-ups",
"status": "in_progress",
"agent": {
"id": "4d0f3c2a-6b7e-4a1c-9f2d-1e2b3c4d5e6f",
"name": "Sales assistant"
},
"provider_agent_id": "agent_8801kpabc123",
"phone_number_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"provider_phone_number_id": "phnum_01abcdef",
"scheduled_at": "2023-11-07T05:31:56Z",
"totals": {
"scheduled": 120,
"dispatched": 45,
"finished": 40
},
"created_at": "2023-11-07T05:31:56Z",
"last_synced_at": "2023-11-07T05:31:56Z",
"retry_count": 123,
"concurrency": 123,
"recipients": [
{
"id": "<string>",
"phone_number": "+5215555550100",
"status": "completed",
"conversation_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
]
}{
"error": "unauthorized",
"message": "Invalid or revoked API key.",
"request_id": "f0c0a9d2-8b1e-4d8a-9c2f-6e5b7a1d2c3b"
}{
"error": "insufficient_scope",
"message": "This API key does not have the agents:write scope.",
"request_id": "f0c0a9d2-8b1e-4d8a-9c2f-6e5b7a1d2c3b"
}{
"error": "not_found",
"message": "Resource not found.",
"request_id": "f0c0a9d2-8b1e-4d8a-9c2f-6e5b7a1d2c3b"
}{
"error": "rate_limit_exceeded",
"message": "Rate limit exceeded. Retry in 32s (see the Retry-After header).",
"request_id": "f0c0a9d2-8b1e-4d8a-9c2f-6e5b7a1d2c3b"
}{
"error": "upstream_error",
"message": "Upstream provider unreachable.",
"request_id": "f0c0a9d2-8b1e-4d8a-9c2f-6e5b7a1d2c3b"
}Get a batch call
The batch as the voice provider has it right now, with every
recipient and its status. Reading it also refreshes Ryvo’s mirror.
If the provider cannot be reached the request fails with 502
rather than returning stale data.
curl --request GET \
--url https://api.ryvo.so/v1/batch-calls/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ryvo.so/v1/batch-calls/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.ryvo.so/v1/batch-calls/{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://api.ryvo.so/v1/batch-calls/{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://api.ryvo.so/v1/batch-calls/{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://api.ryvo.so/v1/batch-calls/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ryvo.so/v1/batch-calls/{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": "2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f",
"provider_batch_id": "btcal_01abcdef",
"name": "September follow-ups",
"status": "in_progress",
"agent": {
"id": "4d0f3c2a-6b7e-4a1c-9f2d-1e2b3c4d5e6f",
"name": "Sales assistant"
},
"provider_agent_id": "agent_8801kpabc123",
"phone_number_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"provider_phone_number_id": "phnum_01abcdef",
"scheduled_at": "2023-11-07T05:31:56Z",
"totals": {
"scheduled": 120,
"dispatched": 45,
"finished": 40
},
"created_at": "2023-11-07T05:31:56Z",
"last_synced_at": "2023-11-07T05:31:56Z",
"retry_count": 123,
"concurrency": 123,
"recipients": [
{
"id": "<string>",
"phone_number": "+5215555550100",
"status": "completed",
"conversation_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
]
}{
"error": "unauthorized",
"message": "Invalid or revoked API key.",
"request_id": "f0c0a9d2-8b1e-4d8a-9c2f-6e5b7a1d2c3b"
}{
"error": "insufficient_scope",
"message": "This API key does not have the agents:write scope.",
"request_id": "f0c0a9d2-8b1e-4d8a-9c2f-6e5b7a1d2c3b"
}{
"error": "not_found",
"message": "Resource not found.",
"request_id": "f0c0a9d2-8b1e-4d8a-9c2f-6e5b7a1d2c3b"
}{
"error": "rate_limit_exceeded",
"message": "Rate limit exceeded. Retry in 32s (see the Retry-After header).",
"request_id": "f0c0a9d2-8b1e-4d8a-9c2f-6e5b7a1d2c3b"
}{
"error": "upstream_error",
"message": "Upstream provider unreachable.",
"request_id": "f0c0a9d2-8b1e-4d8a-9c2f-6e5b7a1d2c3b"
}Autorizaciones
A Bearer token. Create keys in the portal under Settings > API keys
(https://app.ryvo.so/developers). The token has the form
ryvo_live_<64 hex characters> and is shown once.
Header: Authorization: Bearer ryvo_live_...
Parámetros de ruta
The Ryvo uuid of the batch call.
Respuesta
The batch with its recipients.
null only if the provider accepted the batch but Ryvo could not record it; use provider_batch_id to find it later.
"2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f"
"btcal_01abcdef"
"September follow-ups"
pending, in_progress, completed, cancelled, failed "in_progress"
Show child attributes
Show child attributes
"agent_8801kpabc123"
"phnum_01abcdef"
Show child attributes
Show child attributes
Show child attributes
Show child attributes

