curl --request POST \
--url https://api.agents.slng.ai/v1/agents/{agent_id}/versions/{version_number}/restore/accept \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"acceptance_hash": "<string>",
"candidate_hash": "<string>",
"resource_hash": "<string>",
"restore_historical_name": false,
"dependency_hash": "<string>"
}
'import requests
url = "https://api.agents.slng.ai/v1/agents/{agent_id}/versions/{version_number}/restore/accept"
payload = {
"acceptance_hash": "<string>",
"candidate_hash": "<string>",
"resource_hash": "<string>",
"restore_historical_name": False,
"dependency_hash": "<string>"
}
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({
acceptance_hash: '<string>',
candidate_hash: '<string>',
resource_hash: '<string>',
restore_historical_name: false,
dependency_hash: '<string>'
})
};
fetch('https://api.agents.slng.ai/v1/agents/{agent_id}/versions/{version_number}/restore/accept', 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.agents.slng.ai/v1/agents/{agent_id}/versions/{version_number}/restore/accept",
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([
'acceptance_hash' => '<string>',
'candidate_hash' => '<string>',
'resource_hash' => '<string>',
'restore_historical_name' => false,
'dependency_hash' => '<string>'
]),
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.agents.slng.ai/v1/agents/{agent_id}/versions/{version_number}/restore/accept"
payload := strings.NewReader("{\n \"acceptance_hash\": \"<string>\",\n \"candidate_hash\": \"<string>\",\n \"resource_hash\": \"<string>\",\n \"restore_historical_name\": false,\n \"dependency_hash\": \"<string>\"\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.agents.slng.ai/v1/agents/{agent_id}/versions/{version_number}/restore/accept")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"acceptance_hash\": \"<string>\",\n \"candidate_hash\": \"<string>\",\n \"resource_hash\": \"<string>\",\n \"restore_historical_name\": false,\n \"dependency_hash\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agents.slng.ai/v1/agents/{agent_id}/versions/{version_number}/restore/accept")
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 \"acceptance_hash\": \"<string>\",\n \"candidate_hash\": \"<string>\",\n \"resource_hash\": \"<string>\",\n \"restore_historical_name\": false,\n \"dependency_hash\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "550e8400-e29b-41d4-a716-446655440000",
"organisation_id": "550e8400-e29b-41d4-a716-446655440000",
"name": "<string>",
"system_prompt": "<string>",
"greeting": "<string>",
"language": "<string>",
"region": "<string>",
"models": {
"stt": "slng/deepgram/nova:3-en",
"llm": "groq/openai/gpt-oss-120b",
"tts": "slng/deepgram/aura:2-en",
"tts_voice": "aura-2-thalia-en",
"stt_kwargs": {},
"llm_kwargs": {},
"tts_kwargs": {},
"fallbacks": {
"stt": [],
"llm": [],
"tts": []
},
"stt_final_timeout_s": 1,
"llm_first_token_timeout_s": 1,
"tts_first_audio_timeout_s": 1,
"failure_audio_enabled": true
},
"idle_nudges": {
"first_nudge_text": "<string>",
"second_nudge_text": "<string>",
"final_hangup_text": "<string>",
"enabled": true,
"first_nudge_delay_seconds": 15,
"second_nudge_delay_seconds": 30,
"hangup_delay_seconds": 15
},
"enable_interruptions": true,
"tools": [
{
"type": "template",
"id": "550e8400-e29b-41d4-a716-446655440000",
"prompt": "<string>",
"execution_policy": {
"pre_action_message": {
"enabled": false,
"text": "<string>"
}
}
}
],
"livekit_deployment": "<string>",
"template_variables": {},
"created_at": "2026-01-15T10:30:00Z",
"updated_at": "2026-01-15T10:30:00Z",
"inbound_greeting": "<string>",
"outbound_greeting": "<string>",
"models_validation_error": "<string>",
"llm_router_enabled": true,
"sip_inbound_trunk_id": "550e8400-e29b-41d4-a716-446655440000",
"sip_outbound_trunk_id": "550e8400-e29b-41d4-a716-446655440000",
"runtime_variables": [
{
"name": "<string>",
"description": "<string>"
}
],
"deleted_at": "2026-01-15T10:30:00Z"
}{
"detail": "Authentication is required for this endpoint."
}{
"detail": "You do not have access to this resource."
}{
"detail": "The requested resource was not found."
}{
"detail": "The agent, target, name policy, or dependency closure changed after preview."
}{
"detail": [
{
"loc": [
"body",
"language"
],
"msg": "Input should be a valid string",
"type": "string_type"
}
]
}{
"detail": "An unexpected internal error occurred."
}Accept version restore
Apply a previously previewed restore. The hashes bind the acceptance to the
exact preview that was reviewed; if the agent, its resources, or the name
policy changed since the preview, the request fails with a conflict and a new
preview is required. A successful restore records a new version with source
rollback.
curl --request POST \
--url https://api.agents.slng.ai/v1/agents/{agent_id}/versions/{version_number}/restore/accept \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"acceptance_hash": "<string>",
"candidate_hash": "<string>",
"resource_hash": "<string>",
"restore_historical_name": false,
"dependency_hash": "<string>"
}
'import requests
url = "https://api.agents.slng.ai/v1/agents/{agent_id}/versions/{version_number}/restore/accept"
payload = {
"acceptance_hash": "<string>",
"candidate_hash": "<string>",
"resource_hash": "<string>",
"restore_historical_name": False,
"dependency_hash": "<string>"
}
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({
acceptance_hash: '<string>',
candidate_hash: '<string>',
resource_hash: '<string>',
restore_historical_name: false,
dependency_hash: '<string>'
})
};
fetch('https://api.agents.slng.ai/v1/agents/{agent_id}/versions/{version_number}/restore/accept', 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.agents.slng.ai/v1/agents/{agent_id}/versions/{version_number}/restore/accept",
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([
'acceptance_hash' => '<string>',
'candidate_hash' => '<string>',
'resource_hash' => '<string>',
'restore_historical_name' => false,
'dependency_hash' => '<string>'
]),
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.agents.slng.ai/v1/agents/{agent_id}/versions/{version_number}/restore/accept"
payload := strings.NewReader("{\n \"acceptance_hash\": \"<string>\",\n \"candidate_hash\": \"<string>\",\n \"resource_hash\": \"<string>\",\n \"restore_historical_name\": false,\n \"dependency_hash\": \"<string>\"\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.agents.slng.ai/v1/agents/{agent_id}/versions/{version_number}/restore/accept")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"acceptance_hash\": \"<string>\",\n \"candidate_hash\": \"<string>\",\n \"resource_hash\": \"<string>\",\n \"restore_historical_name\": false,\n \"dependency_hash\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agents.slng.ai/v1/agents/{agent_id}/versions/{version_number}/restore/accept")
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 \"acceptance_hash\": \"<string>\",\n \"candidate_hash\": \"<string>\",\n \"resource_hash\": \"<string>\",\n \"restore_historical_name\": false,\n \"dependency_hash\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "550e8400-e29b-41d4-a716-446655440000",
"organisation_id": "550e8400-e29b-41d4-a716-446655440000",
"name": "<string>",
"system_prompt": "<string>",
"greeting": "<string>",
"language": "<string>",
"region": "<string>",
"models": {
"stt": "slng/deepgram/nova:3-en",
"llm": "groq/openai/gpt-oss-120b",
"tts": "slng/deepgram/aura:2-en",
"tts_voice": "aura-2-thalia-en",
"stt_kwargs": {},
"llm_kwargs": {},
"tts_kwargs": {},
"fallbacks": {
"stt": [],
"llm": [],
"tts": []
},
"stt_final_timeout_s": 1,
"llm_first_token_timeout_s": 1,
"tts_first_audio_timeout_s": 1,
"failure_audio_enabled": true
},
"idle_nudges": {
"first_nudge_text": "<string>",
"second_nudge_text": "<string>",
"final_hangup_text": "<string>",
"enabled": true,
"first_nudge_delay_seconds": 15,
"second_nudge_delay_seconds": 30,
"hangup_delay_seconds": 15
},
"enable_interruptions": true,
"tools": [
{
"type": "template",
"id": "550e8400-e29b-41d4-a716-446655440000",
"prompt": "<string>",
"execution_policy": {
"pre_action_message": {
"enabled": false,
"text": "<string>"
}
}
}
],
"livekit_deployment": "<string>",
"template_variables": {},
"created_at": "2026-01-15T10:30:00Z",
"updated_at": "2026-01-15T10:30:00Z",
"inbound_greeting": "<string>",
"outbound_greeting": "<string>",
"models_validation_error": "<string>",
"llm_router_enabled": true,
"sip_inbound_trunk_id": "550e8400-e29b-41d4-a716-446655440000",
"sip_outbound_trunk_id": "550e8400-e29b-41d4-a716-446655440000",
"runtime_variables": [
{
"name": "<string>",
"description": "<string>"
}
],
"deleted_at": "2026-01-15T10:30:00Z"
}{
"detail": "Authentication is required for this endpoint."
}{
"detail": "You do not have access to this resource."
}{
"detail": "The requested resource was not found."
}{
"detail": "The agent, target, name policy, or dependency closure changed after preview."
}{
"detail": [
{
"loc": [
"body",
"language"
],
"msg": "Input should be a valid string",
"type": "string_type"
}
]
}{
"detail": "An unexpected internal error occurred."
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Voice agent ID.
"550e8400-e29b-41d4-a716-446655440000"
Agent config version number.
x >= 1Body
The acceptance_hash returned by the restore preview.
^[0-9a-f]{64}$The preparation.candidate_hash returned by the restore preview.
^[0-9a-f]{64}$The preparation.resource_hash returned by the restore preview.
^[0-9a-f]{64}$Must match the value used for the restore preview.
The preparation.dependency_hash returned by the restore preview, when present.
^[0-9a-f]{64}$Response
Restored agent.
"550e8400-e29b-41d4-a716-446655440000"
"550e8400-e29b-41d4-a716-446655440000"
Model configuration for the agent runtime (STT + LLM + TTS).
Show child attributes
Show child attributes
Optional silence recovery behavior. The runtime can send two follow-up nudges, then speak a final message and hang up.
Show child attributes
Show child attributes
- Template tool
- Utility tool
- Webhook
- Human transfer
Show child attributes
Show child attributes
Name of the runtime deployment serving this agent.
Show child attributes
Show child attributes
"2026-01-15T10:30:00Z"
"2026-01-15T10:30:00Z"
Set when the stored models configuration no longer validates against the
current rules. In that case models is returned as stored, without
validation.
Whether the agent's LLM traffic is routed through SLNG's managed LLM routing layer.
"550e8400-e29b-41d4-a716-446655440000"
"550e8400-e29b-41d4-a716-446655440000"
Show child attributes
Show child attributes
"2026-01-15T10:30:00Z"
Was this page helpful?