List bot flow versions
Every saved version of the flow, newest first, each with its graph, label and author. These IDs are what the rollback endpoint takes.
GET
/
api
/
v1
/
accounts
/
{account_id}
/
bot_flows
/
{id}
/
versions
List bot flow versions
curl --request GET \
--url https://app.tied.com/api/v1/accounts/{account_id}/bot_flows/{id}/versions \
--header 'api_access_token: <api-key>'import requests
url = "https://app.tied.com/api/v1/accounts/{account_id}/bot_flows/{id}/versions"
headers = {"api_access_token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {api_access_token: '<api-key>'}};
fetch('https://app.tied.com/api/v1/accounts/{account_id}/bot_flows/{id}/versions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));require 'uri'
require 'net/http'
url = URI("https://app.tied.com/api/v1/accounts/{account_id}/bot_flows/{id}/versions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["api_access_token"] = '<api-key>'
response = http.request(request)
puts response.read_bodypackage main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.tied.com/api/v1/accounts/{account_id}/bot_flows/{id}/versions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("api_access_token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}[
{
"id": 5,
"version_number": 2,
"label": "First published version",
"graph": {
"edges": [
{
"to": "route",
"from": "start"
}
],
"nodes": [
{
"id": "start",
"data": {
"text": "Hi — what can we help with today?"
},
"type": "message"
},
{
"id": "route",
"data": {
"options": [
{
"next": "billing",
"label": "Billing"
},
{
"next": "tech",
"label": "Technical"
}
]
},
"type": "choice"
}
]
},
"created_by_id": 1,
"created_at": "2026-09-21T04:18:24.976Z"
},
{
"id": 4,
"version_number": 1,
"label": "Initial draft",
"graph": {
"edges": [
{
"to": "route",
"from": "start"
}
],
"nodes": [
{
"id": "start",
"data": {
"text": "Hi — what can we help with today?"
},
"type": "message"
},
{
"id": "route",
"data": {
"options": [
{
"next": "billing",
"label": "Billing"
},
{
"next": "tech",
"label": "Technical"
}
]
},
"type": "choice"
}
]
},
"created_by_id": 1,
"created_at": "2026-09-21T04:18:24.937Z"
}
]{
"error": "Resource could not be found"
}{
"error": "Resource could not be found"
}Authorizations
This token can be obtained by visiting the profile page or via rails console. Provides access to endpoints based on the user permissions levels. This token can be saved by an external system when user is created via API, to perform activities on behalf of the user.
Path Parameters
The numeric ID of the bot flow.
Example:
1
Response
Success
The numeric ID of the version. This is what rollback takes.
Sequential within the flow, starting at 1.
The note supplied when the version was created.
The flow graph — nodes and edges.
The agent who created the version.
ISO-8601 timestamp.
Was this page helpful?
⌘I
List bot flow versions
curl --request GET \
--url https://app.tied.com/api/v1/accounts/{account_id}/bot_flows/{id}/versions \
--header 'api_access_token: <api-key>'import requests
url = "https://app.tied.com/api/v1/accounts/{account_id}/bot_flows/{id}/versions"
headers = {"api_access_token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {api_access_token: '<api-key>'}};
fetch('https://app.tied.com/api/v1/accounts/{account_id}/bot_flows/{id}/versions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));require 'uri'
require 'net/http'
url = URI("https://app.tied.com/api/v1/accounts/{account_id}/bot_flows/{id}/versions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["api_access_token"] = '<api-key>'
response = http.request(request)
puts response.read_bodypackage main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.tied.com/api/v1/accounts/{account_id}/bot_flows/{id}/versions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("api_access_token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}[
{
"id": 5,
"version_number": 2,
"label": "First published version",
"graph": {
"edges": [
{
"to": "route",
"from": "start"
}
],
"nodes": [
{
"id": "start",
"data": {
"text": "Hi — what can we help with today?"
},
"type": "message"
},
{
"id": "route",
"data": {
"options": [
{
"next": "billing",
"label": "Billing"
},
{
"next": "tech",
"label": "Technical"
}
]
},
"type": "choice"
}
]
},
"created_by_id": 1,
"created_at": "2026-09-21T04:18:24.976Z"
},
{
"id": 4,
"version_number": 1,
"label": "Initial draft",
"graph": {
"edges": [
{
"to": "route",
"from": "start"
}
],
"nodes": [
{
"id": "start",
"data": {
"text": "Hi — what can we help with today?"
},
"type": "message"
},
{
"id": "route",
"data": {
"options": [
{
"next": "billing",
"label": "Billing"
},
{
"next": "tech",
"label": "Technical"
}
]
},
"type": "choice"
}
]
},
"created_by_id": 1,
"created_at": "2026-09-21T04:18:24.937Z"
}
]{
"error": "Resource could not be found"
}{
"error": "Resource could not be found"
}