메뉴얼
메뉴얼 상세 조회
인증된 조직의 메뉴얼 하나를 조회합니다. 삭제되었거나 없거나 다른 조직에 속한 메뉴얼 ID는 404 MANUAL_NOT_FOUND를 반환합니다.
GET
/
manuals
/
{manual_id}
메뉴얼 상세 조회
curl --request GET \
--url https://client-api.tryvox.co/v3/manuals/{manual_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://client-api.tryvox.co/v3/manuals/{manual_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://client-api.tryvox.co/v3/manuals/{manual_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://client-api.tryvox.co/v3/manuals/{manual_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://client-api.tryvox.co/v3/manuals/{manual_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://client-api.tryvox.co/v3/manuals/{manual_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://client-api.tryvox.co/v3/manuals/{manual_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>",
"trigger": "<string>",
"content": "<string>",
"tool_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"built_in_tools": [
{
"toolType": "end_call",
"speakDuringExecution": {
"enabled": false,
"messages": [
"<string>"
]
},
"allowInterruptionDuringExecution": false,
"responseMode": "wait",
"name": "end_call",
"description": "<string>"
}
],
"linked_manual_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"config": {
"tool_call_sound": "none"
},
"created_at": 123,
"updated_at": 123
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Request validation failed.",
"details": {
"field": "name",
"reason": "must not be blank"
}
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Authentication is required.",
"details": {}
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Permission denied.",
"details": {}
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Resource not found.",
"details": {
"resource": "agent"
}
}
}{
"error": {
"code": "CONFLICT",
"message": "The requested operation conflicts with current state.",
"details": {
"current_status": "draft"
}
}
}{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Too many requests.",
"details": {
"limit": 10,
"window_seconds": 1,
"scope": "user"
}
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error.",
"details": {}
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service temporarily unavailable.",
"details": {}
}
}Authorizations
조직 API 키를 Authorization: Bearer <token> 형식으로 보냅니다.
Path Parameters
메뉴얼 UUID입니다.
Response
성공 응답
manual 단건 응답(생성·조회·수정). organization_id·is_deleted 미노출.
메뉴얼 UUID입니다.
메뉴얼 이름입니다.
트리거 문구입니다.
참조 토큰을 원문 그대로 유지한 메뉴얼 지침입니다.
연결된 custom 도구 UUID입니다. content의 @tool:<uuid> 참조에서 계산합니다.
built_in_tools
(EndCallTool · object | TransferCallTool · object | TransferAgentTool · object | SendSmsTool · object | SendDtmfTool · object | SearchAddressTool · object | SkillTool · object)[]
required
메뉴얼에 속한 built-in 도구 설정입니다.
통화 종료 built-in 도구 설정입니다.
- EndCallTool
- TransferCallTool
- TransferAgentTool
- SendSmsTool
- SendDtmfTool
- SearchAddressTool
- SkillTool
Show child attributes
Show child attributes
연결된 메뉴얼 UUID입니다. content의 @manual:<uuid> 참조에서 계산합니다.
메뉴얼 실행 옵션입니다. 응답에 항상 포함하며, 설정하지 않은 옵션은 null로 반환합니다.
Show child attributes
Show child attributes
리소스 생성 시각입니다. unix milliseconds 형식입니다.
리소스 마지막 수정 시각입니다. unix milliseconds 형식입니다.
Was this page helpful?
⌘I
메뉴얼 상세 조회
curl --request GET \
--url https://client-api.tryvox.co/v3/manuals/{manual_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://client-api.tryvox.co/v3/manuals/{manual_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://client-api.tryvox.co/v3/manuals/{manual_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://client-api.tryvox.co/v3/manuals/{manual_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://client-api.tryvox.co/v3/manuals/{manual_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://client-api.tryvox.co/v3/manuals/{manual_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://client-api.tryvox.co/v3/manuals/{manual_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>",
"trigger": "<string>",
"content": "<string>",
"tool_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"built_in_tools": [
{
"toolType": "end_call",
"speakDuringExecution": {
"enabled": false,
"messages": [
"<string>"
]
},
"allowInterruptionDuringExecution": false,
"responseMode": "wait",
"name": "end_call",
"description": "<string>"
}
],
"linked_manual_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"config": {
"tool_call_sound": "none"
},
"created_at": 123,
"updated_at": 123
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Request validation failed.",
"details": {
"field": "name",
"reason": "must not be blank"
}
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Authentication is required.",
"details": {}
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Permission denied.",
"details": {}
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Resource not found.",
"details": {
"resource": "agent"
}
}
}{
"error": {
"code": "CONFLICT",
"message": "The requested operation conflicts with current state.",
"details": {
"current_status": "draft"
}
}
}{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Too many requests.",
"details": {
"limit": 10,
"window_seconds": 1,
"scope": "user"
}
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error.",
"details": {}
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service temporarily unavailable.",
"details": {}
}
}