curl --request POST \
--url 'https://api.flashcat.cloud/safari/automation/rule/run?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"rule_id": "auto_7NnLzY2Qp8xS4kUaV3mR6b"
}
'import requests
url = "https://api.flashcat.cloud/safari/automation/rule/run?app_key="
payload = { "rule_id": "auto_7NnLzY2Qp8xS4kUaV3mR6b" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({rule_id: 'auto_7NnLzY2Qp8xS4kUaV3mR6b'})
};
fetch('https://api.flashcat.cloud/safari/automation/rule/run?app_key=', 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.flashcat.cloud/safari/automation/rule/run?app_key=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'rule_id' => 'auto_7NnLzY2Qp8xS4kUaV3mR6b'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.flashcat.cloud/safari/automation/rule/run?app_key="
payload := strings.NewReader("{\n \"rule_id\": \"auto_7NnLzY2Qp8xS4kUaV3mR6b\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.flashcat.cloud/safari/automation/rule/run?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"rule_id\": \"auto_7NnLzY2Qp8xS4kUaV3mR6b\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/safari/automation/rule/run?app_key=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"rule_id\": \"auto_7NnLzY2Qp8xS4kUaV3mR6b\"\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"rule_id": "auto_7NnLzY2Qp8xS4kUaV3mR6b",
"trigger_kind": "manual",
"preflight": {
"ok": true,
"checks": [
"rule_enabled",
"runner_available",
"permissions_ok"
],
"scope": "team",
"owner_id": 80011,
"team_id": 123,
"app_name": "flashcat-ai-sre",
"warnings": []
},
"run": {
"run_id": "taskrun_manual_5oDvqiG64uur6sBNsTc4u",
"session_id": "sess_manual_f8oDvqiG64uur6sBNsTc4u"
}
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter skill_id is not valid."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "Unauthorized",
"message": "You are unauthorized."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "AccessDenied",
"message": "Access Denied."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "RequestTooFrequently",
"message": "Request too frequently."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InternalError",
"message": "We encountered an internal error, and it has been reported. Please try again later."
}
}Run Automation rule now
Start a manual run for an Automation rule.
curl --request POST \
--url 'https://api.flashcat.cloud/safari/automation/rule/run?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"rule_id": "auto_7NnLzY2Qp8xS4kUaV3mR6b"
}
'import requests
url = "https://api.flashcat.cloud/safari/automation/rule/run?app_key="
payload = { "rule_id": "auto_7NnLzY2Qp8xS4kUaV3mR6b" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({rule_id: 'auto_7NnLzY2Qp8xS4kUaV3mR6b'})
};
fetch('https://api.flashcat.cloud/safari/automation/rule/run?app_key=', 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.flashcat.cloud/safari/automation/rule/run?app_key=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'rule_id' => 'auto_7NnLzY2Qp8xS4kUaV3mR6b'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.flashcat.cloud/safari/automation/rule/run?app_key="
payload := strings.NewReader("{\n \"rule_id\": \"auto_7NnLzY2Qp8xS4kUaV3mR6b\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.flashcat.cloud/safari/automation/rule/run?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"rule_id\": \"auto_7NnLzY2Qp8xS4kUaV3mR6b\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/safari/automation/rule/run?app_key=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"rule_id\": \"auto_7NnLzY2Qp8xS4kUaV3mR6b\"\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"rule_id": "auto_7NnLzY2Qp8xS4kUaV3mR6b",
"trigger_kind": "manual",
"preflight": {
"ok": true,
"checks": [
"rule_enabled",
"runner_available",
"permissions_ok"
],
"scope": "team",
"owner_id": 80011,
"team_id": 123,
"app_name": "flashcat-ai-sre",
"warnings": []
},
"run": {
"run_id": "taskrun_manual_5oDvqiG64uur6sBNsTc4u",
"session_id": "sess_manual_f8oDvqiG64uur6sBNsTc4u"
}
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter skill_id is not valid."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "Unauthorized",
"message": "You are unauthorized."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "AccessDenied",
"message": "Access Denied."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "RequestTooFrequently",
"message": "Request too frequently."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InternalError",
"message": "We encountered an internal error, and it has been reported. Please try again later."
}
}Restrictions
| Aspect | Value |
|---|---|
| Rate limits | 1,000 requests/minute; 50 requests/second per account |
| Permissions | Valid app_key; management operations require the caller to manage the target rule |
Usage
- Starts a manual run for a rule the caller can manage, then returns after the hidden AI SRE session starts.
- Manual runs are rate-limited to one start per rule per minute; rate-limited calls return
429. - The
preflightobject explains the rule scope and runner checks used before the run starts. - Every call is recorded in the account audit log. Don’t put secrets in request fields.
Authorizations
App key issued from the Flashduty console. Required on every public API call. Keep it secret — it grants the same access as the owning account.
Body
Rule ID.
Response
Success
Standard response envelope used by every Flashduty public API. On success data contains the endpoint-specific payload and error is absent. On failure error is present and data is absent. request_id is always present and is also mirrored in the Flashcat-Request-Id response header.
Unique ID for this request. Mirrored in the Flashcat-Request-Id header. Include it when reporting issues.
"01HK8XQE3Z7JM2NTFQ5YJ8P9R4"
Error payload inside the response envelope. Present only on non-2xx responses.
Show child attributes
Show child attributes
Endpoint-specific payload. See each operation's 200 response schema.
Show child attributes
Show child attributes
Was this page helpful?