curl --request PATCH \
--url https://api.sigmamind.ai/v1/qa-rules/{qaRuleId} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"ruleName": "Tone & Professionalism Check",
"ruleDescription": "Ensures agents maintain a professional and empathetic tone throughout the conversation.",
"evaluationCriteria": "Evaluate whether agent greeted the customer by name, avoided interrupting, and closed with a resolution summary.",
"expectedValue": true,
"agentIds": [
"D5D0p7TUs66TTAEAx"
]
}
'import requests
url = "https://api.sigmamind.ai/v1/qa-rules/{qaRuleId}"
payload = {
"ruleName": "Tone & Professionalism Check",
"ruleDescription": "Ensures agents maintain a professional and empathetic tone throughout the conversation.",
"evaluationCriteria": "Evaluate whether agent greeted the customer by name, avoided interrupting, and closed with a resolution summary.",
"expectedValue": True,
"agentIds": ["D5D0p7TUs66TTAEAx"]
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
ruleName: 'Tone & Professionalism Check',
ruleDescription: 'Ensures agents maintain a professional and empathetic tone throughout the conversation.',
evaluationCriteria: 'Evaluate whether agent greeted the customer by name, avoided interrupting, and closed with a resolution summary.',
expectedValue: true,
agentIds: ['D5D0p7TUs66TTAEAx']
})
};
fetch('https://api.sigmamind.ai/v1/qa-rules/{qaRuleId}', 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.sigmamind.ai/v1/qa-rules/{qaRuleId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'ruleName' => 'Tone & Professionalism Check',
'ruleDescription' => 'Ensures agents maintain a professional and empathetic tone throughout the conversation.',
'evaluationCriteria' => 'Evaluate whether agent greeted the customer by name, avoided interrupting, and closed with a resolution summary.',
'expectedValue' => true,
'agentIds' => [
'D5D0p7TUs66TTAEAx'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.sigmamind.ai/v1/qa-rules/{qaRuleId}"
payload := strings.NewReader("{\n \"ruleName\": \"Tone & Professionalism Check\",\n \"ruleDescription\": \"Ensures agents maintain a professional and empathetic tone throughout the conversation.\",\n \"evaluationCriteria\": \"Evaluate whether agent greeted the customer by name, avoided interrupting, and closed with a resolution summary.\",\n \"expectedValue\": true,\n \"agentIds\": [\n \"D5D0p7TUs66TTAEAx\"\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.patch("https://api.sigmamind.ai/v1/qa-rules/{qaRuleId}")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"ruleName\": \"Tone & Professionalism Check\",\n \"ruleDescription\": \"Ensures agents maintain a professional and empathetic tone throughout the conversation.\",\n \"evaluationCriteria\": \"Evaluate whether agent greeted the customer by name, avoided interrupting, and closed with a resolution summary.\",\n \"expectedValue\": true,\n \"agentIds\": [\n \"D5D0p7TUs66TTAEAx\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sigmamind.ai/v1/qa-rules/{qaRuleId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"ruleName\": \"Tone & Professionalism Check\",\n \"ruleDescription\": \"Ensures agents maintain a professional and empathetic tone throughout the conversation.\",\n \"evaluationCriteria\": \"Evaluate whether agent greeted the customer by name, avoided interrupting, and closed with a resolution summary.\",\n \"expectedValue\": true,\n \"agentIds\": [\n \"D5D0p7TUs66TTAEAx\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"qaRuleId": "rule_YYdKgw1masomMfe8",
"workspaceId": "org_V6eZ2zg8ziDx5pft",
"ruleName": "Tone & Professionalism Check",
"ruleDescription": "Ensures agents maintain a professional and empathetic tone throughout the conversation.",
"agents": [
{
"name": "New AI Agent",
"agentId": "agent_D5D0p7TUs66TTAEAx",
"status": "Live"
}
],
"evaluationCriteria": "Evaluate whether agent greeted the customer by name, avoided interrupting, and closed with a resolution summary.",
"expectedValue": true
}{
"error": "Bad Request",
"message": "Invalid request parameters",
"path": "/v1/qa-rules",
"status": 400,
"timestamp": "2026-05-06T07:47:11.486Z"
}{
"error": "Unauthorized",
"message": "X-API-Key is missing or invalid",
"path": "/v1/qa-rules",
"status": 401,
"timestamp": "2026-05-06T07:47:11.486Z"
}{
"error": "Forbidden",
"message": "Access denied for this resource",
"path": "/v1/qa-rules",
"status": 403,
"timestamp": "2026-05-06T07:47:11.486Z"
}{
"error": "Not Found",
"message": "The requested resource was not found",
"path": "/v1/qa-rules",
"status": 404,
"timestamp": "2026-05-06T07:47:11.486Z"
}{
"error": "Internal Server Error",
"message": "Unexpected server error",
"path": "/v1/qa-rules",
"status": 500,
"timestamp": "2026-05-06T07:47:11.486Z"
}Update QA Rule
Partially updates an existing QA rule by qaRuleId. Only fields provided in the request body are updated — omitted fields remain unchanged. Returns the updated QA rule record.
curl --request PATCH \
--url https://api.sigmamind.ai/v1/qa-rules/{qaRuleId} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"ruleName": "Tone & Professionalism Check",
"ruleDescription": "Ensures agents maintain a professional and empathetic tone throughout the conversation.",
"evaluationCriteria": "Evaluate whether agent greeted the customer by name, avoided interrupting, and closed with a resolution summary.",
"expectedValue": true,
"agentIds": [
"D5D0p7TUs66TTAEAx"
]
}
'import requests
url = "https://api.sigmamind.ai/v1/qa-rules/{qaRuleId}"
payload = {
"ruleName": "Tone & Professionalism Check",
"ruleDescription": "Ensures agents maintain a professional and empathetic tone throughout the conversation.",
"evaluationCriteria": "Evaluate whether agent greeted the customer by name, avoided interrupting, and closed with a resolution summary.",
"expectedValue": True,
"agentIds": ["D5D0p7TUs66TTAEAx"]
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
ruleName: 'Tone & Professionalism Check',
ruleDescription: 'Ensures agents maintain a professional and empathetic tone throughout the conversation.',
evaluationCriteria: 'Evaluate whether agent greeted the customer by name, avoided interrupting, and closed with a resolution summary.',
expectedValue: true,
agentIds: ['D5D0p7TUs66TTAEAx']
})
};
fetch('https://api.sigmamind.ai/v1/qa-rules/{qaRuleId}', 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.sigmamind.ai/v1/qa-rules/{qaRuleId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'ruleName' => 'Tone & Professionalism Check',
'ruleDescription' => 'Ensures agents maintain a professional and empathetic tone throughout the conversation.',
'evaluationCriteria' => 'Evaluate whether agent greeted the customer by name, avoided interrupting, and closed with a resolution summary.',
'expectedValue' => true,
'agentIds' => [
'D5D0p7TUs66TTAEAx'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.sigmamind.ai/v1/qa-rules/{qaRuleId}"
payload := strings.NewReader("{\n \"ruleName\": \"Tone & Professionalism Check\",\n \"ruleDescription\": \"Ensures agents maintain a professional and empathetic tone throughout the conversation.\",\n \"evaluationCriteria\": \"Evaluate whether agent greeted the customer by name, avoided interrupting, and closed with a resolution summary.\",\n \"expectedValue\": true,\n \"agentIds\": [\n \"D5D0p7TUs66TTAEAx\"\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.patch("https://api.sigmamind.ai/v1/qa-rules/{qaRuleId}")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"ruleName\": \"Tone & Professionalism Check\",\n \"ruleDescription\": \"Ensures agents maintain a professional and empathetic tone throughout the conversation.\",\n \"evaluationCriteria\": \"Evaluate whether agent greeted the customer by name, avoided interrupting, and closed with a resolution summary.\",\n \"expectedValue\": true,\n \"agentIds\": [\n \"D5D0p7TUs66TTAEAx\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sigmamind.ai/v1/qa-rules/{qaRuleId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"ruleName\": \"Tone & Professionalism Check\",\n \"ruleDescription\": \"Ensures agents maintain a professional and empathetic tone throughout the conversation.\",\n \"evaluationCriteria\": \"Evaluate whether agent greeted the customer by name, avoided interrupting, and closed with a resolution summary.\",\n \"expectedValue\": true,\n \"agentIds\": [\n \"D5D0p7TUs66TTAEAx\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"qaRuleId": "rule_YYdKgw1masomMfe8",
"workspaceId": "org_V6eZ2zg8ziDx5pft",
"ruleName": "Tone & Professionalism Check",
"ruleDescription": "Ensures agents maintain a professional and empathetic tone throughout the conversation.",
"agents": [
{
"name": "New AI Agent",
"agentId": "agent_D5D0p7TUs66TTAEAx",
"status": "Live"
}
],
"evaluationCriteria": "Evaluate whether agent greeted the customer by name, avoided interrupting, and closed with a resolution summary.",
"expectedValue": true
}{
"error": "Bad Request",
"message": "Invalid request parameters",
"path": "/v1/qa-rules",
"status": 400,
"timestamp": "2026-05-06T07:47:11.486Z"
}{
"error": "Unauthorized",
"message": "X-API-Key is missing or invalid",
"path": "/v1/qa-rules",
"status": 401,
"timestamp": "2026-05-06T07:47:11.486Z"
}{
"error": "Forbidden",
"message": "Access denied for this resource",
"path": "/v1/qa-rules",
"status": 403,
"timestamp": "2026-05-06T07:47:11.486Z"
}{
"error": "Not Found",
"message": "The requested resource was not found",
"path": "/v1/qa-rules",
"status": 404,
"timestamp": "2026-05-06T07:47:11.486Z"
}{
"error": "Internal Server Error",
"message": "Unexpected server error",
"path": "/v1/qa-rules",
"status": 500,
"timestamp": "2026-05-06T07:47:11.486Z"
}Authorizations
Authenticate every request by passing your API key in the X-API-Key header. To get your key, go to Dashboard → API Keys and create or copy your Production API key.
Path Parameters
The unique identifier of the QA rule to update.
Body
The name of the QA rule, used to identify it in rule lists and evaluation reports.
"Tone & Professionalism Check"
A brief explanation of what this QA rule evaluates and its intended purpose.
"Ensures agents maintain a professional and empathetic tone throughout the conversation."
The specific criteria used to evaluate agent responses against this rule.
"Evaluate whether agent greeted the customer by name, avoided interrupting, and closed with a resolution summary."
The expected outcome of the evaluation criteria that determines a successful QA result. Set to true if the evaluation criteria returning true should be treated as a Success, or false if the evaluation criteria returning true should be treated as a Fail.
true, false true
List of agent Ids on which QA rule would apply
["D5D0p7TUs66TTAEAx"]
Response
OK
The unique identifier of the QA rule.
"rule_YYdKgw1masomMfe8"
The unique identifier of the workspace this QA rule belongs to.
"org_V6eZ2zg8ziDx5pft"
The name of the QA rule, used to identify it in rule lists and evaluation reports.
"Tone & Professionalism Check"
A brief explanation of what this QA rule evaluates and its intended purpose.
"Ensures agents maintain a professional and empathetic tone throughout the conversation."
Show child attributes
Show child attributes
The specific criteria or rubric used to evaluate agent responses against this rule.
"Evaluate whether agent greeted the customer by name, avoided interrupting, and closed with a resolution summary."
The expected evaluation result that determines whether the QA rule is satisfied. When the evaluation criteria returns a result matching this expected value, the interaction is marked as a Success; otherwise it is marked as a Fail.
true