Publish Workbench Setup
curl --request POST \
--url https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/publications \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/publications"
headers = {"authorization": "<authorization>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {authorization: '<authorization>'}};
fetch('https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/publications', 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}/publications",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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/workbench-setups/{setup_id}/publications"
req, _ := http.NewRequest("POST", 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.post("https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/publications")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/publications")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"errors": null,
"data": {
"workbench_setup_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"current_version_id": "e5f6a7b8-c9d0-1234-efab-345678901234",
"active_version_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"published_version": {
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"workbench_setup_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"version_number": 3,
"name": "Onboarding Quality Check",
"state": "archived",
"attached_agent_count": 4,
"created_by": "9a8b7c6d-5e4f-3210-9876-543210fedcba",
"created_at": "2026-05-20T14:00:00.000Z",
"latest_run": null
}
}
}
Workbench Setups
Publish Workbench Setup
Publish the setup’s current draft as a new active version.
POST
/
v1
/
evals
/
workbench-setups
/
{setup_id}
/
publications
Publish Workbench Setup
curl --request POST \
--url https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/publications \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/publications"
headers = {"authorization": "<authorization>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {authorization: '<authorization>'}};
fetch('https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/publications', 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}/publications",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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/workbench-setups/{setup_id}/publications"
req, _ := http.NewRequest("POST", 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.post("https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/publications")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/evals/workbench-setups/{setup_id}/publications")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"errors": null,
"data": {
"workbench_setup_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"current_version_id": "e5f6a7b8-c9d0-1234-efab-345678901234",
"active_version_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"published_version": {
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"workbench_setup_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"version_number": 3,
"name": "Onboarding Quality Check",
"state": "archived",
"attached_agent_count": 4,
"created_by": "9a8b7c6d-5e4f-3210-9876-543210fedcba",
"created_at": "2026-05-20T14:00:00.000Z",
"latest_run": null
}
}
}
A setup must have at least one attached agent before it can be published. Each attached agent must also have at least one target level key assigned.
Headers
Your API key for authentication.
Path Parameters
The ID of the workbench setup to publish.
Response
ID of the workbench setup that was published.
ID of the new editable draft version created after publishing.
ID of the newly published (archived) version. This is now the active version.
Summary of the version that was published.
Show published_version fields
Show published_version fields
Unique identifier for the published version.
ID of the parent workbench setup.
Version number of the published snapshot.
Display name of the version.
Always
"archived" for a published version.Number of eval agents in this version.
Identifier of the user who created this version, or
null.ISO 8601 timestamp for when this version was created.
The most recent run against this version, or
null if none exist.null on success.{
"errors": null,
"data": {
"workbench_setup_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"current_version_id": "e5f6a7b8-c9d0-1234-efab-345678901234",
"active_version_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"published_version": {
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"workbench_setup_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"version_number": 3,
"name": "Onboarding Quality Check",
"state": "archived",
"attached_agent_count": 4,
"created_by": "9a8b7c6d-5e4f-3210-9876-543210fedcba",
"created_at": "2026-05-20T14:00:00.000Z",
"latest_run": null
}
}
}
Was this page helpful?
⌘I