curl --request POST \
--url https://api.cekura.ai/test_framework/v1/scenarios/run_scenarios_pipecat_v2/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"scenarios": [
{
"scenario": 123,
"publish_data_message": "<unknown>"
}
],
"name": "<string>",
"frequency": 1,
"personality_ids": [
123
],
"test_profile_ids": [
123
],
"mock_tool_names": [
"<string>"
],
"personality_id": 123,
"test_profile_id": 123,
"pipecat_data": {
"pipecat_agent_name": "<string>",
"config": "<unknown>",
"room_properties": "<unknown>"
},
"concurrency_limit": 123
}
'import requests
url = "https://api.cekura.ai/test_framework/v1/scenarios/run_scenarios_pipecat_v2/"
payload = {
"scenarios": [
{
"scenario": 123,
"publish_data_message": "<unknown>"
}
],
"name": "<string>",
"frequency": 1,
"personality_ids": [123],
"test_profile_ids": [123],
"mock_tool_names": ["<string>"],
"personality_id": 123,
"test_profile_id": 123,
"pipecat_data": {
"pipecat_agent_name": "<string>",
"config": "<unknown>",
"room_properties": "<unknown>"
},
"concurrency_limit": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
scenarios: [{scenario: 123, publish_data_message: '<unknown>'}],
name: '<string>',
frequency: 1,
personality_ids: [123],
test_profile_ids: [123],
mock_tool_names: ['<string>'],
personality_id: 123,
test_profile_id: 123,
pipecat_data: {
pipecat_agent_name: '<string>',
config: '<unknown>',
room_properties: '<unknown>'
},
concurrency_limit: 123
})
};
fetch('https://api.cekura.ai/test_framework/v1/scenarios/run_scenarios_pipecat_v2/', 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.cekura.ai/test_framework/v1/scenarios/run_scenarios_pipecat_v2/",
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([
'scenarios' => [
[
'scenario' => 123,
'publish_data_message' => '<unknown>'
]
],
'name' => '<string>',
'frequency' => 1,
'personality_ids' => [
123
],
'test_profile_ids' => [
123
],
'mock_tool_names' => [
'<string>'
],
'personality_id' => 123,
'test_profile_id' => 123,
'pipecat_data' => [
'pipecat_agent_name' => '<string>',
'config' => '<unknown>',
'room_properties' => '<unknown>'
],
'concurrency_limit' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.cekura.ai/test_framework/v1/scenarios/run_scenarios_pipecat_v2/"
payload := strings.NewReader("{\n \"scenarios\": [\n {\n \"scenario\": 123,\n \"publish_data_message\": \"<unknown>\"\n }\n ],\n \"name\": \"<string>\",\n \"frequency\": 1,\n \"personality_ids\": [\n 123\n ],\n \"test_profile_ids\": [\n 123\n ],\n \"mock_tool_names\": [\n \"<string>\"\n ],\n \"personality_id\": 123,\n \"test_profile_id\": 123,\n \"pipecat_data\": {\n \"pipecat_agent_name\": \"<string>\",\n \"config\": \"<unknown>\",\n \"room_properties\": \"<unknown>\"\n },\n \"concurrency_limit\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.cekura.ai/test_framework/v1/scenarios/run_scenarios_pipecat_v2/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"scenarios\": [\n {\n \"scenario\": 123,\n \"publish_data_message\": \"<unknown>\"\n }\n ],\n \"name\": \"<string>\",\n \"frequency\": 1,\n \"personality_ids\": [\n 123\n ],\n \"test_profile_ids\": [\n 123\n ],\n \"mock_tool_names\": [\n \"<string>\"\n ],\n \"personality_id\": 123,\n \"test_profile_id\": 123,\n \"pipecat_data\": {\n \"pipecat_agent_name\": \"<string>\",\n \"config\": \"<unknown>\",\n \"room_properties\": \"<unknown>\"\n },\n \"concurrency_limit\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cekura.ai/test_framework/v1/scenarios/run_scenarios_pipecat_v2/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"scenarios\": [\n {\n \"scenario\": 123,\n \"publish_data_message\": \"<unknown>\"\n }\n ],\n \"name\": \"<string>\",\n \"frequency\": 1,\n \"personality_ids\": [\n 123\n ],\n \"test_profile_ids\": [\n 123\n ],\n \"mock_tool_names\": [\n \"<string>\"\n ],\n \"personality_id\": 123,\n \"test_profile_id\": 123,\n \"pipecat_data\": {\n \"pipecat_agent_name\": \"<string>\",\n \"config\": \"<unknown>\",\n \"room_properties\": \"<unknown>\"\n },\n \"concurrency_limit\": 123\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"agent": 123,
"status": "pending",
"run_as_text": false,
"runs": {
"id": 274,
"status": "pending",
"scenario": 1,
"number": null,
"inbound_number": "+11234567890",
"scenario_name": "Customer Support Call (Agent Inbound = True)",
"test_profile_data": null,
"outbound_dial_window_opens_at": null,
"outbound_dial_window_seconds": null,
"outbound_dial_window_closes_at": null
},
"created_at": "2025-02-25T21:00:01.990052Z"
}{
"field_name": [
"<string>"
]
}Run Evaluator Pipecat Cloud (v2)
Execute evaluators against an agent deployed on Pipecat Cloud using project-level credentials. Cekura creates the sessions — no per-scenario room URLs needed. Requires Pipecat Cloud credentials configured on the agent or project.
curl --request POST \
--url https://api.cekura.ai/test_framework/v1/scenarios/run_scenarios_pipecat_v2/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"scenarios": [
{
"scenario": 123,
"publish_data_message": "<unknown>"
}
],
"name": "<string>",
"frequency": 1,
"personality_ids": [
123
],
"test_profile_ids": [
123
],
"mock_tool_names": [
"<string>"
],
"personality_id": 123,
"test_profile_id": 123,
"pipecat_data": {
"pipecat_agent_name": "<string>",
"config": "<unknown>",
"room_properties": "<unknown>"
},
"concurrency_limit": 123
}
'import requests
url = "https://api.cekura.ai/test_framework/v1/scenarios/run_scenarios_pipecat_v2/"
payload = {
"scenarios": [
{
"scenario": 123,
"publish_data_message": "<unknown>"
}
],
"name": "<string>",
"frequency": 1,
"personality_ids": [123],
"test_profile_ids": [123],
"mock_tool_names": ["<string>"],
"personality_id": 123,
"test_profile_id": 123,
"pipecat_data": {
"pipecat_agent_name": "<string>",
"config": "<unknown>",
"room_properties": "<unknown>"
},
"concurrency_limit": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
scenarios: [{scenario: 123, publish_data_message: '<unknown>'}],
name: '<string>',
frequency: 1,
personality_ids: [123],
test_profile_ids: [123],
mock_tool_names: ['<string>'],
personality_id: 123,
test_profile_id: 123,
pipecat_data: {
pipecat_agent_name: '<string>',
config: '<unknown>',
room_properties: '<unknown>'
},
concurrency_limit: 123
})
};
fetch('https://api.cekura.ai/test_framework/v1/scenarios/run_scenarios_pipecat_v2/', 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.cekura.ai/test_framework/v1/scenarios/run_scenarios_pipecat_v2/",
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([
'scenarios' => [
[
'scenario' => 123,
'publish_data_message' => '<unknown>'
]
],
'name' => '<string>',
'frequency' => 1,
'personality_ids' => [
123
],
'test_profile_ids' => [
123
],
'mock_tool_names' => [
'<string>'
],
'personality_id' => 123,
'test_profile_id' => 123,
'pipecat_data' => [
'pipecat_agent_name' => '<string>',
'config' => '<unknown>',
'room_properties' => '<unknown>'
],
'concurrency_limit' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.cekura.ai/test_framework/v1/scenarios/run_scenarios_pipecat_v2/"
payload := strings.NewReader("{\n \"scenarios\": [\n {\n \"scenario\": 123,\n \"publish_data_message\": \"<unknown>\"\n }\n ],\n \"name\": \"<string>\",\n \"frequency\": 1,\n \"personality_ids\": [\n 123\n ],\n \"test_profile_ids\": [\n 123\n ],\n \"mock_tool_names\": [\n \"<string>\"\n ],\n \"personality_id\": 123,\n \"test_profile_id\": 123,\n \"pipecat_data\": {\n \"pipecat_agent_name\": \"<string>\",\n \"config\": \"<unknown>\",\n \"room_properties\": \"<unknown>\"\n },\n \"concurrency_limit\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.cekura.ai/test_framework/v1/scenarios/run_scenarios_pipecat_v2/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"scenarios\": [\n {\n \"scenario\": 123,\n \"publish_data_message\": \"<unknown>\"\n }\n ],\n \"name\": \"<string>\",\n \"frequency\": 1,\n \"personality_ids\": [\n 123\n ],\n \"test_profile_ids\": [\n 123\n ],\n \"mock_tool_names\": [\n \"<string>\"\n ],\n \"personality_id\": 123,\n \"test_profile_id\": 123,\n \"pipecat_data\": {\n \"pipecat_agent_name\": \"<string>\",\n \"config\": \"<unknown>\",\n \"room_properties\": \"<unknown>\"\n },\n \"concurrency_limit\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cekura.ai/test_framework/v1/scenarios/run_scenarios_pipecat_v2/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"scenarios\": [\n {\n \"scenario\": 123,\n \"publish_data_message\": \"<unknown>\"\n }\n ],\n \"name\": \"<string>\",\n \"frequency\": 1,\n \"personality_ids\": [\n 123\n ],\n \"test_profile_ids\": [\n 123\n ],\n \"mock_tool_names\": [\n \"<string>\"\n ],\n \"personality_id\": 123,\n \"test_profile_id\": 123,\n \"pipecat_data\": {\n \"pipecat_agent_name\": \"<string>\",\n \"config\": \"<unknown>\",\n \"room_properties\": \"<unknown>\"\n },\n \"concurrency_limit\": 123\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"agent": 123,
"status": "pending",
"run_as_text": false,
"runs": {
"id": 274,
"status": "pending",
"scenario": 1,
"number": null,
"inbound_number": "+11234567890",
"scenario_name": "Customer Support Call (Agent Inbound = True)",
"test_profile_data": null,
"outbound_dial_window_opens_at": null,
"outbound_dial_window_seconds": null,
"outbound_dial_window_closes_at": null
},
"created_at": "2025-02-25T21:00:01.990052Z"
}{
"field_name": [
"<string>"
]
}Authorizations
OAuth access token issued by Cekura for connected apps.
Body
Schema for the run_scenarios_pipecat_v2 endpoint with automated Pipecat Cloud integration. Uses Pipecat Cloud SDK to automatically create sessions and Daily.co rooms.
List of scenarios to run with automated Pipecat Cloud session creation
Show child attributes
Show child attributes
Optional name for the scenario result
Number of times to run each scenario (default: 1)
1 <= x <= 100List of personality IDs to override for this run. If not provided, uses the scenario's default personality.
List of test profile IDs to override for this run. If not provided, uses the scenario's default test profile.
Names of mock tools to activate for this run. Omit (or send null) to mock every tool configured on the agent; send an empty list to mock none so every tool keeps its original endpoint; send specific names to mock only those.
Single personality ID override. Merged into personality_ids; prefer personality_ids for multiple.
Single test profile ID override. Merged into test_profile_ids; prefer test_profile_ids for multiple.
Per-run Pipecat Cloud overrides (pipecat_agent_name, config, room_properties). Credentials are read from the agent/project.
Show child attributes
Show child attributes
Optional cap on how many of this run's calls execute concurrently.
Response
ID of the result
ID of the agent
Status of the result
pending, running, completed, failed Whether the scenario ran as text or not
false
Show child attributes
Show child attributes
{
"id": 274,
"status": "pending",
"scenario": 1,
"number": null,
"inbound_number": "+11234567890",
"scenario_name": "Customer Support Call (Agent Inbound = True)",
"test_profile_data": null,
"outbound_dial_window_opens_at": null,
"outbound_dial_window_seconds": null,
"outbound_dial_window_closes_at": null
}
{
"id": 275,
"status": "pending",
"scenario": 2,
"number": "+11234567890",
"inbound_number": null,
"scenario_name": "Outbound Sales Call (Agent Inbound = False)",
"test_profile_data": null,
"outbound_dial_window_opens_at": "2026-06-24T10:47:30Z",
"outbound_dial_window_seconds": 300,
"outbound_dial_window_closes_at": "2026-06-24T10:52:30Z"
}
"2025-02-25T21:00:01.990052Z"