curl --request PUT \
--url https://sreagent.app/api/v1/config/deploy_policies/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"burn_rate_block_enabled": true,
"enabled": true,
"error_budget_threshold": 123,
"incident_block_enabled": true,
"service": "<string>"
}
'import requests
url = "https://sreagent.app/api/v1/config/deploy_policies/{id}"
payload = {
"burn_rate_block_enabled": True,
"enabled": True,
"error_budget_threshold": 123,
"incident_block_enabled": True,
"service": "<string>"
}
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({
burn_rate_block_enabled: true,
enabled: true,
error_budget_threshold: 123,
incident_block_enabled: true,
service: '<string>'
})
};
fetch('https://sreagent.app/api/v1/config/deploy_policies/{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://sreagent.app/api/v1/config/deploy_policies/{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([
'burn_rate_block_enabled' => true,
'enabled' => true,
'error_budget_threshold' => 123,
'incident_block_enabled' => true,
'service' => '<string>'
]),
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://sreagent.app/api/v1/config/deploy_policies/{id}"
payload := strings.NewReader("{\n \"burn_rate_block_enabled\": true,\n \"enabled\": true,\n \"error_budget_threshold\": 123,\n \"incident_block_enabled\": true,\n \"service\": \"<string>\"\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://sreagent.app/api/v1/config/deploy_policies/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"burn_rate_block_enabled\": true,\n \"enabled\": true,\n \"error_budget_threshold\": 123,\n \"incident_block_enabled\": true,\n \"service\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sreagent.app/api/v1/config/deploy_policies/{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 \"burn_rate_block_enabled\": true,\n \"enabled\": true,\n \"error_budget_threshold\": 123,\n \"incident_block_enabled\": true,\n \"service\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"error": "<string>",
"message": "<string>"
}Update a deploy policy
Change one deploy policy, named by the id list_deploy_policies reports. Only the fields you send change. Sending service renames the service the policy gates, which is what the page’s own form does. The freeze is set and lifted with set_deploy_freeze and clear_deploy_freeze, and the audited override is not available over MCP.
curl --request PUT \
--url https://sreagent.app/api/v1/config/deploy_policies/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"burn_rate_block_enabled": true,
"enabled": true,
"error_budget_threshold": 123,
"incident_block_enabled": true,
"service": "<string>"
}
'import requests
url = "https://sreagent.app/api/v1/config/deploy_policies/{id}"
payload = {
"burn_rate_block_enabled": True,
"enabled": True,
"error_budget_threshold": 123,
"incident_block_enabled": True,
"service": "<string>"
}
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({
burn_rate_block_enabled: true,
enabled: true,
error_budget_threshold: 123,
incident_block_enabled: true,
service: '<string>'
})
};
fetch('https://sreagent.app/api/v1/config/deploy_policies/{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://sreagent.app/api/v1/config/deploy_policies/{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([
'burn_rate_block_enabled' => true,
'enabled' => true,
'error_budget_threshold' => 123,
'incident_block_enabled' => true,
'service' => '<string>'
]),
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://sreagent.app/api/v1/config/deploy_policies/{id}"
payload := strings.NewReader("{\n \"burn_rate_block_enabled\": true,\n \"enabled\": true,\n \"error_budget_threshold\": 123,\n \"incident_block_enabled\": true,\n \"service\": \"<string>\"\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://sreagent.app/api/v1/config/deploy_policies/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"burn_rate_block_enabled\": true,\n \"enabled\": true,\n \"error_budget_threshold\": 123,\n \"incident_block_enabled\": true,\n \"service\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sreagent.app/api/v1/config/deploy_policies/{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 \"burn_rate_block_enabled\": true,\n \"enabled\": true,\n \"error_budget_threshold\": 123,\n \"incident_block_enabled\": true,\n \"service\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"error": "<string>",
"message": "<string>"
}Authorizations
An sre_ak_* API key holding the api:admin scope (or api:config_read, which every write refuses with read_only_key).
Path Parameters
The resource's id.
Body
Hold a deploy while an SLO is burning its budget fast. On by default. Switched off, the gate still reports what it would have held for, as an advisory.
Whether the gate reads this policy at all. It resolves only enabled policies, so a disabled one gates nothing and the service falls back to the defaults.
Hold a deploy while less than this percent of an SLO's error budget is left, 0 to 100. Defaults to 10, and 0 switches the budget block off.
Hold a deploy while a critical incident affecting the service is open. On by default, and switched off it becomes an advisory in the same way.
The service whose deploys this policy gates, spelled as the deploy events and the gate API name it. One policy per service in an organization.
Response
Updated.

