curl --request PATCH \
--url https://flowra.dev/api/v1/workflow/manager/update/{id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "Support bot",
"description": "Answers product questions and escalates billing issues.",
"agent": {
"prompt": "You are a helpful support agent. Prefer short answers.",
"modelSettings": {
"model": "openai/gpt-4o-mini",
"temperature": 0.7,
"maxTokens": 4096,
"cacheToolsAndPrompt": true,
"topP": 1,
"topK": 40,
"frequencyPenalty": 0,
"presencePenalty": 0,
"repetitionPenalty": 1,
"minP": 0,
"topA": 0,
"seed": 42,
"stop": [
"END"
],
"logitBias": {
"50256": -100
},
"topLogprobs": 0,
"reasoningEffort": "medium"
},
"capabilities": {
"computer": {
"enabled": true,
"templateId": "code-interpreter-v1",
"maxDurationSec": 3600
},
"generalPurpose": {
"enabled": false
},
"summarization": {
"enabled": true,
"trigger": {},
"keep": {},
"model": "openai/gpt-4o-mini",
"maxTokensBeforeSummary": 1024,
"prefix": "## Conversation so far"
},
"todoList": {
"enabled": true,
"strict": false
},
"toolRetry": {
"enabled": true,
"maxRetries": 2,
"backoffFactor": 2,
"initialDelayMs": 500,
"maxDelayMs": 8000,
"jitter": true,
"tools": [
"<string>"
]
},
"modelFallback": {
"enabled": true,
"fallbackModels": [
"<string>"
]
},
"toolSelector": {
"enabled": true,
"model": "<string>",
"maxTools": 2,
"alwaysInclude": [
"<string>"
],
"autoEnableIfToolCountGte": 2
},
"humanApproval": {
"enabled": true,
"mode": "sensitiveOnly",
"sensitiveToolNames": [
"<string>"
],
"alwaysAllowedToolNames": [
"<string>"
],
"allowedDecisions": [
"<string>"
],
"messageToUser": "<string>"
},
"modelCallLimit": {
"enabled": true,
"threadLimit": 2,
"runLimit": 2
},
"toolCallLimit": {
"enabled": true,
"threadLimit": 2,
"runLimit": 2,
"toolName": "<string>"
},
"userFriendlyErrors": true,
"longTermMemory": {
"enabled": true,
"instructions": "<string>"
}
},
"skillIds": [
"<string>"
],
"subAgentIds": [
"<string>"
],
"knowledgeCollectionIds": [
"<string>"
],
"databaseCollectionIds": [
"<string>"
],
"databaseAccessPolicies": {},
"starterPrompts": [
"<string>"
],
"avatarUrl": "<string>",
"behavior": {
"persona": {
"displayName": "<string>",
"role": "<string>",
"styleNotes": "<string>"
},
"guardrails": {
"bannedTopics": [
"<string>"
],
"neverPromise": [
"<string>"
],
"refusalMessage": "<string>",
"pii": {
"enabled": true,
"rules": [
{
"pattern": "<string>",
"applyToInput": true,
"applyToOutput": true
}
]
}
},
"escalation": {
"enabled": true,
"triggers": [
"<string>"
],
"afterFailedAttempts": 5.5,
"notifyToolSlug": "<string>",
"summaryTemplate": "<string>",
"handoffMessage": "<string>"
},
"usageCaps": {
"enabled": true,
"messagesPerUserPerDay": 2,
"maxTurnsPerConversation": 2,
"maxCreditsPerConversation": 2,
"exceededMessage": "<string>"
},
"cannedResponses": {
"greeting": "<string>",
"fallback": "<string>",
"outOfHours": "<string>",
"businessHours": {
"timezone": "<string>",
"days": [
3
],
"start": "<string>",
"end": "<string>"
}
}
},
"identity": {
"methods": [
"<string>"
],
"collect": [
"<string>"
],
"linkBy": [
"<string>"
],
"allowedEmailDomains": [
"<string>"
],
"toolkitSlug": "<string>"
},
"tools": {
"mode": "NORMAL",
"discoveryWhitelist": true,
"pinnedSlugs": [
"gmail_send_email",
"gmail_fetch_emails"
],
"externalMcpConfigs": [
{
"name": "internal-docs",
"url": "https://mcp.example.com/sse",
"headers": {
"Authorization": "Bearer sk_live_..."
},
"tools": [
"search_docs"
]
}
],
"connectionCallbackUrl": "https://myapp.com/oauth/callback",
"visitorOwnerConnections": {
"enabled": true,
"toolkits": [
{
"toolkitSlug": "<string>",
"toolSlugs": [
"<string>"
]
}
]
}
},
"inputSchema": {},
"outputSchema": {}
},
"provenance": {
"createdByAgent": false,
"productCreationDepth": 0,
"createdFromWorkflowId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"hideFromAgentPicker": false
},
"triggers": [
{
"kind": "cron",
"expression": "0 9 * * 1-5",
"timezone": "UTC",
"toolSlug": "gmail_new_gmail_message",
"triggerToolInput": {
"labelIds": [
"INBOX"
]
},
"triggerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
],
"workflowType": "agent",
"isActive": true,
"isPublic": false,
"lastExecutedAt": "2026-09-03T10:00:00.000Z"
}
'import requests
url = "https://flowra.dev/api/v1/workflow/manager/update/{id}"
payload = {
"name": "Support bot",
"description": "Answers product questions and escalates billing issues.",
"agent": {
"prompt": "You are a helpful support agent. Prefer short answers.",
"modelSettings": {
"model": "openai/gpt-4o-mini",
"temperature": 0.7,
"maxTokens": 4096,
"cacheToolsAndPrompt": True,
"topP": 1,
"topK": 40,
"frequencyPenalty": 0,
"presencePenalty": 0,
"repetitionPenalty": 1,
"minP": 0,
"topA": 0,
"seed": 42,
"stop": ["END"],
"logitBias": { "50256": -100 },
"topLogprobs": 0,
"reasoningEffort": "medium"
},
"capabilities": {
"computer": {
"enabled": True,
"templateId": "code-interpreter-v1",
"maxDurationSec": 3600
},
"generalPurpose": { "enabled": False },
"summarization": {
"enabled": True,
"trigger": {},
"keep": {},
"model": "openai/gpt-4o-mini",
"maxTokensBeforeSummary": 1024,
"prefix": "## Conversation so far"
},
"todoList": {
"enabled": True,
"strict": False
},
"toolRetry": {
"enabled": True,
"maxRetries": 2,
"backoffFactor": 2,
"initialDelayMs": 500,
"maxDelayMs": 8000,
"jitter": True,
"tools": ["<string>"]
},
"modelFallback": {
"enabled": True,
"fallbackModels": ["<string>"]
},
"toolSelector": {
"enabled": True,
"model": "<string>",
"maxTools": 2,
"alwaysInclude": ["<string>"],
"autoEnableIfToolCountGte": 2
},
"humanApproval": {
"enabled": True,
"mode": "sensitiveOnly",
"sensitiveToolNames": ["<string>"],
"alwaysAllowedToolNames": ["<string>"],
"allowedDecisions": ["<string>"],
"messageToUser": "<string>"
},
"modelCallLimit": {
"enabled": True,
"threadLimit": 2,
"runLimit": 2
},
"toolCallLimit": {
"enabled": True,
"threadLimit": 2,
"runLimit": 2,
"toolName": "<string>"
},
"userFriendlyErrors": True,
"longTermMemory": {
"enabled": True,
"instructions": "<string>"
}
},
"skillIds": ["<string>"],
"subAgentIds": ["<string>"],
"knowledgeCollectionIds": ["<string>"],
"databaseCollectionIds": ["<string>"],
"databaseAccessPolicies": {},
"starterPrompts": ["<string>"],
"avatarUrl": "<string>",
"behavior": {
"persona": {
"displayName": "<string>",
"role": "<string>",
"styleNotes": "<string>"
},
"guardrails": {
"bannedTopics": ["<string>"],
"neverPromise": ["<string>"],
"refusalMessage": "<string>",
"pii": {
"enabled": True,
"rules": [
{
"pattern": "<string>",
"applyToInput": True,
"applyToOutput": True
}
]
}
},
"escalation": {
"enabled": True,
"triggers": ["<string>"],
"afterFailedAttempts": 5.5,
"notifyToolSlug": "<string>",
"summaryTemplate": "<string>",
"handoffMessage": "<string>"
},
"usageCaps": {
"enabled": True,
"messagesPerUserPerDay": 2,
"maxTurnsPerConversation": 2,
"maxCreditsPerConversation": 2,
"exceededMessage": "<string>"
},
"cannedResponses": {
"greeting": "<string>",
"fallback": "<string>",
"outOfHours": "<string>",
"businessHours": {
"timezone": "<string>",
"days": [3],
"start": "<string>",
"end": "<string>"
}
}
},
"identity": {
"methods": ["<string>"],
"collect": ["<string>"],
"linkBy": ["<string>"],
"allowedEmailDomains": ["<string>"],
"toolkitSlug": "<string>"
},
"tools": {
"mode": "NORMAL",
"discoveryWhitelist": True,
"pinnedSlugs": ["gmail_send_email", "gmail_fetch_emails"],
"externalMcpConfigs": [
{
"name": "internal-docs",
"url": "https://mcp.example.com/sse",
"headers": { "Authorization": "Bearer sk_live_..." },
"tools": ["search_docs"]
}
],
"connectionCallbackUrl": "https://myapp.com/oauth/callback",
"visitorOwnerConnections": {
"enabled": True,
"toolkits": [
{
"toolkitSlug": "<string>",
"toolSlugs": ["<string>"]
}
]
}
},
"inputSchema": {},
"outputSchema": {}
},
"provenance": {
"createdByAgent": False,
"productCreationDepth": 0,
"createdFromWorkflowId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"hideFromAgentPicker": False
},
"triggers": [
{
"kind": "cron",
"expression": "0 9 * * 1-5",
"timezone": "UTC",
"toolSlug": "gmail_new_gmail_message",
"triggerToolInput": { "labelIds": ["INBOX"] },
"triggerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
],
"workflowType": "agent",
"isActive": True,
"isPublic": False,
"lastExecutedAt": "2026-09-03T10:00:00.000Z"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Support bot',
description: 'Answers product questions and escalates billing issues.',
agent: {
prompt: 'You are a helpful support agent. Prefer short answers.',
modelSettings: {
model: 'openai/gpt-4o-mini',
temperature: 0.7,
maxTokens: 4096,
cacheToolsAndPrompt: true,
topP: 1,
topK: 40,
frequencyPenalty: 0,
presencePenalty: 0,
repetitionPenalty: 1,
minP: 0,
topA: 0,
seed: 42,
stop: ['END'],
logitBias: {'50256': -100},
topLogprobs: 0,
reasoningEffort: 'medium'
},
capabilities: {
computer: {enabled: true, templateId: 'code-interpreter-v1', maxDurationSec: 3600},
generalPurpose: {enabled: false},
summarization: {
enabled: true,
trigger: {},
keep: {},
model: 'openai/gpt-4o-mini',
maxTokensBeforeSummary: 1024,
prefix: '## Conversation so far'
},
todoList: {enabled: true, strict: false},
toolRetry: {
enabled: true,
maxRetries: 2,
backoffFactor: 2,
initialDelayMs: 500,
maxDelayMs: 8000,
jitter: true,
tools: ['<string>']
},
modelFallback: {enabled: true, fallbackModels: ['<string>']},
toolSelector: {
enabled: true,
model: '<string>',
maxTools: 2,
alwaysInclude: ['<string>'],
autoEnableIfToolCountGte: 2
},
humanApproval: {
enabled: true,
mode: 'sensitiveOnly',
sensitiveToolNames: ['<string>'],
alwaysAllowedToolNames: ['<string>'],
allowedDecisions: ['<string>'],
messageToUser: '<string>'
},
modelCallLimit: {enabled: true, threadLimit: 2, runLimit: 2},
toolCallLimit: {enabled: true, threadLimit: 2, runLimit: 2, toolName: '<string>'},
userFriendlyErrors: true,
longTermMemory: {enabled: true, instructions: '<string>'}
},
skillIds: ['<string>'],
subAgentIds: ['<string>'],
knowledgeCollectionIds: ['<string>'],
databaseCollectionIds: ['<string>'],
databaseAccessPolicies: {},
starterPrompts: ['<string>'],
avatarUrl: '<string>',
behavior: {
persona: {displayName: '<string>', role: '<string>', styleNotes: '<string>'},
guardrails: {
bannedTopics: ['<string>'],
neverPromise: ['<string>'],
refusalMessage: '<string>',
pii: {
enabled: true,
rules: [{pattern: '<string>', applyToInput: true, applyToOutput: true}]
}
},
escalation: {
enabled: true,
triggers: ['<string>'],
afterFailedAttempts: 5.5,
notifyToolSlug: '<string>',
summaryTemplate: '<string>',
handoffMessage: '<string>'
},
usageCaps: {
enabled: true,
messagesPerUserPerDay: 2,
maxTurnsPerConversation: 2,
maxCreditsPerConversation: 2,
exceededMessage: '<string>'
},
cannedResponses: {
greeting: '<string>',
fallback: '<string>',
outOfHours: '<string>',
businessHours: {timezone: '<string>', days: [3], start: '<string>', end: '<string>'}
}
},
identity: {
methods: ['<string>'],
collect: ['<string>'],
linkBy: ['<string>'],
allowedEmailDomains: ['<string>'],
toolkitSlug: '<string>'
},
tools: {
mode: 'NORMAL',
discoveryWhitelist: true,
pinnedSlugs: ['gmail_send_email', 'gmail_fetch_emails'],
externalMcpConfigs: [
{
name: 'internal-docs',
url: 'https://mcp.example.com/sse',
headers: {Authorization: 'Bearer sk_live_...'},
tools: ['search_docs']
}
],
connectionCallbackUrl: 'https://myapp.com/oauth/callback',
visitorOwnerConnections: {enabled: true, toolkits: [{toolkitSlug: '<string>', toolSlugs: ['<string>']}]}
},
inputSchema: {},
outputSchema: {}
},
provenance: {
createdByAgent: false,
productCreationDepth: 0,
createdFromWorkflowId: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
hideFromAgentPicker: false
},
triggers: [
{
kind: 'cron',
expression: '0 9 * * 1-5',
timezone: 'UTC',
toolSlug: 'gmail_new_gmail_message',
triggerToolInput: {labelIds: ['INBOX']},
triggerId: '3fa85f64-5717-4562-b3fc-2c963f66afa6'
}
],
workflowType: 'agent',
isActive: true,
isPublic: false,
lastExecutedAt: '2026-09-03T10:00:00.000Z'
})
};
fetch('https://flowra.dev/api/v1/workflow/manager/update/{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://flowra.dev/api/v1/workflow/manager/update/{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' => 'Support bot',
'description' => 'Answers product questions and escalates billing issues.',
'agent' => [
'prompt' => 'You are a helpful support agent. Prefer short answers.',
'modelSettings' => [
'model' => 'openai/gpt-4o-mini',
'temperature' => 0.7,
'maxTokens' => 4096,
'cacheToolsAndPrompt' => true,
'topP' => 1,
'topK' => 40,
'frequencyPenalty' => 0,
'presencePenalty' => 0,
'repetitionPenalty' => 1,
'minP' => 0,
'topA' => 0,
'seed' => 42,
'stop' => [
'END'
],
'logitBias' => [
'50256' => -100
],
'topLogprobs' => 0,
'reasoningEffort' => 'medium'
],
'capabilities' => [
'computer' => [
'enabled' => true,
'templateId' => 'code-interpreter-v1',
'maxDurationSec' => 3600
],
'generalPurpose' => [
'enabled' => false
],
'summarization' => [
'enabled' => true,
'trigger' => [
],
'keep' => [
],
'model' => 'openai/gpt-4o-mini',
'maxTokensBeforeSummary' => 1024,
'prefix' => '## Conversation so far'
],
'todoList' => [
'enabled' => true,
'strict' => false
],
'toolRetry' => [
'enabled' => true,
'maxRetries' => 2,
'backoffFactor' => 2,
'initialDelayMs' => 500,
'maxDelayMs' => 8000,
'jitter' => true,
'tools' => [
'<string>'
]
],
'modelFallback' => [
'enabled' => true,
'fallbackModels' => [
'<string>'
]
],
'toolSelector' => [
'enabled' => true,
'model' => '<string>',
'maxTools' => 2,
'alwaysInclude' => [
'<string>'
],
'autoEnableIfToolCountGte' => 2
],
'humanApproval' => [
'enabled' => true,
'mode' => 'sensitiveOnly',
'sensitiveToolNames' => [
'<string>'
],
'alwaysAllowedToolNames' => [
'<string>'
],
'allowedDecisions' => [
'<string>'
],
'messageToUser' => '<string>'
],
'modelCallLimit' => [
'enabled' => true,
'threadLimit' => 2,
'runLimit' => 2
],
'toolCallLimit' => [
'enabled' => true,
'threadLimit' => 2,
'runLimit' => 2,
'toolName' => '<string>'
],
'userFriendlyErrors' => true,
'longTermMemory' => [
'enabled' => true,
'instructions' => '<string>'
]
],
'skillIds' => [
'<string>'
],
'subAgentIds' => [
'<string>'
],
'knowledgeCollectionIds' => [
'<string>'
],
'databaseCollectionIds' => [
'<string>'
],
'databaseAccessPolicies' => [
],
'starterPrompts' => [
'<string>'
],
'avatarUrl' => '<string>',
'behavior' => [
'persona' => [
'displayName' => '<string>',
'role' => '<string>',
'styleNotes' => '<string>'
],
'guardrails' => [
'bannedTopics' => [
'<string>'
],
'neverPromise' => [
'<string>'
],
'refusalMessage' => '<string>',
'pii' => [
'enabled' => true,
'rules' => [
[
'pattern' => '<string>',
'applyToInput' => true,
'applyToOutput' => true
]
]
]
],
'escalation' => [
'enabled' => true,
'triggers' => [
'<string>'
],
'afterFailedAttempts' => 5.5,
'notifyToolSlug' => '<string>',
'summaryTemplate' => '<string>',
'handoffMessage' => '<string>'
],
'usageCaps' => [
'enabled' => true,
'messagesPerUserPerDay' => 2,
'maxTurnsPerConversation' => 2,
'maxCreditsPerConversation' => 2,
'exceededMessage' => '<string>'
],
'cannedResponses' => [
'greeting' => '<string>',
'fallback' => '<string>',
'outOfHours' => '<string>',
'businessHours' => [
'timezone' => '<string>',
'days' => [
3
],
'start' => '<string>',
'end' => '<string>'
]
]
],
'identity' => [
'methods' => [
'<string>'
],
'collect' => [
'<string>'
],
'linkBy' => [
'<string>'
],
'allowedEmailDomains' => [
'<string>'
],
'toolkitSlug' => '<string>'
],
'tools' => [
'mode' => 'NORMAL',
'discoveryWhitelist' => true,
'pinnedSlugs' => [
'gmail_send_email',
'gmail_fetch_emails'
],
'externalMcpConfigs' => [
[
'name' => 'internal-docs',
'url' => 'https://mcp.example.com/sse',
'headers' => [
'Authorization' => 'Bearer sk_live_...'
],
'tools' => [
'search_docs'
]
]
],
'connectionCallbackUrl' => 'https://myapp.com/oauth/callback',
'visitorOwnerConnections' => [
'enabled' => true,
'toolkits' => [
[
'toolkitSlug' => '<string>',
'toolSlugs' => [
'<string>'
]
]
]
]
],
'inputSchema' => [
],
'outputSchema' => [
]
],
'provenance' => [
'createdByAgent' => false,
'productCreationDepth' => 0,
'createdFromWorkflowId' => '3fa85f64-5717-4562-b3fc-2c963f66afa6',
'hideFromAgentPicker' => false
],
'triggers' => [
[
'kind' => 'cron',
'expression' => '0 9 * * 1-5',
'timezone' => 'UTC',
'toolSlug' => 'gmail_new_gmail_message',
'triggerToolInput' => [
'labelIds' => [
'INBOX'
]
],
'triggerId' => '3fa85f64-5717-4562-b3fc-2c963f66afa6'
]
],
'workflowType' => 'agent',
'isActive' => true,
'isPublic' => false,
'lastExecutedAt' => '2026-09-03T10:00:00.000Z'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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://flowra.dev/api/v1/workflow/manager/update/{id}"
payload := strings.NewReader("{\n \"name\": \"Support bot\",\n \"description\": \"Answers product questions and escalates billing issues.\",\n \"agent\": {\n \"prompt\": \"You are a helpful support agent. Prefer short answers.\",\n \"modelSettings\": {\n \"model\": \"openai/gpt-4o-mini\",\n \"temperature\": 0.7,\n \"maxTokens\": 4096,\n \"cacheToolsAndPrompt\": true,\n \"topP\": 1,\n \"topK\": 40,\n \"frequencyPenalty\": 0,\n \"presencePenalty\": 0,\n \"repetitionPenalty\": 1,\n \"minP\": 0,\n \"topA\": 0,\n \"seed\": 42,\n \"stop\": [\n \"END\"\n ],\n \"logitBias\": {\n \"50256\": -100\n },\n \"topLogprobs\": 0,\n \"reasoningEffort\": \"medium\"\n },\n \"capabilities\": {\n \"computer\": {\n \"enabled\": true,\n \"templateId\": \"code-interpreter-v1\",\n \"maxDurationSec\": 3600\n },\n \"generalPurpose\": {\n \"enabled\": false\n },\n \"summarization\": {\n \"enabled\": true,\n \"trigger\": {},\n \"keep\": {},\n \"model\": \"openai/gpt-4o-mini\",\n \"maxTokensBeforeSummary\": 1024,\n \"prefix\": \"## Conversation so far\"\n },\n \"todoList\": {\n \"enabled\": true,\n \"strict\": false\n },\n \"toolRetry\": {\n \"enabled\": true,\n \"maxRetries\": 2,\n \"backoffFactor\": 2,\n \"initialDelayMs\": 500,\n \"maxDelayMs\": 8000,\n \"jitter\": true,\n \"tools\": [\n \"<string>\"\n ]\n },\n \"modelFallback\": {\n \"enabled\": true,\n \"fallbackModels\": [\n \"<string>\"\n ]\n },\n \"toolSelector\": {\n \"enabled\": true,\n \"model\": \"<string>\",\n \"maxTools\": 2,\n \"alwaysInclude\": [\n \"<string>\"\n ],\n \"autoEnableIfToolCountGte\": 2\n },\n \"humanApproval\": {\n \"enabled\": true,\n \"mode\": \"sensitiveOnly\",\n \"sensitiveToolNames\": [\n \"<string>\"\n ],\n \"alwaysAllowedToolNames\": [\n \"<string>\"\n ],\n \"allowedDecisions\": [\n \"<string>\"\n ],\n \"messageToUser\": \"<string>\"\n },\n \"modelCallLimit\": {\n \"enabled\": true,\n \"threadLimit\": 2,\n \"runLimit\": 2\n },\n \"toolCallLimit\": {\n \"enabled\": true,\n \"threadLimit\": 2,\n \"runLimit\": 2,\n \"toolName\": \"<string>\"\n },\n \"userFriendlyErrors\": true,\n \"longTermMemory\": {\n \"enabled\": true,\n \"instructions\": \"<string>\"\n }\n },\n \"skillIds\": [\n \"<string>\"\n ],\n \"subAgentIds\": [\n \"<string>\"\n ],\n \"knowledgeCollectionIds\": [\n \"<string>\"\n ],\n \"databaseCollectionIds\": [\n \"<string>\"\n ],\n \"databaseAccessPolicies\": {},\n \"starterPrompts\": [\n \"<string>\"\n ],\n \"avatarUrl\": \"<string>\",\n \"behavior\": {\n \"persona\": {\n \"displayName\": \"<string>\",\n \"role\": \"<string>\",\n \"styleNotes\": \"<string>\"\n },\n \"guardrails\": {\n \"bannedTopics\": [\n \"<string>\"\n ],\n \"neverPromise\": [\n \"<string>\"\n ],\n \"refusalMessage\": \"<string>\",\n \"pii\": {\n \"enabled\": true,\n \"rules\": [\n {\n \"pattern\": \"<string>\",\n \"applyToInput\": true,\n \"applyToOutput\": true\n }\n ]\n }\n },\n \"escalation\": {\n \"enabled\": true,\n \"triggers\": [\n \"<string>\"\n ],\n \"afterFailedAttempts\": 5.5,\n \"notifyToolSlug\": \"<string>\",\n \"summaryTemplate\": \"<string>\",\n \"handoffMessage\": \"<string>\"\n },\n \"usageCaps\": {\n \"enabled\": true,\n \"messagesPerUserPerDay\": 2,\n \"maxTurnsPerConversation\": 2,\n \"maxCreditsPerConversation\": 2,\n \"exceededMessage\": \"<string>\"\n },\n \"cannedResponses\": {\n \"greeting\": \"<string>\",\n \"fallback\": \"<string>\",\n \"outOfHours\": \"<string>\",\n \"businessHours\": {\n \"timezone\": \"<string>\",\n \"days\": [\n 3\n ],\n \"start\": \"<string>\",\n \"end\": \"<string>\"\n }\n }\n },\n \"identity\": {\n \"methods\": [\n \"<string>\"\n ],\n \"collect\": [\n \"<string>\"\n ],\n \"linkBy\": [\n \"<string>\"\n ],\n \"allowedEmailDomains\": [\n \"<string>\"\n ],\n \"toolkitSlug\": \"<string>\"\n },\n \"tools\": {\n \"mode\": \"NORMAL\",\n \"discoveryWhitelist\": true,\n \"pinnedSlugs\": [\n \"gmail_send_email\",\n \"gmail_fetch_emails\"\n ],\n \"externalMcpConfigs\": [\n {\n \"name\": \"internal-docs\",\n \"url\": \"https://mcp.example.com/sse\",\n \"headers\": {\n \"Authorization\": \"Bearer sk_live_...\"\n },\n \"tools\": [\n \"search_docs\"\n ]\n }\n ],\n \"connectionCallbackUrl\": \"https://myapp.com/oauth/callback\",\n \"visitorOwnerConnections\": {\n \"enabled\": true,\n \"toolkits\": [\n {\n \"toolkitSlug\": \"<string>\",\n \"toolSlugs\": [\n \"<string>\"\n ]\n }\n ]\n }\n },\n \"inputSchema\": {},\n \"outputSchema\": {}\n },\n \"provenance\": {\n \"createdByAgent\": false,\n \"productCreationDepth\": 0,\n \"createdFromWorkflowId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n \"hideFromAgentPicker\": false\n },\n \"triggers\": [\n {\n \"kind\": \"cron\",\n \"expression\": \"0 9 * * 1-5\",\n \"timezone\": \"UTC\",\n \"toolSlug\": \"gmail_new_gmail_message\",\n \"triggerToolInput\": {\n \"labelIds\": [\n \"INBOX\"\n ]\n },\n \"triggerId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\"\n }\n ],\n \"workflowType\": \"agent\",\n \"isActive\": true,\n \"isPublic\": false,\n \"lastExecutedAt\": \"2026-09-03T10:00:00.000Z\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://flowra.dev/api/v1/workflow/manager/update/{id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Support bot\",\n \"description\": \"Answers product questions and escalates billing issues.\",\n \"agent\": {\n \"prompt\": \"You are a helpful support agent. Prefer short answers.\",\n \"modelSettings\": {\n \"model\": \"openai/gpt-4o-mini\",\n \"temperature\": 0.7,\n \"maxTokens\": 4096,\n \"cacheToolsAndPrompt\": true,\n \"topP\": 1,\n \"topK\": 40,\n \"frequencyPenalty\": 0,\n \"presencePenalty\": 0,\n \"repetitionPenalty\": 1,\n \"minP\": 0,\n \"topA\": 0,\n \"seed\": 42,\n \"stop\": [\n \"END\"\n ],\n \"logitBias\": {\n \"50256\": -100\n },\n \"topLogprobs\": 0,\n \"reasoningEffort\": \"medium\"\n },\n \"capabilities\": {\n \"computer\": {\n \"enabled\": true,\n \"templateId\": \"code-interpreter-v1\",\n \"maxDurationSec\": 3600\n },\n \"generalPurpose\": {\n \"enabled\": false\n },\n \"summarization\": {\n \"enabled\": true,\n \"trigger\": {},\n \"keep\": {},\n \"model\": \"openai/gpt-4o-mini\",\n \"maxTokensBeforeSummary\": 1024,\n \"prefix\": \"## Conversation so far\"\n },\n \"todoList\": {\n \"enabled\": true,\n \"strict\": false\n },\n \"toolRetry\": {\n \"enabled\": true,\n \"maxRetries\": 2,\n \"backoffFactor\": 2,\n \"initialDelayMs\": 500,\n \"maxDelayMs\": 8000,\n \"jitter\": true,\n \"tools\": [\n \"<string>\"\n ]\n },\n \"modelFallback\": {\n \"enabled\": true,\n \"fallbackModels\": [\n \"<string>\"\n ]\n },\n \"toolSelector\": {\n \"enabled\": true,\n \"model\": \"<string>\",\n \"maxTools\": 2,\n \"alwaysInclude\": [\n \"<string>\"\n ],\n \"autoEnableIfToolCountGte\": 2\n },\n \"humanApproval\": {\n \"enabled\": true,\n \"mode\": \"sensitiveOnly\",\n \"sensitiveToolNames\": [\n \"<string>\"\n ],\n \"alwaysAllowedToolNames\": [\n \"<string>\"\n ],\n \"allowedDecisions\": [\n \"<string>\"\n ],\n \"messageToUser\": \"<string>\"\n },\n \"modelCallLimit\": {\n \"enabled\": true,\n \"threadLimit\": 2,\n \"runLimit\": 2\n },\n \"toolCallLimit\": {\n \"enabled\": true,\n \"threadLimit\": 2,\n \"runLimit\": 2,\n \"toolName\": \"<string>\"\n },\n \"userFriendlyErrors\": true,\n \"longTermMemory\": {\n \"enabled\": true,\n \"instructions\": \"<string>\"\n }\n },\n \"skillIds\": [\n \"<string>\"\n ],\n \"subAgentIds\": [\n \"<string>\"\n ],\n \"knowledgeCollectionIds\": [\n \"<string>\"\n ],\n \"databaseCollectionIds\": [\n \"<string>\"\n ],\n \"databaseAccessPolicies\": {},\n \"starterPrompts\": [\n \"<string>\"\n ],\n \"avatarUrl\": \"<string>\",\n \"behavior\": {\n \"persona\": {\n \"displayName\": \"<string>\",\n \"role\": \"<string>\",\n \"styleNotes\": \"<string>\"\n },\n \"guardrails\": {\n \"bannedTopics\": [\n \"<string>\"\n ],\n \"neverPromise\": [\n \"<string>\"\n ],\n \"refusalMessage\": \"<string>\",\n \"pii\": {\n \"enabled\": true,\n \"rules\": [\n {\n \"pattern\": \"<string>\",\n \"applyToInput\": true,\n \"applyToOutput\": true\n }\n ]\n }\n },\n \"escalation\": {\n \"enabled\": true,\n \"triggers\": [\n \"<string>\"\n ],\n \"afterFailedAttempts\": 5.5,\n \"notifyToolSlug\": \"<string>\",\n \"summaryTemplate\": \"<string>\",\n \"handoffMessage\": \"<string>\"\n },\n \"usageCaps\": {\n \"enabled\": true,\n \"messagesPerUserPerDay\": 2,\n \"maxTurnsPerConversation\": 2,\n \"maxCreditsPerConversation\": 2,\n \"exceededMessage\": \"<string>\"\n },\n \"cannedResponses\": {\n \"greeting\": \"<string>\",\n \"fallback\": \"<string>\",\n \"outOfHours\": \"<string>\",\n \"businessHours\": {\n \"timezone\": \"<string>\",\n \"days\": [\n 3\n ],\n \"start\": \"<string>\",\n \"end\": \"<string>\"\n }\n }\n },\n \"identity\": {\n \"methods\": [\n \"<string>\"\n ],\n \"collect\": [\n \"<string>\"\n ],\n \"linkBy\": [\n \"<string>\"\n ],\n \"allowedEmailDomains\": [\n \"<string>\"\n ],\n \"toolkitSlug\": \"<string>\"\n },\n \"tools\": {\n \"mode\": \"NORMAL\",\n \"discoveryWhitelist\": true,\n \"pinnedSlugs\": [\n \"gmail_send_email\",\n \"gmail_fetch_emails\"\n ],\n \"externalMcpConfigs\": [\n {\n \"name\": \"internal-docs\",\n \"url\": \"https://mcp.example.com/sse\",\n \"headers\": {\n \"Authorization\": \"Bearer sk_live_...\"\n },\n \"tools\": [\n \"search_docs\"\n ]\n }\n ],\n \"connectionCallbackUrl\": \"https://myapp.com/oauth/callback\",\n \"visitorOwnerConnections\": {\n \"enabled\": true,\n \"toolkits\": [\n {\n \"toolkitSlug\": \"<string>\",\n \"toolSlugs\": [\n \"<string>\"\n ]\n }\n ]\n }\n },\n \"inputSchema\": {},\n \"outputSchema\": {}\n },\n \"provenance\": {\n \"createdByAgent\": false,\n \"productCreationDepth\": 0,\n \"createdFromWorkflowId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n \"hideFromAgentPicker\": false\n },\n \"triggers\": [\n {\n \"kind\": \"cron\",\n \"expression\": \"0 9 * * 1-5\",\n \"timezone\": \"UTC\",\n \"toolSlug\": \"gmail_new_gmail_message\",\n \"triggerToolInput\": {\n \"labelIds\": [\n \"INBOX\"\n ]\n },\n \"triggerId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\"\n }\n ],\n \"workflowType\": \"agent\",\n \"isActive\": true,\n \"isPublic\": false,\n \"lastExecutedAt\": \"2026-09-03T10:00:00.000Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://flowra.dev/api/v1/workflow/manager/update/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Support bot\",\n \"description\": \"Answers product questions and escalates billing issues.\",\n \"agent\": {\n \"prompt\": \"You are a helpful support agent. Prefer short answers.\",\n \"modelSettings\": {\n \"model\": \"openai/gpt-4o-mini\",\n \"temperature\": 0.7,\n \"maxTokens\": 4096,\n \"cacheToolsAndPrompt\": true,\n \"topP\": 1,\n \"topK\": 40,\n \"frequencyPenalty\": 0,\n \"presencePenalty\": 0,\n \"repetitionPenalty\": 1,\n \"minP\": 0,\n \"topA\": 0,\n \"seed\": 42,\n \"stop\": [\n \"END\"\n ],\n \"logitBias\": {\n \"50256\": -100\n },\n \"topLogprobs\": 0,\n \"reasoningEffort\": \"medium\"\n },\n \"capabilities\": {\n \"computer\": {\n \"enabled\": true,\n \"templateId\": \"code-interpreter-v1\",\n \"maxDurationSec\": 3600\n },\n \"generalPurpose\": {\n \"enabled\": false\n },\n \"summarization\": {\n \"enabled\": true,\n \"trigger\": {},\n \"keep\": {},\n \"model\": \"openai/gpt-4o-mini\",\n \"maxTokensBeforeSummary\": 1024,\n \"prefix\": \"## Conversation so far\"\n },\n \"todoList\": {\n \"enabled\": true,\n \"strict\": false\n },\n \"toolRetry\": {\n \"enabled\": true,\n \"maxRetries\": 2,\n \"backoffFactor\": 2,\n \"initialDelayMs\": 500,\n \"maxDelayMs\": 8000,\n \"jitter\": true,\n \"tools\": [\n \"<string>\"\n ]\n },\n \"modelFallback\": {\n \"enabled\": true,\n \"fallbackModels\": [\n \"<string>\"\n ]\n },\n \"toolSelector\": {\n \"enabled\": true,\n \"model\": \"<string>\",\n \"maxTools\": 2,\n \"alwaysInclude\": [\n \"<string>\"\n ],\n \"autoEnableIfToolCountGte\": 2\n },\n \"humanApproval\": {\n \"enabled\": true,\n \"mode\": \"sensitiveOnly\",\n \"sensitiveToolNames\": [\n \"<string>\"\n ],\n \"alwaysAllowedToolNames\": [\n \"<string>\"\n ],\n \"allowedDecisions\": [\n \"<string>\"\n ],\n \"messageToUser\": \"<string>\"\n },\n \"modelCallLimit\": {\n \"enabled\": true,\n \"threadLimit\": 2,\n \"runLimit\": 2\n },\n \"toolCallLimit\": {\n \"enabled\": true,\n \"threadLimit\": 2,\n \"runLimit\": 2,\n \"toolName\": \"<string>\"\n },\n \"userFriendlyErrors\": true,\n \"longTermMemory\": {\n \"enabled\": true,\n \"instructions\": \"<string>\"\n }\n },\n \"skillIds\": [\n \"<string>\"\n ],\n \"subAgentIds\": [\n \"<string>\"\n ],\n \"knowledgeCollectionIds\": [\n \"<string>\"\n ],\n \"databaseCollectionIds\": [\n \"<string>\"\n ],\n \"databaseAccessPolicies\": {},\n \"starterPrompts\": [\n \"<string>\"\n ],\n \"avatarUrl\": \"<string>\",\n \"behavior\": {\n \"persona\": {\n \"displayName\": \"<string>\",\n \"role\": \"<string>\",\n \"styleNotes\": \"<string>\"\n },\n \"guardrails\": {\n \"bannedTopics\": [\n \"<string>\"\n ],\n \"neverPromise\": [\n \"<string>\"\n ],\n \"refusalMessage\": \"<string>\",\n \"pii\": {\n \"enabled\": true,\n \"rules\": [\n {\n \"pattern\": \"<string>\",\n \"applyToInput\": true,\n \"applyToOutput\": true\n }\n ]\n }\n },\n \"escalation\": {\n \"enabled\": true,\n \"triggers\": [\n \"<string>\"\n ],\n \"afterFailedAttempts\": 5.5,\n \"notifyToolSlug\": \"<string>\",\n \"summaryTemplate\": \"<string>\",\n \"handoffMessage\": \"<string>\"\n },\n \"usageCaps\": {\n \"enabled\": true,\n \"messagesPerUserPerDay\": 2,\n \"maxTurnsPerConversation\": 2,\n \"maxCreditsPerConversation\": 2,\n \"exceededMessage\": \"<string>\"\n },\n \"cannedResponses\": {\n \"greeting\": \"<string>\",\n \"fallback\": \"<string>\",\n \"outOfHours\": \"<string>\",\n \"businessHours\": {\n \"timezone\": \"<string>\",\n \"days\": [\n 3\n ],\n \"start\": \"<string>\",\n \"end\": \"<string>\"\n }\n }\n },\n \"identity\": {\n \"methods\": [\n \"<string>\"\n ],\n \"collect\": [\n \"<string>\"\n ],\n \"linkBy\": [\n \"<string>\"\n ],\n \"allowedEmailDomains\": [\n \"<string>\"\n ],\n \"toolkitSlug\": \"<string>\"\n },\n \"tools\": {\n \"mode\": \"NORMAL\",\n \"discoveryWhitelist\": true,\n \"pinnedSlugs\": [\n \"gmail_send_email\",\n \"gmail_fetch_emails\"\n ],\n \"externalMcpConfigs\": [\n {\n \"name\": \"internal-docs\",\n \"url\": \"https://mcp.example.com/sse\",\n \"headers\": {\n \"Authorization\": \"Bearer sk_live_...\"\n },\n \"tools\": [\n \"search_docs\"\n ]\n }\n ],\n \"connectionCallbackUrl\": \"https://myapp.com/oauth/callback\",\n \"visitorOwnerConnections\": {\n \"enabled\": true,\n \"toolkits\": [\n {\n \"toolkitSlug\": \"<string>\",\n \"toolSlugs\": [\n \"<string>\"\n ]\n }\n ]\n }\n },\n \"inputSchema\": {},\n \"outputSchema\": {}\n },\n \"provenance\": {\n \"createdByAgent\": false,\n \"productCreationDepth\": 0,\n \"createdFromWorkflowId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n \"hideFromAgentPicker\": false\n },\n \"triggers\": [\n {\n \"kind\": \"cron\",\n \"expression\": \"0 9 * * 1-5\",\n \"timezone\": \"UTC\",\n \"toolSlug\": \"gmail_new_gmail_message\",\n \"triggerToolInput\": {\n \"labelIds\": [\n \"INBOX\"\n ]\n },\n \"triggerId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\"\n }\n ],\n \"workflowType\": \"agent\",\n \"isActive\": true,\n \"isPublic\": false,\n \"lastExecutedAt\": \"2026-09-03T10:00:00.000Z\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Operation completed successfully",
"data": {
"id": "",
"name": "",
"description": "",
"projectId": "",
"agent": {
"prompt": "",
"modelSettings": {},
"capabilities": {},
"behavior": {},
"identity": {},
"skillIds": [
""
],
"subAgentIds": [
""
],
"knowledgeCollectionIds": [
""
],
"databaseCollectionIds": [
""
],
"databaseAccessPolicies": {},
"starterPrompts": [
""
],
"avatarUrl": "",
"tools": {
"mode": "NORMAL",
"discoveryWhitelist": true,
"pinnedSlugs": [
""
],
"externalMcpConfigs": [
""
],
"connectionCallbackUrl": "",
"visitorOwnerConnections": {
"enabled": true,
"toolkits": []
}
},
"inputSchema": {},
"outputSchema": {}
},
"graph": {
"nodes": [
{
"id": "",
"type": "action",
"toolSlug": "",
"inputMapping": {},
"code": "",
"agent": {},
"outputSchema": {}
}
],
"edges": [
{
"from": "",
"to": "",
"condition": ""
}
],
"inputSchema": {},
"outputSchema": {}
},
"provenance": {
"createdByAgent": true,
"productCreationDepth": 0,
"createdFromWorkflowId": "",
"hideFromAgentPicker": true,
"marketplaceClone": {
"sourceWorkflowId": "",
"clonedAt": "",
"skillIdMap": {},
"knowledgeIdMap": {},
"databaseIdMap": {},
"subAgentIdMap": {},
"avatarFileIdMap": {},
"setupState": {
"answers": {},
"completedStepIds": [
""
]
}
}
},
"triggers": [
{
"kind": "manual",
"expression": "",
"timezone": "",
"toolSlug": "",
"triggerToolInput": {},
"triggerId": "",
"toolkitName": "",
"toolkitLogo": ""
}
],
"workflowType": "static",
"isActive": true,
"lifecycle": "draft",
"isPublic": true,
"version": "",
"clonedFromWorkflowId": "",
"clonedFromVersion": "",
"executionCount": 0,
"successfulExecutionCount": 0,
"failedExecutionCount": 0,
"lastExecutedAt": "",
"connections": [
{
"id": "",
"connectionId": "",
"toolkitSlug": "",
"displayName": "",
"label": "",
"createdAt": "",
"updatedAt": ""
}
],
"tools": [
{
"toolSlug": "",
"toolName": "",
"toolkitName": "",
"toolkitLogo": ""
}
],
"subAgents": [
""
],
"createdAt": "2024-01-01T00:00:00.000Z",
"updatedAt": "2024-01-01T00:00:00.000Z",
"sourceVersionLatest": "1.0.2",
"toolkitAuthConfigs": [
{
"toolkitSlug": "",
"authConfigId": "",
"name": "",
"authScheme": "",
"status": ""
}
],
"toolkitConnections": [
{
"toolkitSlug": "",
"connectedAccountId": "",
"displayName": "",
"label": "",
"status": "",
"authConfigId": ""
}
],
"marketplaceCategory": "",
"marketplaceAudience": "",
"marketplaceTagline": "",
"marketplaceSetupGuide": "",
"marketplaceSetupSpec": {},
"marketplaceSetupSkillId": "",
"marketplaceSetupSkillSlug": "",
"marketplaceHighlights": [
""
],
"marketplaceIsListed": true,
"marketplaceCapabilities": {
"hasSkills": true,
"skillCount": 0,
"hasKnowledge": true,
"hasDatabase": true,
"hasCron": true,
"requiresAuth": true,
"toolkitCount": 0,
"subAgentCount": 0,
"toolCount": 0
}
}
}Update workflow
Update workflow name, tools, system prompt, model, or other settings. Send only the fields you want to change.
curl --request PATCH \
--url https://flowra.dev/api/v1/workflow/manager/update/{id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "Support bot",
"description": "Answers product questions and escalates billing issues.",
"agent": {
"prompt": "You are a helpful support agent. Prefer short answers.",
"modelSettings": {
"model": "openai/gpt-4o-mini",
"temperature": 0.7,
"maxTokens": 4096,
"cacheToolsAndPrompt": true,
"topP": 1,
"topK": 40,
"frequencyPenalty": 0,
"presencePenalty": 0,
"repetitionPenalty": 1,
"minP": 0,
"topA": 0,
"seed": 42,
"stop": [
"END"
],
"logitBias": {
"50256": -100
},
"topLogprobs": 0,
"reasoningEffort": "medium"
},
"capabilities": {
"computer": {
"enabled": true,
"templateId": "code-interpreter-v1",
"maxDurationSec": 3600
},
"generalPurpose": {
"enabled": false
},
"summarization": {
"enabled": true,
"trigger": {},
"keep": {},
"model": "openai/gpt-4o-mini",
"maxTokensBeforeSummary": 1024,
"prefix": "## Conversation so far"
},
"todoList": {
"enabled": true,
"strict": false
},
"toolRetry": {
"enabled": true,
"maxRetries": 2,
"backoffFactor": 2,
"initialDelayMs": 500,
"maxDelayMs": 8000,
"jitter": true,
"tools": [
"<string>"
]
},
"modelFallback": {
"enabled": true,
"fallbackModels": [
"<string>"
]
},
"toolSelector": {
"enabled": true,
"model": "<string>",
"maxTools": 2,
"alwaysInclude": [
"<string>"
],
"autoEnableIfToolCountGte": 2
},
"humanApproval": {
"enabled": true,
"mode": "sensitiveOnly",
"sensitiveToolNames": [
"<string>"
],
"alwaysAllowedToolNames": [
"<string>"
],
"allowedDecisions": [
"<string>"
],
"messageToUser": "<string>"
},
"modelCallLimit": {
"enabled": true,
"threadLimit": 2,
"runLimit": 2
},
"toolCallLimit": {
"enabled": true,
"threadLimit": 2,
"runLimit": 2,
"toolName": "<string>"
},
"userFriendlyErrors": true,
"longTermMemory": {
"enabled": true,
"instructions": "<string>"
}
},
"skillIds": [
"<string>"
],
"subAgentIds": [
"<string>"
],
"knowledgeCollectionIds": [
"<string>"
],
"databaseCollectionIds": [
"<string>"
],
"databaseAccessPolicies": {},
"starterPrompts": [
"<string>"
],
"avatarUrl": "<string>",
"behavior": {
"persona": {
"displayName": "<string>",
"role": "<string>",
"styleNotes": "<string>"
},
"guardrails": {
"bannedTopics": [
"<string>"
],
"neverPromise": [
"<string>"
],
"refusalMessage": "<string>",
"pii": {
"enabled": true,
"rules": [
{
"pattern": "<string>",
"applyToInput": true,
"applyToOutput": true
}
]
}
},
"escalation": {
"enabled": true,
"triggers": [
"<string>"
],
"afterFailedAttempts": 5.5,
"notifyToolSlug": "<string>",
"summaryTemplate": "<string>",
"handoffMessage": "<string>"
},
"usageCaps": {
"enabled": true,
"messagesPerUserPerDay": 2,
"maxTurnsPerConversation": 2,
"maxCreditsPerConversation": 2,
"exceededMessage": "<string>"
},
"cannedResponses": {
"greeting": "<string>",
"fallback": "<string>",
"outOfHours": "<string>",
"businessHours": {
"timezone": "<string>",
"days": [
3
],
"start": "<string>",
"end": "<string>"
}
}
},
"identity": {
"methods": [
"<string>"
],
"collect": [
"<string>"
],
"linkBy": [
"<string>"
],
"allowedEmailDomains": [
"<string>"
],
"toolkitSlug": "<string>"
},
"tools": {
"mode": "NORMAL",
"discoveryWhitelist": true,
"pinnedSlugs": [
"gmail_send_email",
"gmail_fetch_emails"
],
"externalMcpConfigs": [
{
"name": "internal-docs",
"url": "https://mcp.example.com/sse",
"headers": {
"Authorization": "Bearer sk_live_..."
},
"tools": [
"search_docs"
]
}
],
"connectionCallbackUrl": "https://myapp.com/oauth/callback",
"visitorOwnerConnections": {
"enabled": true,
"toolkits": [
{
"toolkitSlug": "<string>",
"toolSlugs": [
"<string>"
]
}
]
}
},
"inputSchema": {},
"outputSchema": {}
},
"provenance": {
"createdByAgent": false,
"productCreationDepth": 0,
"createdFromWorkflowId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"hideFromAgentPicker": false
},
"triggers": [
{
"kind": "cron",
"expression": "0 9 * * 1-5",
"timezone": "UTC",
"toolSlug": "gmail_new_gmail_message",
"triggerToolInput": {
"labelIds": [
"INBOX"
]
},
"triggerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
],
"workflowType": "agent",
"isActive": true,
"isPublic": false,
"lastExecutedAt": "2026-09-03T10:00:00.000Z"
}
'import requests
url = "https://flowra.dev/api/v1/workflow/manager/update/{id}"
payload = {
"name": "Support bot",
"description": "Answers product questions and escalates billing issues.",
"agent": {
"prompt": "You are a helpful support agent. Prefer short answers.",
"modelSettings": {
"model": "openai/gpt-4o-mini",
"temperature": 0.7,
"maxTokens": 4096,
"cacheToolsAndPrompt": True,
"topP": 1,
"topK": 40,
"frequencyPenalty": 0,
"presencePenalty": 0,
"repetitionPenalty": 1,
"minP": 0,
"topA": 0,
"seed": 42,
"stop": ["END"],
"logitBias": { "50256": -100 },
"topLogprobs": 0,
"reasoningEffort": "medium"
},
"capabilities": {
"computer": {
"enabled": True,
"templateId": "code-interpreter-v1",
"maxDurationSec": 3600
},
"generalPurpose": { "enabled": False },
"summarization": {
"enabled": True,
"trigger": {},
"keep": {},
"model": "openai/gpt-4o-mini",
"maxTokensBeforeSummary": 1024,
"prefix": "## Conversation so far"
},
"todoList": {
"enabled": True,
"strict": False
},
"toolRetry": {
"enabled": True,
"maxRetries": 2,
"backoffFactor": 2,
"initialDelayMs": 500,
"maxDelayMs": 8000,
"jitter": True,
"tools": ["<string>"]
},
"modelFallback": {
"enabled": True,
"fallbackModels": ["<string>"]
},
"toolSelector": {
"enabled": True,
"model": "<string>",
"maxTools": 2,
"alwaysInclude": ["<string>"],
"autoEnableIfToolCountGte": 2
},
"humanApproval": {
"enabled": True,
"mode": "sensitiveOnly",
"sensitiveToolNames": ["<string>"],
"alwaysAllowedToolNames": ["<string>"],
"allowedDecisions": ["<string>"],
"messageToUser": "<string>"
},
"modelCallLimit": {
"enabled": True,
"threadLimit": 2,
"runLimit": 2
},
"toolCallLimit": {
"enabled": True,
"threadLimit": 2,
"runLimit": 2,
"toolName": "<string>"
},
"userFriendlyErrors": True,
"longTermMemory": {
"enabled": True,
"instructions": "<string>"
}
},
"skillIds": ["<string>"],
"subAgentIds": ["<string>"],
"knowledgeCollectionIds": ["<string>"],
"databaseCollectionIds": ["<string>"],
"databaseAccessPolicies": {},
"starterPrompts": ["<string>"],
"avatarUrl": "<string>",
"behavior": {
"persona": {
"displayName": "<string>",
"role": "<string>",
"styleNotes": "<string>"
},
"guardrails": {
"bannedTopics": ["<string>"],
"neverPromise": ["<string>"],
"refusalMessage": "<string>",
"pii": {
"enabled": True,
"rules": [
{
"pattern": "<string>",
"applyToInput": True,
"applyToOutput": True
}
]
}
},
"escalation": {
"enabled": True,
"triggers": ["<string>"],
"afterFailedAttempts": 5.5,
"notifyToolSlug": "<string>",
"summaryTemplate": "<string>",
"handoffMessage": "<string>"
},
"usageCaps": {
"enabled": True,
"messagesPerUserPerDay": 2,
"maxTurnsPerConversation": 2,
"maxCreditsPerConversation": 2,
"exceededMessage": "<string>"
},
"cannedResponses": {
"greeting": "<string>",
"fallback": "<string>",
"outOfHours": "<string>",
"businessHours": {
"timezone": "<string>",
"days": [3],
"start": "<string>",
"end": "<string>"
}
}
},
"identity": {
"methods": ["<string>"],
"collect": ["<string>"],
"linkBy": ["<string>"],
"allowedEmailDomains": ["<string>"],
"toolkitSlug": "<string>"
},
"tools": {
"mode": "NORMAL",
"discoveryWhitelist": True,
"pinnedSlugs": ["gmail_send_email", "gmail_fetch_emails"],
"externalMcpConfigs": [
{
"name": "internal-docs",
"url": "https://mcp.example.com/sse",
"headers": { "Authorization": "Bearer sk_live_..." },
"tools": ["search_docs"]
}
],
"connectionCallbackUrl": "https://myapp.com/oauth/callback",
"visitorOwnerConnections": {
"enabled": True,
"toolkits": [
{
"toolkitSlug": "<string>",
"toolSlugs": ["<string>"]
}
]
}
},
"inputSchema": {},
"outputSchema": {}
},
"provenance": {
"createdByAgent": False,
"productCreationDepth": 0,
"createdFromWorkflowId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"hideFromAgentPicker": False
},
"triggers": [
{
"kind": "cron",
"expression": "0 9 * * 1-5",
"timezone": "UTC",
"toolSlug": "gmail_new_gmail_message",
"triggerToolInput": { "labelIds": ["INBOX"] },
"triggerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
],
"workflowType": "agent",
"isActive": True,
"isPublic": False,
"lastExecutedAt": "2026-09-03T10:00:00.000Z"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Support bot',
description: 'Answers product questions and escalates billing issues.',
agent: {
prompt: 'You are a helpful support agent. Prefer short answers.',
modelSettings: {
model: 'openai/gpt-4o-mini',
temperature: 0.7,
maxTokens: 4096,
cacheToolsAndPrompt: true,
topP: 1,
topK: 40,
frequencyPenalty: 0,
presencePenalty: 0,
repetitionPenalty: 1,
minP: 0,
topA: 0,
seed: 42,
stop: ['END'],
logitBias: {'50256': -100},
topLogprobs: 0,
reasoningEffort: 'medium'
},
capabilities: {
computer: {enabled: true, templateId: 'code-interpreter-v1', maxDurationSec: 3600},
generalPurpose: {enabled: false},
summarization: {
enabled: true,
trigger: {},
keep: {},
model: 'openai/gpt-4o-mini',
maxTokensBeforeSummary: 1024,
prefix: '## Conversation so far'
},
todoList: {enabled: true, strict: false},
toolRetry: {
enabled: true,
maxRetries: 2,
backoffFactor: 2,
initialDelayMs: 500,
maxDelayMs: 8000,
jitter: true,
tools: ['<string>']
},
modelFallback: {enabled: true, fallbackModels: ['<string>']},
toolSelector: {
enabled: true,
model: '<string>',
maxTools: 2,
alwaysInclude: ['<string>'],
autoEnableIfToolCountGte: 2
},
humanApproval: {
enabled: true,
mode: 'sensitiveOnly',
sensitiveToolNames: ['<string>'],
alwaysAllowedToolNames: ['<string>'],
allowedDecisions: ['<string>'],
messageToUser: '<string>'
},
modelCallLimit: {enabled: true, threadLimit: 2, runLimit: 2},
toolCallLimit: {enabled: true, threadLimit: 2, runLimit: 2, toolName: '<string>'},
userFriendlyErrors: true,
longTermMemory: {enabled: true, instructions: '<string>'}
},
skillIds: ['<string>'],
subAgentIds: ['<string>'],
knowledgeCollectionIds: ['<string>'],
databaseCollectionIds: ['<string>'],
databaseAccessPolicies: {},
starterPrompts: ['<string>'],
avatarUrl: '<string>',
behavior: {
persona: {displayName: '<string>', role: '<string>', styleNotes: '<string>'},
guardrails: {
bannedTopics: ['<string>'],
neverPromise: ['<string>'],
refusalMessage: '<string>',
pii: {
enabled: true,
rules: [{pattern: '<string>', applyToInput: true, applyToOutput: true}]
}
},
escalation: {
enabled: true,
triggers: ['<string>'],
afterFailedAttempts: 5.5,
notifyToolSlug: '<string>',
summaryTemplate: '<string>',
handoffMessage: '<string>'
},
usageCaps: {
enabled: true,
messagesPerUserPerDay: 2,
maxTurnsPerConversation: 2,
maxCreditsPerConversation: 2,
exceededMessage: '<string>'
},
cannedResponses: {
greeting: '<string>',
fallback: '<string>',
outOfHours: '<string>',
businessHours: {timezone: '<string>', days: [3], start: '<string>', end: '<string>'}
}
},
identity: {
methods: ['<string>'],
collect: ['<string>'],
linkBy: ['<string>'],
allowedEmailDomains: ['<string>'],
toolkitSlug: '<string>'
},
tools: {
mode: 'NORMAL',
discoveryWhitelist: true,
pinnedSlugs: ['gmail_send_email', 'gmail_fetch_emails'],
externalMcpConfigs: [
{
name: 'internal-docs',
url: 'https://mcp.example.com/sse',
headers: {Authorization: 'Bearer sk_live_...'},
tools: ['search_docs']
}
],
connectionCallbackUrl: 'https://myapp.com/oauth/callback',
visitorOwnerConnections: {enabled: true, toolkits: [{toolkitSlug: '<string>', toolSlugs: ['<string>']}]}
},
inputSchema: {},
outputSchema: {}
},
provenance: {
createdByAgent: false,
productCreationDepth: 0,
createdFromWorkflowId: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
hideFromAgentPicker: false
},
triggers: [
{
kind: 'cron',
expression: '0 9 * * 1-5',
timezone: 'UTC',
toolSlug: 'gmail_new_gmail_message',
triggerToolInput: {labelIds: ['INBOX']},
triggerId: '3fa85f64-5717-4562-b3fc-2c963f66afa6'
}
],
workflowType: 'agent',
isActive: true,
isPublic: false,
lastExecutedAt: '2026-09-03T10:00:00.000Z'
})
};
fetch('https://flowra.dev/api/v1/workflow/manager/update/{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://flowra.dev/api/v1/workflow/manager/update/{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' => 'Support bot',
'description' => 'Answers product questions and escalates billing issues.',
'agent' => [
'prompt' => 'You are a helpful support agent. Prefer short answers.',
'modelSettings' => [
'model' => 'openai/gpt-4o-mini',
'temperature' => 0.7,
'maxTokens' => 4096,
'cacheToolsAndPrompt' => true,
'topP' => 1,
'topK' => 40,
'frequencyPenalty' => 0,
'presencePenalty' => 0,
'repetitionPenalty' => 1,
'minP' => 0,
'topA' => 0,
'seed' => 42,
'stop' => [
'END'
],
'logitBias' => [
'50256' => -100
],
'topLogprobs' => 0,
'reasoningEffort' => 'medium'
],
'capabilities' => [
'computer' => [
'enabled' => true,
'templateId' => 'code-interpreter-v1',
'maxDurationSec' => 3600
],
'generalPurpose' => [
'enabled' => false
],
'summarization' => [
'enabled' => true,
'trigger' => [
],
'keep' => [
],
'model' => 'openai/gpt-4o-mini',
'maxTokensBeforeSummary' => 1024,
'prefix' => '## Conversation so far'
],
'todoList' => [
'enabled' => true,
'strict' => false
],
'toolRetry' => [
'enabled' => true,
'maxRetries' => 2,
'backoffFactor' => 2,
'initialDelayMs' => 500,
'maxDelayMs' => 8000,
'jitter' => true,
'tools' => [
'<string>'
]
],
'modelFallback' => [
'enabled' => true,
'fallbackModels' => [
'<string>'
]
],
'toolSelector' => [
'enabled' => true,
'model' => '<string>',
'maxTools' => 2,
'alwaysInclude' => [
'<string>'
],
'autoEnableIfToolCountGte' => 2
],
'humanApproval' => [
'enabled' => true,
'mode' => 'sensitiveOnly',
'sensitiveToolNames' => [
'<string>'
],
'alwaysAllowedToolNames' => [
'<string>'
],
'allowedDecisions' => [
'<string>'
],
'messageToUser' => '<string>'
],
'modelCallLimit' => [
'enabled' => true,
'threadLimit' => 2,
'runLimit' => 2
],
'toolCallLimit' => [
'enabled' => true,
'threadLimit' => 2,
'runLimit' => 2,
'toolName' => '<string>'
],
'userFriendlyErrors' => true,
'longTermMemory' => [
'enabled' => true,
'instructions' => '<string>'
]
],
'skillIds' => [
'<string>'
],
'subAgentIds' => [
'<string>'
],
'knowledgeCollectionIds' => [
'<string>'
],
'databaseCollectionIds' => [
'<string>'
],
'databaseAccessPolicies' => [
],
'starterPrompts' => [
'<string>'
],
'avatarUrl' => '<string>',
'behavior' => [
'persona' => [
'displayName' => '<string>',
'role' => '<string>',
'styleNotes' => '<string>'
],
'guardrails' => [
'bannedTopics' => [
'<string>'
],
'neverPromise' => [
'<string>'
],
'refusalMessage' => '<string>',
'pii' => [
'enabled' => true,
'rules' => [
[
'pattern' => '<string>',
'applyToInput' => true,
'applyToOutput' => true
]
]
]
],
'escalation' => [
'enabled' => true,
'triggers' => [
'<string>'
],
'afterFailedAttempts' => 5.5,
'notifyToolSlug' => '<string>',
'summaryTemplate' => '<string>',
'handoffMessage' => '<string>'
],
'usageCaps' => [
'enabled' => true,
'messagesPerUserPerDay' => 2,
'maxTurnsPerConversation' => 2,
'maxCreditsPerConversation' => 2,
'exceededMessage' => '<string>'
],
'cannedResponses' => [
'greeting' => '<string>',
'fallback' => '<string>',
'outOfHours' => '<string>',
'businessHours' => [
'timezone' => '<string>',
'days' => [
3
],
'start' => '<string>',
'end' => '<string>'
]
]
],
'identity' => [
'methods' => [
'<string>'
],
'collect' => [
'<string>'
],
'linkBy' => [
'<string>'
],
'allowedEmailDomains' => [
'<string>'
],
'toolkitSlug' => '<string>'
],
'tools' => [
'mode' => 'NORMAL',
'discoveryWhitelist' => true,
'pinnedSlugs' => [
'gmail_send_email',
'gmail_fetch_emails'
],
'externalMcpConfigs' => [
[
'name' => 'internal-docs',
'url' => 'https://mcp.example.com/sse',
'headers' => [
'Authorization' => 'Bearer sk_live_...'
],
'tools' => [
'search_docs'
]
]
],
'connectionCallbackUrl' => 'https://myapp.com/oauth/callback',
'visitorOwnerConnections' => [
'enabled' => true,
'toolkits' => [
[
'toolkitSlug' => '<string>',
'toolSlugs' => [
'<string>'
]
]
]
]
],
'inputSchema' => [
],
'outputSchema' => [
]
],
'provenance' => [
'createdByAgent' => false,
'productCreationDepth' => 0,
'createdFromWorkflowId' => '3fa85f64-5717-4562-b3fc-2c963f66afa6',
'hideFromAgentPicker' => false
],
'triggers' => [
[
'kind' => 'cron',
'expression' => '0 9 * * 1-5',
'timezone' => 'UTC',
'toolSlug' => 'gmail_new_gmail_message',
'triggerToolInput' => [
'labelIds' => [
'INBOX'
]
],
'triggerId' => '3fa85f64-5717-4562-b3fc-2c963f66afa6'
]
],
'workflowType' => 'agent',
'isActive' => true,
'isPublic' => false,
'lastExecutedAt' => '2026-09-03T10:00:00.000Z'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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://flowra.dev/api/v1/workflow/manager/update/{id}"
payload := strings.NewReader("{\n \"name\": \"Support bot\",\n \"description\": \"Answers product questions and escalates billing issues.\",\n \"agent\": {\n \"prompt\": \"You are a helpful support agent. Prefer short answers.\",\n \"modelSettings\": {\n \"model\": \"openai/gpt-4o-mini\",\n \"temperature\": 0.7,\n \"maxTokens\": 4096,\n \"cacheToolsAndPrompt\": true,\n \"topP\": 1,\n \"topK\": 40,\n \"frequencyPenalty\": 0,\n \"presencePenalty\": 0,\n \"repetitionPenalty\": 1,\n \"minP\": 0,\n \"topA\": 0,\n \"seed\": 42,\n \"stop\": [\n \"END\"\n ],\n \"logitBias\": {\n \"50256\": -100\n },\n \"topLogprobs\": 0,\n \"reasoningEffort\": \"medium\"\n },\n \"capabilities\": {\n \"computer\": {\n \"enabled\": true,\n \"templateId\": \"code-interpreter-v1\",\n \"maxDurationSec\": 3600\n },\n \"generalPurpose\": {\n \"enabled\": false\n },\n \"summarization\": {\n \"enabled\": true,\n \"trigger\": {},\n \"keep\": {},\n \"model\": \"openai/gpt-4o-mini\",\n \"maxTokensBeforeSummary\": 1024,\n \"prefix\": \"## Conversation so far\"\n },\n \"todoList\": {\n \"enabled\": true,\n \"strict\": false\n },\n \"toolRetry\": {\n \"enabled\": true,\n \"maxRetries\": 2,\n \"backoffFactor\": 2,\n \"initialDelayMs\": 500,\n \"maxDelayMs\": 8000,\n \"jitter\": true,\n \"tools\": [\n \"<string>\"\n ]\n },\n \"modelFallback\": {\n \"enabled\": true,\n \"fallbackModels\": [\n \"<string>\"\n ]\n },\n \"toolSelector\": {\n \"enabled\": true,\n \"model\": \"<string>\",\n \"maxTools\": 2,\n \"alwaysInclude\": [\n \"<string>\"\n ],\n \"autoEnableIfToolCountGte\": 2\n },\n \"humanApproval\": {\n \"enabled\": true,\n \"mode\": \"sensitiveOnly\",\n \"sensitiveToolNames\": [\n \"<string>\"\n ],\n \"alwaysAllowedToolNames\": [\n \"<string>\"\n ],\n \"allowedDecisions\": [\n \"<string>\"\n ],\n \"messageToUser\": \"<string>\"\n },\n \"modelCallLimit\": {\n \"enabled\": true,\n \"threadLimit\": 2,\n \"runLimit\": 2\n },\n \"toolCallLimit\": {\n \"enabled\": true,\n \"threadLimit\": 2,\n \"runLimit\": 2,\n \"toolName\": \"<string>\"\n },\n \"userFriendlyErrors\": true,\n \"longTermMemory\": {\n \"enabled\": true,\n \"instructions\": \"<string>\"\n }\n },\n \"skillIds\": [\n \"<string>\"\n ],\n \"subAgentIds\": [\n \"<string>\"\n ],\n \"knowledgeCollectionIds\": [\n \"<string>\"\n ],\n \"databaseCollectionIds\": [\n \"<string>\"\n ],\n \"databaseAccessPolicies\": {},\n \"starterPrompts\": [\n \"<string>\"\n ],\n \"avatarUrl\": \"<string>\",\n \"behavior\": {\n \"persona\": {\n \"displayName\": \"<string>\",\n \"role\": \"<string>\",\n \"styleNotes\": \"<string>\"\n },\n \"guardrails\": {\n \"bannedTopics\": [\n \"<string>\"\n ],\n \"neverPromise\": [\n \"<string>\"\n ],\n \"refusalMessage\": \"<string>\",\n \"pii\": {\n \"enabled\": true,\n \"rules\": [\n {\n \"pattern\": \"<string>\",\n \"applyToInput\": true,\n \"applyToOutput\": true\n }\n ]\n }\n },\n \"escalation\": {\n \"enabled\": true,\n \"triggers\": [\n \"<string>\"\n ],\n \"afterFailedAttempts\": 5.5,\n \"notifyToolSlug\": \"<string>\",\n \"summaryTemplate\": \"<string>\",\n \"handoffMessage\": \"<string>\"\n },\n \"usageCaps\": {\n \"enabled\": true,\n \"messagesPerUserPerDay\": 2,\n \"maxTurnsPerConversation\": 2,\n \"maxCreditsPerConversation\": 2,\n \"exceededMessage\": \"<string>\"\n },\n \"cannedResponses\": {\n \"greeting\": \"<string>\",\n \"fallback\": \"<string>\",\n \"outOfHours\": \"<string>\",\n \"businessHours\": {\n \"timezone\": \"<string>\",\n \"days\": [\n 3\n ],\n \"start\": \"<string>\",\n \"end\": \"<string>\"\n }\n }\n },\n \"identity\": {\n \"methods\": [\n \"<string>\"\n ],\n \"collect\": [\n \"<string>\"\n ],\n \"linkBy\": [\n \"<string>\"\n ],\n \"allowedEmailDomains\": [\n \"<string>\"\n ],\n \"toolkitSlug\": \"<string>\"\n },\n \"tools\": {\n \"mode\": \"NORMAL\",\n \"discoveryWhitelist\": true,\n \"pinnedSlugs\": [\n \"gmail_send_email\",\n \"gmail_fetch_emails\"\n ],\n \"externalMcpConfigs\": [\n {\n \"name\": \"internal-docs\",\n \"url\": \"https://mcp.example.com/sse\",\n \"headers\": {\n \"Authorization\": \"Bearer sk_live_...\"\n },\n \"tools\": [\n \"search_docs\"\n ]\n }\n ],\n \"connectionCallbackUrl\": \"https://myapp.com/oauth/callback\",\n \"visitorOwnerConnections\": {\n \"enabled\": true,\n \"toolkits\": [\n {\n \"toolkitSlug\": \"<string>\",\n \"toolSlugs\": [\n \"<string>\"\n ]\n }\n ]\n }\n },\n \"inputSchema\": {},\n \"outputSchema\": {}\n },\n \"provenance\": {\n \"createdByAgent\": false,\n \"productCreationDepth\": 0,\n \"createdFromWorkflowId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n \"hideFromAgentPicker\": false\n },\n \"triggers\": [\n {\n \"kind\": \"cron\",\n \"expression\": \"0 9 * * 1-5\",\n \"timezone\": \"UTC\",\n \"toolSlug\": \"gmail_new_gmail_message\",\n \"triggerToolInput\": {\n \"labelIds\": [\n \"INBOX\"\n ]\n },\n \"triggerId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\"\n }\n ],\n \"workflowType\": \"agent\",\n \"isActive\": true,\n \"isPublic\": false,\n \"lastExecutedAt\": \"2026-09-03T10:00:00.000Z\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://flowra.dev/api/v1/workflow/manager/update/{id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Support bot\",\n \"description\": \"Answers product questions and escalates billing issues.\",\n \"agent\": {\n \"prompt\": \"You are a helpful support agent. Prefer short answers.\",\n \"modelSettings\": {\n \"model\": \"openai/gpt-4o-mini\",\n \"temperature\": 0.7,\n \"maxTokens\": 4096,\n \"cacheToolsAndPrompt\": true,\n \"topP\": 1,\n \"topK\": 40,\n \"frequencyPenalty\": 0,\n \"presencePenalty\": 0,\n \"repetitionPenalty\": 1,\n \"minP\": 0,\n \"topA\": 0,\n \"seed\": 42,\n \"stop\": [\n \"END\"\n ],\n \"logitBias\": {\n \"50256\": -100\n },\n \"topLogprobs\": 0,\n \"reasoningEffort\": \"medium\"\n },\n \"capabilities\": {\n \"computer\": {\n \"enabled\": true,\n \"templateId\": \"code-interpreter-v1\",\n \"maxDurationSec\": 3600\n },\n \"generalPurpose\": {\n \"enabled\": false\n },\n \"summarization\": {\n \"enabled\": true,\n \"trigger\": {},\n \"keep\": {},\n \"model\": \"openai/gpt-4o-mini\",\n \"maxTokensBeforeSummary\": 1024,\n \"prefix\": \"## Conversation so far\"\n },\n \"todoList\": {\n \"enabled\": true,\n \"strict\": false\n },\n \"toolRetry\": {\n \"enabled\": true,\n \"maxRetries\": 2,\n \"backoffFactor\": 2,\n \"initialDelayMs\": 500,\n \"maxDelayMs\": 8000,\n \"jitter\": true,\n \"tools\": [\n \"<string>\"\n ]\n },\n \"modelFallback\": {\n \"enabled\": true,\n \"fallbackModels\": [\n \"<string>\"\n ]\n },\n \"toolSelector\": {\n \"enabled\": true,\n \"model\": \"<string>\",\n \"maxTools\": 2,\n \"alwaysInclude\": [\n \"<string>\"\n ],\n \"autoEnableIfToolCountGte\": 2\n },\n \"humanApproval\": {\n \"enabled\": true,\n \"mode\": \"sensitiveOnly\",\n \"sensitiveToolNames\": [\n \"<string>\"\n ],\n \"alwaysAllowedToolNames\": [\n \"<string>\"\n ],\n \"allowedDecisions\": [\n \"<string>\"\n ],\n \"messageToUser\": \"<string>\"\n },\n \"modelCallLimit\": {\n \"enabled\": true,\n \"threadLimit\": 2,\n \"runLimit\": 2\n },\n \"toolCallLimit\": {\n \"enabled\": true,\n \"threadLimit\": 2,\n \"runLimit\": 2,\n \"toolName\": \"<string>\"\n },\n \"userFriendlyErrors\": true,\n \"longTermMemory\": {\n \"enabled\": true,\n \"instructions\": \"<string>\"\n }\n },\n \"skillIds\": [\n \"<string>\"\n ],\n \"subAgentIds\": [\n \"<string>\"\n ],\n \"knowledgeCollectionIds\": [\n \"<string>\"\n ],\n \"databaseCollectionIds\": [\n \"<string>\"\n ],\n \"databaseAccessPolicies\": {},\n \"starterPrompts\": [\n \"<string>\"\n ],\n \"avatarUrl\": \"<string>\",\n \"behavior\": {\n \"persona\": {\n \"displayName\": \"<string>\",\n \"role\": \"<string>\",\n \"styleNotes\": \"<string>\"\n },\n \"guardrails\": {\n \"bannedTopics\": [\n \"<string>\"\n ],\n \"neverPromise\": [\n \"<string>\"\n ],\n \"refusalMessage\": \"<string>\",\n \"pii\": {\n \"enabled\": true,\n \"rules\": [\n {\n \"pattern\": \"<string>\",\n \"applyToInput\": true,\n \"applyToOutput\": true\n }\n ]\n }\n },\n \"escalation\": {\n \"enabled\": true,\n \"triggers\": [\n \"<string>\"\n ],\n \"afterFailedAttempts\": 5.5,\n \"notifyToolSlug\": \"<string>\",\n \"summaryTemplate\": \"<string>\",\n \"handoffMessage\": \"<string>\"\n },\n \"usageCaps\": {\n \"enabled\": true,\n \"messagesPerUserPerDay\": 2,\n \"maxTurnsPerConversation\": 2,\n \"maxCreditsPerConversation\": 2,\n \"exceededMessage\": \"<string>\"\n },\n \"cannedResponses\": {\n \"greeting\": \"<string>\",\n \"fallback\": \"<string>\",\n \"outOfHours\": \"<string>\",\n \"businessHours\": {\n \"timezone\": \"<string>\",\n \"days\": [\n 3\n ],\n \"start\": \"<string>\",\n \"end\": \"<string>\"\n }\n }\n },\n \"identity\": {\n \"methods\": [\n \"<string>\"\n ],\n \"collect\": [\n \"<string>\"\n ],\n \"linkBy\": [\n \"<string>\"\n ],\n \"allowedEmailDomains\": [\n \"<string>\"\n ],\n \"toolkitSlug\": \"<string>\"\n },\n \"tools\": {\n \"mode\": \"NORMAL\",\n \"discoveryWhitelist\": true,\n \"pinnedSlugs\": [\n \"gmail_send_email\",\n \"gmail_fetch_emails\"\n ],\n \"externalMcpConfigs\": [\n {\n \"name\": \"internal-docs\",\n \"url\": \"https://mcp.example.com/sse\",\n \"headers\": {\n \"Authorization\": \"Bearer sk_live_...\"\n },\n \"tools\": [\n \"search_docs\"\n ]\n }\n ],\n \"connectionCallbackUrl\": \"https://myapp.com/oauth/callback\",\n \"visitorOwnerConnections\": {\n \"enabled\": true,\n \"toolkits\": [\n {\n \"toolkitSlug\": \"<string>\",\n \"toolSlugs\": [\n \"<string>\"\n ]\n }\n ]\n }\n },\n \"inputSchema\": {},\n \"outputSchema\": {}\n },\n \"provenance\": {\n \"createdByAgent\": false,\n \"productCreationDepth\": 0,\n \"createdFromWorkflowId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n \"hideFromAgentPicker\": false\n },\n \"triggers\": [\n {\n \"kind\": \"cron\",\n \"expression\": \"0 9 * * 1-5\",\n \"timezone\": \"UTC\",\n \"toolSlug\": \"gmail_new_gmail_message\",\n \"triggerToolInput\": {\n \"labelIds\": [\n \"INBOX\"\n ]\n },\n \"triggerId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\"\n }\n ],\n \"workflowType\": \"agent\",\n \"isActive\": true,\n \"isPublic\": false,\n \"lastExecutedAt\": \"2026-09-03T10:00:00.000Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://flowra.dev/api/v1/workflow/manager/update/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Support bot\",\n \"description\": \"Answers product questions and escalates billing issues.\",\n \"agent\": {\n \"prompt\": \"You are a helpful support agent. Prefer short answers.\",\n \"modelSettings\": {\n \"model\": \"openai/gpt-4o-mini\",\n \"temperature\": 0.7,\n \"maxTokens\": 4096,\n \"cacheToolsAndPrompt\": true,\n \"topP\": 1,\n \"topK\": 40,\n \"frequencyPenalty\": 0,\n \"presencePenalty\": 0,\n \"repetitionPenalty\": 1,\n \"minP\": 0,\n \"topA\": 0,\n \"seed\": 42,\n \"stop\": [\n \"END\"\n ],\n \"logitBias\": {\n \"50256\": -100\n },\n \"topLogprobs\": 0,\n \"reasoningEffort\": \"medium\"\n },\n \"capabilities\": {\n \"computer\": {\n \"enabled\": true,\n \"templateId\": \"code-interpreter-v1\",\n \"maxDurationSec\": 3600\n },\n \"generalPurpose\": {\n \"enabled\": false\n },\n \"summarization\": {\n \"enabled\": true,\n \"trigger\": {},\n \"keep\": {},\n \"model\": \"openai/gpt-4o-mini\",\n \"maxTokensBeforeSummary\": 1024,\n \"prefix\": \"## Conversation so far\"\n },\n \"todoList\": {\n \"enabled\": true,\n \"strict\": false\n },\n \"toolRetry\": {\n \"enabled\": true,\n \"maxRetries\": 2,\n \"backoffFactor\": 2,\n \"initialDelayMs\": 500,\n \"maxDelayMs\": 8000,\n \"jitter\": true,\n \"tools\": [\n \"<string>\"\n ]\n },\n \"modelFallback\": {\n \"enabled\": true,\n \"fallbackModels\": [\n \"<string>\"\n ]\n },\n \"toolSelector\": {\n \"enabled\": true,\n \"model\": \"<string>\",\n \"maxTools\": 2,\n \"alwaysInclude\": [\n \"<string>\"\n ],\n \"autoEnableIfToolCountGte\": 2\n },\n \"humanApproval\": {\n \"enabled\": true,\n \"mode\": \"sensitiveOnly\",\n \"sensitiveToolNames\": [\n \"<string>\"\n ],\n \"alwaysAllowedToolNames\": [\n \"<string>\"\n ],\n \"allowedDecisions\": [\n \"<string>\"\n ],\n \"messageToUser\": \"<string>\"\n },\n \"modelCallLimit\": {\n \"enabled\": true,\n \"threadLimit\": 2,\n \"runLimit\": 2\n },\n \"toolCallLimit\": {\n \"enabled\": true,\n \"threadLimit\": 2,\n \"runLimit\": 2,\n \"toolName\": \"<string>\"\n },\n \"userFriendlyErrors\": true,\n \"longTermMemory\": {\n \"enabled\": true,\n \"instructions\": \"<string>\"\n }\n },\n \"skillIds\": [\n \"<string>\"\n ],\n \"subAgentIds\": [\n \"<string>\"\n ],\n \"knowledgeCollectionIds\": [\n \"<string>\"\n ],\n \"databaseCollectionIds\": [\n \"<string>\"\n ],\n \"databaseAccessPolicies\": {},\n \"starterPrompts\": [\n \"<string>\"\n ],\n \"avatarUrl\": \"<string>\",\n \"behavior\": {\n \"persona\": {\n \"displayName\": \"<string>\",\n \"role\": \"<string>\",\n \"styleNotes\": \"<string>\"\n },\n \"guardrails\": {\n \"bannedTopics\": [\n \"<string>\"\n ],\n \"neverPromise\": [\n \"<string>\"\n ],\n \"refusalMessage\": \"<string>\",\n \"pii\": {\n \"enabled\": true,\n \"rules\": [\n {\n \"pattern\": \"<string>\",\n \"applyToInput\": true,\n \"applyToOutput\": true\n }\n ]\n }\n },\n \"escalation\": {\n \"enabled\": true,\n \"triggers\": [\n \"<string>\"\n ],\n \"afterFailedAttempts\": 5.5,\n \"notifyToolSlug\": \"<string>\",\n \"summaryTemplate\": \"<string>\",\n \"handoffMessage\": \"<string>\"\n },\n \"usageCaps\": {\n \"enabled\": true,\n \"messagesPerUserPerDay\": 2,\n \"maxTurnsPerConversation\": 2,\n \"maxCreditsPerConversation\": 2,\n \"exceededMessage\": \"<string>\"\n },\n \"cannedResponses\": {\n \"greeting\": \"<string>\",\n \"fallback\": \"<string>\",\n \"outOfHours\": \"<string>\",\n \"businessHours\": {\n \"timezone\": \"<string>\",\n \"days\": [\n 3\n ],\n \"start\": \"<string>\",\n \"end\": \"<string>\"\n }\n }\n },\n \"identity\": {\n \"methods\": [\n \"<string>\"\n ],\n \"collect\": [\n \"<string>\"\n ],\n \"linkBy\": [\n \"<string>\"\n ],\n \"allowedEmailDomains\": [\n \"<string>\"\n ],\n \"toolkitSlug\": \"<string>\"\n },\n \"tools\": {\n \"mode\": \"NORMAL\",\n \"discoveryWhitelist\": true,\n \"pinnedSlugs\": [\n \"gmail_send_email\",\n \"gmail_fetch_emails\"\n ],\n \"externalMcpConfigs\": [\n {\n \"name\": \"internal-docs\",\n \"url\": \"https://mcp.example.com/sse\",\n \"headers\": {\n \"Authorization\": \"Bearer sk_live_...\"\n },\n \"tools\": [\n \"search_docs\"\n ]\n }\n ],\n \"connectionCallbackUrl\": \"https://myapp.com/oauth/callback\",\n \"visitorOwnerConnections\": {\n \"enabled\": true,\n \"toolkits\": [\n {\n \"toolkitSlug\": \"<string>\",\n \"toolSlugs\": [\n \"<string>\"\n ]\n }\n ]\n }\n },\n \"inputSchema\": {},\n \"outputSchema\": {}\n },\n \"provenance\": {\n \"createdByAgent\": false,\n \"productCreationDepth\": 0,\n \"createdFromWorkflowId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n \"hideFromAgentPicker\": false\n },\n \"triggers\": [\n {\n \"kind\": \"cron\",\n \"expression\": \"0 9 * * 1-5\",\n \"timezone\": \"UTC\",\n \"toolSlug\": \"gmail_new_gmail_message\",\n \"triggerToolInput\": {\n \"labelIds\": [\n \"INBOX\"\n ]\n },\n \"triggerId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\"\n }\n ],\n \"workflowType\": \"agent\",\n \"isActive\": true,\n \"isPublic\": false,\n \"lastExecutedAt\": \"2026-09-03T10:00:00.000Z\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Operation completed successfully",
"data": {
"id": "",
"name": "",
"description": "",
"projectId": "",
"agent": {
"prompt": "",
"modelSettings": {},
"capabilities": {},
"behavior": {},
"identity": {},
"skillIds": [
""
],
"subAgentIds": [
""
],
"knowledgeCollectionIds": [
""
],
"databaseCollectionIds": [
""
],
"databaseAccessPolicies": {},
"starterPrompts": [
""
],
"avatarUrl": "",
"tools": {
"mode": "NORMAL",
"discoveryWhitelist": true,
"pinnedSlugs": [
""
],
"externalMcpConfigs": [
""
],
"connectionCallbackUrl": "",
"visitorOwnerConnections": {
"enabled": true,
"toolkits": []
}
},
"inputSchema": {},
"outputSchema": {}
},
"graph": {
"nodes": [
{
"id": "",
"type": "action",
"toolSlug": "",
"inputMapping": {},
"code": "",
"agent": {},
"outputSchema": {}
}
],
"edges": [
{
"from": "",
"to": "",
"condition": ""
}
],
"inputSchema": {},
"outputSchema": {}
},
"provenance": {
"createdByAgent": true,
"productCreationDepth": 0,
"createdFromWorkflowId": "",
"hideFromAgentPicker": true,
"marketplaceClone": {
"sourceWorkflowId": "",
"clonedAt": "",
"skillIdMap": {},
"knowledgeIdMap": {},
"databaseIdMap": {},
"subAgentIdMap": {},
"avatarFileIdMap": {},
"setupState": {
"answers": {},
"completedStepIds": [
""
]
}
}
},
"triggers": [
{
"kind": "manual",
"expression": "",
"timezone": "",
"toolSlug": "",
"triggerToolInput": {},
"triggerId": "",
"toolkitName": "",
"toolkitLogo": ""
}
],
"workflowType": "static",
"isActive": true,
"lifecycle": "draft",
"isPublic": true,
"version": "",
"clonedFromWorkflowId": "",
"clonedFromVersion": "",
"executionCount": 0,
"successfulExecutionCount": 0,
"failedExecutionCount": 0,
"lastExecutedAt": "",
"connections": [
{
"id": "",
"connectionId": "",
"toolkitSlug": "",
"displayName": "",
"label": "",
"createdAt": "",
"updatedAt": ""
}
],
"tools": [
{
"toolSlug": "",
"toolName": "",
"toolkitName": "",
"toolkitLogo": ""
}
],
"subAgents": [
""
],
"createdAt": "2024-01-01T00:00:00.000Z",
"updatedAt": "2024-01-01T00:00:00.000Z",
"sourceVersionLatest": "1.0.2",
"toolkitAuthConfigs": [
{
"toolkitSlug": "",
"authConfigId": "",
"name": "",
"authScheme": "",
"status": ""
}
],
"toolkitConnections": [
{
"toolkitSlug": "",
"connectedAccountId": "",
"displayName": "",
"label": "",
"status": "",
"authConfigId": ""
}
],
"marketplaceCategory": "",
"marketplaceAudience": "",
"marketplaceTagline": "",
"marketplaceSetupGuide": "",
"marketplaceSetupSpec": {},
"marketplaceSetupSkillId": "",
"marketplaceSetupSkillSlug": "",
"marketplaceHighlights": [
""
],
"marketplaceIsListed": true,
"marketplaceCapabilities": {
"hasSkills": true,
"skillCount": 0,
"hasKnowledge": true,
"hasDatabase": true,
"hasCron": true,
"requiresAuth": true,
"toolkitCount": 0,
"subAgentCount": 0,
"toolCount": 0
}
}
}Authorizations
Project API key. Create and manage keys in the dashboard under Project → API Keys. Send as header: x-api-key:
Headers
External user (end user) to act as. Optional — if omitted, Flowra uses the project’s default external user. Send a stable username (e.g. customer_alice) only when you need another end-user context.
Path Parameters
Workflow (agent) ID
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
Body
Workflow display name
"Support bot"
Short description shown in the workflow list
"Answers product questions and escalates billing issues."
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Replace cron / channel triggers. Empty array clears them.
Show child attributes
Show child attributes
agent is an open LLM path; static is a locked graph
static, agent "agent"
Whether the workflow is active (cron/webhooks fire only when true)
true
Whether other projects can select this agent
false
Last execution timestamp (ISO 8601). Usually set by the server.
"2026-09-03T10:00:00.000Z"
Response
Workflow updated successfully
Success status
true
Success message
"Operation completed successfully"
Show child attributes
Show child attributes
{
"id": "",
"name": "",
"description": "",
"projectId": "",
"agent": {
"prompt": "",
"modelSettings": {},
"capabilities": {},
"behavior": {},
"identity": {},
"skillIds": [""],
"subAgentIds": [""],
"knowledgeCollectionIds": [""],
"databaseCollectionIds": [""],
"databaseAccessPolicies": {},
"starterPrompts": [""],
"avatarUrl": "",
"tools": {
"mode": "NORMAL",
"discoveryWhitelist": true,
"pinnedSlugs": [""],
"externalMcpConfigs": [""],
"connectionCallbackUrl": "",
"visitorOwnerConnections": { "enabled": true, "toolkits": [] }
},
"inputSchema": {},
"outputSchema": {}
},
"graph": {
"nodes": [
{
"id": "",
"type": "action",
"toolSlug": "",
"inputMapping": {},
"code": "",
"agent": {},
"outputSchema": {}
}
],
"edges": [{ "from": "", "to": "", "condition": "" }],
"inputSchema": {},
"outputSchema": {}
},
"provenance": {
"createdByAgent": true,
"productCreationDepth": 0,
"createdFromWorkflowId": "",
"hideFromAgentPicker": true,
"marketplaceClone": {
"sourceWorkflowId": "",
"clonedAt": "",
"skillIdMap": {},
"knowledgeIdMap": {},
"databaseIdMap": {},
"subAgentIdMap": {},
"avatarFileIdMap": {},
"setupState": { "answers": {}, "completedStepIds": [""] }
}
},
"triggers": [
{
"kind": "manual",
"expression": "",
"timezone": "",
"toolSlug": "",
"triggerToolInput": {},
"triggerId": "",
"toolkitName": "",
"toolkitLogo": ""
}
],
"workflowType": "static",
"isActive": true,
"lifecycle": "draft",
"isPublic": true,
"version": "",
"clonedFromWorkflowId": "",
"clonedFromVersion": "",
"executionCount": 0,
"successfulExecutionCount": 0,
"failedExecutionCount": 0,
"lastExecutedAt": "",
"connections": [
{
"id": "",
"connectionId": "",
"toolkitSlug": "",
"displayName": "",
"label": "",
"createdAt": "",
"updatedAt": ""
}
],
"tools": [
{
"toolSlug": "",
"toolName": "",
"toolkitName": "",
"toolkitLogo": ""
}
],
"subAgents": [""],
"createdAt": "2024-01-01T00:00:00.000Z",
"updatedAt": "2024-01-01T00:00:00.000Z",
"sourceVersionLatest": "1.0.2",
"toolkitAuthConfigs": [
{
"toolkitSlug": "",
"authConfigId": "",
"name": "",
"authScheme": "",
"status": ""
}
],
"toolkitConnections": [
{
"toolkitSlug": "",
"connectedAccountId": "",
"displayName": "",
"label": "",
"status": "",
"authConfigId": ""
}
],
"marketplaceCategory": "",
"marketplaceAudience": "",
"marketplaceTagline": "",
"marketplaceSetupGuide": "",
"marketplaceSetupSpec": {},
"marketplaceSetupSkillId": "",
"marketplaceSetupSkillSlug": "",
"marketplaceHighlights": [""],
"marketplaceIsListed": true,
"marketplaceCapabilities": {
"hasSkills": true,
"skillCount": 0,
"hasKnowledge": true,
"hasDatabase": true,
"hasCron": true,
"requiresAuth": true,
"toolkitCount": 0,
"subAgentCount": 0,
"toolCount": 0
}
}
Was this page helpful?