Is there a way to put description in the workflow with the n8n API

Describe the problem/error/question

I want to write a description to the workflow with the n8n API, but I don’t know how, I tried to write a description variable myself, in the meta object in the workflow, but it simply didn’t work. So my question is how can I write my description with the n8n API?

Thank you in advance to whoever answers, any help is appreciated.

What is the error message (if any)?

Please share your workflow

(Select the nodes on your canvas and use the keyboard shortcuts CMD+C/CTRL+C and CMD+V/CTRL+V to copy and paste the workflow.)

Share the output returned by the last node

Information on your n8n setup

  • n8n version:
  • Database (default: SQLite):
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app):
  • Operating system:

Hi @SE-automations

The reason your previous attempt didn’t work is that the description belongs at the very top level of your request data. You were trying to put it inside the “meta” object, but n8n doesn’t look for it there; it expects the description to be its own separate field in the main body of the message.

You also need to make sure your n8n software is up to date. In older versions, there was a bug that actually blocked the API from accepting descriptions entirely, which would cause the system to send back an error message. This was fixed in version 2.16.0, so as long as you are using a newer version, it will work.

To fix this, simply send a “PATCH” request to the workflow endpoint and include the description as a main property. Instead of nesting it, just write "description": "your text here" in the root of your JSON code, and the system will update the workflow description correctly.

Here is an example:

curl -X PATCH "https://your-n8n-instance.com/api/v1/workflows/YOUR_WORKFLOW_ID" \
  -H "X-N8N-API-KEY: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{"description": "This is my updated workflow description"}'

Hi @SE-automations

To do this directly inside an n8n workflow (without Postman/cURL), you can use the built‑in “n8n” node to call the n8n API:

  1. Add the n8n node

    • In the editor, click the big “+” button to add a new node.

    • In the search box, type n8n.

    • Select the node simply called “n8n” (category: Core Nodes).

  2. Choose the correct action

    • In the Resource / Action dropdown, choose “Workflow” and then “Update a workflow” (or “Update workflow”, depending on your version).

    • This tells the node you want to call the /workflows endpoint of the n8n API.

  3. Pick the workflow you want to update

    • In the Workflow ID field, either select your workflow from the dropdown or paste the ID manually.

    • If you don’t know the ID yet, you can first use the same n8n node with “Get a workflow” action to fetch it.

  4. Provide the Workflow Object with description

    • Change “Workflow Object” (or “Body”) to JSON mode.

    • Paste the current workflow JSON and add the description field at the top level, for example:

      json
      

      {
      "name": "My workflow",
      "nodes": [...],
      "connections": {...},
      "settings": {},
      "description": "This is my updated workflow description"
      }

    • Make sure description is not inside meta, it has to stay at the root level of the object.

  5. Execute the node

    • Run the node.

    • If the JSON matches the workflow schema and your n8n version is recent enough to support description in the API, the workflow description in the UI will be updated.

@kjooleng, I want to do it inside the n8n node itself as I am building an automation that has to update the description of other n8n workflows, nevertheless thanks for providing a solution. :smiley:

Bad request - please check your parameters

request/body/settings must NOT have additional properties

I am getting this error inside the n8n node if I try your solution, maybe I didnt understand it properly? Or did I go wrong somewhere?

The error message
Bad request - please check your parameters
request/body/settings must NOT have additional properties
means that in your request body, specifically inside the settings object of the workflow, you are sending one or more keys that are not allowed by the n8n API schema.

According to the API docs, settings only accepts a specific set of fields. A shortened example looks like this:

"settings": {
"saveExecutionProgress": true,
"saveManualExecutions": false,
"saveDataErrorExecution": "all",
"saveDataSuccessExecution": "all",
"executionTimeout": 3600,
"errorWorkflow": "VzqKEW0ShTXA5vPj",
"timezone": "America/New_York",
"executionOrder": "v1",
"callerPolicy": "workflowsFromSameOwner",
"callerIds": "14, 18, 23",
"timeSavedPerExecution": 5,
"redactionPolicy": "none",
"availableInMCP": false,
"customTelemetryTags": [
{ "key": "env", "value": "prod" }
]
}

If your settings object contains any extra/custom keys (for example myCustomSetting, or fields that were added by older versions / UI metadata and are not part of the current schema), the API will respond with exactly:

request/body/settings must NOT have additional properties

How to fix it:

  1. Check the JSON you are sending (whether through the n8n node, an HTTP Request node, or an external client).

  2. Inside "settings": { ... }, remove any keys that are not listed in the API documentation.

  3. Send the request again with a “clean” settings object.

If you are taking the JSON from GET /workflows/{id} and then using it for PUT/Update, make sure that:

  • At the root level you only keep valid fields such as name, nodes, connections, settings, staticData, tags, description, etc.

  • Inside settings, you only keep fields that are defined in the current API schema, otherwise you will keep hitting the “must NOT have additional properties” error.

You’re very close, once you strip out those unsupported keys from settings, the same request should start working as you expect. If you want to paste your current JSON, I’d be happy to point out exactly which properties are causing the problem.

Nope, I didn’t send anything custom in the settings field of the JSON, as you said, I just set the description field of JSON at the root level, am I missing something, or am I not doing it correct?

Can you send the JSON of your error n8n node? I can see clearly the issue.

Sure, here you go,

Let try with this:

Nope, the description is still empty, it didn’t get updated, I am on the n8n’s latest version, what am I doing wrong? Does n8n support description editing through the node?

@SE-automations

Try this

You need to configure the “Set Parameters” node with your workflowId, apiKey, and baseUrl.

Bad request - please check your parameters

request/body/settings must NOT have additional properties

This is the error in the last http request node, am I doing something wrong?

@SE-automations

I have made changes to the last 2 nodes. It is working now

The description isn’t part of meta — it’s its own field at the root of the workflow object, sitting alongside name, nodes, connections and settings. So: GET the workflow from /api/v1/workflows/{id}, add “description”: “your text” at the top level (not inside meta, not inside settings), then send the whole object back with a PUT to the same Endpoint.

Two things that tripped me up when I did this: the public API is strict and wants the full workflow object back, so a PATCH with only { “description”: “…” } can fail schema validation — GET → add the field → PUT the whole thing. And if the public /api/v1 endpoint still won’t accept it, the internal endpoint the editor itself uses (/rest/workflows/{id}) takes the description without complaint. That should get it saving.

Description

Clear descriptions help other users and MCP clients understand the purpose of your workflow

The description is still empty, but the workflow you gave me got executed without any error.

Thank you for your solution, I tried it, I think you just meant what @kjooleng gave as a workflow, I am extremely sorry, but I didn’t understand it, I tried @kjooleng’s workflow got successfully executed but it didn’t update the workflow description, were you meaning another solution or did you suggest changes to the workflow?

You need to open the workflow fresh from the dashboard.
It will not show up if workflow is currently opened

Yep, it worked! Thanks @kjooeng for the solution, and thanks everybody else for trying to solve the problem!