Existe uma maneira de adicionar descrição no workflow com a API do n8n

Descreva o problema/erro/pergunta

Eu quero escrever uma descrição para o workflow com a API n8n, mas não sei como, tentei escrever uma variável de descrição eu mesmo, no objeto meta no workflow, mas simplesmente não funcionou. Então minha pergunta é como posso escrever minha descrição com a API n8n?

Obrigado antecipadamente a quem responder, qualquer ajuda é apreciada.

Qual é a mensagem de erro (se houver)?

Compartilhe seu workflow

(Selecione os nós no seu canvas e use os atalhos de teclado CMD+C/CTRL+C e CMD+V/CTRL+V para copiar e colar o workflow.)

Compartilhe o resultado retornado pelo último nó

Informações sobre sua configuração n8n

  • Versão n8n:
  • Banco de dados (padrão: SQLite):
  • Configuração n8n EXECUTIONS_PROCESS (padrão: own, main):
  • Executando n8n via (Docker, npm, n8n cloud, desktop app):
  • Sistema operacional:

Oi @SE-automations

O motivo pelo qual sua tentativa anterior não funcionou é que a descrição deve estar no nível superior mais básico dos dados da sua requisição. Você estava tentando colocá-la dentro do objeto “meta”, mas o n8n não procura por ela lá; ele espera que a descrição seja um campo separado no corpo principal da mensagem.

Você também precisa garantir que seu software n8n esteja atualizado. Em versões antigas, havia um bug que na verdade bloqueava a API de aceitar descrições completamente, o que causaria o sistema enviar de volta uma mensagem de erro. Isso foi corrigido na versão 2.16.0, então desde que você esteja usando uma versão mais recente, funcionará.

Para corrigir isso, simplesmente envie uma requisição “PATCH” para o endpoint do workflow e inclua a descrição como uma propriedade principal. Em vez de aninhá-la, basta escrever "description": "seu texto aqui" na raiz do seu código JSON, e o sistema atualizará a descrição do workflow corretamente.

Aqui está um exemplo:

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"}'

Oi @SE-automations

Para fazer isso diretamente dentro de um workflow do n8n (sem Postman/cURL), você pode usar o nó “n8n” integrado para chamar a API do n8n:

  1. Adicione o nó n8n

    • No editor, clique no grande botão “+” para adicionar um novo nó.

    • Na caixa de pesquisa, digite n8n.

    • Selecione o nó simplesmente chamado “n8n” (categoria: Core Nodes).

  2. Escolha a ação correta

    • No dropdown Resource / Action, escolha “Workflow” e depois “Update a workflow” (ou “Update workflow”, dependendo da sua versão).

    • Isso informa ao nó que você quer chamar o endpoint /workflows da API do n8n.

  3. Escolha o workflow que você quer atualizar

    • No campo Workflow ID, selecione seu workflow do dropdown ou cole o ID manualmente.

    • Se você não souber o ID ainda, pode primeiro usar o mesmo nó n8n com a ação “Get a workflow” para obtê-lo.

  4. Forneça o Workflow Object com descrição

    • Mude “Workflow Object” (ou “Body”) para o modo JSON.

    • Cole o JSON do workflow atual e adicione o campo description no nível raiz, por exemplo:

      json
      

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

    • Certifique-se de que description não está dentro de meta, tem que ficar no nível raiz do objeto.

  5. Execute o nó

    • Execute o nó.

    • Se o JSON corresponder ao esquema do workflow e sua versão do n8n for recente o suficiente para suportar description na API, a descrição do workflow na UI será atualizada.

@kjooleng, eu quero fazer isso dentro do próprio nó n8n, pois estou construindo uma automação que precisa atualizar a descrição de outros fluxos de trabalho n8n, mas mesmo assim obrigado por fornecer uma solução. :smiley:

Bad request - please check your parameters

request/body/settings must NOT have additional properties

Estou recebendo esse erro dentro do nó do n8n quando tento sua solução, talvez eu não tenha entendido direito? Ou cometi um erro em algum lugar?

A mensagem de erro
Bad request - please check your parameters
request/body/settings must NOT have additional properties
significa que no seu corpo da solicitação, especificamente dentro do objeto settings do fluxo de trabalho, você está enviando uma ou mais chaves que não são permitidas pelo esquema da API do n8n.

De acordo com a documentação da API, settings aceita apenas um conjunto específico de campos. Um exemplo simplificado fica assim:

"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" }
]
}

Se seu objeto settings contiver quaisquer chaves extras/personalizadas (por exemplo myCustomSetting, ou campos que foram adicionados por versões anteriores / metadados da interface e não fazem parte do esquema atual), a API responderá com exatamente:

request/body/settings must NOT have additional properties

Como corrigir:

  1. Verifique o JSON que você está enviando (seja através do nó do n8n, um nó HTTP Request ou um cliente externo).

  2. Dentro de "settings": { ... }, remova quaisquer chaves que não estejam listadas na documentação da API.

  3. Envie a solicitação novamente com um objeto settings “limpo”.

Se você estiver pegando o JSON de GET /workflows/{id} e depois usando para PUT/Atualizar, certifique-se de que:

  • No nível raiz você mantenha apenas campos válidos como name, nodes, connections, settings, staticData, tags, description, etc.

  • Dentro de settings, você mantenha apenas campos que estejam definidos no esquema atual da API, caso contrário continuará recebendo o erro “must NOT have additional properties”.

Você está muito perto, uma vez que remover essas chaves não suportadas de settings, a mesma solicitação deve começar a funcionar como você espera. Se quiser colar seu JSON atual, ficarei feliz em apontar exatamente quais propriedades estão causando o problema.

Não, não enviei nada personalizado no campo settings do JSON, como você disse, apenas defini o campo description do JSON no nível raiz. Estou perdendo algo ou não estou fazendo isso corretamente?

Você pode enviar o JSON do seu nó de erro n8n? Consigo ver claramente o problema.

Sure, here you go,

Let try with this:

Não, a descrição continua vazia, não foi atualizada, estou na versão mais recente do n8n, o que estou fazendo errado? O n8n suporta edição de descrição através do nó?

@SE-automations

Tente isso

Você precisa configurar o nó “Set Parameters” com seu workflowId, apiKey e baseUrl.

Bad request - please check your parameters

request/body/settings must NOT have additional properties

Este é o erro no último nó de solicitação http, estou fazendo algo errado?

@SE-automations

Fiz alterações nos últimos 2 nós. Agora está funcionando

{
  "nodes": [
    {
      "parameters": {},
      "id": "7c366a4c-e62d-4d98-9596-259e806aa7a9",
      "name": "When clicking \"Execute Workflow\"",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        -256,
        -112
      ]
    },
    {
      "parameters": {
        "fields": {
          "values": [
            {
              "name": "workflowId",
              "stringValue": "YOUR_TARGET_WORKFLOW_ID"
            },
            {
              "name": "newDescription",
              "stringValue": "This description was updated via API!"
            },
            {
              "name": "apiKey",
              "stringValue": "YOUR_N8N_API_KEY"
            },
            {
              "name": "baseUrl",
              "stringValue": "https://your-n8n-instance.com"
            }
          ]
        },
        "options": {}
      },
      "id": "b26141cc-8a55-4085-b351-4a099ceca651",
      "name": "Set Parameters",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.2,
      "position": [
        -32,
        -112
      ]
    },
    {
      "parameters": {
        "url": "={{$json.baseUrl}}/api/v1/workflows/{{$json.workflowId}}",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {}
      },
      "id": "c3dc2010-db72-45a1-8d7e-fa4da8c6b726",
      "name": "Get Current Workflow",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.1,
      "position": [
        192,
        -112
      ]
    },
    {
      "parameters": {
        "jsCode": "const workflow = $input.first().json;\nconst params = $(\"Set Parameters\").first().json;\n\n// n8n's public PUT /api/v1/workflows/{id} endpoint rejects some\n// settings returned by GET, especially settings.binaryMode.\n// Build a clean request body with only accepted workflow-update fields.\nconst cleanSettings = {};\nif (workflow.settings?.executionOrder !== undefined) {\n  cleanSettings.executionOrder = workflow.settings.executionOrder;\n}\n\nreturn {\n  name: workflow.name,\n  description: params.newDescription,\n  nodes: workflow.nodes,\n  connections: workflow.connections,\n  settings: cleanSettings,\n};"
      },
      "id": "396b85c0-72a8-474d-b629-87ab5ccf026c",
      "name": "Clean 
 Add Description",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        432,
        -112
      ]
    },
    {
      "parameters": {
        "method": "PUT",
        "url": "={{$(\"Set Parameters\").first().json.baseUrl}}/api/v1/workflows/{{$(\"Set Parameters\").first().json.workflowId}}",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "n8nApi",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify({\n  name: $json.name,\n  description: $json.description,\n  nodes: $json.nodes,\n  connections: $json.connections,\n  settings: {\n    executionOrder: $json.settings?.executionOrder ?? 'v1',\n  },\n}) }}",
        "options": {}
      },
      "id": "f4f011eb-0bb9-4ecd-86b5-3a273b839d5a",
      "name": "Update Workflow",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.1,
      "position": [
        640,
        -112
      ],
      "credentials": {
        "n8nApi": {
          "id": "tJzSKMBOStUkRFnW",
          "name": "n8n account"
        }
      }
    }
  ],
  "connections": {
    "When clicking \"Execute Workflow\"": {
      "main": [
        [
          {
            "node": "Set Parameters",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Parameters": {
      "main": [
        [
          {
            "node": "Get Current Workflow",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Current Workflow": {
      "main": [
        [
          {
            "node": "Clean 
 Add Description",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Clean 
 Add Description": {
      "main": [
        [
          {
            "node": "Update Workflow",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "meta": {
    "instanceId": "1a1f57ec2a2da833e112999d86f7d337d8347efc10e2e2a4dab8d5b310dec682"
  }
}

A descrição não faz parte de meta — é um campo próprio na raiz do objeto workflow, ao lado de name, nodes, connections e settings. Então: faça GET do workflow em /api/v1/workflows/{id}, adicione “description”: “seu texto” no nível superior (não dentro de meta, não dentro de settings), e envie o objeto inteiro de volta com um PUT para o mesmo endpoint.

Duas coisas que me confundiram quando fiz isso: a API pública é rigorosa e quer o objeto workflow completo de volta, então um PATCH com apenas { “description”: “…” } pode falhar na validação do schema — GET → adicione o campo → PUT o objeto inteiro. E se o endpoint público /api/v1 ainda não aceitar, o endpoint interno que o editor usa (/rest/workflows/{id}) aceita a descrição sem problemas. Isso deve resolver o salvamento.

Descrição

Descrições claras ajudam outros usuários e clientes MCP a entender o propósito do seu fluxo de trabalho

A descrição ainda está vazia, mas o fluxo de trabalho que você me forneceu foi executado sem nenhum erro.

Obrigado pela sua solução, tentei, acho que você apenas quis dizer o que @kjooleng forneceu como fluxo de trabalho, fico extremamente desculpado, mas não entendi, tentei o fluxo de trabalho de @kjooleng executado com sucesso, mas ele não atualizou a descrição do fluxo de trabalho, você estava querendo dizer outra solução ou sugeriu mudanças no fluxo de trabalho?

Você precisa abrir o workflow novamente a partir do dashboard.
Não será exibido se o workflow estiver atualmente aberto

Sim, funcionou! Obrigado @kjooeng pela solução, e obrigado a todos vocês por tentarem resolver o problema!