curl --request POST \
--url https://api.getbluejay.ai/v1/generate-digital-humans \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <x-api-key>' \
--data '
{
"agent_id": "<string>",
"simulation_id": "<string>",
"prompt_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"knowledge_base_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"goal_adherence": [
{
"goal": "<string>",
"num_calls": 123
}
],
"workflow_adherence": {},
"workflow_adherence_v2": {},
"replay_transcript": [
{
"transcript": "<string>",
"success_criteria": "<string>",
"mode": "smart"
}
],
"customer_personas": [
{
"name": "<string>",
"description": "<string>",
"goal": "<string>",
"num_calls": 123
}
],
"system_prompt": 0,
"load_testing": 0,
"red_teaming": 0,
"red_team_attacks": {
"batches": [
{
"intent": "<string>",
"vector_id": "<string>",
"count": 50,
"traits": [
{
"name": "<string>",
"value": "<unknown>",
"completeness": "<string>"
}
],
"custom_success_criteria": "<string>"
}
]
},
"traits": [
{
"trait_name": "<string>",
"value": "<unknown>",
"is_sip_header": false
}
],
"num_runs": 1
}
'import requests
url = "https://api.getbluejay.ai/v1/generate-digital-humans"
payload = {
"agent_id": "<string>",
"simulation_id": "<string>",
"prompt_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"knowledge_base_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"goal_adherence": [
{
"goal": "<string>",
"num_calls": 123
}
],
"workflow_adherence": {},
"workflow_adherence_v2": {},
"replay_transcript": [
{
"transcript": "<string>",
"success_criteria": "<string>",
"mode": "smart"
}
],
"customer_personas": [
{
"name": "<string>",
"description": "<string>",
"goal": "<string>",
"num_calls": 123
}
],
"system_prompt": 0,
"load_testing": 0,
"red_teaming": 0,
"red_team_attacks": { "batches": [
{
"intent": "<string>",
"vector_id": "<string>",
"count": 50,
"traits": [
{
"name": "<string>",
"value": "<unknown>",
"completeness": "<string>"
}
],
"custom_success_criteria": "<string>"
}
] },
"traits": [
{
"trait_name": "<string>",
"value": "<unknown>",
"is_sip_header": False
}
],
"num_runs": 1
}
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>',
simulation_id: '<string>',
prompt_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
agent_version_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
knowledge_base_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
goal_adherence: [{goal: '<string>', num_calls: 123}],
workflow_adherence: {},
workflow_adherence_v2: {},
replay_transcript: [{transcript: '<string>', success_criteria: '<string>', mode: 'smart'}],
customer_personas: [{name: '<string>', description: '<string>', goal: '<string>', num_calls: 123}],
system_prompt: 0,
load_testing: 0,
red_teaming: 0,
red_team_attacks: {
batches: [
{
intent: '<string>',
vector_id: '<string>',
count: 50,
traits: [{name: '<string>', value: '<unknown>', completeness: '<string>'}],
custom_success_criteria: '<string>'
}
]
},
traits: [{trait_name: '<string>', value: '<unknown>', is_sip_header: false}],
num_runs: 1
})
};
fetch('https://api.getbluejay.ai/v1/generate-digital-humans', 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/generate-digital-humans",
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>',
'simulation_id' => '<string>',
'prompt_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'agent_version_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'knowledge_base_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'goal_adherence' => [
[
'goal' => '<string>',
'num_calls' => 123
]
],
'workflow_adherence' => [
],
'workflow_adherence_v2' => [
],
'replay_transcript' => [
[
'transcript' => '<string>',
'success_criteria' => '<string>',
'mode' => 'smart'
]
],
'customer_personas' => [
[
'name' => '<string>',
'description' => '<string>',
'goal' => '<string>',
'num_calls' => 123
]
],
'system_prompt' => 0,
'load_testing' => 0,
'red_teaming' => 0,
'red_team_attacks' => [
'batches' => [
[
'intent' => '<string>',
'vector_id' => '<string>',
'count' => 50,
'traits' => [
[
'name' => '<string>',
'value' => '<unknown>',
'completeness' => '<string>'
]
],
'custom_success_criteria' => '<string>'
]
]
],
'traits' => [
[
'trait_name' => '<string>',
'value' => '<unknown>',
'is_sip_header' => false
]
],
'num_runs' => 1
]),
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/generate-digital-humans"
payload := strings.NewReader("{\n \"agent_id\": \"<string>\",\n \"simulation_id\": \"<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 \"goal_adherence\": [\n {\n \"goal\": \"<string>\",\n \"num_calls\": 123\n }\n ],\n \"workflow_adherence\": {},\n \"workflow_adherence_v2\": {},\n \"replay_transcript\": [\n {\n \"transcript\": \"<string>\",\n \"success_criteria\": \"<string>\",\n \"mode\": \"smart\"\n }\n ],\n \"customer_personas\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"goal\": \"<string>\",\n \"num_calls\": 123\n }\n ],\n \"system_prompt\": 0,\n \"load_testing\": 0,\n \"red_teaming\": 0,\n \"red_team_attacks\": {\n \"batches\": [\n {\n \"intent\": \"<string>\",\n \"vector_id\": \"<string>\",\n \"count\": 50,\n \"traits\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<unknown>\",\n \"completeness\": \"<string>\"\n }\n ],\n \"custom_success_criteria\": \"<string>\"\n }\n ]\n },\n \"traits\": [\n {\n \"trait_name\": \"<string>\",\n \"value\": \"<unknown>\",\n \"is_sip_header\": false\n }\n ],\n \"num_runs\": 1\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/generate-digital-humans")
.header("X-API-Key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"agent_id\": \"<string>\",\n \"simulation_id\": \"<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 \"goal_adherence\": [\n {\n \"goal\": \"<string>\",\n \"num_calls\": 123\n }\n ],\n \"workflow_adherence\": {},\n \"workflow_adherence_v2\": {},\n \"replay_transcript\": [\n {\n \"transcript\": \"<string>\",\n \"success_criteria\": \"<string>\",\n \"mode\": \"smart\"\n }\n ],\n \"customer_personas\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"goal\": \"<string>\",\n \"num_calls\": 123\n }\n ],\n \"system_prompt\": 0,\n \"load_testing\": 0,\n \"red_teaming\": 0,\n \"red_team_attacks\": {\n \"batches\": [\n {\n \"intent\": \"<string>\",\n \"vector_id\": \"<string>\",\n \"count\": 50,\n \"traits\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<unknown>\",\n \"completeness\": \"<string>\"\n }\n ],\n \"custom_success_criteria\": \"<string>\"\n }\n ]\n },\n \"traits\": [\n {\n \"trait_name\": \"<string>\",\n \"value\": \"<unknown>\",\n \"is_sip_header\": false\n }\n ],\n \"num_runs\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getbluejay.ai/v1/generate-digital-humans")
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 \"simulation_id\": \"<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 \"goal_adherence\": [\n {\n \"goal\": \"<string>\",\n \"num_calls\": 123\n }\n ],\n \"workflow_adherence\": {},\n \"workflow_adherence_v2\": {},\n \"replay_transcript\": [\n {\n \"transcript\": \"<string>\",\n \"success_criteria\": \"<string>\",\n \"mode\": \"smart\"\n }\n ],\n \"customer_personas\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"goal\": \"<string>\",\n \"num_calls\": 123\n }\n ],\n \"system_prompt\": 0,\n \"load_testing\": 0,\n \"red_teaming\": 0,\n \"red_team_attacks\": {\n \"batches\": [\n {\n \"intent\": \"<string>\",\n \"vector_id\": \"<string>\",\n \"count\": 50,\n \"traits\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<unknown>\",\n \"completeness\": \"<string>\"\n }\n ],\n \"custom_success_criteria\": \"<string>\"\n }\n ]\n },\n \"traits\": [\n {\n \"trait_name\": \"<string>\",\n \"value\": \"<unknown>\",\n \"is_sip_header\": false\n }\n ],\n \"num_runs\": 1\n}"
response = http.request(request)
puts response.read_body{
"digital_humans": [
"<unknown>"
],
"status": "200",
"success": true,
"test_scenarios": [
"<unknown>"
],
"warning": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Generate Digital Humans
Given an agent this endpoint generates Digital Humans to test that agent based on varying simulation types.
curl --request POST \
--url https://api.getbluejay.ai/v1/generate-digital-humans \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <x-api-key>' \
--data '
{
"agent_id": "<string>",
"simulation_id": "<string>",
"prompt_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"knowledge_base_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"goal_adherence": [
{
"goal": "<string>",
"num_calls": 123
}
],
"workflow_adherence": {},
"workflow_adherence_v2": {},
"replay_transcript": [
{
"transcript": "<string>",
"success_criteria": "<string>",
"mode": "smart"
}
],
"customer_personas": [
{
"name": "<string>",
"description": "<string>",
"goal": "<string>",
"num_calls": 123
}
],
"system_prompt": 0,
"load_testing": 0,
"red_teaming": 0,
"red_team_attacks": {
"batches": [
{
"intent": "<string>",
"vector_id": "<string>",
"count": 50,
"traits": [
{
"name": "<string>",
"value": "<unknown>",
"completeness": "<string>"
}
],
"custom_success_criteria": "<string>"
}
]
},
"traits": [
{
"trait_name": "<string>",
"value": "<unknown>",
"is_sip_header": false
}
],
"num_runs": 1
}
'import requests
url = "https://api.getbluejay.ai/v1/generate-digital-humans"
payload = {
"agent_id": "<string>",
"simulation_id": "<string>",
"prompt_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"knowledge_base_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"goal_adherence": [
{
"goal": "<string>",
"num_calls": 123
}
],
"workflow_adherence": {},
"workflow_adherence_v2": {},
"replay_transcript": [
{
"transcript": "<string>",
"success_criteria": "<string>",
"mode": "smart"
}
],
"customer_personas": [
{
"name": "<string>",
"description": "<string>",
"goal": "<string>",
"num_calls": 123
}
],
"system_prompt": 0,
"load_testing": 0,
"red_teaming": 0,
"red_team_attacks": { "batches": [
{
"intent": "<string>",
"vector_id": "<string>",
"count": 50,
"traits": [
{
"name": "<string>",
"value": "<unknown>",
"completeness": "<string>"
}
],
"custom_success_criteria": "<string>"
}
] },
"traits": [
{
"trait_name": "<string>",
"value": "<unknown>",
"is_sip_header": False
}
],
"num_runs": 1
}
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>',
simulation_id: '<string>',
prompt_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
agent_version_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
knowledge_base_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
goal_adherence: [{goal: '<string>', num_calls: 123}],
workflow_adherence: {},
workflow_adherence_v2: {},
replay_transcript: [{transcript: '<string>', success_criteria: '<string>', mode: 'smart'}],
customer_personas: [{name: '<string>', description: '<string>', goal: '<string>', num_calls: 123}],
system_prompt: 0,
load_testing: 0,
red_teaming: 0,
red_team_attacks: {
batches: [
{
intent: '<string>',
vector_id: '<string>',
count: 50,
traits: [{name: '<string>', value: '<unknown>', completeness: '<string>'}],
custom_success_criteria: '<string>'
}
]
},
traits: [{trait_name: '<string>', value: '<unknown>', is_sip_header: false}],
num_runs: 1
})
};
fetch('https://api.getbluejay.ai/v1/generate-digital-humans', 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/generate-digital-humans",
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>',
'simulation_id' => '<string>',
'prompt_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'agent_version_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'knowledge_base_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'goal_adherence' => [
[
'goal' => '<string>',
'num_calls' => 123
]
],
'workflow_adherence' => [
],
'workflow_adherence_v2' => [
],
'replay_transcript' => [
[
'transcript' => '<string>',
'success_criteria' => '<string>',
'mode' => 'smart'
]
],
'customer_personas' => [
[
'name' => '<string>',
'description' => '<string>',
'goal' => '<string>',
'num_calls' => 123
]
],
'system_prompt' => 0,
'load_testing' => 0,
'red_teaming' => 0,
'red_team_attacks' => [
'batches' => [
[
'intent' => '<string>',
'vector_id' => '<string>',
'count' => 50,
'traits' => [
[
'name' => '<string>',
'value' => '<unknown>',
'completeness' => '<string>'
]
],
'custom_success_criteria' => '<string>'
]
]
],
'traits' => [
[
'trait_name' => '<string>',
'value' => '<unknown>',
'is_sip_header' => false
]
],
'num_runs' => 1
]),
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/generate-digital-humans"
payload := strings.NewReader("{\n \"agent_id\": \"<string>\",\n \"simulation_id\": \"<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 \"goal_adherence\": [\n {\n \"goal\": \"<string>\",\n \"num_calls\": 123\n }\n ],\n \"workflow_adherence\": {},\n \"workflow_adherence_v2\": {},\n \"replay_transcript\": [\n {\n \"transcript\": \"<string>\",\n \"success_criteria\": \"<string>\",\n \"mode\": \"smart\"\n }\n ],\n \"customer_personas\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"goal\": \"<string>\",\n \"num_calls\": 123\n }\n ],\n \"system_prompt\": 0,\n \"load_testing\": 0,\n \"red_teaming\": 0,\n \"red_team_attacks\": {\n \"batches\": [\n {\n \"intent\": \"<string>\",\n \"vector_id\": \"<string>\",\n \"count\": 50,\n \"traits\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<unknown>\",\n \"completeness\": \"<string>\"\n }\n ],\n \"custom_success_criteria\": \"<string>\"\n }\n ]\n },\n \"traits\": [\n {\n \"trait_name\": \"<string>\",\n \"value\": \"<unknown>\",\n \"is_sip_header\": false\n }\n ],\n \"num_runs\": 1\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/generate-digital-humans")
.header("X-API-Key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"agent_id\": \"<string>\",\n \"simulation_id\": \"<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 \"goal_adherence\": [\n {\n \"goal\": \"<string>\",\n \"num_calls\": 123\n }\n ],\n \"workflow_adherence\": {},\n \"workflow_adherence_v2\": {},\n \"replay_transcript\": [\n {\n \"transcript\": \"<string>\",\n \"success_criteria\": \"<string>\",\n \"mode\": \"smart\"\n }\n ],\n \"customer_personas\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"goal\": \"<string>\",\n \"num_calls\": 123\n }\n ],\n \"system_prompt\": 0,\n \"load_testing\": 0,\n \"red_teaming\": 0,\n \"red_team_attacks\": {\n \"batches\": [\n {\n \"intent\": \"<string>\",\n \"vector_id\": \"<string>\",\n \"count\": 50,\n \"traits\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<unknown>\",\n \"completeness\": \"<string>\"\n }\n ],\n \"custom_success_criteria\": \"<string>\"\n }\n ]\n },\n \"traits\": [\n {\n \"trait_name\": \"<string>\",\n \"value\": \"<unknown>\",\n \"is_sip_header\": false\n }\n ],\n \"num_runs\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getbluejay.ai/v1/generate-digital-humans")
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 \"simulation_id\": \"<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 \"goal_adherence\": [\n {\n \"goal\": \"<string>\",\n \"num_calls\": 123\n }\n ],\n \"workflow_adherence\": {},\n \"workflow_adherence_v2\": {},\n \"replay_transcript\": [\n {\n \"transcript\": \"<string>\",\n \"success_criteria\": \"<string>\",\n \"mode\": \"smart\"\n }\n ],\n \"customer_personas\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"goal\": \"<string>\",\n \"num_calls\": 123\n }\n ],\n \"system_prompt\": 0,\n \"load_testing\": 0,\n \"red_teaming\": 0,\n \"red_team_attacks\": {\n \"batches\": [\n {\n \"intent\": \"<string>\",\n \"vector_id\": \"<string>\",\n \"count\": 50,\n \"traits\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<unknown>\",\n \"completeness\": \"<string>\"\n }\n ],\n \"custom_success_criteria\": \"<string>\"\n }\n ]\n },\n \"traits\": [\n {\n \"trait_name\": \"<string>\",\n \"value\": \"<unknown>\",\n \"is_sip_header\": false\n }\n ],\n \"num_runs\": 1\n}"
response = http.request(request)
puts response.read_body{
"digital_humans": [
"<unknown>"
],
"status": "200",
"success": true,
"test_scenarios": [
"<unknown>"
],
"warning": "<string>"
}{
"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.
## Generate Digital Humans — POST /v1/generate-digital-humans
> **What this endpoint does:** Given an agent this endpoint generates Digital Humans to test that agent based on varying simulation types.
**Endpoint:** POST `https://api.getbluejay.ai/v1/generate-digital-humans`
**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 to generate the Digital Humans |
Review the full parameter list at https://docs.getbluejay.ai/api-reference/endpoint/generate-digital-humans and include any optional parameters (e.g., `simulation_id`, `agent_version_id` (or the deprecated alias `prompt_id`), `knowledge_base_id`, `goal_adherence`, `workflow_adherence`, `workflow_adherence_v2`) 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/generate-digital-humans. Include optional fields that serve the goal of setting up for testing and monitoring on Bluejay.
### Example
**POST with body:**
```python
import requests
def generate_digital_humans(payload: dict, api_key: str) -> dict:
url = "https://api.getbluejay.ai/v1/generate-digital-humans"
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 400: Request or generation constraint violation; 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.
allow_silence_tool or silence_tool_instructions; those are set when you create or update a Digital Human explicitly. Generated or returned digital_human objects in responses may still include those fields at model defaults (allow_silence_tool false, silence_tool_instructions "default"). Whether the silence tool runs in voice simulations is determined by the execution layer that reads stored test-case data, not by this API alone.Body
Pydantic model for digital humans (simulation type) request
ID of the agent to be used to generate the digital humans
Optionally attach the digital humans to a simulation
Deprecated. Use agent_version_id. Same uuid, still works.
Agent version UUID to generate from (defaults to latest)
Knowledge base UUID associated with the simulation
List of goal adherence scenarios
Show child attributes
Show child attributes
Dictionary of workflow IDs and their counts
Show child attributes
Show child attributes
Dictionary of workflow_v2 IDs and their counts (uses new graph definition format)
Show child attributes
Show child attributes
List of transcript replays to generate digital humans from
Replay transcript by providing the transcript text directly.
- Replay Transcript From Text
- Replay Transcript From Conversation ID
Show child attributes
Show child attributes
List of customer personas to be used in the simulation
Show child attributes
Show child attributes
Number of digital humans to generate from the agent version's locked system-prompt rules. Each rule is tested from both sides, so this is two per rule and must be even: one caller the agent must help, one it must push back on. A lower number covers fewer rules rather than half-testing every rule.
x >= 0Must be a multiple of 2Number of load testing calls
Number of red teaming calls
Red-team attack matrix (intent x vector x available information). When set, supersedes the legacy red_teaming int. Persisted onto test_cases: free-text intent → intent_summary, attack_vector → attack_vector column, available information → customer_trait_values rows with completeness.
Show child attributes
Show child attributes
Case facts applied to EVERY generated digital human — the fixtures the whole batch shares (e.g. a test account number). Per-caller facts belong on the individual digital human, and neither place takes internal or agent-side information: a trait is always something a real caller could recite.
Show child attributes
Show child attributes
Number of runs per digital human per simulation run (run count).
x >= 1Response
Successful Response
List of digital humans created for the simulation
Status of the response
Whether the generation succeeded
Scenario view of created digital humans (includes original_transcript and formatted_transcript for transcript replays)
Warning message if the request was modified (e.g. truncated due to exceeding the max limit)