Retry automation run
curl --request POST \
--url https://app.famulor.de/api/user/automate/flows/{id}/runs/{run_id}/retryimport requests
url = "https://app.famulor.de/api/user/automate/flows/{id}/runs/{run_id}/retry"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://app.famulor.de/api/user/automate/flows/{id}/runs/{run_id}/retry', 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://app.famulor.de/api/user/automate/flows/{id}/runs/{run_id}/retry",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$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/{run_id}/retry"
req, _ := http.NewRequest("POST", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.famulor.de/api/user/automate/flows/{id}/runs/{run_id}/retry")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.famulor.de/api/user/automate/flows/{id}/runs/{run_id}/retry")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_body{
"run_id": "yHhXbqWj3zJZ5ztDNfUry",
"status": "RUNNING",
"note": "Retried FROM the failed step — steps that already succeeded were NOT re-executed, so their side effects were not repeated."
}
{
"message": "The retry did not resume this run (its status is still 'FAILED') — its saved state is likely stale, most commonly because the run passed through a Delay step before failing. This run cannot be resumed as-is. To force a fresh full run (re-executes EVERY step, including any that already sent a message/email/call — get the user's explicit confirmation first, then rebuild via update-automation's repair path), or otherwise wait for the automation's next real trigger event.",
"error": "retry_no_op"
}
{
"message": "Run not found for this automation.",
"error": "not_found"
}
Automations
Retry automation run
Retry a failed Famulor automation run from its failed step without re-executing succeeded steps.
POST
/
api
/
user
/
automate
/
flows
/
{id}
/
runs
/
{run_id}
/
retry
Retry automation run
curl --request POST \
--url https://app.famulor.de/api/user/automate/flows/{id}/runs/{run_id}/retryimport requests
url = "https://app.famulor.de/api/user/automate/flows/{id}/runs/{run_id}/retry"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://app.famulor.de/api/user/automate/flows/{id}/runs/{run_id}/retry', 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://app.famulor.de/api/user/automate/flows/{id}/runs/{run_id}/retry",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$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/{run_id}/retry"
req, _ := http.NewRequest("POST", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.famulor.de/api/user/automate/flows/{id}/runs/{run_id}/retry")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.famulor.de/api/user/automate/flows/{id}/runs/{run_id}/retry")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_body{
"run_id": "yHhXbqWj3zJZ5ztDNfUry",
"status": "RUNNING",
"note": "Retried FROM the failed step — steps that already succeeded were NOT re-executed, so their side effects were not repeated."
}
{
"message": "The retry did not resume this run (its status is still 'FAILED') — its saved state is likely stale, most commonly because the run passed through a Delay step before failing. This run cannot be resumed as-is. To force a fresh full run (re-executes EVERY step, including any that already sent a message/email/call — get the user's explicit confirmation first, then rebuild via update-automation's repair path), or otherwise wait for the automation's next real trigger event.",
"error": "retry_no_op"
}
{
"message": "Run not found for this automation.",
"error": "not_found"
}
Famulor 1.0 API (legacy). This page applies only to Famulor 1.0 (
app.famulor.de) and is retained for legacy compatibility. For the current platform, use the Famulor 2.0 API reference.id from List automation runs. A retry resumes the same run — it does not create a new one.
This endpoint takes no request body.
Path Parameters
string
required
The ID of the automation (from List automations)
string
required
The ID of the failed run (from List automation runs)
Response
string
The retried run’s ID (the same run that was passed in)
string
The run’s status right after the retry (e.g.
RUNNING, or SUCCEEDED when it finished instantly)string
Confirmation that already-succeeded steps were not re-executed
404.
Error codes (422)
| error | Meaning |
|---|---|
retry_no_op | The retry did not resume the run — its saved state is stale, most commonly because the run passed through a Delay step before failing. Such a run cannot be resumed as-is; the message lists the safe options (repair the automation, or wait for its next real trigger event). |
retry_failed | The retry could not be started — try again shortly. |
{
"run_id": "yHhXbqWj3zJZ5ztDNfUry",
"status": "RUNNING",
"note": "Retried FROM the failed step — steps that already succeeded were NOT re-executed, so their side effects were not repeated."
}
{
"message": "The retry did not resume this run (its status is still 'FAILED') — its saved state is likely stale, most commonly because the run passed through a Delay step before failing. This run cannot be resumed as-is. To force a fresh full run (re-executes EVERY step, including any that already sent a message/email/call — get the user's explicit confirmation first, then rebuild via update-automation's repair path), or otherwise wait for the automation's next real trigger event.",
"error": "retry_no_op"
}
{
"message": "Run not found for this automation.",
"error": "not_found"
}
Related pages: List automation runs, Update automation, and Authentication.