curl --request POST \
--url https://api.getbluejay.ai/v1/queue-http-text-simulation-run \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <x-api-key>' \
--data '
{
"simulation_id": "<string>",
"prompt_id": "<string>",
"agent_version_id": "<string>",
"knowledge_base_id": "<string>",
"digital_human_ids": [
"<string>"
],
"runs_per_digital_human": 1
}
'import requests
url = "https://api.getbluejay.ai/v1/queue-http-text-simulation-run"
payload = {
"simulation_id": "<string>",
"prompt_id": "<string>",
"agent_version_id": "<string>",
"knowledge_base_id": "<string>",
"digital_human_ids": ["<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({
simulation_id: '<string>',
prompt_id: '<string>',
agent_version_id: '<string>',
knowledge_base_id: '<string>',
digital_human_ids: ['<string>'],
runs_per_digital_human: 1
})
};
fetch('https://api.getbluejay.ai/v1/queue-http-text-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-http-text-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([
'simulation_id' => '<string>',
'prompt_id' => '<string>',
'agent_version_id' => '<string>',
'knowledge_base_id' => '<string>',
'digital_human_ids' => [
'<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-http-text-simulation-run"
payload := strings.NewReader("{\n \"simulation_id\": \"<string>\",\n \"prompt_id\": \"<string>\",\n \"agent_version_id\": \"<string>\",\n \"knowledge_base_id\": \"<string>\",\n \"digital_human_ids\": [\n \"<string>\"\n ],\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-http-text-simulation-run")
.header("X-API-Key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"simulation_id\": \"<string>\",\n \"prompt_id\": \"<string>\",\n \"agent_version_id\": \"<string>\",\n \"knowledge_base_id\": \"<string>\",\n \"digital_human_ids\": [\n \"<string>\"\n ],\n \"runs_per_digital_human\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getbluejay.ai/v1/queue-http-text-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 \"simulation_id\": \"<string>\",\n \"prompt_id\": \"<string>\",\n \"agent_version_id\": \"<string>\",\n \"knowledge_base_id\": \"<string>\",\n \"digital_human_ids\": [\n \"<string>\"\n ],\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 HTTP Text Simulation Run
Queue a new simulation run and test results for HTTP text agent. Takes simulation_id, optional agent_version_id (or deprecated prompt_id), knowledge_base_id, and digital_human_ids.
curl --request POST \
--url https://api.getbluejay.ai/v1/queue-http-text-simulation-run \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <x-api-key>' \
--data '
{
"simulation_id": "<string>",
"prompt_id": "<string>",
"agent_version_id": "<string>",
"knowledge_base_id": "<string>",
"digital_human_ids": [
"<string>"
],
"runs_per_digital_human": 1
}
'import requests
url = "https://api.getbluejay.ai/v1/queue-http-text-simulation-run"
payload = {
"simulation_id": "<string>",
"prompt_id": "<string>",
"agent_version_id": "<string>",
"knowledge_base_id": "<string>",
"digital_human_ids": ["<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({
simulation_id: '<string>',
prompt_id: '<string>',
agent_version_id: '<string>',
knowledge_base_id: '<string>',
digital_human_ids: ['<string>'],
runs_per_digital_human: 1
})
};
fetch('https://api.getbluejay.ai/v1/queue-http-text-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-http-text-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([
'simulation_id' => '<string>',
'prompt_id' => '<string>',
'agent_version_id' => '<string>',
'knowledge_base_id' => '<string>',
'digital_human_ids' => [
'<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-http-text-simulation-run"
payload := strings.NewReader("{\n \"simulation_id\": \"<string>\",\n \"prompt_id\": \"<string>\",\n \"agent_version_id\": \"<string>\",\n \"knowledge_base_id\": \"<string>\",\n \"digital_human_ids\": [\n \"<string>\"\n ],\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-http-text-simulation-run")
.header("X-API-Key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"simulation_id\": \"<string>\",\n \"prompt_id\": \"<string>\",\n \"agent_version_id\": \"<string>\",\n \"knowledge_base_id\": \"<string>\",\n \"digital_human_ids\": [\n \"<string>\"\n ],\n \"runs_per_digital_human\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getbluejay.ai/v1/queue-http-text-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 \"simulation_id\": \"<string>\",\n \"prompt_id\": \"<string>\",\n \"agent_version_id\": \"<string>\",\n \"knowledge_base_id\": \"<string>\",\n \"digital_human_ids\": [\n \"<string>\"\n ],\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 HTTP Text Simulation Run — POST /v1/queue-http-text-simulation-run
> **What this endpoint does:** Queue a new simulation run and test results for HTTP text agent. Takes simulation_id, optional agent_version_id (or deprecated prompt_id), knowledge_base_id, and digital_human_ids. If digital_human_ids is not provided, uses all Digital Humans for the simulation. Returns simulation_run_id (experiment_run_id) and simulation_result_ids (array of test result IDs).
**Endpoint:** POST `https://api.getbluejay.ai/v1/queue-http-text-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-http-text-simulation-run and include any optional parameters (e.g., `agent_version_id`, `knowledge_base_id`, `digital_human_ids`) 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-http-text-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_http_text_simulation_run(payload: dict, api_key: str) -> dict:
url = "https://api.getbluejay.ai/v1/queue-http-text-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
Request model for HTTP simulation run
ID of the simulation to be run
Deprecated. Use agent_version_id. Same uuid, still works.
Agent version UUID associated with this run
Deprecated and ignored for grounding (the worker resolves KB from the documents model). Kept as a loose optional pass-through so existing API integrations that still send it keep working.
Digital human IDs to be used in the simulation
Optional per-run override for how many test_results to spawn per selected digital human. Falls back to 1 when omitted.
x > 0Response
Successful Response
Response model for HTTP simulation run