List automation runs
curl --request GET \
--url https://app.famulor.de/api/user/automate/flows/{id}/runs \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.famulor.de/api/user/automate/flows/{id}/runs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.famulor.de/api/user/automate/flows/{id}/runs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.famulor.de/api/user/automate/flows/{id}/runs",
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.famulor.de/api/user/automate/flows/{id}/runs"
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))
}{
"runs": [
{
"id": "yHhXbqWj3zJZ5ztDNfUry",
"status": "SUCCEEDED",
"start_time": "2026-07-24T18:23:59.634Z",
"duration_ms": 1
},
{
"id": "x2PqLm90AbCdEfGhIjKlM",
"status": "FAILED",
"start_time": "2026-07-24T17:10:12.000Z",
"duration_ms": 410
}
]
}
{
"run": {
"id": "x2PqLm90AbCdEfGhIjKlM",
"status": "FAILED",
"start_time": "2026-07-24T17:10:12.000Z",
"duration_ms": 410,
"steps": [
{ "name": "trigger", "status": "SUCCEEDED", "classification": "ok", "error": null },
{
"name": "step_1",
"status": "FAILED",
"classification": "missing_connection",
"error": "Request failed with status code 401"
}
]
}
}
{
"message": "Run not found for this automation"
}
List automation runs
List a Famulor automation’s recent executions, or one execution’s step-by-step detail.
GET
/
api
/
user
/
automate
/
flows
/
{id}
/
runs
List automation runs
curl --request GET \
--url https://app.famulor.de/api/user/automate/flows/{id}/runs \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.famulor.de/api/user/automate/flows/{id}/runs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.famulor.de/api/user/automate/flows/{id}/runs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.famulor.de/api/user/automate/flows/{id}/runs",
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.famulor.de/api/user/automate/flows/{id}/runs"
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))
}{
"runs": [
{
"id": "yHhXbqWj3zJZ5ztDNfUry",
"status": "SUCCEEDED",
"start_time": "2026-07-24T18:23:59.634Z",
"duration_ms": 1
},
{
"id": "x2PqLm90AbCdEfGhIjKlM",
"status": "FAILED",
"start_time": "2026-07-24T17:10:12.000Z",
"duration_ms": 410
}
]
}
{
"run": {
"id": "x2PqLm90AbCdEfGhIjKlM",
"status": "FAILED",
"start_time": "2026-07-24T17:10:12.000Z",
"duration_ms": 410,
"steps": [
{ "name": "trigger", "status": "SUCCEEDED", "classification": "ok", "error": null },
{
"name": "step_1",
"status": "FAILED",
"classification": "missing_connection",
"error": "Request failed with status code 401"
}
]
}
}
{
"message": "Run not found for this automation"
}
This endpoint lists an automation’s recent executions (newest first). Pass
Response — list (no
Response — detail (with
A missing automation — or one that does not belong to your account — returns a
run_id to get one execution’s step-by-step detail with a per-step classification — this is your debugger when an automation is failing.
Once you have fixed what made a run fail, retry it from its failed step with Retry automation run — take the run’s id from this list.
Path Parameters
string
required
The ID of the automation (from List automations)
Query Parameters
string
A run ID from the list — returns that run’s step-by-step detail instead of the list
integer
How many recent runs to list (1–20, default 10)
Response — list (no run_id)
array
The automation’s recent executions, newest first
Show run properties
Show run properties
string
The run ID — pass it back as
run_id for the step-by-step detail, or to Retry automation run for a failed runstring
SUCCEEDED, FAILED, PAUSED (parked at a Delay step waiting for its target time — not a failure) or RUNNINGstring
When the run started
integer
The run’s duration in milliseconds
Response — detail (with run_id)
object
The execution’s detail
Show run properties
Show run properties
string
The run ID
string
SUCCEEDED, FAILED, PAUSED or RUNNINGstring
When the run started
integer
The run’s duration in milliseconds
array
Per-step outcome — same shape as the
test.steps of Create automation: {name, status, classification, error}, where classification is ok, paused_at_delay, wiring_error, missing_connection or missing_record404 with {"message": "Automation not found"}. A run_id that does not belong to this automation returns a 404 with {"message": "Run not found for this automation"}.
{
"runs": [
{
"id": "yHhXbqWj3zJZ5ztDNfUry",
"status": "SUCCEEDED",
"start_time": "2026-07-24T18:23:59.634Z",
"duration_ms": 1
},
{
"id": "x2PqLm90AbCdEfGhIjKlM",
"status": "FAILED",
"start_time": "2026-07-24T17:10:12.000Z",
"duration_ms": 410
}
]
}
{
"run": {
"id": "x2PqLm90AbCdEfGhIjKlM",
"status": "FAILED",
"start_time": "2026-07-24T17:10:12.000Z",
"duration_ms": 410,
"steps": [
{ "name": "trigger", "status": "SUCCEEDED", "classification": "ok", "error": null },
{
"name": "step_1",
"status": "FAILED",
"classification": "missing_connection",
"error": "Request failed with status code 401"
}
]
}
}
{
"message": "Run not found for this automation"
}
Related pages: Retry automation run, Update automation, and Authentication.
⌘I