curl --request PUT \
--url https://api.zelto.ai/v1/monitors/{id}/model \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"provider": "bedrock"
}
'import requests
url = "https://api.zelto.ai/v1/monitors/{id}/model"
payload = { "provider": "bedrock" }
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({provider: 'bedrock'})
};
fetch('https://api.zelto.ai/v1/monitors/{id}/model', 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.zelto.ai/v1/monitors/{id}/model",
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([
'provider' => 'bedrock'
]),
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.zelto.ai/v1/monitors/{id}/model"
payload := strings.NewReader("{\n \"provider\": \"bedrock\"\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.zelto.ai/v1/monitors/{id}/model")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"provider\": \"bedrock\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zelto.ai/v1/monitors/{id}/model")
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 \"provider\": \"bedrock\"\n}"
response = http.request(request)
puts response.read_body{
"monitorId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"provider": "bedrock",
"model": "<string>",
"aiKeyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"version": 123,
"versionChanged": true
}{
"error": "<string>",
"message": "<string>",
"code": "<string>",
"hint": "<string>",
"parameter": "<string>",
"unknown": [
"<string>"
],
"valid": [
"<string>"
],
"details": {}
}{
"error": "<string>",
"message": "<string>",
"code": "<string>",
"hint": "<string>",
"parameter": "<string>",
"unknown": [
"<string>"
],
"valid": [
"<string>"
],
"details": {}
}{
"error": "<string>",
"message": "<string>",
"code": "<string>",
"hint": "<string>",
"parameter": "<string>",
"unknown": [
"<string>"
],
"valid": [
"<string>"
],
"details": {}
}{
"error": "<string>",
"message": "<string>",
"code": "<string>",
"hint": "<string>",
"parameter": "<string>",
"unknown": [
"<string>"
],
"valid": [
"<string>"
],
"details": {}
}Set the model a monitor runs on
Puts the monitor’s AI stages on the platform model ({ "provider": "bedrock", "modelTier"? }) or on one of the organization’s AI provider keys ({ "aiKeyId", "model" }). The monitor references the key, so rotating it applies at once. A different provider or model bumps the monitor version and resets its alert; another key of the same provider does not. Usage on an organization key is billed by the provider plus Zelto’s bring-your-own platform fee, not the plan’s evaluation allowance. Owner or admin only; an organization key is refused in PHI mode. The same operation as the set_monitor_model MCP tool.
curl --request PUT \
--url https://api.zelto.ai/v1/monitors/{id}/model \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"provider": "bedrock"
}
'import requests
url = "https://api.zelto.ai/v1/monitors/{id}/model"
payload = { "provider": "bedrock" }
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({provider: 'bedrock'})
};
fetch('https://api.zelto.ai/v1/monitors/{id}/model', 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.zelto.ai/v1/monitors/{id}/model",
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([
'provider' => 'bedrock'
]),
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.zelto.ai/v1/monitors/{id}/model"
payload := strings.NewReader("{\n \"provider\": \"bedrock\"\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.zelto.ai/v1/monitors/{id}/model")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"provider\": \"bedrock\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zelto.ai/v1/monitors/{id}/model")
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 \"provider\": \"bedrock\"\n}"
response = http.request(request)
puts response.read_body{
"monitorId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"provider": "bedrock",
"model": "<string>",
"aiKeyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"version": 123,
"versionChanged": true
}{
"error": "<string>",
"message": "<string>",
"code": "<string>",
"hint": "<string>",
"parameter": "<string>",
"unknown": [
"<string>"
],
"valid": [
"<string>"
],
"details": {}
}{
"error": "<string>",
"message": "<string>",
"code": "<string>",
"hint": "<string>",
"parameter": "<string>",
"unknown": [
"<string>"
],
"valid": [
"<string>"
],
"details": {}
}{
"error": "<string>",
"message": "<string>",
"code": "<string>",
"hint": "<string>",
"parameter": "<string>",
"unknown": [
"<string>"
],
"valid": [
"<string>"
],
"details": {}
}{
"error": "<string>",
"message": "<string>",
"code": "<string>",
"hint": "<string>",
"parameter": "<string>",
"unknown": [
"<string>"
],
"valid": [
"<string>"
],
"details": {}
}Authorizations
Send Authorization: Bearer YOUR_API_KEY. The key resolves to a single organization.
Path Parameters
Body
Response
The model the monitor now runs on.
bedrock is the platform model; anything else is the provider of the organization key.
bedrock, openai, anthropic, openrouter, vercel_gateway, typesafe The tier for bedrock, otherwise the provider's model id.
The organization key the monitor runs on, or null for the platform model.
The monitor's version after the change.
true when the provider or model changed, which opens a new version and resets the monitor's alert. Switching to another key of the same provider keeps the version.

