Get Check Run
curl --request GET \
--url https://api.bland.ai/v2/agents/{agent_id}/check-runs/{run_id} \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v2/agents/{agent_id}/check-runs/{run_id}"
headers = {"authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {authorization: '<authorization>'}};
fetch('https://api.bland.ai/v2/agents/{agent_id}/check-runs/{run_id}', 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/v2/agents/{agent_id}/check-runs/{run_id}",
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/v2/agents/{agent_id}/check-runs/{run_id}"
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/v2/agents/{agent_id}/check-runs/{run_id}")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v2/agents/{agent_id}/check-runs/{run_id}")
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": {
"id": "fb12d904-efbe-4bb2-b167-04a5d8446fad",
"agent_id": "3a5dff19-707a-4776-943e-809520a3592a",
"env_type": "production",
"agent_version_id": "20752a9f-c33c-49b1-914c-ba468ea4ad5f",
"semver": "2.1.0",
"version_name": "Insurance intake v2",
"status": "PASSED",
"judge_names": ["Resolution quality", "No policy violations"],
"scenario_count": 2,
"simulations_count": 5,
"overall_passed": true,
"verdicts": [
{
"eval_agent_id": "30dd62b6-13b2-4279-ac57-fdee065880a5",
"eval_agent_version_id": "2ea22a1c-380f-4d94-90ce-0c30b003fbfc",
"name": "Resolution quality",
"required": true,
"target_level_keys": ["good", "excellent"],
"match_rate": 0.8,
"score": 81.3,
"passed": true
},
{
"eval_agent_id": "0497636a-27e3-4b06-b05a-3f49a6610f4f",
"eval_agent_version_id": "aed97f7b-4535-49d3-b125-c4692ab44d87",
"name": "No policy violations",
"required": false,
"target_level_keys": [],
"match_rate": 0.4,
"score": 40.0,
"passed": false
}
],
"simulation_set_id": "92e38d39-f377-4075-9ddc-724096d72d22",
"eval_run_id": "4f96db0e-2456-4b70-81e9-155b3c29a9b5",
"error_message": null,
"triggered_by": "0ce6e187-38fa-40f7-95df-465368d7c104",
"created_at": "2026-09-10T14:03:22.901Z",
"started_at": "2026-09-10T14:03:25.144Z",
"completed_at": "2026-09-10T14:16:58.377Z"
},
"errors": null
}
{
"data": null,
"errors": [
{
"error": "NOT_FOUND",
"message": "Check run not found"
}
]
}
Checks
Get Check Run
Retrieve a check run and its verdicts.
GET
/
v2
/
agents
/
{agent_id}
/
check-runs
/
{run_id}
Get Check Run
curl --request GET \
--url https://api.bland.ai/v2/agents/{agent_id}/check-runs/{run_id} \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v2/agents/{agent_id}/check-runs/{run_id}"
headers = {"authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {authorization: '<authorization>'}};
fetch('https://api.bland.ai/v2/agents/{agent_id}/check-runs/{run_id}', 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/v2/agents/{agent_id}/check-runs/{run_id}",
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/v2/agents/{agent_id}/check-runs/{run_id}"
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/v2/agents/{agent_id}/check-runs/{run_id}")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v2/agents/{agent_id}/check-runs/{run_id}")
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": {
"id": "fb12d904-efbe-4bb2-b167-04a5d8446fad",
"agent_id": "3a5dff19-707a-4776-943e-809520a3592a",
"env_type": "production",
"agent_version_id": "20752a9f-c33c-49b1-914c-ba468ea4ad5f",
"semver": "2.1.0",
"version_name": "Insurance intake v2",
"status": "PASSED",
"judge_names": ["Resolution quality", "No policy violations"],
"scenario_count": 2,
"simulations_count": 5,
"overall_passed": true,
"verdicts": [
{
"eval_agent_id": "30dd62b6-13b2-4279-ac57-fdee065880a5",
"eval_agent_version_id": "2ea22a1c-380f-4d94-90ce-0c30b003fbfc",
"name": "Resolution quality",
"required": true,
"target_level_keys": ["good", "excellent"],
"match_rate": 0.8,
"score": 81.3,
"passed": true
},
{
"eval_agent_id": "0497636a-27e3-4b06-b05a-3f49a6610f4f",
"eval_agent_version_id": "aed97f7b-4535-49d3-b125-c4692ab44d87",
"name": "No policy violations",
"required": false,
"target_level_keys": [],
"match_rate": 0.4,
"score": 40.0,
"passed": false
}
],
"simulation_set_id": "92e38d39-f377-4075-9ddc-724096d72d22",
"eval_run_id": "4f96db0e-2456-4b70-81e9-155b3c29a9b5",
"error_message": null,
"triggered_by": "0ce6e187-38fa-40f7-95df-465368d7c104",
"created_at": "2026-09-10T14:03:22.901Z",
"started_at": "2026-09-10T14:03:25.144Z",
"completed_at": "2026-09-10T14:16:58.377Z"
},
"errors": null
}
{
"data": null,
"errors": [
{
"error": "NOT_FOUND",
"message": "Check run not found"
}
]
}
Overview
Returns one check run with its per-judge verdicts. Poll this after Start Check Run untilstatus is PASSED, FAILED, ERROR, or CANCELLED; only then are overall_passed and verdicts final. The run is a report only: it never changes which version an environment runs.
Headers
string
required
Your API key for authentication.
Path Parameters
string
required
The agent’s unique identifier.
string
required
The check run’s unique identifier, from the
id returned by Start Check Run.Response
object
The check run.
Show check run object
Show check run object
string
Unique identifier for the check run.
string
The agent the run belongs to.
string
The environment whose checks were run:
staging or production.string
The candidate version the run scored.
string | null
The candidate’s published version number.
null when the candidate has never been published, which is the normal case for a staging run.string | null
The candidate’s saved name, or
null if it has none.string
PENDING (created, scoring not yet started), RUNNING (generating and scoring conversations), then one of the terminal states PASSED, FAILED, ERROR, or CANCELLED. A run that stays PENDING or RUNNING for 45 minutes is marked ERROR with the message Check run timed out.array
Display names of the judges frozen into the run when it started. Present while the run is in flight, before any verdicts exist.
integer
Number of scenarios the run drove conversations from.
integer
Conversations generated per scenario.
boolean | null
true when the run PASSED, meaning every judge with required: true passed. false when it FAILED. null while in flight, or when the run ended in ERROR or CANCELLED without a verdict. Informational judges (required: false) never affect this value.array | null
Per-judge results, or
null until the run completes. See data.verdicts below.string | null
ID of the generated conversation set.
null until generation starts.string | null
ID of the scoring run.
null until scoring starts.string | null
Why the run ended in
ERROR, or null.string | null
ID of the user who started the run, or
null when started with an org-level key.string
ISO 8601 timestamp the run was created.
string | null
When scoring began.
null while PENDING.string | null
When the run reached a terminal status.
null while in flight.array | null
One entry per judge, in config order.
null until the run completes.Show verdict object
Show verdict object
string
The judge’s unique identifier.
string
The judge version the run used.
string
The judge’s display name.
boolean
Whether a failing verdict from this judge fails the run.
array
The grade levels counted as passing. Empty for pass/fail judges.
number | null
Fraction of scored conversations,
0 to 1, that landed on a passing level. null when no conversation produced a determinable result.number | null
Mean judge score across scored conversations on a
0 to 100 scale, rounded to one decimal. null when none were scored.boolean | null
true when match_rate is at least 0.5, false when it is lower, null when match_rate is null.null | array
null on success, or a list of error objects if the request failed.{
"data": {
"id": "fb12d904-efbe-4bb2-b167-04a5d8446fad",
"agent_id": "3a5dff19-707a-4776-943e-809520a3592a",
"env_type": "production",
"agent_version_id": "20752a9f-c33c-49b1-914c-ba468ea4ad5f",
"semver": "2.1.0",
"version_name": "Insurance intake v2",
"status": "PASSED",
"judge_names": ["Resolution quality", "No policy violations"],
"scenario_count": 2,
"simulations_count": 5,
"overall_passed": true,
"verdicts": [
{
"eval_agent_id": "30dd62b6-13b2-4279-ac57-fdee065880a5",
"eval_agent_version_id": "2ea22a1c-380f-4d94-90ce-0c30b003fbfc",
"name": "Resolution quality",
"required": true,
"target_level_keys": ["good", "excellent"],
"match_rate": 0.8,
"score": 81.3,
"passed": true
},
{
"eval_agent_id": "0497636a-27e3-4b06-b05a-3f49a6610f4f",
"eval_agent_version_id": "aed97f7b-4535-49d3-b125-c4692ab44d87",
"name": "No policy violations",
"required": false,
"target_level_keys": [],
"match_rate": 0.4,
"score": 40.0,
"passed": false
}
],
"simulation_set_id": "92e38d39-f377-4075-9ddc-724096d72d22",
"eval_run_id": "4f96db0e-2456-4b70-81e9-155b3c29a9b5",
"error_message": null,
"triggered_by": "0ce6e187-38fa-40f7-95df-465368d7c104",
"created_at": "2026-09-10T14:03:22.901Z",
"started_at": "2026-09-10T14:03:25.144Z",
"completed_at": "2026-09-10T14:16:58.377Z"
},
"errors": null
}
{
"data": null,
"errors": [
{
"error": "NOT_FOUND",
"message": "Check run not found"
}
]
}
Docs for agents: llms.txt
Was this page helpful?