curl --request POST \
--url https://api.sigmamind.ai/v1/test-cases \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"agentId": "D5D0p7TUs66TTAEAx",
"userPrompt": "You are an angry customer who wants to cancel their subscription.",
"successCriteria": "The agent should acknowledge the cancellation request, present retention alternatives, and confirm the cancellation if the customer insists.",
"label": "Angry Customer - Cancellation Flow",
"llmModel": "gpt-4o-mini",
"mockData": [
{
"variableName": "customer_name",
"value": "John Doe"
},
{
"variableName": "account_status",
"value": "active"
}
],
"attempt": 5
}
'import requests
url = "https://api.sigmamind.ai/v1/test-cases"
payload = {
"agentId": "D5D0p7TUs66TTAEAx",
"userPrompt": "You are an angry customer who wants to cancel their subscription.",
"successCriteria": "The agent should acknowledge the cancellation request, present retention alternatives, and confirm the cancellation if the customer insists.",
"label": "Angry Customer - Cancellation Flow",
"llmModel": "gpt-4o-mini",
"mockData": [
{
"variableName": "customer_name",
"value": "John Doe"
},
{
"variableName": "account_status",
"value": "active"
}
],
"attempt": 5
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
agentId: 'D5D0p7TUs66TTAEAx',
userPrompt: 'You are an angry customer who wants to cancel their subscription.',
successCriteria: 'The agent should acknowledge the cancellation request, present retention alternatives, and confirm the cancellation if the customer insists.',
label: 'Angry Customer - Cancellation Flow',
llmModel: 'gpt-4o-mini',
mockData: [
{variableName: 'customer_name', value: 'John Doe'},
{variableName: 'account_status', value: 'active'}
],
attempt: 5
})
};
fetch('https://api.sigmamind.ai/v1/test-cases', 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/test-cases",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'agentId' => 'D5D0p7TUs66TTAEAx',
'userPrompt' => 'You are an angry customer who wants to cancel their subscription.',
'successCriteria' => 'The agent should acknowledge the cancellation request, present retention alternatives, and confirm the cancellation if the customer insists.',
'label' => 'Angry Customer - Cancellation Flow',
'llmModel' => 'gpt-4o-mini',
'mockData' => [
[
'variableName' => 'customer_name',
'value' => 'John Doe'
],
[
'variableName' => 'account_status',
'value' => 'active'
]
],
'attempt' => 5
]),
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/test-cases"
payload := strings.NewReader("{\n \"agentId\": \"D5D0p7TUs66TTAEAx\",\n \"userPrompt\": \"You are an angry customer who wants to cancel their subscription.\",\n \"successCriteria\": \"The agent should acknowledge the cancellation request, present retention alternatives, and confirm the cancellation if the customer insists.\",\n \"label\": \"Angry Customer - Cancellation Flow\",\n \"llmModel\": \"gpt-4o-mini\",\n \"mockData\": [\n {\n \"variableName\": \"customer_name\",\n \"value\": \"John Doe\"\n },\n {\n \"variableName\": \"account_status\",\n \"value\": \"active\"\n }\n ],\n \"attempt\": 5\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.sigmamind.ai/v1/test-cases")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"agentId\": \"D5D0p7TUs66TTAEAx\",\n \"userPrompt\": \"You are an angry customer who wants to cancel their subscription.\",\n \"successCriteria\": \"The agent should acknowledge the cancellation request, present retention alternatives, and confirm the cancellation if the customer insists.\",\n \"label\": \"Angry Customer - Cancellation Flow\",\n \"llmModel\": \"gpt-4o-mini\",\n \"mockData\": [\n {\n \"variableName\": \"customer_name\",\n \"value\": \"John Doe\"\n },\n {\n \"variableName\": \"account_status\",\n \"value\": \"active\"\n }\n ],\n \"attempt\": 5\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sigmamind.ai/v1/test-cases")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"agentId\": \"D5D0p7TUs66TTAEAx\",\n \"userPrompt\": \"You are an angry customer who wants to cancel their subscription.\",\n \"successCriteria\": \"The agent should acknowledge the cancellation request, present retention alternatives, and confirm the cancellation if the customer insists.\",\n \"label\": \"Angry Customer - Cancellation Flow\",\n \"llmModel\": \"gpt-4o-mini\",\n \"mockData\": [\n {\n \"variableName\": \"customer_name\",\n \"value\": \"John Doe\"\n },\n {\n \"variableName\": \"account_status\",\n \"value\": \"active\"\n }\n ],\n \"attempt\": 5\n}"
response = http.request(request)
puts response.read_body{
"testCaseId": "tc_d17T6uReChpyfFeP",
"label": "Angry Customer - Cancellation Flow",
"agent": {
"name": "New AI Agent",
"agentId": "agent_D5D0p7TUs66TTAEAx",
"status": "Live"
},
"workspaceId": "org_V6eZ2zg8ziDx5pft",
"llmModel": "gpt-4o-mini",
"mockData": [
{
"variableName": "customer_name",
"value": "John Doe"
},
{
"variableName": "account_status",
"value": "active"
}
],
"userPrompt": "You are an angry customer who wants to cancel your subscription.",
"attempt": 5,
"successCriteria": "The agent should acknowledge the cancellation request, present retention alternatives, and confirm the cancellation if the customer insists."
}{
"error": "Bad Request",
"message": "Invalid request parameters",
"path": "/v1/test-cases",
"status": 400,
"timestamp": "2026-05-05T10:06:45.690Z"
}{
"error": "Unauthorized",
"message": "X-API-Key is missing or invalid",
"path": "/v1/test-cases",
"status": 401,
"timestamp": "2026-05-05T10:06:45.690Z"
}{
"error": "Forbidden",
"message": "Access denied for this resource",
"path": "/v1/test-cases",
"status": 403,
"timestamp": "2026-05-05T10:06:45.690Z"
}{
"error": "Not Found",
"message": "The requested resource was not found",
"path": "/v1/test-cases",
"status": 404,
"timestamp": "2026-05-05T10:06:45.690Z"
}{
"error": "Internal Server Error",
"message": "Unexpected server error",
"path": "/v1/test-cases",
"status": 500,
"timestamp": "2026-05-05T10:06:45.690Z"
}Create Test Case
Creates a simulation test case for the specified agent. Define the scenario using user persona, goals, and evaluation criteria. Returns the created test case, including its testCaseId for subsequent get, update, delete, and batch-run calls.
curl --request POST \
--url https://api.sigmamind.ai/v1/test-cases \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"agentId": "D5D0p7TUs66TTAEAx",
"userPrompt": "You are an angry customer who wants to cancel their subscription.",
"successCriteria": "The agent should acknowledge the cancellation request, present retention alternatives, and confirm the cancellation if the customer insists.",
"label": "Angry Customer - Cancellation Flow",
"llmModel": "gpt-4o-mini",
"mockData": [
{
"variableName": "customer_name",
"value": "John Doe"
},
{
"variableName": "account_status",
"value": "active"
}
],
"attempt": 5
}
'import requests
url = "https://api.sigmamind.ai/v1/test-cases"
payload = {
"agentId": "D5D0p7TUs66TTAEAx",
"userPrompt": "You are an angry customer who wants to cancel their subscription.",
"successCriteria": "The agent should acknowledge the cancellation request, present retention alternatives, and confirm the cancellation if the customer insists.",
"label": "Angry Customer - Cancellation Flow",
"llmModel": "gpt-4o-mini",
"mockData": [
{
"variableName": "customer_name",
"value": "John Doe"
},
{
"variableName": "account_status",
"value": "active"
}
],
"attempt": 5
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
agentId: 'D5D0p7TUs66TTAEAx',
userPrompt: 'You are an angry customer who wants to cancel their subscription.',
successCriteria: 'The agent should acknowledge the cancellation request, present retention alternatives, and confirm the cancellation if the customer insists.',
label: 'Angry Customer - Cancellation Flow',
llmModel: 'gpt-4o-mini',
mockData: [
{variableName: 'customer_name', value: 'John Doe'},
{variableName: 'account_status', value: 'active'}
],
attempt: 5
})
};
fetch('https://api.sigmamind.ai/v1/test-cases', 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/test-cases",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'agentId' => 'D5D0p7TUs66TTAEAx',
'userPrompt' => 'You are an angry customer who wants to cancel their subscription.',
'successCriteria' => 'The agent should acknowledge the cancellation request, present retention alternatives, and confirm the cancellation if the customer insists.',
'label' => 'Angry Customer - Cancellation Flow',
'llmModel' => 'gpt-4o-mini',
'mockData' => [
[
'variableName' => 'customer_name',
'value' => 'John Doe'
],
[
'variableName' => 'account_status',
'value' => 'active'
]
],
'attempt' => 5
]),
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/test-cases"
payload := strings.NewReader("{\n \"agentId\": \"D5D0p7TUs66TTAEAx\",\n \"userPrompt\": \"You are an angry customer who wants to cancel their subscription.\",\n \"successCriteria\": \"The agent should acknowledge the cancellation request, present retention alternatives, and confirm the cancellation if the customer insists.\",\n \"label\": \"Angry Customer - Cancellation Flow\",\n \"llmModel\": \"gpt-4o-mini\",\n \"mockData\": [\n {\n \"variableName\": \"customer_name\",\n \"value\": \"John Doe\"\n },\n {\n \"variableName\": \"account_status\",\n \"value\": \"active\"\n }\n ],\n \"attempt\": 5\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.sigmamind.ai/v1/test-cases")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"agentId\": \"D5D0p7TUs66TTAEAx\",\n \"userPrompt\": \"You are an angry customer who wants to cancel their subscription.\",\n \"successCriteria\": \"The agent should acknowledge the cancellation request, present retention alternatives, and confirm the cancellation if the customer insists.\",\n \"label\": \"Angry Customer - Cancellation Flow\",\n \"llmModel\": \"gpt-4o-mini\",\n \"mockData\": [\n {\n \"variableName\": \"customer_name\",\n \"value\": \"John Doe\"\n },\n {\n \"variableName\": \"account_status\",\n \"value\": \"active\"\n }\n ],\n \"attempt\": 5\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sigmamind.ai/v1/test-cases")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"agentId\": \"D5D0p7TUs66TTAEAx\",\n \"userPrompt\": \"You are an angry customer who wants to cancel their subscription.\",\n \"successCriteria\": \"The agent should acknowledge the cancellation request, present retention alternatives, and confirm the cancellation if the customer insists.\",\n \"label\": \"Angry Customer - Cancellation Flow\",\n \"llmModel\": \"gpt-4o-mini\",\n \"mockData\": [\n {\n \"variableName\": \"customer_name\",\n \"value\": \"John Doe\"\n },\n {\n \"variableName\": \"account_status\",\n \"value\": \"active\"\n }\n ],\n \"attempt\": 5\n}"
response = http.request(request)
puts response.read_body{
"testCaseId": "tc_d17T6uReChpyfFeP",
"label": "Angry Customer - Cancellation Flow",
"agent": {
"name": "New AI Agent",
"agentId": "agent_D5D0p7TUs66TTAEAx",
"status": "Live"
},
"workspaceId": "org_V6eZ2zg8ziDx5pft",
"llmModel": "gpt-4o-mini",
"mockData": [
{
"variableName": "customer_name",
"value": "John Doe"
},
{
"variableName": "account_status",
"value": "active"
}
],
"userPrompt": "You are an angry customer who wants to cancel your subscription.",
"attempt": 5,
"successCriteria": "The agent should acknowledge the cancellation request, present retention alternatives, and confirm the cancellation if the customer insists."
}{
"error": "Bad Request",
"message": "Invalid request parameters",
"path": "/v1/test-cases",
"status": 400,
"timestamp": "2026-05-05T10:06:45.690Z"
}{
"error": "Unauthorized",
"message": "X-API-Key is missing or invalid",
"path": "/v1/test-cases",
"status": 401,
"timestamp": "2026-05-05T10:06:45.690Z"
}{
"error": "Forbidden",
"message": "Access denied for this resource",
"path": "/v1/test-cases",
"status": 403,
"timestamp": "2026-05-05T10:06:45.690Z"
}{
"error": "Not Found",
"message": "The requested resource was not found",
"path": "/v1/test-cases",
"status": 404,
"timestamp": "2026-05-05T10:06:45.690Z"
}{
"error": "Internal Server Error",
"message": "Unexpected server error",
"path": "/v1/test-cases",
"status": 500,
"timestamp": "2026-05-05T10:06:45.690Z"
}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.
Body
The unique identifier of the Agent that will respond during the chat simulation.
"D5D0p7TUs66TTAEAx"
A prompt that defines the persona and intent of the simulated user. This drives the user-side messages throughout the conversation.
"You are an angry customer who wants to cancel their subscription."
A plain-language description of what a successful agent response looks like. Used to evaluate the agent's performance after each simulation run.
"The agent should acknowledge the cancellation request, present retention alternatives, and confirm the cancellation if the customer insists."
A human-readable name or label for the test case, used to identify it in reports and dashboards.
"Angry Customer - Cancellation Flow"
The LLM model used to generate Agent responses during the simulation. To use OpenAI priority tier models, append '-fast-tier' to the model name (e.g., 'gpt-4o-mini-fast-tier').
gpt-5.2, gpt-5.2-fast-tier, gpt-5.1, gpt-5.1-fast-tier, gpt-5, gpt-5-fast-tier, gpt-5-mini, gpt-5-mini-fast-tier, gpt-5-nano, gpt-4.1, gpt-4.1-fast-tier, gpt-4.1-mini, gpt-4.1-mini-fast-tier, gpt-4.1-nano, gpt-4.1-nano-fast-tier, gpt-4o, gpt-4o-fast-tier, gpt-4o-mini, gpt-4o-mini-fast-tier, claude-haiku-4-5-20251001, claude-sonnet-4-5-20250929, claude-sonnet-4-20250514, gemini-3.1-flash-lite-preview, gemini-3-flash-preview, gemini-2.5-flash-lite, gemini-2.5-flash "gpt-4o-mini"
A list of mock variables that substitute for real external data sources during the simulation. Each entry defines a variable name and its simulated value.
Show child attributes
Show child attributes
[
{
"variableName": "customer_name",
"value": "John Doe"
},
{
"variableName": "account_status",
"value": "active"
}
]
The number of times this test case should be executed. Each run is an independent simulation. Defaults to 1.
5
Response
Created
The unique identifier of the test case.
"tc_d17T6uReChpyfFeP"
A human-readable name or label for the test case, used to identify it in reports and dashboards.
"Angry Customer - Cancellation Flow"
Agent assigned to handle all calls in this campaign. Contains the agent's ID, name, and current status. All contacts in the campaign's contact list will be called using this agent.
Show child attributes
Show child attributes
The unique identifier of the workspace under which this test case was created.
"org_V6eZ2zg8ziDx5pft"
The LLM model used to generate Agent responses during the simulation.
"gpt-4o-mini"
The list of mock variables and their simulated values that were used to substitute for real external data sources during the simulation.
Show child attributes
Show child attributes
[
{
"variableName": "customer_name",
"value": "John Doe"
},
{
"variableName": "account_status",
"value": "active"
}
]
The prompt that defined the persona and intent of the simulated user, driving the user-side messages throughout the conversation.
"You are an angry customer who wants to cancel your subscription."
The number of times this test case was configured to run as independent simulation attempts.
5
The plain-language description of what a successful agent response looks like, used to evaluate the agent's performance after each simulation run.
"The agent should acknowledge the cancellation request, present retention alternatives, and confirm the cancellation if the customer insists."