curl --request POST \
--url https://api.getbluejay.ai/v1/queue-simulation-run \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <x-api-key>' \
--data '
{
"bluejay_as_code_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prompt_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"knowledge_base_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"digital_human_ids": [
"<string>"
],
"phone_number": "<string>",
"sip_uri": "<string>",
"livekit_agent_name": "<string>",
"livekit_metadata": {},
"pipecat_agent_name": "<string>",
"pipecat_agent_configuration": {},
"pipecat_room_properties": {},
"eleven_labs_agent_id": "<string>",
"retell_agent_id": "<string>",
"vapi_assistant_id": "<string>",
"runs_per_digital_human": 1
}
'import requests
url = "https://api.getbluejay.ai/v1/queue-simulation-run"
payload = {
"bluejay_as_code_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prompt_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"knowledge_base_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"digital_human_ids": ["<string>"],
"phone_number": "<string>",
"sip_uri": "<string>",
"livekit_agent_name": "<string>",
"livekit_metadata": {},
"pipecat_agent_name": "<string>",
"pipecat_agent_configuration": {},
"pipecat_room_properties": {},
"eleven_labs_agent_id": "<string>",
"retell_agent_id": "<string>",
"vapi_assistant_id": "<string>",
"runs_per_digital_human": 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({
bluejay_as_code_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
prompt_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
agent_version_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
knowledge_base_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
digital_human_ids: ['<string>'],
phone_number: '<string>',
sip_uri: '<string>',
livekit_agent_name: '<string>',
livekit_metadata: {},
pipecat_agent_name: '<string>',
pipecat_agent_configuration: {},
pipecat_room_properties: {},
eleven_labs_agent_id: '<string>',
retell_agent_id: '<string>',
vapi_assistant_id: '<string>',
runs_per_digital_human: 1
})
};
fetch('https://api.getbluejay.ai/v1/queue-simulation-run', 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/queue-simulation-run",
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([
'bluejay_as_code_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'prompt_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'agent_version_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'knowledge_base_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'digital_human_ids' => [
'<string>'
],
'phone_number' => '<string>',
'sip_uri' => '<string>',
'livekit_agent_name' => '<string>',
'livekit_metadata' => [
],
'pipecat_agent_name' => '<string>',
'pipecat_agent_configuration' => [
],
'pipecat_room_properties' => [
],
'eleven_labs_agent_id' => '<string>',
'retell_agent_id' => '<string>',
'vapi_assistant_id' => '<string>',
'runs_per_digital_human' => 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/queue-simulation-run"
payload := strings.NewReader("{\n \"bluejay_as_code_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\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 \"digital_human_ids\": [\n \"<string>\"\n ],\n \"phone_number\": \"<string>\",\n \"sip_uri\": \"<string>\",\n \"livekit_agent_name\": \"<string>\",\n \"livekit_metadata\": {},\n \"pipecat_agent_name\": \"<string>\",\n \"pipecat_agent_configuration\": {},\n \"pipecat_room_properties\": {},\n \"eleven_labs_agent_id\": \"<string>\",\n \"retell_agent_id\": \"<string>\",\n \"vapi_assistant_id\": \"<string>\",\n \"runs_per_digital_human\": 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/queue-simulation-run")
.header("X-API-Key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"bluejay_as_code_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\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 \"digital_human_ids\": [\n \"<string>\"\n ],\n \"phone_number\": \"<string>\",\n \"sip_uri\": \"<string>\",\n \"livekit_agent_name\": \"<string>\",\n \"livekit_metadata\": {},\n \"pipecat_agent_name\": \"<string>\",\n \"pipecat_agent_configuration\": {},\n \"pipecat_room_properties\": {},\n \"eleven_labs_agent_id\": \"<string>\",\n \"retell_agent_id\": \"<string>\",\n \"vapi_assistant_id\": \"<string>\",\n \"runs_per_digital_human\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getbluejay.ai/v1/queue-simulation-run")
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 \"bluejay_as_code_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\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 \"digital_human_ids\": [\n \"<string>\"\n ],\n \"phone_number\": \"<string>\",\n \"sip_uri\": \"<string>\",\n \"livekit_agent_name\": \"<string>\",\n \"livekit_metadata\": {},\n \"pipecat_agent_name\": \"<string>\",\n \"pipecat_agent_configuration\": {},\n \"pipecat_room_properties\": {},\n \"eleven_labs_agent_id\": \"<string>\",\n \"retell_agent_id\": \"<string>\",\n \"vapi_assistant_id\": \"<string>\",\n \"runs_per_digital_human\": 1\n}"
response = http.request(request)
puts response.read_body{
"simulation_run_id": "<string>",
"simulation_result_ids": [
"<string>"
],
"agent_id": "<string>",
"status": "success"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Queue Simulation Run
Queue a simulation run for processing.
curl --request POST \
--url https://api.getbluejay.ai/v1/queue-simulation-run \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <x-api-key>' \
--data '
{
"bluejay_as_code_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prompt_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"knowledge_base_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"digital_human_ids": [
"<string>"
],
"phone_number": "<string>",
"sip_uri": "<string>",
"livekit_agent_name": "<string>",
"livekit_metadata": {},
"pipecat_agent_name": "<string>",
"pipecat_agent_configuration": {},
"pipecat_room_properties": {},
"eleven_labs_agent_id": "<string>",
"retell_agent_id": "<string>",
"vapi_assistant_id": "<string>",
"runs_per_digital_human": 1
}
'import requests
url = "https://api.getbluejay.ai/v1/queue-simulation-run"
payload = {
"bluejay_as_code_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prompt_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"knowledge_base_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"digital_human_ids": ["<string>"],
"phone_number": "<string>",
"sip_uri": "<string>",
"livekit_agent_name": "<string>",
"livekit_metadata": {},
"pipecat_agent_name": "<string>",
"pipecat_agent_configuration": {},
"pipecat_room_properties": {},
"eleven_labs_agent_id": "<string>",
"retell_agent_id": "<string>",
"vapi_assistant_id": "<string>",
"runs_per_digital_human": 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({
bluejay_as_code_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
prompt_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
agent_version_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
knowledge_base_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
digital_human_ids: ['<string>'],
phone_number: '<string>',
sip_uri: '<string>',
livekit_agent_name: '<string>',
livekit_metadata: {},
pipecat_agent_name: '<string>',
pipecat_agent_configuration: {},
pipecat_room_properties: {},
eleven_labs_agent_id: '<string>',
retell_agent_id: '<string>',
vapi_assistant_id: '<string>',
runs_per_digital_human: 1
})
};
fetch('https://api.getbluejay.ai/v1/queue-simulation-run', 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/queue-simulation-run",
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([
'bluejay_as_code_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'prompt_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'agent_version_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'knowledge_base_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'digital_human_ids' => [
'<string>'
],
'phone_number' => '<string>',
'sip_uri' => '<string>',
'livekit_agent_name' => '<string>',
'livekit_metadata' => [
],
'pipecat_agent_name' => '<string>',
'pipecat_agent_configuration' => [
],
'pipecat_room_properties' => [
],
'eleven_labs_agent_id' => '<string>',
'retell_agent_id' => '<string>',
'vapi_assistant_id' => '<string>',
'runs_per_digital_human' => 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/queue-simulation-run"
payload := strings.NewReader("{\n \"bluejay_as_code_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\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 \"digital_human_ids\": [\n \"<string>\"\n ],\n \"phone_number\": \"<string>\",\n \"sip_uri\": \"<string>\",\n \"livekit_agent_name\": \"<string>\",\n \"livekit_metadata\": {},\n \"pipecat_agent_name\": \"<string>\",\n \"pipecat_agent_configuration\": {},\n \"pipecat_room_properties\": {},\n \"eleven_labs_agent_id\": \"<string>\",\n \"retell_agent_id\": \"<string>\",\n \"vapi_assistant_id\": \"<string>\",\n \"runs_per_digital_human\": 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/queue-simulation-run")
.header("X-API-Key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"bluejay_as_code_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\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 \"digital_human_ids\": [\n \"<string>\"\n ],\n \"phone_number\": \"<string>\",\n \"sip_uri\": \"<string>\",\n \"livekit_agent_name\": \"<string>\",\n \"livekit_metadata\": {},\n \"pipecat_agent_name\": \"<string>\",\n \"pipecat_agent_configuration\": {},\n \"pipecat_room_properties\": {},\n \"eleven_labs_agent_id\": \"<string>\",\n \"retell_agent_id\": \"<string>\",\n \"vapi_assistant_id\": \"<string>\",\n \"runs_per_digital_human\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getbluejay.ai/v1/queue-simulation-run")
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 \"bluejay_as_code_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\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 \"digital_human_ids\": [\n \"<string>\"\n ],\n \"phone_number\": \"<string>\",\n \"sip_uri\": \"<string>\",\n \"livekit_agent_name\": \"<string>\",\n \"livekit_metadata\": {},\n \"pipecat_agent_name\": \"<string>\",\n \"pipecat_agent_configuration\": {},\n \"pipecat_room_properties\": {},\n \"eleven_labs_agent_id\": \"<string>\",\n \"retell_agent_id\": \"<string>\",\n \"vapi_assistant_id\": \"<string>\",\n \"runs_per_digital_human\": 1\n}"
response = http.request(request)
puts response.read_body{
"simulation_run_id": "<string>",
"simulation_result_ids": [
"<string>"
],
"agent_id": "<string>",
"status": "success"
}{
"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.
## Queue Simulation Run — POST /v1/queue-simulation-run
> **What this endpoint does:** Queue a simulation run for processing.
**Endpoint:** POST `https://api.getbluejay.ai/v1/queue-simulation-run`
**Auth:** `X-API-Key` header
**Content-Type:** application/json
### Required Parameters
| Name | Type | Description |
|------|------|-------------|
| X-API-Key | string | API key required to authenticate requests. |
| simulation_id | string | ID of the simulation to be run |
Review the full parameter list at https://docs.getbluejay.ai/api-reference/endpoint/queue-simulation-run and include any optional parameters (e.g., `agent_version_id`, `knowledge_base_id`, `digital_human_ids`, `phone_number`, `sip_uri`, `livekit_agent_name`) that serve your integration's use case and align with Bluejay's testing and monitoring capabilities.
### Request Body (required fields)
```json
{
"simulation_id": "string"
}
```
Refer to the full schema at https://docs.getbluejay.ai/api-reference/endpoint/queue-simulation-run. Include optional fields that serve the goal of setting up for testing and monitoring on Bluejay.
### Example
**POST with body:**
```python
import requests
def queue_simulation_run(payload: dict, api_key: str) -> dict:
url = "https://api.getbluejay.ai/v1/queue-simulation-run"
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
- SimulationRunRequestUsingBACId
- SimulationRunRequest
Queue a simulation run using the simulation's bluejay_as_code_id.
Bluejay-as-Code ID of the simulation to run
Deprecated. Use agent_version_id. Same uuid, still works.
Agent version UUID associated with this run
Knowledge base UUID associated with this run
Digital human IDs to be used in the simulation
Optional phone number to be used in this simulation run (overrides the agent phone number)
Optional SIP URI to be used in this simulation run (overrides the agent SIP URI)
Optional agent name to be used by user's livekit, an empty string will use the default agent
metadata to be passed to the livekit room
Pipecat agent name
Pipecat agent configuration
Pipecat room properties
Optional ElevenLabs Convai agent_id (overrides the agent's eleven_labs_agent_id for this run)
Optional Retell agent_id (overrides the agent's retell_agent_id for this run)
Optional Vapi assistant_id (overrides the agent's vapi_assistant_id for this run)
Optional per-run override for how many test_results to spawn per selected digital human.
x > 0Response
Successful Response