curl --request PUT \
--url https://api.example.com/v1/models/{model_id}/categories/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Opening",
"description": "Evaluation criteria for call opening and greeting",
"max_score": 100,
"order_number": 1
}
'import requests
url = "https://api.example.com/v1/models/{model_id}/categories/{id}"
payload = {
"name": "Opening",
"description": "Evaluation criteria for call opening and greeting",
"max_score": 100,
"order_number": 1
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Opening',
description: 'Evaluation criteria for call opening and greeting',
max_score: 100,
order_number: 1
})
};
fetch('https://api.example.com/v1/models/{model_id}/categories/{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.example.com/v1/models/{model_id}/categories/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Opening',
'description' => 'Evaluation criteria for call opening and greeting',
'max_score' => 100,
'order_number' => 1
]),
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.example.com/v1/models/{model_id}/categories/{id}"
payload := strings.NewReader("{\n \"name\": \"Opening\",\n \"description\": \"Evaluation criteria for call opening and greeting\",\n \"max_score\": 100,\n \"order_number\": 1\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.example.com/v1/models/{model_id}/categories/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Opening\",\n \"description\": \"Evaluation criteria for call opening and greeting\",\n \"max_score\": 100,\n \"order_number\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/models/{model_id}/categories/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Opening\",\n \"description\": \"Evaluation criteria for call opening and greeting\",\n \"max_score\": 100,\n \"order_number\": 1\n}"
response = http.request(request)
puts response.read_body{
"id": 1,
"client_prompt_template_id": 1,
"name": "Opening",
"slug": "opening",
"description": "Evaluation criteria for call opening",
"max_score": 100,
"order_number": 1,
"enabled": true,
"created_at": "2026-01-11T10:00:00Z",
"created_by": "client_abc123"
}{
"code": "001-001-0001",
"message": "The requested resource was not found"
}{
"code": "001-001-0001",
"message": "The requested resource was not found"
}{
"code": "001-001-0001",
"message": "The requested resource was not found"
}{
"code": "001-001-0001",
"message": "The requested resource was not found"
}{
"code": "001-001-0001",
"message": "The requested resource was not found"
}Actualizar Categoría
Updates an existing category within an analysis model.
Important: Categories cannot be modified if the model has existing call analyses, as this would affect historical results.
Requires scope: write:model-category
curl --request PUT \
--url https://api.example.com/v1/models/{model_id}/categories/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Opening",
"description": "Evaluation criteria for call opening and greeting",
"max_score": 100,
"order_number": 1
}
'import requests
url = "https://api.example.com/v1/models/{model_id}/categories/{id}"
payload = {
"name": "Opening",
"description": "Evaluation criteria for call opening and greeting",
"max_score": 100,
"order_number": 1
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Opening',
description: 'Evaluation criteria for call opening and greeting',
max_score: 100,
order_number: 1
})
};
fetch('https://api.example.com/v1/models/{model_id}/categories/{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.example.com/v1/models/{model_id}/categories/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Opening',
'description' => 'Evaluation criteria for call opening and greeting',
'max_score' => 100,
'order_number' => 1
]),
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.example.com/v1/models/{model_id}/categories/{id}"
payload := strings.NewReader("{\n \"name\": \"Opening\",\n \"description\": \"Evaluation criteria for call opening and greeting\",\n \"max_score\": 100,\n \"order_number\": 1\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.example.com/v1/models/{model_id}/categories/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Opening\",\n \"description\": \"Evaluation criteria for call opening and greeting\",\n \"max_score\": 100,\n \"order_number\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/models/{model_id}/categories/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Opening\",\n \"description\": \"Evaluation criteria for call opening and greeting\",\n \"max_score\": 100,\n \"order_number\": 1\n}"
response = http.request(request)
puts response.read_body{
"id": 1,
"client_prompt_template_id": 1,
"name": "Opening",
"slug": "opening",
"description": "Evaluation criteria for call opening",
"max_score": 100,
"order_number": 1,
"enabled": true,
"created_at": "2026-01-11T10:00:00Z",
"created_by": "client_abc123"
}{
"code": "001-001-0001",
"message": "The requested resource was not found"
}{
"code": "001-001-0001",
"message": "The requested resource was not found"
}{
"code": "001-001-0001",
"message": "The requested resource was not found"
}{
"code": "001-001-0001",
"message": "The requested resource was not found"
}{
"code": "001-001-0001",
"message": "The requested resource was not found"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Request body for creating or updating a category.
Category name. Must be unique within the model.
1 - 128"Opening"
Detailed description of the category purpose
512"Evaluation criteria for call opening and greeting"
Maximum score achievable in this category
x >= 0100
Display order within the model. Lower numbers appear first.
x >= 01
Response
Successful Response
Response model for category.
Unique identifier
1
Parent model ID
1
Category name
"Opening"
Auto-generated slug from name (kebab-case). Used as variable name in JSON responses.
"opening"
Category description
Maximum score achievable in this category
100
Whether the category is active
Creation timestamp
Creator identifier
Display order within the model
Last update timestamp
Last updater identifier
