List Test Runs
curl --request GET \
--url https://api.bland.ai/v1/agent-testing/runs \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v1/agent-testing/runs"
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/runs', 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/runs",
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/runs"
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/runs")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/agent-testing/runs")
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{
"runs": [
{
"id": "a3f1b2c4-5d6e-7f8a-9b0c-1d2e3f4a5b6c",
"scenario_id": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"pathway_id": "b1693602-c05e-4b5c-b187-d0189a42aebf",
"persona_id": "c2d3e4f5-6a7b-8c9d-0e1f-2a3b4c5d6e7f",
"batch_id": null,
"status": "PASSED",
"overall_score": 0.92,
"turn_count": 8,
"duration_ms": 14320,
"created_at": "2026-04-14T10:30:00.000Z",
"scenario": {
"id": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"name": "Appointment Booking - Happy Path"
},
"assertion_results": [
{
"assertion_id": "d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f9a",
"type": "contains",
"target": "transcript",
"expected": "appointment confirmed",
"passed": true
},
{
"assertion_id": "e5f6a7b8-9c0d-1e2f-3a4b-5c6d7e8f9a0b",
"type": "node_visited",
"target": "nodes_visited",
"expected": "confirm_booking",
"passed": true
}
]
},
{
"id": "b4c2d3e5-6f7a-8b9c-0d1e-2f3a4b5c6d7e",
"scenario_id": "2b3c4d5e-6f7a-8b9c-0d1e-2f3a4b5c6d7e",
"pathway_id": "b1693602-c05e-4b5c-b187-d0189a42aebf",
"persona_id": "c2d3e4f5-6a7b-8c9d-0e1f-2a3b4c5d6e7f",
"batch_id": null,
"status": "FAILED",
"overall_score": 0.45,
"turn_count": 12,
"duration_ms": 21050,
"created_at": "2026-04-14T10:28:00.000Z",
"scenario": {
"id": "2b3c4d5e-6f7a-8b9c-0d1e-2f3a4b5c6d7e",
"name": "Cancellation Flow - Angry Customer"
},
"assertion_results": [
{
"assertion_id": "f6a7b8c9-0d1e-2f3a-4b5c-6d7e8f9a0b1c",
"type": "contains",
"target": "transcript",
"expected": "cancellation confirmed",
"passed": false
}
]
}
],
"total_count": 2
}
Agent Testing
List Test Runs
List test runs with optional filtering and pagination.
GET
/
v1
/
agent-testing
/
runs
List Test Runs
curl --request GET \
--url https://api.bland.ai/v1/agent-testing/runs \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v1/agent-testing/runs"
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/runs', 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/runs",
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/runs"
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/runs")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/agent-testing/runs")
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{
"runs": [
{
"id": "a3f1b2c4-5d6e-7f8a-9b0c-1d2e3f4a5b6c",
"scenario_id": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"pathway_id": "b1693602-c05e-4b5c-b187-d0189a42aebf",
"persona_id": "c2d3e4f5-6a7b-8c9d-0e1f-2a3b4c5d6e7f",
"batch_id": null,
"status": "PASSED",
"overall_score": 0.92,
"turn_count": 8,
"duration_ms": 14320,
"created_at": "2026-04-14T10:30:00.000Z",
"scenario": {
"id": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"name": "Appointment Booking - Happy Path"
},
"assertion_results": [
{
"assertion_id": "d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f9a",
"type": "contains",
"target": "transcript",
"expected": "appointment confirmed",
"passed": true
},
{
"assertion_id": "e5f6a7b8-9c0d-1e2f-3a4b-5c6d7e8f9a0b",
"type": "node_visited",
"target": "nodes_visited",
"expected": "confirm_booking",
"passed": true
}
]
},
{
"id": "b4c2d3e5-6f7a-8b9c-0d1e-2f3a4b5c6d7e",
"scenario_id": "2b3c4d5e-6f7a-8b9c-0d1e-2f3a4b5c6d7e",
"pathway_id": "b1693602-c05e-4b5c-b187-d0189a42aebf",
"persona_id": "c2d3e4f5-6a7b-8c9d-0e1f-2a3b4c5d6e7f",
"batch_id": null,
"status": "FAILED",
"overall_score": 0.45,
"turn_count": 12,
"duration_ms": 21050,
"created_at": "2026-04-14T10:28:00.000Z",
"scenario": {
"id": "2b3c4d5e-6f7a-8b9c-0d1e-2f3a4b5c6d7e",
"name": "Cancellation Flow - Angry Customer"
},
"assertion_results": [
{
"assertion_id": "f6a7b8c9-0d1e-2f3a-4b5c-6d7e8f9a0b1c",
"type": "contains",
"target": "transcript",
"expected": "cancellation confirmed",
"passed": false
}
]
}
],
"total_count": 2
}
Headers
string
required
Your API key for authentication.
Query Parameters
string
Filter runs by scenario ID.
string
Filter runs by pathway ID.
string
Filter runs by persona ID.
string
Filter runs by batch ID.
string
Filter runs by status. Possible values:
PENDING, RUNNING, PASSED, FAILED, ERROR, CANCELLED.integer
default:"50"
Maximum number of results to return. Must be between 1 and 100.
integer
default:"0"
Offset for pagination. Use in combination with
limit to page through results.Response
array of objects
An array of test run objects. Each run includes scenario information and assertion results.
integer
The total number of runs matching the applied filters.
{
"runs": [
{
"id": "a3f1b2c4-5d6e-7f8a-9b0c-1d2e3f4a5b6c",
"scenario_id": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"pathway_id": "b1693602-c05e-4b5c-b187-d0189a42aebf",
"persona_id": "c2d3e4f5-6a7b-8c9d-0e1f-2a3b4c5d6e7f",
"batch_id": null,
"status": "PASSED",
"overall_score": 0.92,
"turn_count": 8,
"duration_ms": 14320,
"created_at": "2026-04-14T10:30:00.000Z",
"scenario": {
"id": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"name": "Appointment Booking - Happy Path"
},
"assertion_results": [
{
"assertion_id": "d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f9a",
"type": "contains",
"target": "transcript",
"expected": "appointment confirmed",
"passed": true
},
{
"assertion_id": "e5f6a7b8-9c0d-1e2f-3a4b-5c6d7e8f9a0b",
"type": "node_visited",
"target": "nodes_visited",
"expected": "confirm_booking",
"passed": true
}
]
},
{
"id": "b4c2d3e5-6f7a-8b9c-0d1e-2f3a4b5c6d7e",
"scenario_id": "2b3c4d5e-6f7a-8b9c-0d1e-2f3a4b5c6d7e",
"pathway_id": "b1693602-c05e-4b5c-b187-d0189a42aebf",
"persona_id": "c2d3e4f5-6a7b-8c9d-0e1f-2a3b4c5d6e7f",
"batch_id": null,
"status": "FAILED",
"overall_score": 0.45,
"turn_count": 12,
"duration_ms": 21050,
"created_at": "2026-04-14T10:28:00.000Z",
"scenario": {
"id": "2b3c4d5e-6f7a-8b9c-0d1e-2f3a4b5c6d7e",
"name": "Cancellation Flow - Angry Customer"
},
"assertion_results": [
{
"assertion_id": "f6a7b8c9-0d1e-2f3a-4b5c-6d7e8f9a0b1c",
"type": "contains",
"target": "transcript",
"expected": "cancellation confirmed",
"passed": false
}
]
}
],
"total_count": 2
}
Docs for agents: llms.txt
Was this page helpful?
⌘I