Create Eval Agent Version
curl --request POST \
--url https://api.bland.ai/v1/evals/agents/{eval_agent_id}/versions \
--header 'Content-Type: application/json' \
--header 'authorization: <authorization>' \
--data '
{
"name": "<string>",
"description": {},
"from_version_id": "<string>"
}
'import requests
url = "https://api.bland.ai/v1/evals/agents/{eval_agent_id}/versions"
payload = {
"name": "<string>",
"description": {},
"from_version_id": "<string>"
}
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({name: '<string>', description: {}, from_version_id: '<string>'})
};
fetch('https://api.bland.ai/v1/evals/agents/{eval_agent_id}/versions', 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/agents/{eval_agent_id}/versions",
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([
'name' => '<string>',
'description' => [
],
'from_version_id' => '<string>'
]),
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/evals/agents/{eval_agent_id}/versions"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": {},\n \"from_version_id\": \"<string>\"\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/evals/agents/{eval_agent_id}/versions")
.header("authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": {},\n \"from_version_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/evals/agents/{eval_agent_id}/versions")
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 \"name\": \"<string>\",\n \"description\": {},\n \"from_version_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"errors": null,
"data": {
"id": "e5f6a7b8-c9d0-1234-efab-567890123456",
"org_id": "f0e1d2c3-b4a5-9678-fedc-ba9876543210",
"eval_agent_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"version_number": 4,
"name": "Empathy Check v4",
"description": null,
"state": "editable",
"modality": "audio",
"system_prompt_md": "You are an expert call quality reviewer.",
"prompt_md": "Did the agent express empathy when the caller described their problem?",
"levels": [
{
"level_key": "excellent",
"label": "Excellent",
"prompt_md": "The agent clearly and warmly acknowledged the caller's feelings.",
"color": "emerald"
},
{
"level_key": "poor",
"label": "Poor",
"prompt_md": "The agent ignored or dismissed the caller's feelings.",
"color": "rose"
}
],
"target_level_keys": ["excellent"],
"weight": 10,
"created_from_version_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"created_by": "9a8b7c6d-5e4f-3210-9876-543210fedcba",
"created_at": "2026-05-27T11:30:00.000Z",
"updated_at": "2026-05-27T11:30:00.000Z"
}
}
Versions
Create Eval Agent Version
Fork a new editable draft version of an eval agent.
POST
/
v1
/
evals
/
agents
/
{eval_agent_id}
/
versions
Create Eval Agent Version
curl --request POST \
--url https://api.bland.ai/v1/evals/agents/{eval_agent_id}/versions \
--header 'Content-Type: application/json' \
--header 'authorization: <authorization>' \
--data '
{
"name": "<string>",
"description": {},
"from_version_id": "<string>"
}
'import requests
url = "https://api.bland.ai/v1/evals/agents/{eval_agent_id}/versions"
payload = {
"name": "<string>",
"description": {},
"from_version_id": "<string>"
}
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({name: '<string>', description: {}, from_version_id: '<string>'})
};
fetch('https://api.bland.ai/v1/evals/agents/{eval_agent_id}/versions', 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/agents/{eval_agent_id}/versions",
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([
'name' => '<string>',
'description' => [
],
'from_version_id' => '<string>'
]),
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/evals/agents/{eval_agent_id}/versions"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": {},\n \"from_version_id\": \"<string>\"\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/evals/agents/{eval_agent_id}/versions")
.header("authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": {},\n \"from_version_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/evals/agents/{eval_agent_id}/versions")
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 \"name\": \"<string>\",\n \"description\": {},\n \"from_version_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"errors": null,
"data": {
"id": "e5f6a7b8-c9d0-1234-efab-567890123456",
"org_id": "f0e1d2c3-b4a5-9678-fedc-ba9876543210",
"eval_agent_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"version_number": 4,
"name": "Empathy Check v4",
"description": null,
"state": "editable",
"modality": "audio",
"system_prompt_md": "You are an expert call quality reviewer.",
"prompt_md": "Did the agent express empathy when the caller described their problem?",
"levels": [
{
"level_key": "excellent",
"label": "Excellent",
"prompt_md": "The agent clearly and warmly acknowledged the caller's feelings.",
"color": "emerald"
},
{
"level_key": "poor",
"label": "Poor",
"prompt_md": "The agent ignored or dismissed the caller's feelings.",
"color": "rose"
}
],
"target_level_keys": ["excellent"],
"weight": 10,
"created_from_version_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"created_by": "9a8b7c6d-5e4f-3210-9876-543210fedcba",
"created_at": "2026-05-27T11:30:00.000Z",
"updated_at": "2026-05-27T11:30:00.000Z"
}
}
Headers
string
required
Your API key for authentication.
Path Parameters
string
required
The unique identifier of the eval agent.
Body Parameters
string
Display name for the new version. Between 1 and 200 characters.
string | null
Optional description for the new version.
string
ID of the version to fork from. Defaults to the current draft if not provided.
Response
string
Unique identifier for the new version.
string
ID of the organization that owns this version.
string
ID of the parent eval agent.
integer
Sequential version number assigned to the new draft.
string
Name of the new version.
string | null
Description of the new version, or
null.string
Always
"editable" for a newly forked draft.string
One of
text or audio, inherited from the source version.string
The system prompt for the judge LLM, in Markdown.
string
The grading prompt for the judge LLM, in Markdown.
array of objects
Verdict levels copied from the source version. Each level contains
level_key, label, prompt_md, and optionally color.array of strings
Target level keys copied from the source version.
number
Relative weight copied from the source version. Between 0 and 100.
string | null
ID of the version this was forked from.
string | null
Identifier of the user who created this version, or
null.string
ISO 8601 timestamp for when this version was created.
string
ISO 8601 timestamp for when this version was last updated.
{
"errors": null,
"data": {
"id": "e5f6a7b8-c9d0-1234-efab-567890123456",
"org_id": "f0e1d2c3-b4a5-9678-fedc-ba9876543210",
"eval_agent_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"version_number": 4,
"name": "Empathy Check v4",
"description": null,
"state": "editable",
"modality": "audio",
"system_prompt_md": "You are an expert call quality reviewer.",
"prompt_md": "Did the agent express empathy when the caller described their problem?",
"levels": [
{
"level_key": "excellent",
"label": "Excellent",
"prompt_md": "The agent clearly and warmly acknowledged the caller's feelings.",
"color": "emerald"
},
{
"level_key": "poor",
"label": "Poor",
"prompt_md": "The agent ignored or dismissed the caller's feelings.",
"color": "rose"
}
],
"target_level_keys": ["excellent"],
"weight": 10,
"created_from_version_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"created_by": "9a8b7c6d-5e4f-3210-9876-543210fedcba",
"created_at": "2026-05-27T11:30:00.000Z",
"updated_at": "2026-05-27T11:30:00.000Z"
}
}
Was this page helpful?
⌘I