Discover workspace capabilities
Returns compact (id + name, plus a couple of decisive fields) lists of the workspace entities an agent needs to reference by id — inboxes, WhatsApp templates, custom/bot fields, tags, AI agents, sequences, and flows — plus the flow-spec DSL’s step types and valid wait units/channels. Bot fields are reference data only; they cannot be used as a branch condition’s field (only custom fields and built-in contact fields can). Use include (comma-separated) to narrow the response; omit it for the default set an agent needs to build a flow. Call this before flows.create/flows.publish/flows.updateDraft/flows.validate so names in a flow spec resolve to real ids instead of guesses.
curl --request GET \
--url https://app.chatbotx.io/api/v1/capabilities \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.chatbotx.io/api/v1/capabilities"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.chatbotx.io/api/v1/capabilities', 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://app.chatbotx.io/api/v1/capabilities",
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: Bearer <token>"
],
]);
$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://app.chatbotx.io/api/v1/capabilities"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.chatbotx.io/api/v1/capabilities")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.chatbotx.io/api/v1/capabilities")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"inboxes": [
{
"id": "<string>",
"name": "<string>",
"channel": "<string>"
}
],
"templates": [
{
"id": "<string>",
"name": "<string>",
"language": "<string>",
"status": "<string>",
"params": {
"header": [
{
"type": "text",
"text": "<string>",
"parameter_name": "<string>",
"image": {
"link": "<string>"
},
"video": {
"link": "<string>"
},
"document": {
"link": "<string>"
},
"location": {
"latitude": "<string>",
"longitude": "<string>",
"name": "<string>",
"address": "<string>"
}
}
],
"body": [
{
"text": "<string>",
"type": "text",
"parameter_name": "<string>"
}
],
"button": "<unknown>",
"carousel": [
{
"card_index": 123,
"header": [
{
"type": "image",
"image": {
"link": "<string>"
},
"video": {
"link": "<string>"
}
}
],
"body": [
{
"text": "<string>",
"type": "text"
}
],
"button": "<unknown>"
}
],
"limited_time_offer": {
"expiration_time_ms": 123
}
}
}
],
"customFields": [
{
"id": "<string>",
"name": "<string>",
"type": "<string>"
}
],
"botFields": [
{
"id": "<string>",
"name": "<string>",
"type": "<string>"
}
],
"tags": [
{
"id": "<string>",
"name": "<string>"
}
],
"aiAgents": [
{
"id": "<string>",
"name": "<string>"
}
],
"sequences": [
{
"id": "<string>",
"name": "<string>"
}
],
"flows": [
{
"id": "<string>",
"name": "<string>"
}
],
"flowSpec": {
"stepTypes": [
{
"type": "<string>",
"description": "<string>"
}
],
"waitUnits": [
"<string>"
],
"channels": [
"<string>"
]
}
}{
"defined": true,
"code": "businessError",
"status": 400,
"message": "An error occurred while processing your request",
"data": "<unknown>"
}{
"defined": true,
"code": "UNAUTHORIZED",
"status": 401,
"message": "Authentication required",
"data": "<unknown>"
}{
"defined": true,
"code": "FORBIDDEN",
"status": 403,
"message": "You do not have permission to perform this action",
"data": "<unknown>"
}{
"defined": true,
"code": "invalidRequestData",
"status": 422,
"message": "Input validation failed",
"data": {
"issues": [
{
"message": "<string>",
"path": [
"<string>"
]
}
]
}
}{
"defined": true,
"code": "tooManyRequests",
"status": 429,
"message": "Too many requests",
"data": "<unknown>"
}{
"defined": true,
"code": "INTERNAL_SERVER_ERROR",
"status": 500,
"message": "An unexpected error occurred",
"data": "<unknown>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Comma-separated list of capability categories to include. Omit to get the default set.
inboxes, templates, customFields, botFields, tags, aiAgents, sequences, flows, flowSpec Response
OK
Workspace capabilities available to an agent.
Inboxes available in the workspace.
Show child attributes
Show child attributes
WhatsApp message templates available in the workspace.
Show child attributes
Show child attributes
Custom fields available in the workspace.
Show child attributes
Show child attributes
Bot fields available as reference data only.
Show child attributes
Show child attributes
Tags available in the workspace.
Show child attributes
Show child attributes
AI agents available in the workspace.
Show child attributes
Show child attributes
Sequences available in the workspace.
Show child attributes
Show child attributes
Flows available in the workspace.
Show child attributes
Show child attributes
Reference data for authoring a flow spec.
Show child attributes
Show child attributes
Was this page helpful?
curl --request GET \
--url https://app.chatbotx.io/api/v1/capabilities \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.chatbotx.io/api/v1/capabilities"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.chatbotx.io/api/v1/capabilities', 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://app.chatbotx.io/api/v1/capabilities",
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: Bearer <token>"
],
]);
$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://app.chatbotx.io/api/v1/capabilities"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.chatbotx.io/api/v1/capabilities")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.chatbotx.io/api/v1/capabilities")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"inboxes": [
{
"id": "<string>",
"name": "<string>",
"channel": "<string>"
}
],
"templates": [
{
"id": "<string>",
"name": "<string>",
"language": "<string>",
"status": "<string>",
"params": {
"header": [
{
"type": "text",
"text": "<string>",
"parameter_name": "<string>",
"image": {
"link": "<string>"
},
"video": {
"link": "<string>"
},
"document": {
"link": "<string>"
},
"location": {
"latitude": "<string>",
"longitude": "<string>",
"name": "<string>",
"address": "<string>"
}
}
],
"body": [
{
"text": "<string>",
"type": "text",
"parameter_name": "<string>"
}
],
"button": "<unknown>",
"carousel": [
{
"card_index": 123,
"header": [
{
"type": "image",
"image": {
"link": "<string>"
},
"video": {
"link": "<string>"
}
}
],
"body": [
{
"text": "<string>",
"type": "text"
}
],
"button": "<unknown>"
}
],
"limited_time_offer": {
"expiration_time_ms": 123
}
}
}
],
"customFields": [
{
"id": "<string>",
"name": "<string>",
"type": "<string>"
}
],
"botFields": [
{
"id": "<string>",
"name": "<string>",
"type": "<string>"
}
],
"tags": [
{
"id": "<string>",
"name": "<string>"
}
],
"aiAgents": [
{
"id": "<string>",
"name": "<string>"
}
],
"sequences": [
{
"id": "<string>",
"name": "<string>"
}
],
"flows": [
{
"id": "<string>",
"name": "<string>"
}
],
"flowSpec": {
"stepTypes": [
{
"type": "<string>",
"description": "<string>"
}
],
"waitUnits": [
"<string>"
],
"channels": [
"<string>"
]
}
}{
"defined": true,
"code": "businessError",
"status": 400,
"message": "An error occurred while processing your request",
"data": "<unknown>"
}{
"defined": true,
"code": "UNAUTHORIZED",
"status": 401,
"message": "Authentication required",
"data": "<unknown>"
}{
"defined": true,
"code": "FORBIDDEN",
"status": 403,
"message": "You do not have permission to perform this action",
"data": "<unknown>"
}{
"defined": true,
"code": "invalidRequestData",
"status": 422,
"message": "Input validation failed",
"data": {
"issues": [
{
"message": "<string>",
"path": [
"<string>"
]
}
]
}
}{
"defined": true,
"code": "tooManyRequests",
"status": 429,
"message": "Too many requests",
"data": "<unknown>"
}{
"defined": true,
"code": "INTERNAL_SERVER_ERROR",
"status": 500,
"message": "An unexpected error occurred",
"data": "<unknown>"
}