curl --request GET \
--url https://api.ryvo.so/v1/agents/{id}/versions/{version} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ryvo.so/v1/agents/{id}/versions/{version}"
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/agents/{id}/versions/{version}', 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/agents/{id}/versions/{version}",
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/agents/{id}/versions/{version}"
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/agents/{id}/versions/{version}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ryvo.so/v1/agents/{id}/versions/{version}")
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{
"version": 3,
"created_at": "2023-11-07T05:31:56Z",
"system_prompt": "You are the receptionist of Acme Dental. Book appointments and answer questions about opening hours.",
"first_message": "Hi, this is Acme Dental. How can I help you?",
"language": "es-MX",
"llm": {
"provider": "openai",
"model": "gpt-4o-mini",
"temperature": 0.7,
"routing": "auto",
"fallback": [
{
"provider": "<string>",
"model": "<string>"
}
],
"endpoint": "<string>"
},
"stt": {
"provider": "deepgram",
"model": "nova-3",
"language": "<string>",
"settings": {},
"sample_rate": 123
},
"voice": {
"provider": "elevenlabs",
"model": "eleven_flash_v2_5",
"voice_id": "<string>",
"fallback_voices": {},
"language": "<string>",
"settings": {},
"sample_rate": 123
},
"knowledge_base": {
"doc_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"folder_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"mode": "off",
"top_k": 2
},
"dynamic_variables": {
"lead_name": {
"default": "there"
}
},
"conversation": {
"max_duration_s": 43200,
"recording": {
"enabled": true,
"consent_text": "<string>"
},
"turns": {},
"audio": {},
"pronunciation": [
{
"term": "<string>",
"say": "<string>",
"match_case": true
}
],
"calling_hours": {
"timezone": "<string>",
"days": [
123
],
"start": "<string>",
"end": "<string>"
}
},
"tool_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}{
"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": "unsupported_runtime",
"message": "This agent runs on the ElevenLabs runtime; version history is only available for Engine agents.",
"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"
}Get an agent version
Engine only. The full definition saved as that version.
curl --request GET \
--url https://api.ryvo.so/v1/agents/{id}/versions/{version} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ryvo.so/v1/agents/{id}/versions/{version}"
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/agents/{id}/versions/{version}', 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/agents/{id}/versions/{version}",
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/agents/{id}/versions/{version}"
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/agents/{id}/versions/{version}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ryvo.so/v1/agents/{id}/versions/{version}")
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{
"version": 3,
"created_at": "2023-11-07T05:31:56Z",
"system_prompt": "You are the receptionist of Acme Dental. Book appointments and answer questions about opening hours.",
"first_message": "Hi, this is Acme Dental. How can I help you?",
"language": "es-MX",
"llm": {
"provider": "openai",
"model": "gpt-4o-mini",
"temperature": 0.7,
"routing": "auto",
"fallback": [
{
"provider": "<string>",
"model": "<string>"
}
],
"endpoint": "<string>"
},
"stt": {
"provider": "deepgram",
"model": "nova-3",
"language": "<string>",
"settings": {},
"sample_rate": 123
},
"voice": {
"provider": "elevenlabs",
"model": "eleven_flash_v2_5",
"voice_id": "<string>",
"fallback_voices": {},
"language": "<string>",
"settings": {},
"sample_rate": 123
},
"knowledge_base": {
"doc_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"folder_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"mode": "off",
"top_k": 2
},
"dynamic_variables": {
"lead_name": {
"default": "there"
}
},
"conversation": {
"max_duration_s": 43200,
"recording": {
"enabled": true,
"consent_text": "<string>"
},
"turns": {},
"audio": {},
"pronunciation": [
{
"term": "<string>",
"say": "<string>",
"match_case": true
}
],
"calling_hours": {
"timezone": "<string>",
"days": [
123
],
"start": "<string>",
"end": "<string>"
}
},
"tool_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}{
"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": "unsupported_runtime",
"message": "This agent runs on the ElevenLabs runtime; version history is only available for Engine agents.",
"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"
}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 agent.
"4d0f3c2a-6b7e-4a1c-9f2d-1e2b3c4d5e6f"
The version number (1 or higher). A malformed or unknown version is 404.
x >= 13
Respuesta
The version.
3
"You are the receptionist of Acme Dental. Book appointments and answer questions about opening hours."
"Hi, this is Acme Dental. How can I help you?"
"es-MX"
Which model answers. provider and model are validated against the catalog and your plan when saving (see GET /v1/models).
Show child attributes
Show child attributes
Speech recognition. settings and sample_rate are provider-specific and validated when saving.
Show child attributes
Show child attributes
Text to speech. A voice_id is required to publish a voice agent.
Show child attributes
Show child attributes
Which documents and folders the agent consults. Ownership is verified when saving.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
{ "lead_name": { "default": "there" } }
Session limits, recording, turn policy, audio, pronunciation and calling hours. Unknown keys are kept.
Show child attributes
Show child attributes

