Workflows
Update Workflow
Update a workflow’s name, trigger, steps, or enabled state.
PATCH
/
api
/
v1
/
workflows
/
{id}
Update Workflow
curl --request PATCH \
--url https://api.example.com/api/v1/workflows/{id} \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"triggerType": "<string>",
"triggerConfig": {},
"steps": [
{}
],
"enabled": true
}
'import requests
url = "https://api.example.com/api/v1/workflows/{id}"
payload = {
"name": "<string>",
"triggerType": "<string>",
"triggerConfig": {},
"steps": [{}],
"enabled": True
}
headers = {"Content-Type": "application/json"}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
triggerType: '<string>',
triggerConfig: {},
steps: [{}],
enabled: true
})
};
fetch('https://api.example.com/api/v1/workflows/{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.example.com/api/v1/workflows/{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([
'name' => '<string>',
'triggerType' => '<string>',
'triggerConfig' => [
],
'steps' => [
[
]
],
'enabled' => true
]),
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.example.com/api/v1/workflows/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"triggerType\": \"<string>\",\n \"triggerConfig\": {},\n \"steps\": [\n {}\n ],\n \"enabled\": true\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.example.com/api/v1/workflows/{id}")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"triggerType\": \"<string>\",\n \"triggerConfig\": {},\n \"steps\": [\n {}\n ],\n \"enabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/workflows/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"triggerType\": \"<string>\",\n \"triggerConfig\": {},\n \"steps\": [\n {}\n ],\n \"enabled\": true\n}"
response = http.request(request)
puts response.read_body{
"workflow": {}
}Authentication
Requires a Bearer token withtools scope. See Authentication.
Path Parameters
string
required
The workflow UUID.
Request
All fields are optional — include only what you want to change.string
Display name for the workflow.
string
How the workflow is triggered (e.g.,
manual, schedule, event).object
Trigger configuration (schedule expression, event pattern, etc.).
array
Ordered list of workflow steps.
boolean
Enable or disable the workflow.
Response
object
The updated workflow object.
Example
curl
curl -X PATCH https://www.hitheo.ai/api/v1/workflows/wf_abc123 \
-H "Authorization: Bearer $THEO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "enabled": false }'
Was this page helpful?
Update Workflow
curl --request PATCH \
--url https://api.example.com/api/v1/workflows/{id} \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"triggerType": "<string>",
"triggerConfig": {},
"steps": [
{}
],
"enabled": true
}
'import requests
url = "https://api.example.com/api/v1/workflows/{id}"
payload = {
"name": "<string>",
"triggerType": "<string>",
"triggerConfig": {},
"steps": [{}],
"enabled": True
}
headers = {"Content-Type": "application/json"}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
triggerType: '<string>',
triggerConfig: {},
steps: [{}],
enabled: true
})
};
fetch('https://api.example.com/api/v1/workflows/{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.example.com/api/v1/workflows/{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([
'name' => '<string>',
'triggerType' => '<string>',
'triggerConfig' => [
],
'steps' => [
[
]
],
'enabled' => true
]),
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.example.com/api/v1/workflows/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"triggerType\": \"<string>\",\n \"triggerConfig\": {},\n \"steps\": [\n {}\n ],\n \"enabled\": true\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.example.com/api/v1/workflows/{id}")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"triggerType\": \"<string>\",\n \"triggerConfig\": {},\n \"steps\": [\n {}\n ],\n \"enabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/workflows/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"triggerType\": \"<string>\",\n \"triggerConfig\": {},\n \"steps\": [\n {}\n ],\n \"enabled\": true\n}"
response = http.request(request)
puts response.read_body{
"workflow": {}
}