Update Workbench Setup Version
curl --request PATCH \
--url https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/versions/{version_id} \
--header 'Content-Type: application/json' \
--header 'authorization: <authorization>' \
--data '
{
"name": "<string>",
"description": {},
"attached_agents": [
{}
],
"pass_threshold_pct": {},
"run_mode": "<string>",
"default_test_config_id": {},
"default_call_ids": {}
}
'import requests
url = "https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/versions/{version_id}"
payload = {
"name": "<string>",
"description": {},
"attached_agents": [{}],
"pass_threshold_pct": {},
"run_mode": "<string>",
"default_test_config_id": {},
"default_call_ids": {}
}
headers = {
"authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: {},
attached_agents: [{}],
pass_threshold_pct: {},
run_mode: '<string>',
default_test_config_id: {},
default_call_ids: {}
})
};
fetch('https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/versions/{version_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/v1/evals/workbench-setups/{setup_id}/versions/{version_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => [
],
'attached_agents' => [
[
]
],
'pass_threshold_pct' => [
],
'run_mode' => '<string>',
'default_test_config_id' => [
],
'default_call_ids' => [
]
]),
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/workbench-setups/{setup_id}/versions/{version_id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": {},\n \"attached_agents\": [\n {}\n ],\n \"pass_threshold_pct\": {},\n \"run_mode\": \"<string>\",\n \"default_test_config_id\": {},\n \"default_call_ids\": {}\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/versions/{version_id}")
.header("authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": {},\n \"attached_agents\": [\n {}\n ],\n \"pass_threshold_pct\": {},\n \"run_mode\": \"<string>\",\n \"default_test_config_id\": {},\n \"default_call_ids\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/versions/{version_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": {},\n \"attached_agents\": [\n {}\n ],\n \"pass_threshold_pct\": {},\n \"run_mode\": \"<string>\",\n \"default_test_config_id\": {},\n \"default_call_ids\": {}\n}"
response = http.request(request)
puts response.read_body{
"errors": null,
"data": {
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"org_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"workbench_setup_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"version_number": 4,
"name": "Onboarding Quality Check",
"description": "Updated to include empathy grading.",
"state": "editable",
"attached_agents": [
{
"eval_agent_id": "e5f6a7b8-c9d0-1234-efab-345678901234",
"eval_agent_version_id": "f6a7b8c9-d0e1-2345-fabc-456789012345",
"weight": 40,
"target_level_keys": ["good", "excellent"]
},
{
"eval_agent_id": "a0b1c2d3-e4f5-6789-abcd-ef0123456789",
"eval_agent_version_id": "b1c2d3e4-f5a6-7890-bcde-f01234567890",
"weight": 60,
"target_level_keys": ["acceptable", "good"]
}
],
"pass_threshold_pct": 80,
"run_mode": "full",
"default_test_config_id": null,
"default_call_ids": [
"call_abc123",
"call_def456",
"call_ghi789"
],
"created_from_version_id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"created_by": "9a8b7c6d-5e4f-3210-9876-543210fedcba",
"created_at": "2026-05-20T14:00:00.000Z",
"updated_at": "2026-05-27T12:00:00.000Z"
}
}
Versions
Update Workbench Setup Version
Edit a draft version’s attached agents, threshold, run mode, or default calls.
PATCH
/
v1
/
evals
/
workbench-setups
/
{setup_id}
/
versions
/
{version_id}
Update Workbench Setup Version
curl --request PATCH \
--url https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/versions/{version_id} \
--header 'Content-Type: application/json' \
--header 'authorization: <authorization>' \
--data '
{
"name": "<string>",
"description": {},
"attached_agents": [
{}
],
"pass_threshold_pct": {},
"run_mode": "<string>",
"default_test_config_id": {},
"default_call_ids": {}
}
'import requests
url = "https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/versions/{version_id}"
payload = {
"name": "<string>",
"description": {},
"attached_agents": [{}],
"pass_threshold_pct": {},
"run_mode": "<string>",
"default_test_config_id": {},
"default_call_ids": {}
}
headers = {
"authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: {},
attached_agents: [{}],
pass_threshold_pct: {},
run_mode: '<string>',
default_test_config_id: {},
default_call_ids: {}
})
};
fetch('https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/versions/{version_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/v1/evals/workbench-setups/{setup_id}/versions/{version_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => [
],
'attached_agents' => [
[
]
],
'pass_threshold_pct' => [
],
'run_mode' => '<string>',
'default_test_config_id' => [
],
'default_call_ids' => [
]
]),
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/workbench-setups/{setup_id}/versions/{version_id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": {},\n \"attached_agents\": [\n {}\n ],\n \"pass_threshold_pct\": {},\n \"run_mode\": \"<string>\",\n \"default_test_config_id\": {},\n \"default_call_ids\": {}\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/versions/{version_id}")
.header("authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": {},\n \"attached_agents\": [\n {}\n ],\n \"pass_threshold_pct\": {},\n \"run_mode\": \"<string>\",\n \"default_test_config_id\": {},\n \"default_call_ids\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/versions/{version_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": {},\n \"attached_agents\": [\n {}\n ],\n \"pass_threshold_pct\": {},\n \"run_mode\": \"<string>\",\n \"default_test_config_id\": {},\n \"default_call_ids\": {}\n}"
response = http.request(request)
puts response.read_body{
"errors": null,
"data": {
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"org_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"workbench_setup_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"version_number": 4,
"name": "Onboarding Quality Check",
"description": "Updated to include empathy grading.",
"state": "editable",
"attached_agents": [
{
"eval_agent_id": "e5f6a7b8-c9d0-1234-efab-345678901234",
"eval_agent_version_id": "f6a7b8c9-d0e1-2345-fabc-456789012345",
"weight": 40,
"target_level_keys": ["good", "excellent"]
},
{
"eval_agent_id": "a0b1c2d3-e4f5-6789-abcd-ef0123456789",
"eval_agent_version_id": "b1c2d3e4-f5a6-7890-bcde-f01234567890",
"weight": 60,
"target_level_keys": ["acceptable", "good"]
}
],
"pass_threshold_pct": 80,
"run_mode": "full",
"default_test_config_id": null,
"default_call_ids": [
"call_abc123",
"call_def456",
"call_ghi789"
],
"created_from_version_id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"created_by": "9a8b7c6d-5e4f-3210-9876-543210fedcba",
"created_at": "2026-05-20T14:00:00.000Z",
"updated_at": "2026-05-27T12:00:00.000Z"
}
}
Only versions in the
editable state can be updated. To make changes to a published (archived) version, fork a new draft from it first using the Create Workbench Setup Version endpoint.Headers
Your API key for authentication.
Path Parameters
The ID of the workbench setup.
The ID of the draft version to update.
Body Parameters
All fields are optional. Only include fields you want to update.Updated display name for the version. Between 1 and 200 characters.
Updated description, or
null to clear it.Replaces the full list of attached eval agents. Up to 20 agents. Each item requires:
eval_agent_id(string, required) - ID of the eval agent to attach.eval_agent_version_id(string, required) - Version of the eval agent to use.weight(number, required) - Relative weight for this agent in scoring (0-100).target_level_keys(array of strings, required) - One or more target level keys this agent evaluates against.
Percentage of calls that must pass for a run to be considered passing. Between 0 and 100, or
null to clear.How calls are evaluated. One of
text, audio, or full.ID of the default test configuration to use for runs, or
null to clear.Default call IDs to evaluate against when no explicit call list is provided at run time. Replaces the existing list. Up to 5000 entries.
Response
The full updated version object.
Show version fields
Show version fields
Unique identifier for this version.
ID of the organization that owns this version.
ID of the parent workbench setup.
Monotonically increasing version number.
Display name of this version.
Description of this version, or
null if not set."editable" for a draft, "archived" for a published snapshot.Updated list of eval agents. Each item contains
eval_agent_id, eval_agent_version_id, weight (0-100), and target_level_keys (array of strings).Updated pass threshold percentage (0-100), or
null if not set.Updated run mode. One of
text, audio, or full.Updated default test configuration ID, or
null if not set.Updated default call IDs. Up to 5000 entries.
ID of the version this was forked from, or
null if it is the first version.Identifier of the user who created this version, or
null.ISO 8601 timestamp for when this version was created.
ISO 8601 timestamp for when this version was last updated.
null on success.{
"errors": null,
"data": {
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"org_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"workbench_setup_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"version_number": 4,
"name": "Onboarding Quality Check",
"description": "Updated to include empathy grading.",
"state": "editable",
"attached_agents": [
{
"eval_agent_id": "e5f6a7b8-c9d0-1234-efab-345678901234",
"eval_agent_version_id": "f6a7b8c9-d0e1-2345-fabc-456789012345",
"weight": 40,
"target_level_keys": ["good", "excellent"]
},
{
"eval_agent_id": "a0b1c2d3-e4f5-6789-abcd-ef0123456789",
"eval_agent_version_id": "b1c2d3e4-f5a6-7890-bcde-f01234567890",
"weight": 60,
"target_level_keys": ["acceptable", "good"]
}
],
"pass_threshold_pct": 80,
"run_mode": "full",
"default_test_config_id": null,
"default_call_ids": [
"call_abc123",
"call_def456",
"call_ghi789"
],
"created_from_version_id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"created_by": "9a8b7c6d-5e4f-3210-9876-543210fedcba",
"created_at": "2026-05-20T14:00:00.000Z",
"updated_at": "2026-05-27T12:00:00.000Z"
}
}
Was this page helpful?
⌘I