cURL
curl -X GET "https://api.kadoa.com/v4/changes?workflowIds=123,456&startDate=2024-01-01T00:00:00Z&endDate=2024-03-01T00:00:00Z" \
-H "x-api-key: YOUR_API_KEY"
# Exclude data and differences fields for smaller response
curl -X GET "https://api.kadoa.com/v4/changes?workflowIds=123,456&exclude=data,differences" \
-H "x-api-key: YOUR_API_KEY"import requests
url = "https://api.kadoa.com/v4/changes"
headers = {
"x-api-key": "YOUR_API_KEY"
}
params = {
"workflowIds": "123,456",
"startDate": "2024-01-01T00:00:00Z",
"endDate": "2024-03-01T00:00:00Z"
}
response = requests.get(url, headers=headers, params=params)
data = response.json()
print(data)
# Exclude data and differences fields for smaller response
params["exclude"] = "data,differences"
response = requests.get(url, headers=headers, params=params)
data = response.json()
print(data)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.kadoa.com/v4/changes', 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.kadoa.com/v4/changes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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.kadoa.com/v4/changes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
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.kadoa.com/v4/changes")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kadoa.com/v4/changes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"timestamp": "2023-11-07T05:31:56Z",
"changesCount": 123,
"changes": [
{
"id": "<string>",
"workflowId": "<string>",
"data": [
{}
],
"dataPending": true,
"differences": [
{
"fields": [
{
"key": "<string>",
"value": "<string>",
"previousValue": "<string>"
}
]
}
],
"differencesCounts": {
"added": 123,
"removed": 123,
"changed": 123
},
"url": "<string>",
"summary": "<string>",
"screenshotUrl": "<string>",
"createdAt": "2023-11-07T05:31:56Z"
}
],
"pagination": {
"totalCount": 123,
"page": 123,
"totalPages": 123,
"limit": 123
}
}Data Changes
Get all data changes
GET
/
v4
/
changes
cURL
curl -X GET "https://api.kadoa.com/v4/changes?workflowIds=123,456&startDate=2024-01-01T00:00:00Z&endDate=2024-03-01T00:00:00Z" \
-H "x-api-key: YOUR_API_KEY"
# Exclude data and differences fields for smaller response
curl -X GET "https://api.kadoa.com/v4/changes?workflowIds=123,456&exclude=data,differences" \
-H "x-api-key: YOUR_API_KEY"import requests
url = "https://api.kadoa.com/v4/changes"
headers = {
"x-api-key": "YOUR_API_KEY"
}
params = {
"workflowIds": "123,456",
"startDate": "2024-01-01T00:00:00Z",
"endDate": "2024-03-01T00:00:00Z"
}
response = requests.get(url, headers=headers, params=params)
data = response.json()
print(data)
# Exclude data and differences fields for smaller response
params["exclude"] = "data,differences"
response = requests.get(url, headers=headers, params=params)
data = response.json()
print(data)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.kadoa.com/v4/changes', 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.kadoa.com/v4/changes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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.kadoa.com/v4/changes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
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.kadoa.com/v4/changes")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kadoa.com/v4/changes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"timestamp": "2023-11-07T05:31:56Z",
"changesCount": 123,
"changes": [
{
"id": "<string>",
"workflowId": "<string>",
"data": [
{}
],
"dataPending": true,
"differences": [
{
"fields": [
{
"key": "<string>",
"value": "<string>",
"previousValue": "<string>"
}
]
}
],
"differencesCounts": {
"added": 123,
"removed": 123,
"changed": 123
},
"url": "<string>",
"summary": "<string>",
"screenshotUrl": "<string>",
"createdAt": "2023-11-07T05:31:56Z"
}
],
"pagination": {
"totalCount": 123,
"page": 123,
"totalPages": 123,
"limit": 123
}
}Authorizations
ApiKeyAuthBearerAuth
API key for authentication
Query Parameters
Comma-separated list of workflow IDs. If not provided, returns changes for all ACTIVE workflows
Start date to filter changes (ISO format)
End date to filter changes (ISO format)
Number of records to skip for pagination
Number of records to return for pagination
Comma-separated list of fields to exclude from each change object (e.g., "data,differences")
Example:
"data,differences"
⌘I