curl --request GET \
--url https://api.arize.com/v2/monitors/{monitor_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.arize.com/v2/monitors/{monitor_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.arize.com/v2/monitors/{monitor_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.arize.com/v2/monitors/{monitor_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://api.arize.com/v2/monitors/{monitor_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://api.arize.com/v2/monitors/{monitor_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arize.com/v2/monitors/{monitor_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": "TW9uaXRvcjo4NzEwMToxMlo5Wg==",
"name": "Test Monitor",
"project_id": "TW9kZWw6ODU0MjAxODQ6RFNxUg==",
"uri": "https://app.arize.com/organizations/ZXhhbXBsZU9yZ2FuaXphdGlvbjo1Njg6V2RnREk=/spaces/U3BhY2U6NzU1OnBsR1c=/monitors/TW9uaXRvcjo4NzEwMToxMlo5Wg==",
"status": "TRIGGERED",
"created_at": "2026-07-09T22:07:34.010Z",
"updated_at": "2026-07-09T23:22:14.638Z",
"threshold": {
"type": "DYNAMIC_RANGE",
"calculation": "STDEV",
"lower": {
"operator": "GREATER_THAN",
"multiplier": 0.00001
},
"upper": {
"operator": "LESS_THAN_OR_EQUAL",
"multiplier": 0.00001
}
},
"notifications_enabled": true,
"manual_evaluation_enabled": false,
"created_by_user_id": "VXNlcjoxMTIzOlRlc3Rlcg==",
"filters": [
{
"dimension": {
"category": "LLM_EVAL",
"name": "eval.Test Eval.label"
},
"operator": "CONTAINS_STRING",
"values": [
"No Value",
"NULL"
]
},
{
"dimension": {
"category": "USER_ANNOTATION",
"name": "annotation.Accuracy.score"
},
"operator": "EQUALS",
"values": [
"NULL"
]
}
],
"notification_configs": [
{
"type": "EMAIL",
"email_address": "test.user1@example.com"
},
{
"type": "EMAIL",
"email_address": "test.user2@example.com"
},
{
"type": "EMAIL",
"email_address": "test.admin@example.com"
},
{
"type": "WEBHOOK",
"id": "V2ViaG9vazoyMzpBczpH",
"url": "https://webhook.site/test-webhook-1"
},
{
"type": "WEBHOOK",
"id": "V2ViaG9vazoyNDpTdW5x",
"url": "https://testsite.com/test5"
}
],
"downtime": {
"start": "2026-07-09T22:47:02.155Z",
"duration_seconds": 3600,
"frequency_days": 1
},
"scheduled_runtime": {
"enabled": true,
"cadence_seconds": 10800,
"days_of_week": [
0
]
},
"evaluation_window_length_seconds": 86400,
"delay_seconds": 0,
"evaluated_at": "2026-07-09T23:00:00.000Z",
"latest_computed_value": 251,
"notes": "This monitor should trigger when the metric moves slightly above the baseline.",
"type": "TRACING",
"metric": "COUNT",
"dimension": {
"category": "SPAN_ATTRIBUTE",
"name": "attributes.output.value"
}
}{
"status": 400,
"title": "Invalid request parameters",
"detail": "The 'name' field is required and must be a non-empty string.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#invalid-request"
}{
"status": 401,
"title": "Authentication required",
"detail": "You must be authenticated to access this resource.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#authentication-required"
}{
"status": 404,
"title": "Resource not found",
"detail": "The requested resource with ID '12345' was not found.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#resource-not-found"
}{
"status": 429,
"title": "Rate limit exceeded",
"detail": "You have exceeded the allowed number of requests. Please try again later.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#rate-limit-exceeded"
}Get a monitor
Get a monitor by its ID.
The response shape varies by type (data_quality, performance,
drift, custom_metric, tracing)
curl --request GET \
--url https://api.arize.com/v2/monitors/{monitor_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.arize.com/v2/monitors/{monitor_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.arize.com/v2/monitors/{monitor_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.arize.com/v2/monitors/{monitor_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://api.arize.com/v2/monitors/{monitor_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://api.arize.com/v2/monitors/{monitor_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arize.com/v2/monitors/{monitor_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": "TW9uaXRvcjo4NzEwMToxMlo5Wg==",
"name": "Test Monitor",
"project_id": "TW9kZWw6ODU0MjAxODQ6RFNxUg==",
"uri": "https://app.arize.com/organizations/ZXhhbXBsZU9yZ2FuaXphdGlvbjo1Njg6V2RnREk=/spaces/U3BhY2U6NzU1OnBsR1c=/monitors/TW9uaXRvcjo4NzEwMToxMlo5Wg==",
"status": "TRIGGERED",
"created_at": "2026-07-09T22:07:34.010Z",
"updated_at": "2026-07-09T23:22:14.638Z",
"threshold": {
"type": "DYNAMIC_RANGE",
"calculation": "STDEV",
"lower": {
"operator": "GREATER_THAN",
"multiplier": 0.00001
},
"upper": {
"operator": "LESS_THAN_OR_EQUAL",
"multiplier": 0.00001
}
},
"notifications_enabled": true,
"manual_evaluation_enabled": false,
"created_by_user_id": "VXNlcjoxMTIzOlRlc3Rlcg==",
"filters": [
{
"dimension": {
"category": "LLM_EVAL",
"name": "eval.Test Eval.label"
},
"operator": "CONTAINS_STRING",
"values": [
"No Value",
"NULL"
]
},
{
"dimension": {
"category": "USER_ANNOTATION",
"name": "annotation.Accuracy.score"
},
"operator": "EQUALS",
"values": [
"NULL"
]
}
],
"notification_configs": [
{
"type": "EMAIL",
"email_address": "test.user1@example.com"
},
{
"type": "EMAIL",
"email_address": "test.user2@example.com"
},
{
"type": "EMAIL",
"email_address": "test.admin@example.com"
},
{
"type": "WEBHOOK",
"id": "V2ViaG9vazoyMzpBczpH",
"url": "https://webhook.site/test-webhook-1"
},
{
"type": "WEBHOOK",
"id": "V2ViaG9vazoyNDpTdW5x",
"url": "https://testsite.com/test5"
}
],
"downtime": {
"start": "2026-07-09T22:47:02.155Z",
"duration_seconds": 3600,
"frequency_days": 1
},
"scheduled_runtime": {
"enabled": true,
"cadence_seconds": 10800,
"days_of_week": [
0
]
},
"evaluation_window_length_seconds": 86400,
"delay_seconds": 0,
"evaluated_at": "2026-07-09T23:00:00.000Z",
"latest_computed_value": 251,
"notes": "This monitor should trigger when the metric moves slightly above the baseline.",
"type": "TRACING",
"metric": "COUNT",
"dimension": {
"category": "SPAN_ATTRIBUTE",
"name": "attributes.output.value"
}
}{
"status": 400,
"title": "Invalid request parameters",
"detail": "The 'name' field is required and must be a non-empty string.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#invalid-request"
}{
"status": 401,
"title": "Authentication required",
"detail": "You must be authenticated to access this resource.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#authentication-required"
}{
"status": 404,
"title": "Resource not found",
"detail": "The requested resource with ID '12345' was not found.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#resource-not-found"
}{
"status": 429,
"title": "Rate limit exceeded",
"detail": "You have exceeded the allowed number of requests. Please try again later.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#rate-limit-exceeded"
}Authorizations
Most Arize AI endpoints require authentication. For those endpoints that require authentication, include your API key in the request header using the format
Path Parameters
The unique monitor identifier (base64) A universally unique identifier (base64-encoded opaque string).
"RW50aXR5OjEyMzQ1"
Response
Returns a single monitor object
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
A monitor. The type field discriminates which variant (and therefore which type-specific fields) applies.
Unique identifier for the monitor (base64 global ID).
Human-readable name of the monitor.
Identifies this monitor as a data quality monitor.
DATA_QUALITY The project that the monitor belongs to (base64 global ID).
The UI deep link to the monitor.
Current evaluation state. Read-only.
TRIGGERED, CLEARED, NO_DATA The condition that determines when this monitor triggers.
- Option 1
- Option 2
- Option 3
- Option 4
Show child attributes
Show child attributes
Whether notifications fire on a triggered transition.
Whether the monitor is evaluated manually rather than on the automatic cadence.
The user who created the monitor (base64 global ID).
When the monitor was created.
When the monitor was last updated.
The data quality metric this monitor evaluates.
COUNT, PERCENT_EMPTY, CARDINALITY, NEW_VALUES, MISSING_VALUES, AVG, SUM, STANDARD_DEVIATION, P50, P95, P99, P99_9, AVERAGE_STRING_LIST_LENGTH The field the metric is computed over.
Show child attributes
Show child attributes
The model versions the metric is scoped to. An empty array means all model versions.
Data filters applied to the monitor's metric. Omitted when the metric is computed over all data.
Show child attributes
Show child attributes
Notification channels (email / integration / webhook) notified on a triggered transition. Omitted when no channels are configured.
- Option 1
- Option 2
- Option 3
Show child attributes
Show child attributes
A recurring period during which the monitor is paused and will not trigger. Omitted when no downtime is configured.
Show child attributes
Show child attributes
Returned when schedule configuration exists.
Show child attributes
Show child attributes
The length of the evaluation window in seconds. Omitted when unset.
The delay applied before evaluating a window, in seconds. Omitted when unset.
The last time the metric was computed. Omitted if it has never been evaluated.
The most recently computed metric value. Omitted if it has never been evaluated.
Free-form notes attached to the monitor. Omitted when unset.
The comparison dataset the metric is evaluated against. Omitted for monitors that evaluate the metric directly rather than by comparison.
- Option 1
- Option 2
Show child attributes
Show child attributes
Was this page helpful?