curl --request PUT \
--url https://api.traceloop.com/v2/auto-monitor-setups/{external_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"evaluators": [
"hallucination",
"toxicity"
],
"evaluator_configs": [
{
"slug": "char-count",
"scope": "session"
},
{
"slug": "toxicity",
"scope": "trace"
},
{
"slug": "pii"
}
],
"selector": {}
}
'import requests
url = "https://api.traceloop.com/v2/auto-monitor-setups/{external_id}"
payload = {
"evaluators": ["hallucination", "toxicity"],
"evaluator_configs": [{
"slug": "char-count",
"scope": "session"
}, {
"slug": "toxicity",
"scope": "trace"
}, { "slug": "pii" }],
"selector": {}
}
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({
evaluators: ['hallucination', 'toxicity'],
evaluator_configs: [
{slug: 'char-count', scope: 'session'},
{slug: 'toxicity', scope: 'trace'},
{slug: 'pii'}
],
selector: {}
})
};
fetch('https://api.traceloop.com/v2/auto-monitor-setups/{external_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.traceloop.com/v2/auto-monitor-setups/{external_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([
'evaluators' => [
'hallucination',
'toxicity'
],
'evaluator_configs' => [
[
'slug' => 'char-count',
'scope' => 'session'
],
[
'slug' => 'toxicity',
'scope' => 'trace'
],
[
'slug' => 'pii'
]
],
'selector' => [
]
]),
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.traceloop.com/v2/auto-monitor-setups/{external_id}"
payload := strings.NewReader("{\n \"evaluators\": [\n \"hallucination\",\n \"toxicity\"\n ],\n \"evaluator_configs\": [\n {\n \"slug\": \"char-count\",\n \"scope\": \"session\"\n },\n {\n \"slug\": \"toxicity\",\n \"scope\": \"trace\"\n },\n {\n \"slug\": \"pii\"\n }\n ],\n \"selector\": {}\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.traceloop.com/v2/auto-monitor-setups/{external_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"evaluators\": [\n \"hallucination\",\n \"toxicity\"\n ],\n \"evaluator_configs\": [\n {\n \"slug\": \"char-count\",\n \"scope\": \"session\"\n },\n {\n \"slug\": \"toxicity\",\n \"scope\": \"trace\"\n },\n {\n \"slug\": \"pii\"\n }\n ],\n \"selector\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.traceloop.com/v2/auto-monitor-setups/{external_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 \"evaluators\": [\n \"hallucination\",\n \"toxicity\"\n ],\n \"evaluator_configs\": [\n {\n \"slug\": \"char-count\",\n \"scope\": \"session\"\n },\n {\n \"slug\": \"toxicity\",\n \"scope\": \"trace\"\n },\n {\n \"slug\": \"pii\"\n }\n ],\n \"selector\": {}\n}"
response = http.request(request)
puts response.read_body{
"created_at": "<string>",
"env_project_id": "<string>",
"evaluators": [
{
"binding_id": "<string>",
"error_message": "<string>",
"evaluator_id": "<string>",
"evaluator_type": "<string>",
"input_schema": [
{
"name": "<string>",
"type": "string",
"description": "<string>",
"enum_values": [
"<string>"
],
"label": "<string>"
}
],
"output_schema": [
{
"name": "<string>",
"type": "string",
"description": "<string>",
"enum_values": [
"<string>"
],
"label": "<string>"
}
],
"processed_at": "<string>",
"scope": "trace",
"status": "<string>"
}
],
"external_id": "<string>",
"id": "<string>",
"init_rules": [
{
"key": "<string>",
"op": "equals",
"source": "<string>",
"value": "<string>",
"value_type": "<string>"
}
],
"org_id": "<string>",
"project_id": "<string>",
"status": "<string>",
"updated_at": "<string>"
}{
"error": "error message"
}{
"error": "error message"
}{
"error": "error message"
}Update an auto monitor setup by external ID
Update an existing auto monitor setup by its external ID
curl --request PUT \
--url https://api.traceloop.com/v2/auto-monitor-setups/{external_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"evaluators": [
"hallucination",
"toxicity"
],
"evaluator_configs": [
{
"slug": "char-count",
"scope": "session"
},
{
"slug": "toxicity",
"scope": "trace"
},
{
"slug": "pii"
}
],
"selector": {}
}
'import requests
url = "https://api.traceloop.com/v2/auto-monitor-setups/{external_id}"
payload = {
"evaluators": ["hallucination", "toxicity"],
"evaluator_configs": [{
"slug": "char-count",
"scope": "session"
}, {
"slug": "toxicity",
"scope": "trace"
}, { "slug": "pii" }],
"selector": {}
}
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({
evaluators: ['hallucination', 'toxicity'],
evaluator_configs: [
{slug: 'char-count', scope: 'session'},
{slug: 'toxicity', scope: 'trace'},
{slug: 'pii'}
],
selector: {}
})
};
fetch('https://api.traceloop.com/v2/auto-monitor-setups/{external_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.traceloop.com/v2/auto-monitor-setups/{external_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([
'evaluators' => [
'hallucination',
'toxicity'
],
'evaluator_configs' => [
[
'slug' => 'char-count',
'scope' => 'session'
],
[
'slug' => 'toxicity',
'scope' => 'trace'
],
[
'slug' => 'pii'
]
],
'selector' => [
]
]),
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.traceloop.com/v2/auto-monitor-setups/{external_id}"
payload := strings.NewReader("{\n \"evaluators\": [\n \"hallucination\",\n \"toxicity\"\n ],\n \"evaluator_configs\": [\n {\n \"slug\": \"char-count\",\n \"scope\": \"session\"\n },\n {\n \"slug\": \"toxicity\",\n \"scope\": \"trace\"\n },\n {\n \"slug\": \"pii\"\n }\n ],\n \"selector\": {}\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.traceloop.com/v2/auto-monitor-setups/{external_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"evaluators\": [\n \"hallucination\",\n \"toxicity\"\n ],\n \"evaluator_configs\": [\n {\n \"slug\": \"char-count\",\n \"scope\": \"session\"\n },\n {\n \"slug\": \"toxicity\",\n \"scope\": \"trace\"\n },\n {\n \"slug\": \"pii\"\n }\n ],\n \"selector\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.traceloop.com/v2/auto-monitor-setups/{external_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 \"evaluators\": [\n \"hallucination\",\n \"toxicity\"\n ],\n \"evaluator_configs\": [\n {\n \"slug\": \"char-count\",\n \"scope\": \"session\"\n },\n {\n \"slug\": \"toxicity\",\n \"scope\": \"trace\"\n },\n {\n \"slug\": \"pii\"\n }\n ],\n \"selector\": {}\n}"
response = http.request(request)
puts response.read_body{
"created_at": "<string>",
"env_project_id": "<string>",
"evaluators": [
{
"binding_id": "<string>",
"error_message": "<string>",
"evaluator_id": "<string>",
"evaluator_type": "<string>",
"input_schema": [
{
"name": "<string>",
"type": "string",
"description": "<string>",
"enum_values": [
"<string>"
],
"label": "<string>"
}
],
"output_schema": [
{
"name": "<string>",
"type": "string",
"description": "<string>",
"enum_values": [
"<string>"
],
"label": "<string>"
}
],
"processed_at": "<string>",
"scope": "trace",
"status": "<string>"
}
],
"external_id": "<string>",
"id": "<string>",
"init_rules": [
{
"key": "<string>",
"op": "equals",
"source": "<string>",
"value": "<string>",
"value_type": "<string>"
}
],
"org_id": "<string>",
"project_id": "<string>",
"status": "<string>",
"updated_at": "<string>"
}{
"error": "error message"
}{
"error": "error message"
}{
"error": "error message"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Auto monitor setup external ID
Body
Fields to update
On update, both evaluators and evaluator_configs may be empty — in that case the evaluator list is not modified. If both are provided, evaluator_configs wins and evaluators is ignored.
List of evaluator slugs to run on matched spans. Use evaluator_configs instead when you need to set a per-evaluator scope. If both fields are provided, evaluator_configs takes precedence and this field is ignored.
["hallucination", "toxicity"]
List of per-evaluator configurations. Each entry declares an evaluator slug and an optional scope (session, trace, or span) controlling the granularity at which the evaluator runs. Takes precedence over evaluators when both are provided.
Show child attributes
Show child attributes
[
{ "slug": "char-count", "scope": "session" },
{ "slug": "toxicity", "scope": "trace" },
{ "slug": "pii" }
]
Map of span attributes to filter which spans this monitor applies to. Keys are span attribute names (e.g. gen_ai.system, gen_ai.request.model) and values can be strings, numbers, or booleans. Example: {"gen_ai.system": "openai", "gen_ai.request.model": "gpt-4o", "gen_ai.request.max_tokens": 1000}
Was this page helpful?

