Skip to main content
PUT
/
api
/
v1
/
chatflows
/
{id}
Update Chatflow
curl --request PUT \
  --url https://api.example.com/api/v1/chatflows/{id} \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "flowData": "<string>",
  "deployed": true,
  "isPublic": true,
  "apikeyid": "<string>",
  "chatbotConfig": "<string>",
  "apiConfig": "<string>",
  "analytic": "<string>",
  "speechToText": "<string>",
  "textToSpeech": "<string>",
  "followUpPrompts": "<string>",
  "category": "<string>",
  "type": "<string>"
}
'
{
  "400": {},
  "401": {},
  "403": {},
  "404": {},
  "412": {},
  "500": {},
  "id": "<string>",
  "name": "<string>",
  "flowData": "<string>",
  "deployed": true,
  "isPublic": true,
  "type": "<string>",
  "workspaceId": "<string>",
  "createdDate": "<string>",
  "updatedDate": "<string>"
}

Authentication

This endpoint requires authentication. You must include your API key in the request headers or be authenticated via session.
Required permissions: chatflows:create, chatflows:update, agentflows:create, or agentflows:update

Path Parameters

id
string
required
The unique identifier (UUID) of the chatflow to update

Request Body

Include only the fields you want to update. All fields are optional.
name
string
Updated name for the chatflow
flowData
string
Updated JSON string containing the flow configuration, nodes, and edges
deployed
boolean
Update deployment status
isPublic
boolean
Update public access setting
apikeyid
string
Update or assign API key ID
chatbotConfig
string
Updated JSON string containing chatbot configuration:
  • welcomeMessage - Initial greeting message
  • backgroundColor - UI background color
  • allowedOrigins - Array of allowed CORS origins
  • allowedOriginsError - Custom error message
  • postProcessing - Post-processing settings
apiConfig
string
Updated JSON string containing API configuration
analytic
string
Updated JSON string containing analytics configuration
speechToText
string
Updated JSON string containing speech-to-text configuration
textToSpeech
string
Updated JSON string containing text-to-speech configuration
followUpPrompts
string
Updated JSON string containing follow-up prompt suggestions
category
string
Updated category for the chatflow
type
string
Update chatflow type (CHATFLOW, AGENTFLOW, MULTIAGENT, ASSISTANT)

Response

Returns the updated chatflow object with all fields including the updated timestamp.
id
string
Unique identifier (UUID) of the chatflow
name
string
Updated name of the chatflow
flowData
string
Updated flow configuration
deployed
boolean
Current deployment status
isPublic
boolean
Current public access status
type
string
Type of the chatflow
workspaceId
string
ID of the workspace owning this chatflow
createdDate
string
Original creation timestamp (unchanged)
updatedDate
string
New ISO 8601 timestamp reflecting the update time

Example Request

cURL
curl -X PUT "https://your-flowise-instance.com/api/v1/chatflows/123e4567-e89b-12d3-a456-426614174000" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Updated Chatflow Name",
    "deployed": true,
    "chatbotConfig": "{\"welcomeMessage\":\"Welcome back!\"}"
  }'
JavaScript
const chatflowId = '123e4567-e89b-12d3-a456-426614174000';
const response = await fetch(`https://your-flowise-instance.com/api/v1/chatflows/${chatflowId}`, {
  method: 'PUT',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'Updated Chatflow Name',
    deployed: true,
    chatbotConfig: JSON.stringify({
      welcomeMessage: 'Welcome back!'
    })
  })
});
const updatedChatflow = await response.json();
Python
import requests
import json

chatflow_id = '123e4567-e89b-12d3-a456-426614174000'
response = requests.put(
    f'https://your-flowise-instance.com/api/v1/chatflows/{chatflow_id}',
    headers={
        'Authorization': 'Bearer YOUR_API_KEY',
        'Content-Type': 'application/json'
    },
    json={
        'name': 'Updated Chatflow Name',
        'deployed': True,
        'chatbotConfig': json.dumps({
            'welcomeMessage': 'Welcome back!'
        })
    }
)
updated_chatflow = response.json()

Example Response

{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "name": "Updated Chatflow Name",
  "flowData": "{\"nodes\":[{\"id\":\"node1\",\"type\":\"chatOpenAI\",\"data\":{}}],\"edges\":[]}",
  "deployed": true,
  "isPublic": false,
  "apikeyid": "abc123",
  "chatbotConfig": "{\"welcomeMessage\":\"Welcome back!\"}",
  "apiConfig": null,
  "analytic": null,
  "speechToText": null,
  "textToSpeech": null,
  "followUpPrompts": null,
  "type": "CHATFLOW",
  "category": "Support",
  "workspaceId": "workspace-123",
  "createdDate": "2024-01-15T10:30:00.000Z",
  "updatedDate": "2024-01-20T16:45:00.000Z"
}

Error Responses

401
error
Unauthorized - Invalid or missing API key
403
error
Forbidden - Insufficient permissions to update this chatflow
404
error
Not Found - Chatflow with the specified ID does not exist in your workspace
{
  "message": "Chatflow not found"
}
400
error
Bad Request - Invalid data provided in the request body
412
error
Precondition Failed - ID parameter was not provided
500
error
Internal Server Error - An error occurred while updating the chatflow
The chatflow must belong to your active workspace. You cannot update chatflows from other workspaces.
If you update rate limiting settings in the chatbot configuration, the rate limiter will be automatically updated to reflect the new settings.
Partial updates are supported - you only need to include the fields you want to change.

Build docs developers (and LLMs) love