Start Tornado Session
curl --request POST \
--url https://api.bland.ai/v1/agent-testing/tornado/start \
--header 'Content-Type: application/json' \
--header 'authorization: <authorization>' \
--data '
{
"pathway_id": "<string>",
"persona_id": "<string>",
"scenario_ids": {},
"version_number": 123,
"max_iterations": 123,
"timeout_ms": 123
}
'import requests
url = "https://api.bland.ai/v1/agent-testing/tornado/start"
payload = {
"pathway_id": "<string>",
"persona_id": "<string>",
"scenario_ids": {},
"version_number": 123,
"max_iterations": 123,
"timeout_ms": 123
}
headers = {
"authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
pathway_id: '<string>',
persona_id: '<string>',
scenario_ids: {},
version_number: 123,
max_iterations: 123,
timeout_ms: 123
})
};
fetch('https://api.bland.ai/v1/agent-testing/tornado/start', 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/tornado/start",
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([
'pathway_id' => '<string>',
'persona_id' => '<string>',
'scenario_ids' => [
],
'version_number' => 123,
'max_iterations' => 123,
'timeout_ms' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.bland.ai/v1/agent-testing/tornado/start"
payload := strings.NewReader("{\n \"pathway_id\": \"<string>\",\n \"persona_id\": \"<string>\",\n \"scenario_ids\": {},\n \"version_number\": 123,\n \"max_iterations\": 123,\n \"timeout_ms\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("authorization", "<authorization>")
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.bland.ai/v1/agent-testing/tornado/start")
.header("authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"pathway_id\": \"<string>\",\n \"persona_id\": \"<string>\",\n \"scenario_ids\": {},\n \"version_number\": 123,\n \"max_iterations\": 123,\n \"timeout_ms\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/agent-testing/tornado/start")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"pathway_id\": \"<string>\",\n \"persona_id\": \"<string>\",\n \"scenario_ids\": {},\n \"version_number\": 123,\n \"max_iterations\": 123,\n \"timeout_ms\": 123\n}"
response = http.request(request)
puts response.read_body{
"session_id": "e1f2a3b4-5678-9cde-f012-3456789abcde",
"status": "RUNNING",
"pathway_id": "c3d4e5f6-789a-bcde-f012-34567890abcd",
"max_iterations": 5,
"timeout_ms": 900000,
"created_at": "2026-04-14T10:15:00.000Z"
}
Tornado Mode
Start Tornado Session
Start an iterative fix loop that runs tests, analyzes failures, applies fixes, and retests until all scenarios pass. Returns immediately while the loop executes asynchronously.
POST
/
v1
/
agent-testing
/
tornado
/
start
Start Tornado Session
curl --request POST \
--url https://api.bland.ai/v1/agent-testing/tornado/start \
--header 'Content-Type: application/json' \
--header 'authorization: <authorization>' \
--data '
{
"pathway_id": "<string>",
"persona_id": "<string>",
"scenario_ids": {},
"version_number": 123,
"max_iterations": 123,
"timeout_ms": 123
}
'import requests
url = "https://api.bland.ai/v1/agent-testing/tornado/start"
payload = {
"pathway_id": "<string>",
"persona_id": "<string>",
"scenario_ids": {},
"version_number": 123,
"max_iterations": 123,
"timeout_ms": 123
}
headers = {
"authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
pathway_id: '<string>',
persona_id: '<string>',
scenario_ids: {},
version_number: 123,
max_iterations: 123,
timeout_ms: 123
})
};
fetch('https://api.bland.ai/v1/agent-testing/tornado/start', 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/tornado/start",
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([
'pathway_id' => '<string>',
'persona_id' => '<string>',
'scenario_ids' => [
],
'version_number' => 123,
'max_iterations' => 123,
'timeout_ms' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.bland.ai/v1/agent-testing/tornado/start"
payload := strings.NewReader("{\n \"pathway_id\": \"<string>\",\n \"persona_id\": \"<string>\",\n \"scenario_ids\": {},\n \"version_number\": 123,\n \"max_iterations\": 123,\n \"timeout_ms\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("authorization", "<authorization>")
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.bland.ai/v1/agent-testing/tornado/start")
.header("authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"pathway_id\": \"<string>\",\n \"persona_id\": \"<string>\",\n \"scenario_ids\": {},\n \"version_number\": 123,\n \"max_iterations\": 123,\n \"timeout_ms\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/agent-testing/tornado/start")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"pathway_id\": \"<string>\",\n \"persona_id\": \"<string>\",\n \"scenario_ids\": {},\n \"version_number\": 123,\n \"max_iterations\": 123,\n \"timeout_ms\": 123\n}"
response = http.request(request)
puts response.read_body{
"session_id": "e1f2a3b4-5678-9cde-f012-3456789abcde",
"status": "RUNNING",
"pathway_id": "c3d4e5f6-789a-bcde-f012-34567890abcd",
"max_iterations": 5,
"timeout_ms": 900000,
"created_at": "2026-04-14T10:15:00.000Z"
}
Headers
string
required
Your API key for authentication.
Body
string
required
The pathway to fix.
string
The persona ID.
array of strings
Specific scenarios to test. If omitted, runs all enabled scenarios for the pathway. Maximum 50 scenarios.
integer
Pathway version to start from.
integer
Maximum fix iterations. Default
5.integer
Timeout in milliseconds. Default
900000 (15 minutes).Only one tornado session can be active per pathway. Returns
409 Conflict if a session is already running.Response
string
The unique identifier for the tornado session.
string
The initial status of the session. Will be
RUNNING upon creation.string
The pathway being tested and fixed.
integer
The maximum number of fix iterations configured.
integer
The timeout configured for this session in milliseconds.
string
ISO 8601 timestamp of when the session was created.
{
"session_id": "e1f2a3b4-5678-9cde-f012-3456789abcde",
"status": "RUNNING",
"pathway_id": "c3d4e5f6-789a-bcde-f012-34567890abcd",
"max_iterations": 5,
"timeout_ms": 900000,
"created_at": "2026-04-14T10:15:00.000Z"
}
Docs for agents: llms.txt
Was this page helpful?
⌘I