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
string
required
Your API key for authentication.
Path Parameters
string
required
The ID of the workbench setup to publish.
Response
string
ID of the workbench setup that was published.
string
ID of the new editable draft version created after publishing.
string
ID of the newly published (archived) version. This is now the active version.
object
Summary of the version that was published.
Show published_version fields
Show published_version fields
string
Unique identifier for the published version.
string
ID of the parent workbench setup.
integer
Version number of the published snapshot.
string
Display name of the version.
string
Always
"archived" for a published version.integer
Number of eval agents in this version.
string | null
Identifier of the user who created this version, or
null.string
ISO 8601 timestamp for when this version was created.
object | null
The most recent run against this version, or
null if none exist.null
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