List Test Scenarios
curl --request GET \
--url https://api.bland.ai/v1/agent-testing/scenarios \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v1/agent-testing/scenarios"
headers = {"authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {authorization: '<authorization>'}};
fetch('https://api.bland.ai/v1/agent-testing/scenarios', 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.bland.ai/v1/agent-testing/scenarios",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.bland.ai/v1/agent-testing/scenarios"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.bland.ai/v1/agent-testing/scenarios")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/agent-testing/scenarios")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"scenarios": [
{
"id": "a1b2c3d4-5678-9abc-def0-1234567890ab",
"org_id": "b2c3d4e5-6789-abcd-ef01-234567890abc",
"pathway_id": "c3d4e5f6-789a-bcde-f012-34567890abcd",
"persona_id": null,
"name": "Angry Caller Test",
"description": "Tests de-escalation handling",
"category": "ANGRY_CALLER",
"scenario_type": "AGENT",
"tester_persona_prompt": "You are a frustrated customer...",
"tester_persona_name": "Frustrated Customer",
"max_turns": 15,
"bland_tone_enabled": true,
"is_required_for_promotion": false,
"enabled": true,
"assertions": [
{
"id": "d4e5f6a7-89ab-cdef-0123-4567890abcde",
"type": "LLM_JUDGE",
"name": "De-escalation",
"config": {
"prompt": "Did the agent successfully de-escalate the situation?",
"output_type": "score",
"threshold": 0.7
},
"is_required": true,
"weight": 1.5,
"order": 0
}
],
"most_recent_run": {
"id": "e5f6a7b8-9abc-def0-1234-567890abcdef",
"status": "PASSED",
"score": 0.85,
"completed_at": "2026-04-13T18:30:00.000Z"
},
"created_at": "2026-04-10T12:00:00.000Z",
"updated_at": "2026-04-13T18:30:00.000Z"
},
{
"id": "f6a7b8c9-0abc-def1-2345-67890abcdef0",
"org_id": "b2c3d4e5-6789-abcd-ef01-234567890abc",
"pathway_id": "c3d4e5f6-789a-bcde-f012-34567890abcd",
"persona_id": null,
"name": "Happy Path - Booking",
"description": "Tests the standard booking flow",
"category": "HAPPY_PATH",
"scenario_type": "AGENT",
"tester_persona_prompt": "You want to book an appointment for next Tuesday at 2pm.",
"tester_persona_name": "Polite Customer",
"max_turns": 20,
"bland_tone_enabled": false,
"is_required_for_promotion": true,
"enabled": true,
"assertions": [
{
"id": "a7b8c9d0-1abc-ef23-4567-890abcdef012",
"type": "NODE_REACHED",
"name": "Reached Booking Confirmation",
"config": {
"node_id": "booking-confirmation-node"
},
"is_required": true,
"weight": 1.0,
"order": 0
}
],
"most_recent_run": null,
"created_at": "2026-04-12T09:00:00.000Z",
"updated_at": "2026-04-12T09:00:00.000Z"
}
]
}
Agent Testing
List Test Scenarios
List all test scenarios for your organization.
GET
/
v1
/
agent-testing
/
scenarios
List Test Scenarios
curl --request GET \
--url https://api.bland.ai/v1/agent-testing/scenarios \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v1/agent-testing/scenarios"
headers = {"authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {authorization: '<authorization>'}};
fetch('https://api.bland.ai/v1/agent-testing/scenarios', 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.bland.ai/v1/agent-testing/scenarios",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.bland.ai/v1/agent-testing/scenarios"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.bland.ai/v1/agent-testing/scenarios")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/agent-testing/scenarios")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"scenarios": [
{
"id": "a1b2c3d4-5678-9abc-def0-1234567890ab",
"org_id": "b2c3d4e5-6789-abcd-ef01-234567890abc",
"pathway_id": "c3d4e5f6-789a-bcde-f012-34567890abcd",
"persona_id": null,
"name": "Angry Caller Test",
"description": "Tests de-escalation handling",
"category": "ANGRY_CALLER",
"scenario_type": "AGENT",
"tester_persona_prompt": "You are a frustrated customer...",
"tester_persona_name": "Frustrated Customer",
"max_turns": 15,
"bland_tone_enabled": true,
"is_required_for_promotion": false,
"enabled": true,
"assertions": [
{
"id": "d4e5f6a7-89ab-cdef-0123-4567890abcde",
"type": "LLM_JUDGE",
"name": "De-escalation",
"config": {
"prompt": "Did the agent successfully de-escalate the situation?",
"output_type": "score",
"threshold": 0.7
},
"is_required": true,
"weight": 1.5,
"order": 0
}
],
"most_recent_run": {
"id": "e5f6a7b8-9abc-def0-1234-567890abcdef",
"status": "PASSED",
"score": 0.85,
"completed_at": "2026-04-13T18:30:00.000Z"
},
"created_at": "2026-04-10T12:00:00.000Z",
"updated_at": "2026-04-13T18:30:00.000Z"
},
{
"id": "f6a7b8c9-0abc-def1-2345-67890abcdef0",
"org_id": "b2c3d4e5-6789-abcd-ef01-234567890abc",
"pathway_id": "c3d4e5f6-789a-bcde-f012-34567890abcd",
"persona_id": null,
"name": "Happy Path - Booking",
"description": "Tests the standard booking flow",
"category": "HAPPY_PATH",
"scenario_type": "AGENT",
"tester_persona_prompt": "You want to book an appointment for next Tuesday at 2pm.",
"tester_persona_name": "Polite Customer",
"max_turns": 20,
"bland_tone_enabled": false,
"is_required_for_promotion": true,
"enabled": true,
"assertions": [
{
"id": "a7b8c9d0-1abc-ef23-4567-890abcdef012",
"type": "NODE_REACHED",
"name": "Reached Booking Confirmation",
"config": {
"node_id": "booking-confirmation-node"
},
"is_required": true,
"weight": 1.0,
"order": 0
}
],
"most_recent_run": null,
"created_at": "2026-04-12T09:00:00.000Z",
"updated_at": "2026-04-12T09:00:00.000Z"
}
]
}
Headers
string
required
Your API key for authentication.
Query Parameters
string
Filter by pathway ID.
string
Filter by persona ID.
string
Filter by scenario category.
string
Filter by enabled status. Pass
"true" or "false".Response
array
Array of scenario objects, each including assertions and the most recent run.
Show scenario object
Show scenario object
string
Unique identifier for the scenario.
string
Organization ID that owns this scenario.
string
The pathway ID being tested (null if testing a persona).
string
The persona ID being tested (null if testing a pathway).
string
Name of the scenario.
string
Description of the scenario.
string
Scenario category.
string
Type of scenario.
string
Prompt for the simulated caller.
string
Display name for the tester persona.
integer
Maximum conversation turns.
boolean
Whether Bland Tone scoring is enabled.
boolean
Whether this scenario is required for promotion.
boolean
Whether the scenario is enabled.
array
Array of assertion objects.
object
The most recent test run for this scenario (null if never run).
string
ISO 8601 timestamp of when the scenario was created.
string
ISO 8601 timestamp of when the scenario was last updated.
{
"scenarios": [
{
"id": "a1b2c3d4-5678-9abc-def0-1234567890ab",
"org_id": "b2c3d4e5-6789-abcd-ef01-234567890abc",
"pathway_id": "c3d4e5f6-789a-bcde-f012-34567890abcd",
"persona_id": null,
"name": "Angry Caller Test",
"description": "Tests de-escalation handling",
"category": "ANGRY_CALLER",
"scenario_type": "AGENT",
"tester_persona_prompt": "You are a frustrated customer...",
"tester_persona_name": "Frustrated Customer",
"max_turns": 15,
"bland_tone_enabled": true,
"is_required_for_promotion": false,
"enabled": true,
"assertions": [
{
"id": "d4e5f6a7-89ab-cdef-0123-4567890abcde",
"type": "LLM_JUDGE",
"name": "De-escalation",
"config": {
"prompt": "Did the agent successfully de-escalate the situation?",
"output_type": "score",
"threshold": 0.7
},
"is_required": true,
"weight": 1.5,
"order": 0
}
],
"most_recent_run": {
"id": "e5f6a7b8-9abc-def0-1234-567890abcdef",
"status": "PASSED",
"score": 0.85,
"completed_at": "2026-04-13T18:30:00.000Z"
},
"created_at": "2026-04-10T12:00:00.000Z",
"updated_at": "2026-04-13T18:30:00.000Z"
},
{
"id": "f6a7b8c9-0abc-def1-2345-67890abcdef0",
"org_id": "b2c3d4e5-6789-abcd-ef01-234567890abc",
"pathway_id": "c3d4e5f6-789a-bcde-f012-34567890abcd",
"persona_id": null,
"name": "Happy Path - Booking",
"description": "Tests the standard booking flow",
"category": "HAPPY_PATH",
"scenario_type": "AGENT",
"tester_persona_prompt": "You want to book an appointment for next Tuesday at 2pm.",
"tester_persona_name": "Polite Customer",
"max_turns": 20,
"bland_tone_enabled": false,
"is_required_for_promotion": true,
"enabled": true,
"assertions": [
{
"id": "a7b8c9d0-1abc-ef23-4567-890abcdef012",
"type": "NODE_REACHED",
"name": "Reached Booking Confirmation",
"config": {
"node_id": "booking-confirmation-node"
},
"is_required": true,
"weight": 1.0,
"order": 0
}
],
"most_recent_run": null,
"created_at": "2026-04-12T09:00:00.000Z",
"updated_at": "2026-04-12T09:00:00.000Z"
}
]
}
Docs for agents: llms.txt
Was this page helpful?
⌘I