curl --request PUT \
--url https://api.example.com/v1/models/{model_id}/metadata/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"key": "campaign",
"readable_name": "Campaign Name",
"type": "STRING",
"grouping_field": true
}
'import requests
url = "https://api.example.com/v1/models/{model_id}/metadata/{id}"
payload = {
"key": "campaign",
"readable_name": "Campaign Name",
"type": "STRING",
"grouping_field": True
}
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({
key: 'campaign',
readable_name: 'Campaign Name',
type: 'STRING',
grouping_field: true
})
};
fetch('https://api.example.com/v1/models/{model_id}/metadata/{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}/metadata/{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([
'key' => 'campaign',
'readable_name' => 'Campaign Name',
'type' => 'STRING',
'grouping_field' => true
]),
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}/metadata/{id}"
payload := strings.NewReader("{\n \"key\": \"campaign\",\n \"readable_name\": \"Campaign Name\",\n \"type\": \"STRING\",\n \"grouping_field\": true\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}/metadata/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"key\": \"campaign\",\n \"readable_name\": \"Campaign Name\",\n \"type\": \"STRING\",\n \"grouping_field\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/models/{model_id}/metadata/{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 \"key\": \"campaign\",\n \"readable_name\": \"Campaign Name\",\n \"type\": \"STRING\",\n \"grouping_field\": true\n}"
response = http.request(request)
puts response.read_body{
"id": 1,
"client_prompt_template_id": 1,
"key": "campaign",
"readable_name": "Campaign Name",
"type": "STRING",
"grouping_field": true,
"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 Metadata
Updates an existing metadata field within an analysis model.
Important: Metadata cannot be modified if the model has existing call analyses, as this would affect historical results.
Requires scope: write:model-metadata
curl --request PUT \
--url https://api.example.com/v1/models/{model_id}/metadata/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"key": "campaign",
"readable_name": "Campaign Name",
"type": "STRING",
"grouping_field": true
}
'import requests
url = "https://api.example.com/v1/models/{model_id}/metadata/{id}"
payload = {
"key": "campaign",
"readable_name": "Campaign Name",
"type": "STRING",
"grouping_field": True
}
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({
key: 'campaign',
readable_name: 'Campaign Name',
type: 'STRING',
grouping_field: true
})
};
fetch('https://api.example.com/v1/models/{model_id}/metadata/{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}/metadata/{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([
'key' => 'campaign',
'readable_name' => 'Campaign Name',
'type' => 'STRING',
'grouping_field' => true
]),
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}/metadata/{id}"
payload := strings.NewReader("{\n \"key\": \"campaign\",\n \"readable_name\": \"Campaign Name\",\n \"type\": \"STRING\",\n \"grouping_field\": true\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}/metadata/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"key\": \"campaign\",\n \"readable_name\": \"Campaign Name\",\n \"type\": \"STRING\",\n \"grouping_field\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/models/{model_id}/metadata/{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 \"key\": \"campaign\",\n \"readable_name\": \"Campaign Name\",\n \"type\": \"STRING\",\n \"grouping_field\": true\n}"
response = http.request(request)
puts response.read_body{
"id": 1,
"client_prompt_template_id": 1,
"key": "campaign",
"readable_name": "Campaign Name",
"type": "STRING",
"grouping_field": true,
"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 metadata field.
Unique identifier key for this metadata within the model
1 - 128"campaign"
Human-readable display name for UI presentation
1 - 128"Campaign Name"
Data type: STRING, INTEGER, DECIMAL, BOOLEAN, DATE, TIME, or DATETIME
STRING, INTEGER, DECIMAL, BOOLEAN, DATE, TIME, DATETIME Whether this field is used to group data in dashboard views
false
Response
Successful Response
Response model for metadata.
Unique identifier
1
Parent model ID
1
Metadata key
"campaign"
Human-readable display name
"Campaign Name"
Data type
STRING, INTEGER, DECIMAL, BOOLEAN, DATE, TIME, DATETIME Whether used for dashboard grouping
false
Whether the metadata is active
Creation timestamp
Creator identifier
Last update timestamp
Last updater identifier
