描述問題/錯誤/問題
我想使用 n8n API 為工作流寫入描述,但我不知道怎麼做,我試過自己在工作流的 meta 物件中寫入描述變數,但它根本不起作用。所以我的問題是如何使用 n8n API 寫入我的描述?
提前感謝任何回答的人,任何幫助都將不勝感激。
錯誤訊息是什麼(如果有的話)?
請分享您的工作流
(在畫布上選取節點,並使用鍵盤快捷鍵 CMD+C/CTRL+C 和 CMD+V/CTRL+V 來複製並貼上工作流。)
分享最後一個節點傳回的輸出
您的 n8n 設定資訊
n8n 版本:
資料庫(預設值:SQLite):
n8n EXECUTIONS_PROCESS 設定(預設值:own、main):
執行 n8n 的方式(Docker、npm、n8n cloud、桌面應用程式):
作業系統:
嗨 @SE-automations
你之前的嘗試沒有成功的原因是,description 應該位於你的請求資料的最上層。你試圖把它放在 “meta” 物件裡面,但 n8n 不會在那裡尋找;它期望 description 是主訊息本體中獨立的欄位。
你還需要確保你的 n8n 軟體是最新版本。在舊版本中,有一個 bug 實際上會阻止 API 接受 description,這會導致系統發送回錯誤訊息。這在版本 2.16.0 中已被修復,所以只要你使用的是較新版本,它就會正常運作。
要修復這個問題,只需向工作流端點發送一個 “PATCH” 請求,並將 description 作為主要屬性包含在內。與其嵌套它,只需在你的 JSON 程式碼根目錄中寫上 "description": "your text here",系統就會正確更新工作流 description。
以下是一個範例:
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"}'
嗨 @SE-automations
若要直接在 n8n 工作流中執行此操作(無需使用 Postman/cURL),您可以使用內建的 「n8n」節點 來呼叫 n8n API:
新增 n8n 節點
在編輯器中,點擊大型「+」按鈕以新增節點。
在搜尋框中,輸入 n8n。
選擇名為 「n8n」 的節點(類別:核心節點)。
選擇正確的操作
選擇您要更新的工作流
提供含有說明的工作流物件
將 「工作流物件」 (或「本體」)改為 JSON 模式。
貼上目前的工作流 JSON 並在最上層新增 description 欄位,例如:
json
{
"name": "My workflow",
"nodes": [...],
"connections": {...},
"settings": {},
"description": "This is my updated workflow description"
}
確保 description 不 在 meta 內,它必須保持在物件的根層級。
執行節點
@kjooleng ,我想在 n8n 節點內部執行此操作,因為我正在構建一個必須更新其他 n8n 工作流程描述的自動化,不過還是感謝你提供的解決方案。
Bad request - please check your parameters
request/body/settings must NOT have additional properties
如果我嘗試你的解決方案,我在 n8n 節點內收到此錯誤,也許我沒有正確理解?還是我在某個地方出錯了?
錯誤訊息
Bad request - please check your parameters
request/body/settings must NOT have additional properties
表示在你的請求主體中,特別是工作流程的 settings 物件裡,你正在發送一個或多個 n8n API schema 不允許的鍵。
根據 API 文件,settings 只接受特定的欄位集合。一個簡化的例子如下:
"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" }
]
}
如果你的 settings 物件包含任何額外的/自訂鍵(例如 myCustomSetting,或由舊版本/UI 元資料新增的欄位,且不是目前 schema 的一部分),API 會回應:
request/body/settings must NOT have additional properties
如何修正:
檢查你正在發送的 JSON(無論是透過 n8n 節點、HTTP Request 節點,還是外部用戶端)。
在 "settings": { ... } 內,移除任何不在 API 文件中列出的鍵。
使用「乾淨的」settings 物件再次發送請求。
如果你是從 GET /workflows/{id} 取得 JSON,然後用於 PUT/Update,請確保:
你已經非常接近了,只要從 settings 中移除那些不支援的鍵,相同的請求應該就會開始正常運作。如果你想貼上你目前的 JSON,我很樂意指出究竟是哪些屬性造成問題。
不對,我沒有在 JSON 的 settings 欄位中傳送任何自訂內容,如你所說,我只是在根層級設定了 JSON 的 description 欄位,我是遺漏了什麼,還是我的做法不正確?
你能傳送你 n8n 節點的 JSON 嗎?我可以清楚地看到問題所在。
不,說明仍然是空的,沒有更新,我在 n8n 的最新版本上,我做錯了什麼?n8n 支援透過節點編輯說明嗎?
@SE-automations
試試這個
你需要使用你的 workflowId、apiKey 和 baseUrl 設定「Set Parameters」節點。
Bad request - please check your parameters
request/body/settings must NOT have additional properties
這是最後一個 HTTP 請求節點中的錯誤,我做錯什麼了嗎?
@SE-automations
我已對最後 2 個節點進行了更改。現在可以正常運作
描述不是 meta 的一部分 — 它是工作流物件根層級上的獨立欄位,與 name、nodes、connections 和 settings 並排。因此:從 /api/v1/workflows/{id} GET 工作流,在頂層(不在 meta 內,也不在 settings 內)新增 “description”: “your text”,然後用 PUT 將整個物件送回同一個端點。
當我這樣做時,有兩件事絆倒了我:公開 API 要求嚴格,需要完整的工作流物件,所以用只包含 { “description”: “…” } 的 PATCH 可能會導致架構驗證失敗 — GET → 新增欄位 → PUT 整個內容。如果公開的 /api/v1 端點仍然無法接受,編輯器本身使用的內部端點 (/rest/workflows/{id}) 會毫無異議地接受描述。這應該能讓它成功保存。
描述
清晰的描述可以幫助其他使用者和 MCP 用戶端了解您工作流程的目的
描述仍然是空的,但您提供給我的工作流程執行時沒有任何錯誤。
感謝你的解決方案,我試過了。我認為你只是指 @kjooleng 提供的工作流程,我非常抱歉,但我沒有理解它。我試過 @kjooleng 的工作流程,它已成功執行,但它並沒有更新工作流程描述。你是指另一個解決方案,還是建議對工作流程進行更改?
SE-automations:
描述仍然是空的
你需要從儀表板重新開啟工作流程。
如果工作流程當前已開啟,它將不會顯示
沒錯,成功了!感謝 @kjooeng 提供的解決方案,也感謝其他所有嘗試解決問題的人!