Restore previous version
curl --request POST \
--url https://app.famulor.de/api/user/automate/flows/{id}/restore \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.famulor.de/api/user/automate/flows/{id}/restore', 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}/restore"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(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}/restore",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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}/restore"
req, _ := http.NewRequest("POST", 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))
}{
"automation_id": "f4EaLhOW2zoEsXXSOJP2r",
"name": "Order lookup",
"status": "enabled",
"restored_version_id": "8auMJQtqBnE1X8ZP7WVnI",
"note": "Rolled back to the previous published version and re-published it live."
}
{
"message": "There is no earlier version of this automation to roll back to.",
"error": "no_previous_version"
}
{
"message": "Automation not found, or it does not belong to your account.",
"error": "not_found"
}
Restore previous version
Roll a Famulor automation back to its previous published version.
POST
/
api
/
user
/
automate
/
flows
/
{id}
/
restore
Restore previous version
curl --request POST \
--url https://app.famulor.de/api/user/automate/flows/{id}/restore \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.famulor.de/api/user/automate/flows/{id}/restore', 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}/restore"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(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}/restore",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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}/restore"
req, _ := http.NewRequest("POST", 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))
}{
"automation_id": "f4EaLhOW2zoEsXXSOJP2r",
"name": "Order lookup",
"status": "enabled",
"restored_version_id": "8auMJQtqBnE1X8ZP7WVnI",
"note": "Rolled back to the previous published version and re-published it live."
}
{
"message": "There is no earlier version of this automation to roll back to.",
"error": "no_previous_version"
}
{
"message": "Automation not found, or it does not belong to your account.",
"error": "not_found"
}
This endpoint rolls an automation back to the version published immediately before the current one and re-publishes it — the undo for an update that made things worse. Only the previous version is supported. An automation that was turned off stays off after the restore.
This endpoint takes no request body.
A missing automation — or one that does not belong to your account — returns a
Path Parameters
string
required
The ID of the automation (from List automations)
Response
string
The automation’s ID
string
The automation’s name after the restore
string
enabled or disabled — the on/off state the automation had going into the restore is preservedstring
The ID of the version that is now live
string
Confirmation that the previous version was restored and re-published
404.
Error codes (422)
| error | Meaning |
|---|---|
no_previous_version | There is no earlier version of this automation to roll back to. |
rollback_failed | The previous version could not be restored — nothing changed. |
publish_failed | The previous version was restored as the draft but could not be published, so it is not live yet — publish it in the Famulor app or retry. |
{
"automation_id": "f4EaLhOW2zoEsXXSOJP2r",
"name": "Order lookup",
"status": "enabled",
"restored_version_id": "8auMJQtqBnE1X8ZP7WVnI",
"note": "Rolled back to the previous published version and re-published it live."
}
{
"message": "There is no earlier version of this automation to roll back to.",
"error": "no_previous_version"
}
{
"message": "Automation not found, or it does not belong to your account.",
"error": "not_found"
}
Related pages: Update automation, Get automation, and Authentication.
⌘I