Tracker
Retrieve capabilities for a conversation
Returns structured, conversation-aware capabilities metadata for all flows, including whether each flow is currently startable based on guard evaluation for the given conversation state. This endpoint is intended for use by custom actions and external integrations to build dynamic “what can you do?” responses without hard-coded flow lists.
GET
/
conversations
/
{conversation_id}
/
capabilities
Retrieve capabilities for a conversation
curl --request GET \
--url 'http://localhost:5005/conversations/{conversation_id}/capabilities?token='import requests
url = "http://localhost:5005/conversations/{conversation_id}/capabilities?token="
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('http://localhost:5005/conversations/{conversation_id}/capabilities?token=', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "5005",
CURLOPT_URL => "http://localhost:5005/conversations/{conversation_id}/capabilities?token=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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 := "http://localhost:5005/conversations/{conversation_id}/capabilities?token="
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://localhost:5005/conversations/{conversation_id}/capabilities?token=")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:5005/conversations/{conversation_id}/capabilities?token=")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"flows": [
{
"id": "transfer_money",
"name": "Transfer Money",
"description": "Transfer money to another account.",
"guard_condition": null,
"startable": true,
"always_include_in_prompt": false,
"trigger_intents": [
"transfer_money"
]
},
{
"id": "check_balance",
"name": "Check Balance",
"description": "Check your current account balance.",
"guard_condition": "has_verified_account",
"startable": false,
"always_include_in_prompt": false,
"trigger_intents": [
"check_balance",
"check_my_balance"
]
}
]
}{
"version": "1.0.0",
"status": "failure",
"reason": "NotAuthenticated",
"message": "User is not authenticated to access resource.",
"code": 401
}{
"version": "1.0.0",
"status": "failure",
"reason": "NotAuthorized",
"message": "User has insufficient permission to access resource.",
"code": 403
}{
"version": "1.0.0",
"status": "failure",
"reason": "Conflict",
"message": "The request conflicts with the currently loaded model.",
"code": 409
}{
"version": "1.0.0",
"status": "ServerError",
"message": "An unexpected error occurred.",
"code": 500
}Authorizations
TokenAuthJWT
A plaintext token to secure your server, specified at startup in the argument --auth-token thisismysecret
Path Parameters
Id of the conversation
Response
Success
Structured, conversation-aware capabilities metadata returned by GET /conversations/{conversation_id}/capabilities.
List of all flows with their capability metadata, including whether each flow is currently startable for this conversation.
Show child attributes
Show child attributes
⌘I
Retrieve capabilities for a conversation
curl --request GET \
--url 'http://localhost:5005/conversations/{conversation_id}/capabilities?token='import requests
url = "http://localhost:5005/conversations/{conversation_id}/capabilities?token="
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('http://localhost:5005/conversations/{conversation_id}/capabilities?token=', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "5005",
CURLOPT_URL => "http://localhost:5005/conversations/{conversation_id}/capabilities?token=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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 := "http://localhost:5005/conversations/{conversation_id}/capabilities?token="
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://localhost:5005/conversations/{conversation_id}/capabilities?token=")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:5005/conversations/{conversation_id}/capabilities?token=")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"flows": [
{
"id": "transfer_money",
"name": "Transfer Money",
"description": "Transfer money to another account.",
"guard_condition": null,
"startable": true,
"always_include_in_prompt": false,
"trigger_intents": [
"transfer_money"
]
},
{
"id": "check_balance",
"name": "Check Balance",
"description": "Check your current account balance.",
"guard_condition": "has_verified_account",
"startable": false,
"always_include_in_prompt": false,
"trigger_intents": [
"check_balance",
"check_my_balance"
]
}
]
}{
"version": "1.0.0",
"status": "failure",
"reason": "NotAuthenticated",
"message": "User is not authenticated to access resource.",
"code": 401
}{
"version": "1.0.0",
"status": "failure",
"reason": "NotAuthorized",
"message": "User has insufficient permission to access resource.",
"code": 403
}{
"version": "1.0.0",
"status": "failure",
"reason": "Conflict",
"message": "The request conflicts with the currently loaded model.",
"code": 409
}{
"version": "1.0.0",
"status": "ServerError",
"message": "An unexpected error occurred.",
"code": 500
}