curl --request POST \
--url https://api.getbluejay.ai/v1/create-simulation \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <x-api-key>' \
--data '
{
"agent_id": "<string>",
"name": "<string>",
"description": "<string>",
"prompt_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"knowledge_base_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"max_concurrent": 250,
"hangup_on_transfer": false,
"max_call_duration": 10,
"max_call_duration_units": "minutes",
"ringing_timeout": 300,
"digital_humans_settings": {
"default_name": "random",
"default_caller_number": "random",
"default_language": "random",
"default_background_noise": "none",
"first_message": "ai_generated",
"num_runs": 1
},
"selected_custom_metrics": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"custom_metrics_failing_threshold": 50,
"custom_metrics_passing_threshold": 50,
"runs_per_digital_human": 1,
"delay_between_tests_seconds": 150,
"inactivity_timeout_seconds": 1050,
"always_on": false
}
'import requests
url = "https://api.getbluejay.ai/v1/create-simulation"
payload = {
"agent_id": "<string>",
"name": "<string>",
"description": "<string>",
"prompt_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"knowledge_base_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"max_concurrent": 250,
"hangup_on_transfer": False,
"max_call_duration": 10,
"max_call_duration_units": "minutes",
"ringing_timeout": 300,
"digital_humans_settings": {
"default_name": "random",
"default_caller_number": "random",
"default_language": "random",
"default_background_noise": "none",
"first_message": "ai_generated",
"num_runs": 1
},
"selected_custom_metrics": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"custom_metrics_failing_threshold": 50,
"custom_metrics_passing_threshold": 50,
"runs_per_digital_human": 1,
"delay_between_tests_seconds": 150,
"inactivity_timeout_seconds": 1050,
"always_on": False
}
headers = {
"X-API-Key": "<x-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': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
agent_id: '<string>',
name: '<string>',
description: '<string>',
prompt_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
agent_version_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
knowledge_base_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
max_concurrent: 250,
hangup_on_transfer: false,
max_call_duration: 10,
max_call_duration_units: 'minutes',
ringing_timeout: 300,
digital_humans_settings: {
default_name: 'random',
default_caller_number: 'random',
default_language: 'random',
default_background_noise: 'none',
first_message: 'ai_generated',
num_runs: 1
},
selected_custom_metrics: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
custom_metrics_failing_threshold: 50,
custom_metrics_passing_threshold: 50,
runs_per_digital_human: 1,
delay_between_tests_seconds: 150,
inactivity_timeout_seconds: 1050,
always_on: false
})
};
fetch('https://api.getbluejay.ai/v1/create-simulation', 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.getbluejay.ai/v1/create-simulation",
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([
'agent_id' => '<string>',
'name' => '<string>',
'description' => '<string>',
'prompt_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'agent_version_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'knowledge_base_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'max_concurrent' => 250,
'hangup_on_transfer' => false,
'max_call_duration' => 10,
'max_call_duration_units' => 'minutes',
'ringing_timeout' => 300,
'digital_humans_settings' => [
'default_name' => 'random',
'default_caller_number' => 'random',
'default_language' => 'random',
'default_background_noise' => 'none',
'first_message' => 'ai_generated',
'num_runs' => 1
],
'selected_custom_metrics' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'custom_metrics_failing_threshold' => 50,
'custom_metrics_passing_threshold' => 50,
'runs_per_digital_human' => 1,
'delay_between_tests_seconds' => 150,
'inactivity_timeout_seconds' => 1050,
'always_on' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <x-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.getbluejay.ai/v1/create-simulation"
payload := strings.NewReader("{\n \"agent_id\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"prompt_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"agent_version_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"knowledge_base_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"max_concurrent\": 250,\n \"hangup_on_transfer\": false,\n \"max_call_duration\": 10,\n \"max_call_duration_units\": \"minutes\",\n \"ringing_timeout\": 300,\n \"digital_humans_settings\": {\n \"default_name\": \"random\",\n \"default_caller_number\": \"random\",\n \"default_language\": \"random\",\n \"default_background_noise\": \"none\",\n \"first_message\": \"ai_generated\",\n \"num_runs\": 1\n },\n \"selected_custom_metrics\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"custom_metrics_failing_threshold\": 50,\n \"custom_metrics_passing_threshold\": 50,\n \"runs_per_digital_human\": 1,\n \"delay_between_tests_seconds\": 150,\n \"inactivity_timeout_seconds\": 1050,\n \"always_on\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<x-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.getbluejay.ai/v1/create-simulation")
.header("X-API-Key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"agent_id\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"prompt_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"agent_version_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"knowledge_base_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"max_concurrent\": 250,\n \"hangup_on_transfer\": false,\n \"max_call_duration\": 10,\n \"max_call_duration_units\": \"minutes\",\n \"ringing_timeout\": 300,\n \"digital_humans_settings\": {\n \"default_name\": \"random\",\n \"default_caller_number\": \"random\",\n \"default_language\": \"random\",\n \"default_background_noise\": \"none\",\n \"first_message\": \"ai_generated\",\n \"num_runs\": 1\n },\n \"selected_custom_metrics\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"custom_metrics_failing_threshold\": 50,\n \"custom_metrics_passing_threshold\": 50,\n \"runs_per_digital_human\": 1,\n \"delay_between_tests_seconds\": 150,\n \"inactivity_timeout_seconds\": 1050,\n \"always_on\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getbluejay.ai/v1/create-simulation")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"agent_id\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"prompt_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"agent_version_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"knowledge_base_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"max_concurrent\": 250,\n \"hangup_on_transfer\": false,\n \"max_call_duration\": 10,\n \"max_call_duration_units\": \"minutes\",\n \"ringing_timeout\": 300,\n \"digital_humans_settings\": {\n \"default_name\": \"random\",\n \"default_caller_number\": \"random\",\n \"default_language\": \"random\",\n \"default_background_noise\": \"none\",\n \"first_message\": \"ai_generated\",\n \"num_runs\": 1\n },\n \"selected_custom_metrics\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"custom_metrics_failing_threshold\": 50,\n \"custom_metrics_passing_threshold\": 50,\n \"runs_per_digital_human\": 1,\n \"delay_between_tests_seconds\": 150,\n \"inactivity_timeout_seconds\": 1050,\n \"always_on\": false\n}"
response = http.request(request)
puts response.read_body{
"simulation_id": 123,
"status": "200"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Create Simulation
Create a new simulation with the provided details. Returns the simulation ID and a status code.
curl --request POST \
--url https://api.getbluejay.ai/v1/create-simulation \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <x-api-key>' \
--data '
{
"agent_id": "<string>",
"name": "<string>",
"description": "<string>",
"prompt_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"knowledge_base_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"max_concurrent": 250,
"hangup_on_transfer": false,
"max_call_duration": 10,
"max_call_duration_units": "minutes",
"ringing_timeout": 300,
"digital_humans_settings": {
"default_name": "random",
"default_caller_number": "random",
"default_language": "random",
"default_background_noise": "none",
"first_message": "ai_generated",
"num_runs": 1
},
"selected_custom_metrics": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"custom_metrics_failing_threshold": 50,
"custom_metrics_passing_threshold": 50,
"runs_per_digital_human": 1,
"delay_between_tests_seconds": 150,
"inactivity_timeout_seconds": 1050,
"always_on": false
}
'import requests
url = "https://api.getbluejay.ai/v1/create-simulation"
payload = {
"agent_id": "<string>",
"name": "<string>",
"description": "<string>",
"prompt_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"knowledge_base_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"max_concurrent": 250,
"hangup_on_transfer": False,
"max_call_duration": 10,
"max_call_duration_units": "minutes",
"ringing_timeout": 300,
"digital_humans_settings": {
"default_name": "random",
"default_caller_number": "random",
"default_language": "random",
"default_background_noise": "none",
"first_message": "ai_generated",
"num_runs": 1
},
"selected_custom_metrics": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"custom_metrics_failing_threshold": 50,
"custom_metrics_passing_threshold": 50,
"runs_per_digital_human": 1,
"delay_between_tests_seconds": 150,
"inactivity_timeout_seconds": 1050,
"always_on": False
}
headers = {
"X-API-Key": "<x-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': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
agent_id: '<string>',
name: '<string>',
description: '<string>',
prompt_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
agent_version_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
knowledge_base_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
max_concurrent: 250,
hangup_on_transfer: false,
max_call_duration: 10,
max_call_duration_units: 'minutes',
ringing_timeout: 300,
digital_humans_settings: {
default_name: 'random',
default_caller_number: 'random',
default_language: 'random',
default_background_noise: 'none',
first_message: 'ai_generated',
num_runs: 1
},
selected_custom_metrics: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
custom_metrics_failing_threshold: 50,
custom_metrics_passing_threshold: 50,
runs_per_digital_human: 1,
delay_between_tests_seconds: 150,
inactivity_timeout_seconds: 1050,
always_on: false
})
};
fetch('https://api.getbluejay.ai/v1/create-simulation', 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.getbluejay.ai/v1/create-simulation",
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([
'agent_id' => '<string>',
'name' => '<string>',
'description' => '<string>',
'prompt_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'agent_version_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'knowledge_base_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'max_concurrent' => 250,
'hangup_on_transfer' => false,
'max_call_duration' => 10,
'max_call_duration_units' => 'minutes',
'ringing_timeout' => 300,
'digital_humans_settings' => [
'default_name' => 'random',
'default_caller_number' => 'random',
'default_language' => 'random',
'default_background_noise' => 'none',
'first_message' => 'ai_generated',
'num_runs' => 1
],
'selected_custom_metrics' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'custom_metrics_failing_threshold' => 50,
'custom_metrics_passing_threshold' => 50,
'runs_per_digital_human' => 1,
'delay_between_tests_seconds' => 150,
'inactivity_timeout_seconds' => 1050,
'always_on' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <x-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.getbluejay.ai/v1/create-simulation"
payload := strings.NewReader("{\n \"agent_id\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"prompt_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"agent_version_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"knowledge_base_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"max_concurrent\": 250,\n \"hangup_on_transfer\": false,\n \"max_call_duration\": 10,\n \"max_call_duration_units\": \"minutes\",\n \"ringing_timeout\": 300,\n \"digital_humans_settings\": {\n \"default_name\": \"random\",\n \"default_caller_number\": \"random\",\n \"default_language\": \"random\",\n \"default_background_noise\": \"none\",\n \"first_message\": \"ai_generated\",\n \"num_runs\": 1\n },\n \"selected_custom_metrics\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"custom_metrics_failing_threshold\": 50,\n \"custom_metrics_passing_threshold\": 50,\n \"runs_per_digital_human\": 1,\n \"delay_between_tests_seconds\": 150,\n \"inactivity_timeout_seconds\": 1050,\n \"always_on\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<x-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.getbluejay.ai/v1/create-simulation")
.header("X-API-Key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"agent_id\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"prompt_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"agent_version_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"knowledge_base_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"max_concurrent\": 250,\n \"hangup_on_transfer\": false,\n \"max_call_duration\": 10,\n \"max_call_duration_units\": \"minutes\",\n \"ringing_timeout\": 300,\n \"digital_humans_settings\": {\n \"default_name\": \"random\",\n \"default_caller_number\": \"random\",\n \"default_language\": \"random\",\n \"default_background_noise\": \"none\",\n \"first_message\": \"ai_generated\",\n \"num_runs\": 1\n },\n \"selected_custom_metrics\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"custom_metrics_failing_threshold\": 50,\n \"custom_metrics_passing_threshold\": 50,\n \"runs_per_digital_human\": 1,\n \"delay_between_tests_seconds\": 150,\n \"inactivity_timeout_seconds\": 1050,\n \"always_on\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getbluejay.ai/v1/create-simulation")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"agent_id\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"prompt_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"agent_version_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"knowledge_base_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"max_concurrent\": 250,\n \"hangup_on_transfer\": false,\n \"max_call_duration\": 10,\n \"max_call_duration_units\": \"minutes\",\n \"ringing_timeout\": 300,\n \"digital_humans_settings\": {\n \"default_name\": \"random\",\n \"default_caller_number\": \"random\",\n \"default_language\": \"random\",\n \"default_background_noise\": \"none\",\n \"first_message\": \"ai_generated\",\n \"num_runs\": 1\n },\n \"selected_custom_metrics\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"custom_metrics_failing_threshold\": 50,\n \"custom_metrics_passing_threshold\": 50,\n \"runs_per_digital_human\": 1,\n \"delay_between_tests_seconds\": 150,\n \"inactivity_timeout_seconds\": 1050,\n \"always_on\": false\n}"
response = http.request(request)
puts response.read_body{
"simulation_id": 123,
"status": "200"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}# Bluejay — Testing & Monitoring Platform for Conversational AI Agents
You are a senior backend engineer integrating the Bluejay API. Think step-by-step: first understand the endpoint, then plan the integration, then implement with minimal changes.
## Create Simulation — POST /v1/create-simulation
> **What this endpoint does:** Create a new simulation with the provided details. Returns the simulation id and a status code.
**Endpoint:** POST `https://api.getbluejay.ai/v1/create-simulation`
**Auth:** `X-API-Key` header
**Content-Type:** application/json
### Required Parameters
| Name | Type | Description |
|------|------|-------------|
| X-API-Key | string | API key required to authenticate requests. |
| agent_id | string | ID of the agent to be used in the simulation |
Review the full parameter list at https://docs.getbluejay.ai/api-reference/endpoint/create-simulation and include any optional parameters (e.g., `name`, `description`, `agent_version_id`, `knowledge_base_id`, `sequential_calling`, `max_concurrent`) that serve your integration's use case and align with Bluejay's testing and monitoring capabilities.
### Request Body (required fields)
```json
{
"agent_id": "string"
}
```
Refer to the full schema at https://docs.getbluejay.ai/api-reference/endpoint/create-simulation. Include optional fields that serve the goal of setting up for testing and monitoring on Bluejay.
### Example
**POST with body:**
```python
import requests
def create_simulation(payload: dict, api_key: str) -> dict:
url = "https://api.getbluejay.ai/v1/create-simulation"
headers = {"X-API-Key": api_key}
response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()
return response.json()
```
### Constraints
- Minimal changes — only add/change files needed for this integration.
- Match existing codebase patterns (naming, file structure, error handling).
- Include error handling for 422: Validation Error.
### Integration Checklist
Before writing code, verify:
1. Which module/service owns this API domain in the codebase?
2. What HTTP client and error-handling patterns does the project use?
3. Are there existing types/interfaces to extend?
Then implement the integration, export it, and confirm it compiles/passes lint.
agent_version_idDeprecated: prompt_id. Same uuid, still works. If both are sent and they differ, the request is 400.Body
Pydantic model for simulation request
ID of the agent to be used in the simulation
Name of the simulation
Description of the simulation
Deprecated. Use agent_version_id. Same uuid, still works.
Optional default agent version UUID for this simulation
Optional default knowledge base UUID for this simulation
Maximum number of concurrent calls in the simulation (max 500)
0 < x <= 500Whether to hang up the call on transfer
Maximum duration of each call (default is 10). Units specified by max_call_duration_units
Units for max_call_duration: 'minutes' (default) or 'seconds'
minutes, seconds Ringing timeout in seconds for SIP trunks (default 300s)
Settings for digital humans in the simulation
Show child attributes
Show child attributes
Custom metric IDs to enable for this simulation
Score threshold below which a custom metric is considered failing (0-100)
0 <= x <= 100Score threshold at or above which a custom metric is considered passing (0-100)
0 <= x <= 100Number of simulation runs to execute per digital human (defaults to 1 when omitted)
x > 0seconds to wait after a test completes before the next launches (0 = off)
0 <= x <= 300seconds to wait for an agent reply before ending a text conversation (300-1800 = 5-30 min); defaults to 300 when unset
300 <= x <= 1800When true, simulation has always-on digital humans configured