curl --request PATCH \
--url https://api.checkfu.com/v1/automations/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'checkfu-version: <checkfu-version>' \
--data '
{
"expected_version": 1,
"name": "<string>",
"description": "<string>",
"external_id": "<unknown>",
"connected_runtime": "<string>",
"metadata": {},
"ingest_secret": "<unknown>"
}
'import requests
url = "https://api.checkfu.com/v1/automations/{id}"
payload = {
"expected_version": 1,
"name": "<string>",
"description": "<string>",
"external_id": "<unknown>",
"connected_runtime": "<string>",
"metadata": {},
"ingest_secret": "<unknown>"
}
headers = {
"checkfu-version": "<checkfu-version>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'checkfu-version': '<checkfu-version>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
expected_version: 1,
name: '<string>',
description: '<string>',
external_id: '<unknown>',
connected_runtime: '<string>',
metadata: {},
ingest_secret: '<unknown>'
})
};
fetch('https://api.checkfu.com/v1/automations/{id}', 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.checkfu.com/v1/automations/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'expected_version' => 1,
'name' => '<string>',
'description' => '<string>',
'external_id' => '<unknown>',
'connected_runtime' => '<string>',
'metadata' => [
],
'ingest_secret' => '<unknown>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"checkfu-version: <checkfu-version>"
],
]);
$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.checkfu.com/v1/automations/{id}"
payload := strings.NewReader("{\n \"expected_version\": 1,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"external_id\": \"<unknown>\",\n \"connected_runtime\": \"<string>\",\n \"metadata\": {},\n \"ingest_secret\": \"<unknown>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("checkfu-version", "<checkfu-version>")
req.Header.Add("Authorization", "Bearer <token>")
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.patch("https://api.checkfu.com/v1/automations/{id}")
.header("checkfu-version", "<checkfu-version>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"expected_version\": 1,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"external_id\": \"<unknown>\",\n \"connected_runtime\": \"<string>\",\n \"metadata\": {},\n \"ingest_secret\": \"<unknown>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.checkfu.com/v1/automations/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["checkfu-version"] = '<checkfu-version>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"expected_version\": 1,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"external_id\": \"<unknown>\",\n \"connected_runtime\": \"<string>\",\n \"metadata\": {},\n \"ingest_secret\": \"<unknown>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"workspace_id": "<string>",
"version": 1,
"name": "<string>",
"description": "<string>",
"external_id": "<string>",
"created_by": "<string>",
"identity": {
"acted_as": "<string>"
},
"connected_runtime": "<string>",
"status": "active",
"paused_reason": {
"kind": "manual",
"error_type": "<unknown>"
},
"last_run_at": "<string>",
"last_session_id": "<string>",
"last_run_id": "<string>",
"next_run_at": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"target": {
"kind": "agent_definition",
"agent_deployment_id": "<string>",
"agent_deployment_revision_selection": {
"type": "current"
},
"budget": {
"limit": 1,
"metric": "model_tokens"
}
},
"surface_scope_id": "<string>",
"trigger": {
"kind": "schedule",
"cron": "<string>",
"timezone": "<string>",
"dedupe_key": "<unknown>",
"source": "<unknown>",
"filter": "<unknown>"
},
"input": {
"kind": "snapshot",
"prompt": "<string>",
"outcome": {
"rubric": "<string>",
"max_iterations": 10,
"deliverables": [
"<string>"
],
"report": {
"extraction": "json",
"outputs": [
{
"key": "<string>",
"title": "<string>",
"type": "string",
"description": "<string>",
"acceptance": {
"kind": "one_of",
"values": [
"<string>"
]
}
}
]
}
},
"flow_review": {
"model_routing_profile_key": "<string>",
"criteria": [
{
"key": "<string>",
"description": "<string>",
"severity": "low"
}
],
"tier": "default"
},
"mounts": [
{
"kind": "project",
"project_id": "<string>",
"mount_path": "<string>",
"revision_policy": {
"kind": "latest"
},
"access": "read_only",
"writeback": null
}
],
"prompt_template": "<unknown>"
},
"environment_id": "<string>",
"metadata": {}
}{
"error": {
"type": "validation.malformed",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#validation-malformed"
}
}{
"error": {
"type": "auth.invalid_key",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#auth-invalid-key"
}
}{
"error": {
"type": "auth.disabled_tenancy",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#auth-disabled-tenancy"
}
}{
"error": {
"type": "validation.not_found",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#validation-not-found"
}
}{
"error": {
"type": "validation.conflict",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#validation-conflict"
}
}{
"error": {
"type": "budget.exceeded",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#budget-exceeded"
}
}{
"error": {
"type": "runtime.internal",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#runtime-internal"
}
}{
"error": {
"type": "memory.backend_unavailable",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#memory-backend-unavailable"
}
}Update an Automation
Update mutable configuration under optimistic versioning: expected_version must match the live version or the request conflicts. AdmissionFilter Check and Outcome evaluator setup use the same create-time vocabulary and retain their distinct defaults and authority; edits affect only later accepted firings, while every existing firing retains its frozen filter, rubric, and resource declarations. Trigger kind, target kind, creator, and SurfaceScope never change, and cursor, delivery, and dedupe state are trusted firing state rather than caller-set configuration. Supplying a new ingest_secret rotates a webhook Automation’s inbound signing key. metadata is replaced whole rather than merged per key, and an empty object clears it; omitting it leaves the bag untouched.
Checkfu support posture: alpha; hosted. Required evidence journey: automation-firing. Deployment-specific readiness and the latest proven release are available from GET /v1/support/capabilities.
curl --request PATCH \
--url https://api.checkfu.com/v1/automations/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'checkfu-version: <checkfu-version>' \
--data '
{
"expected_version": 1,
"name": "<string>",
"description": "<string>",
"external_id": "<unknown>",
"connected_runtime": "<string>",
"metadata": {},
"ingest_secret": "<unknown>"
}
'import requests
url = "https://api.checkfu.com/v1/automations/{id}"
payload = {
"expected_version": 1,
"name": "<string>",
"description": "<string>",
"external_id": "<unknown>",
"connected_runtime": "<string>",
"metadata": {},
"ingest_secret": "<unknown>"
}
headers = {
"checkfu-version": "<checkfu-version>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'checkfu-version': '<checkfu-version>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
expected_version: 1,
name: '<string>',
description: '<string>',
external_id: '<unknown>',
connected_runtime: '<string>',
metadata: {},
ingest_secret: '<unknown>'
})
};
fetch('https://api.checkfu.com/v1/automations/{id}', 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.checkfu.com/v1/automations/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'expected_version' => 1,
'name' => '<string>',
'description' => '<string>',
'external_id' => '<unknown>',
'connected_runtime' => '<string>',
'metadata' => [
],
'ingest_secret' => '<unknown>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"checkfu-version: <checkfu-version>"
],
]);
$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.checkfu.com/v1/automations/{id}"
payload := strings.NewReader("{\n \"expected_version\": 1,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"external_id\": \"<unknown>\",\n \"connected_runtime\": \"<string>\",\n \"metadata\": {},\n \"ingest_secret\": \"<unknown>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("checkfu-version", "<checkfu-version>")
req.Header.Add("Authorization", "Bearer <token>")
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.patch("https://api.checkfu.com/v1/automations/{id}")
.header("checkfu-version", "<checkfu-version>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"expected_version\": 1,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"external_id\": \"<unknown>\",\n \"connected_runtime\": \"<string>\",\n \"metadata\": {},\n \"ingest_secret\": \"<unknown>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.checkfu.com/v1/automations/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["checkfu-version"] = '<checkfu-version>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"expected_version\": 1,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"external_id\": \"<unknown>\",\n \"connected_runtime\": \"<string>\",\n \"metadata\": {},\n \"ingest_secret\": \"<unknown>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"workspace_id": "<string>",
"version": 1,
"name": "<string>",
"description": "<string>",
"external_id": "<string>",
"created_by": "<string>",
"identity": {
"acted_as": "<string>"
},
"connected_runtime": "<string>",
"status": "active",
"paused_reason": {
"kind": "manual",
"error_type": "<unknown>"
},
"last_run_at": "<string>",
"last_session_id": "<string>",
"last_run_id": "<string>",
"next_run_at": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"target": {
"kind": "agent_definition",
"agent_deployment_id": "<string>",
"agent_deployment_revision_selection": {
"type": "current"
},
"budget": {
"limit": 1,
"metric": "model_tokens"
}
},
"surface_scope_id": "<string>",
"trigger": {
"kind": "schedule",
"cron": "<string>",
"timezone": "<string>",
"dedupe_key": "<unknown>",
"source": "<unknown>",
"filter": "<unknown>"
},
"input": {
"kind": "snapshot",
"prompt": "<string>",
"outcome": {
"rubric": "<string>",
"max_iterations": 10,
"deliverables": [
"<string>"
],
"report": {
"extraction": "json",
"outputs": [
{
"key": "<string>",
"title": "<string>",
"type": "string",
"description": "<string>",
"acceptance": {
"kind": "one_of",
"values": [
"<string>"
]
}
}
]
}
},
"flow_review": {
"model_routing_profile_key": "<string>",
"criteria": [
{
"key": "<string>",
"description": "<string>",
"severity": "low"
}
],
"tier": "default"
},
"mounts": [
{
"kind": "project",
"project_id": "<string>",
"mount_path": "<string>",
"revision_policy": {
"kind": "latest"
},
"access": "read_only",
"writeback": null
}
],
"prompt_template": "<unknown>"
},
"environment_id": "<string>",
"metadata": {}
}{
"error": {
"type": "validation.malformed",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#validation-malformed"
}
}{
"error": {
"type": "auth.invalid_key",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#auth-invalid-key"
}
}{
"error": {
"type": "auth.disabled_tenancy",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#auth-disabled-tenancy"
}
}{
"error": {
"type": "validation.not_found",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#validation-not-found"
}
}{
"error": {
"type": "validation.conflict",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#validation-conflict"
}
}{
"error": {
"type": "budget.exceeded",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#budget-exceeded"
}
}{
"error": {
"type": "runtime.internal",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#runtime-internal"
}
}{
"error": {
"type": "memory.backend_unavailable",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#memory-backend-unavailable"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
2026-08-29 Path Parameters
^auto_[0-9a-f]{32}$Body
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
x > 01 - 2551 - 4096Show child attributes
Show child attributes
^crt_[0-9a-f]{32}$at most 16 correlation pairs with keys of 1 to 64 characters
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Response
Automation
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
^auto_[0-9a-f]{32}$^wrkspc_[0-9a-f]{32}$x > 01 - 2551 - 4096^[a-z0-9](?:[a-z0-9._-]{0,93})$^prin_[0-9a-f]{32}$Show child attributes
Show child attributes
^crt_[0-9a-f]{32}$active, paused - Option 1
- Option 2
Show child attributes
Show child attributes
^sess_[0-9a-f]{32}$^run_[0-9a-f]{32}$Show child attributes
Show child attributes
^surf_[0-9a-f]{32}$Show child attributes
Show child attributes
Show child attributes
Show child attributes
^env_[0-9a-f]{32}$at most 16 correlation pairs with keys of 1 to 64 characters
Show child attributes
Show child attributes