diff --git a/docs/_images/credentials/dynamic-creds-example-workflow.png b/docs/_images/credentials/dynamic-creds-example-workflow.png
new file mode 100644
index 000000000..08c6ff4c8
Binary files /dev/null and b/docs/_images/credentials/dynamic-creds-example-workflow.png differ
diff --git a/docs/_includes/advanced-ai/examples-color-key.html b/docs/_includes/examples-color-key.html
similarity index 77%
rename from docs/_includes/advanced-ai/examples-color-key.html
rename to docs/_includes/examples-color-key.html
index 467d82c0c..c65d67285 100644
--- a/docs/_includes/advanced-ai/examples-color-key.html
+++ b/docs/_includes/examples-color-key.html
@@ -1,8 +1,6 @@
-## Using the example
-
To load the template into your n8n instance:
-1. [Download the workflow JSON file](/_workflows/advanced-ai/examples/[[ page.meta.workflowFile ]]){:target=_blank .external-link}.
+1. [Download the workflow JSON file](/_workflows/[[ page.meta.workflowFile ]]){:target=_blank .external-link}.
1. Open a new workflow in your n8n instance.
1. Copy in the JSON, or select **Workflow menu**  > **Import from file...**.
diff --git a/docs/_workflows/credentials/dynamic_credentials_using_expressions.json b/docs/_workflows/credentials/dynamic_credentials_using_expressions.json
new file mode 100644
index 000000000..efff0253c
--- /dev/null
+++ b/docs/_workflows/credentials/dynamic_credentials_using_expressions.json
@@ -0,0 +1,146 @@
+{
+ "name": "Dynamic credentials using expressions",
+ "nodes": [
+ {
+ "parameters": {
+ "path": "da4071f2-7550-4dae-aa48-8bced4291643",
+ "formTitle": "Test dynamic credentials",
+ "formDescription": "This form is for testing an n8n workflow that demonstrates setting credentials with expressions.",
+ "formFields": {
+ "values": [
+ {
+ "fieldLabel": "Enter your NASA API key",
+ "requiredField": true
+ }
+ ]
+ },
+ "responseMode": "responseNode"
+ },
+ "id": "cc6f2b1e-0ed0-4d22-8a44-d7223ba283b4",
+ "name": "n8n Form Trigger",
+ "type": "n8n-nodes-base.formTrigger",
+ "typeVersion": 2,
+ "position": [
+ 560,
+ 520
+ ],
+ "webhookId": "da4071f2-7550-4dae-aa48-8bced4291643"
+ },
+ {
+ "parameters": {
+ "additionalFields": {}
+ },
+ "id": "ef336bae-3d4f-419c-ab5c-b9f0de89f170",
+ "name": "NASA",
+ "type": "n8n-nodes-base.nasa",
+ "typeVersion": 1,
+ "position": [
+ 900,
+ 520
+ ],
+ "credentials": {
+ "nasaApi": {
+ "id": "QDDBOZOD6k3ijL5t",
+ "name": "NASA account"
+ }
+ }
+ },
+ {
+ "parameters": {
+ "respondWith": "redirect",
+ "redirectURL": "={{ $json.url }}",
+ "options": {}
+ },
+ "id": "143bcdb6-aca0-4dd8-9204-9777271cd230",
+ "name": "Respond to Webhook",
+ "type": "n8n-nodes-base.respondToWebhook",
+ "typeVersion": 1,
+ "position": [
+ 1220,
+ 520
+ ]
+ },
+ {
+ "parameters": {
+ "content": "This workflow shows how to set credentials dynamically using expressions.\n\n\nFirst, set up your NASA credential: \n\n1. Create a new NASA credential.\n1. Hover over **API Key**.\n1. Toggle **Expression** on.\n1. In the **API Key** field, enter `{{ $json[\"Enter your NASA API key\"] }}`.\n\n\nThen, test the workflow:\n\n1. Get an [API key from NASA](https://api.nasa.gov/)\n2. Select **Test workflow**\n3. Enter your key using the form.\n4. The workflow runs and sends you to the NASA picture of the day.\n\n\nFor more information on expressions, refer to [n8n documentation | Expressions](https://docs.n8n.io/code/expressions/).",
+ "height": 564,
+ "width": 322
+ },
+ "id": "0a0dee23-fa16-4f09-b5e0-856f47fb53d0",
+ "name": "Sticky Note",
+ "type": "n8n-nodes-base.stickyNote",
+ "typeVersion": 1,
+ "position": [
+ 120,
+ 140
+ ]
+ },
+ {
+ "parameters": {
+ "content": "User submits an API key using the form",
+ "height": 319
+ },
+ "id": "dd766e32-334d-4e46-9daa-7800b134a3a5",
+ "name": "Sticky Note1",
+ "type": "n8n-nodes-base.stickyNote",
+ "typeVersion": 1,
+ "position": [
+ 500,
+ 380
+ ]
+ },
+ {
+ "parameters": {
+ "content": "The workflow passes the key to the NASA node. You can reference the value using the expression `$json[\"Enter your NASA API key\"]`. This is also available to the node credential. ",
+ "height": 319
+ },
+ "id": "3d8f02e6-e029-41dc-89ad-0f5cffe09348",
+ "name": "Sticky Note2",
+ "type": "n8n-nodes-base.stickyNote",
+ "typeVersion": 1,
+ "position": [
+ 820,
+ 380
+ ]
+ },
+ {
+ "parameters": {
+ "content": "The Respond to Webhook node controls the form response (in this example, redirecting the user to an image)",
+ "height": 319
+ },
+ "id": "096eb6ab-c276-4687-9dc0-50e16a8f709a",
+ "name": "Sticky Note3",
+ "type": "n8n-nodes-base.stickyNote",
+ "typeVersion": 1,
+ "position": [
+ 1140,
+ 380
+ ]
+ }
+ ],
+ "pinData": {},
+ "connections": {
+ "n8n Form Trigger": {
+ "main": [
+ [
+ {
+ "node": "NASA",
+ "type": "main",
+ "index": 0
+ }
+ ]
+ ]
+ },
+ "NASA": {
+ "main": [
+ [
+ {
+ "node": "Respond to Webhook",
+ "type": "main",
+ "index": 0
+ }
+ ]
+ ]
+ }
+ }
+}
diff --git a/docs/advanced-ai/examples/api-workflow-tool.md b/docs/advanced-ai/examples/api-workflow-tool.md
index f06eb5e8c..6df9eb061 100644
--- a/docs/advanced-ai/examples/api-workflow-tool.md
+++ b/docs/advanced-ai/examples/api-workflow-tool.md
@@ -2,7 +2,7 @@
contentType: overview
title: Call an API to fetch data
description: Use the n8n workflow tool to load data from an API using the HTTP Request node into your AI workflow.
-workflowFile: let_your_ai_call_an_api.json
+workflowFile: advanced-ai/examples/let_your_ai_call_an_api.json
---
# Call an API to fetch data
@@ -11,7 +11,7 @@ Use n8n to bring data from any API to your AI. This workflow uses the [Chat Trig

-[Download the example workflow](/_workflows/advanced-ai/examples/[[ page.meta.workflowFile ]])
+[Download the example workflow](/_workflows/[[ page.meta.workflowFile ]])
## Key features
@@ -23,4 +23,6 @@ This workflow uses:
* [Custom n8n Workflow Tool](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolworkflow/): plug in n8n workflows as custom tools. In AI, a tool is an interface the AI can use to interact with the world (in this case, the data provided by your workflow). It allows the AI model to access information beyond its built-in dataset.
* A [Basic LLM Chain](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainllm/) with an [Auto-fixing Output Parser](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserautofixing/) and [Structured Output Parser](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/) to read the user's query and set parameters for the API call based on the user input.
-[[% include "_includes/advanced-ai/examples-color-key.html" %]]
+## Using the example
+
+[[% include "_includes/examples-color-key.html" %]]
diff --git a/docs/advanced-ai/examples/data-google-sheets.md b/docs/advanced-ai/examples/data-google-sheets.md
index a23851dd3..0df43f1db 100644
--- a/docs/advanced-ai/examples/data-google-sheets.md
+++ b/docs/advanced-ai/examples/data-google-sheets.md
@@ -2,7 +2,7 @@
contentType: howto
title: Chat with a Google Sheet using AI
description: Use the n8n workflow tool to load data from Google Sheets into your AI workflow.
-workflowFile: chat_with_google_sheets_docs_version.json
+workflowFile: advanced-ai/examples/chat_with_google_sheets_docs_version.json
---
# Chat with a Google Sheet using AI
@@ -11,7 +11,7 @@ Use n8n to bring your own data to AI. This workflow uses the [Chat Trigger](/int

-[Download the example workflow](/_workflows/advanced-ai/examples/[[ page.meta.workflowFile ]])
+[Download the example workflow](/_workflows/[[ page.meta.workflowFile ]])
## Key features
@@ -22,4 +22,7 @@ This workflow uses:
* [Agent](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/): the key piece of the AI workflow. The Agent interacts with other components of the workflow and makes decisions about what tools to use.
* [Custom n8n Workflow Tool](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolworkflow/): plug in n8n workflows as custom tools. In AI, a tool is an interface the AI can use to interact with the world (in this case, the data provided by your workflow). It allows the AI model to access information beyond its built-in dataset.
-[[% include "_includes/advanced-ai/examples-color-key.html" %]]
+
+## Using the example
+
+[[% include "_includes/examples-color-key.html" %]]
diff --git a/docs/advanced-ai/examples/human-fallback.md b/docs/advanced-ai/examples/human-fallback.md
index 5e5dd5608..f2369deb6 100644
--- a/docs/advanced-ai/examples/human-fallback.md
+++ b/docs/advanced-ai/examples/human-fallback.md
@@ -2,7 +2,7 @@
contentType: overview
title: Set a human fallback for AI workflows
description: Have a workflow that triggers a human answer when the AI can't help.
-workflowFile: ask_a_human.json
+workflowFile: advanced-ai/examples/ask_a_human.json
---
# Have a human fallback for AI workflows
@@ -13,7 +13,7 @@ This workflow uses the [Chat Trigger](/integrations/builtin/core-nodes/n8n-nodes

-[Download the example workflow](/_workflows/advanced-ai/examples/[[ page.meta.workflowFile ]])
+[Download the example workflow](/_workflows/[[ page.meta.workflowFile ]])
## Key features
@@ -24,4 +24,6 @@ This workflow uses:
* [Agent](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/): the key piece of the AI workflow. The Agent interacts with other components of the workflow and makes decisions about what tools to use.
* [Custom n8n Workflow Tool](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolworkflow/): plug in n8n workflows as custom tools. In AI, a tool is an interface the AI can use to interact with the world (in this case, the data provided by your workflow). It allows the AI model to access information beyond its built-in dataset.
-[[% include "_includes/advanced-ai/examples-color-key.html" %]]
+## Using the example
+
+[[% include "_includes/examples-color-key.html" %]]
diff --git a/docs/credentials/add-edit-credentials.md b/docs/credentials/add-edit-credentials.md
index 0dda99a68..16b118d0c 100644
--- a/docs/credentials/add-edit-credentials.md
+++ b/docs/credentials/add-edit-credentials.md
@@ -1,6 +1,7 @@
---
description: Creating and editing credentials.
contentType: howto
+workflowFile: credentials/dynamic_credentials_using_expressions.json
---
# Create and edit credentials
@@ -17,3 +18,23 @@ When you save a credential, n8n tests it to confirm it works.
/// note | Credentials naming
n8n names new credentials "*node name* account" by default. You can rename the credentials by clicking on the name, similarly to renaming nodes. It's good practice to give them names that identify the app or service, type, and purpose of the credential. A naming convention makes it easier to keep track of and identify your credentials.
///
+
+## Expressions in credentials
+
+You can use expressions to set credentials dynamically as your workflow runs:
+
+1. In your workflow, find the data path containing the credential. This varies depending on the exact parameter names in your data. Make sure that the data containing the credential is available in the workflow when you get to the node that needs it.
+1. When creating your credential, hover over the field where you want to use an expression.
+1. Toggle **Expression** on.
+1. Enter your expression.
+
+### Example workflow
+
+
+
+[Download the example workflow](/_workflows/[[ page.meta.workflowFile ]])
+
+
+#### Using the example
+
+[[% include "_includes/examples-color-key.html" %]]