Compare Workflow Versions
curl --request GET \
--url https://api-prod.interactly.ai/workflows/v1/workflows/{workflow_id}/versions/{version1_number}/diff/{version2_number} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api-prod.interactly.ai/workflows/v1/workflows/{workflow_id}/versions/{version1_number}/diff/{version2_number}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api-prod.interactly.ai/workflows/v1/workflows/{workflow_id}/versions/{version1_number}/diff/{version2_number}', 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-prod.interactly.ai/workflows/v1/workflows/{workflow_id}/versions/{version1_number}/diff/{version2_number}",
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://api-prod.interactly.ai/workflows/v1/workflows/{workflow_id}/versions/{version1_number}/diff/{version2_number}"
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://api-prod.interactly.ai/workflows/v1/workflows/{workflow_id}/versions/{version1_number}/diff/{version2_number}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-prod.interactly.ai/workflows/v1/workflows/{workflow_id}/versions/{version1_number}/diff/{version2_number}")
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{
"version1_number": 123,
"version1_name": "<string>",
"version2_number": 123,
"version2_name": "<string>",
"workflow_config_changes": [],
"nodes": [],
"edges": [],
"summary": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Workflow Versions
Compare Workflow Versions
Compare two workflow versions and return a detailed diff.
Args: workflow_id: The workflow ID version1_number: First version number (typically the older version) version2_number: Second version number (typically the newer version)
Returns: VersionDiffResponse with workflow config changes, node changes, and edge changes
GET
/
workflows
/
v1
/
workflows
/
{workflow_id}
/
versions
/
{version1_number}
/
diff
/
{version2_number}
Compare Workflow Versions
curl --request GET \
--url https://api-prod.interactly.ai/workflows/v1/workflows/{workflow_id}/versions/{version1_number}/diff/{version2_number} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api-prod.interactly.ai/workflows/v1/workflows/{workflow_id}/versions/{version1_number}/diff/{version2_number}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api-prod.interactly.ai/workflows/v1/workflows/{workflow_id}/versions/{version1_number}/diff/{version2_number}', 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-prod.interactly.ai/workflows/v1/workflows/{workflow_id}/versions/{version1_number}/diff/{version2_number}",
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://api-prod.interactly.ai/workflows/v1/workflows/{workflow_id}/versions/{version1_number}/diff/{version2_number}"
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://api-prod.interactly.ai/workflows/v1/workflows/{workflow_id}/versions/{version1_number}/diff/{version2_number}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-prod.interactly.ai/workflows/v1/workflows/{workflow_id}/versions/{version1_number}/diff/{version2_number}")
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{
"version1_number": 123,
"version1_name": "<string>",
"version2_number": 123,
"version2_name": "<string>",
"workflow_config_changes": [],
"nodes": [],
"edges": [],
"summary": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Retrieve your API Key from Dashboard API Keys Section.
Path Parameters
Required string length:
24Pattern:
^[0-9a-f]{24}$Example:
"5eb7cf5a86d9755df3a6c593"
Response
Successful Response
Complete diff result between two versions.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes