List Eval Runs
curl --request GET \
--url https://api.bland.ai/v1/evals/runs \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v1/evals/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/evals/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/evals/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/evals/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/evals/runs")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/evals/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{
"data": {
"object": "list",
"data": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "COMPLETE",
"triggered_by": "manual",
"run_mode": "text",
"resolved_call_count": 50,
"resolved_agent_count": 3,
"resolved_atom_count": 150,
"completed_atom_count": 150,
"summary": {
"overall_score_mean": 82.4,
"text_score_mean": 82.4,
"audio_score_mean": null,
"successful_call_count": 48,
"failed_call_count": 2,
"insufficient_evidence_count": 1,
"target_match_count": 39,
"pass_threshold_pct": 75,
"overall_pass": true
},
"billable_cost_usd": 1.24,
"workbench_setup_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"workbench_setup_version_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"metadata": {},
"created_at": "2026-05-20T14:00:00.000Z",
"started_at": "2026-05-20T14:00:05.000Z",
"completed_at": "2026-05-20T14:03:42.000Z"
},
{
"id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"status": "RUNNING",
"triggered_by": "auto",
"run_mode": "full",
"resolved_call_count": 100,
"resolved_agent_count": 2,
"resolved_atom_count": 200,
"completed_atom_count": 87,
"summary": null,
"billable_cost_usd": null,
"workbench_setup_id": null,
"workbench_setup_version_id": null,
"metadata": { "pipeline": "nightly" },
"created_at": "2026-05-27T02:00:00.000Z",
"started_at": "2026-05-27T02:00:08.000Z",
"completed_at": null
}
],
"has_more": false,
"next_cursor": null
},
"errors": null
}
Experiments
List Eval Runs
List eval runs in your organization, with optional filters.
GET
/
v1
/
evals
/
runs
List Eval Runs
curl --request GET \
--url https://api.bland.ai/v1/evals/runs \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v1/evals/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/evals/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/evals/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/evals/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/evals/runs")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/evals/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{
"data": {
"object": "list",
"data": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "COMPLETE",
"triggered_by": "manual",
"run_mode": "text",
"resolved_call_count": 50,
"resolved_agent_count": 3,
"resolved_atom_count": 150,
"completed_atom_count": 150,
"summary": {
"overall_score_mean": 82.4,
"text_score_mean": 82.4,
"audio_score_mean": null,
"successful_call_count": 48,
"failed_call_count": 2,
"insufficient_evidence_count": 1,
"target_match_count": 39,
"pass_threshold_pct": 75,
"overall_pass": true
},
"billable_cost_usd": 1.24,
"workbench_setup_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"workbench_setup_version_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"metadata": {},
"created_at": "2026-05-20T14:00:00.000Z",
"started_at": "2026-05-20T14:00:05.000Z",
"completed_at": "2026-05-20T14:03:42.000Z"
},
{
"id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"status": "RUNNING",
"triggered_by": "auto",
"run_mode": "full",
"resolved_call_count": 100,
"resolved_agent_count": 2,
"resolved_atom_count": 200,
"completed_atom_count": 87,
"summary": null,
"billable_cost_usd": null,
"workbench_setup_id": null,
"workbench_setup_version_id": null,
"metadata": { "pipeline": "nightly" },
"created_at": "2026-05-27T02:00:00.000Z",
"started_at": "2026-05-27T02:00:08.000Z",
"completed_at": null
}
],
"has_more": false,
"next_cursor": null
},
"errors": null
}
Headers
string
required
Your API key for authentication.
Query Parameters
string
Filter to runs that included this eval agent.
string
Filter to runs started from this workbench setup.
string
Filter by run status. Possible values:
PENDING, QUEUED, RUNNING, COMPLETE, PARTIAL, FAILED, CANCELLED.string
Filter by how the run was triggered. Possible values:
manual, auto, backfill.integer
default:"25"
Number of results to return. Between 1 and 100.
string
Cursor: return results after this object ID.
string
Cursor: return results before this object ID. Cannot be combined with
starting_after.Response
string
Always
"list".array of objects
The list of eval run objects.
Show EvalRun list item fields
Show EvalRun list item fields
string
Unique identifier for the eval run.
string
Current status of the run. One of
PENDING, QUEUED, RUNNING, COMPLETE, PARTIAL, FAILED, CANCELLED.string
How the run was triggered. One of
manual, auto, backfill.string
The scoring modality used. One of
text, audio, full.integer
Number of calls resolved for the run.
integer
Number of eval agents resolved for the run.
integer
Total number of call-by-agent evaluations in the run.
integer
Number of evaluations that have completed.
object or null
Aggregate scoring summary for the run, or
null if not yet available.Show Summary fields
Show Summary fields
number or null
Mean overall score across all completed evaluations, normalized 0-100.
number or null
Mean text-modality score, normalized 0-100.
number or null
Mean audio-modality score, normalized 0-100.
integer
Number of calls that were graded successfully.
integer
Number of calls that failed to grade.
integer
Number of evaluations where evidence was insufficient to produce a verdict.
integer
Number of evaluations where the selected level matched a target level.
number or null
The pass threshold percentage configured for the run, 0-100.
boolean or null
Whether the run met its pass threshold, or
null if no threshold was set.number or null
Billable cost for this run in USD.
string or null
The workbench setup the run was started from, if any.
string or null
The pinned workbench setup version used, if any.
object
Key-value metadata attached to the run.
string
ISO 8601 timestamp when the run was created.
string or null
ISO 8601 timestamp when the run started, or
null if not yet started.string or null
ISO 8601 timestamp when the run completed, or
null if not yet complete.boolean
Whether more results exist beyond this page.
string or null
Cursor to use in
starting_after to retrieve the next page, or null if there are no more results.{
"data": {
"object": "list",
"data": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "COMPLETE",
"triggered_by": "manual",
"run_mode": "text",
"resolved_call_count": 50,
"resolved_agent_count": 3,
"resolved_atom_count": 150,
"completed_atom_count": 150,
"summary": {
"overall_score_mean": 82.4,
"text_score_mean": 82.4,
"audio_score_mean": null,
"successful_call_count": 48,
"failed_call_count": 2,
"insufficient_evidence_count": 1,
"target_match_count": 39,
"pass_threshold_pct": 75,
"overall_pass": true
},
"billable_cost_usd": 1.24,
"workbench_setup_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"workbench_setup_version_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"metadata": {},
"created_at": "2026-05-20T14:00:00.000Z",
"started_at": "2026-05-20T14:00:05.000Z",
"completed_at": "2026-05-20T14:03:42.000Z"
},
{
"id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"status": "RUNNING",
"triggered_by": "auto",
"run_mode": "full",
"resolved_call_count": 100,
"resolved_agent_count": 2,
"resolved_atom_count": 200,
"completed_atom_count": 87,
"summary": null,
"billable_cost_usd": null,
"workbench_setup_id": null,
"workbench_setup_version_id": null,
"metadata": { "pipeline": "nightly" },
"created_at": "2026-05-27T02:00:00.000Z",
"started_at": "2026-05-27T02:00:08.000Z",
"completed_at": null
}
],
"has_more": false,
"next_cursor": null
},
"errors": null
}
Was this page helpful?
⌘I