n8n Node Configuration
Expert guidance for operation-aware node configuration with property dependencies.
Configuration Philosophy
Progressive disclosure: Start minimal, add complexity as needed
Configuration best practices:
get_node with detail: "standard" is the most used discovery pattern
- 56 seconds average between configuration edits
- Covers 95% of use cases with 1-2K tokens response
Key insight: Most configurations need only standard detail, not full schema!
Core Concepts
1. Operation-Aware Configuration
Not all fields are always required - it depends on operation!
Example: Slack node
{
"resource": "message",
"operation": "post",
"channel": "#general",
"text": "Hello!"
}
{
"resource": "message",
"operation": "update",
"messageId": "123",
"text": "Updated!"
}
Key: Resource + operation determine which fields are required!
2. Property Dependencies
Fields appear/disappear based on other field values
Example: HTTP Request node
{
"method": "GET",
"url": "https://api.example.com"
}
{
"method": "POST",
"url": "https://api.example.com",
"sendBody": true,
"body": {
"contentType": "json",
"content": {...}
}
}
Mechanism: displayOptions control field visibility
3. Progressive Discovery
Use the right detail level:
-
get_node({detail: "standard"}) - DEFAULT
- Quick overview (~1-2K tokens)
- Required fields + common options
- Use first - covers 95% of needs
-
get_node({mode: "search_properties", propertyQuery: "..."}) (for finding specific fields)
- Find properties by name
- Use when looking for auth, body, headers, etc.
-
get_node({detail: "full"}) (complete schema)
- All properties (~3-8K tokens)
- Use only when standard detail is insufficient
Configuration Workflow
Standard Process
1. Identify node type and operation
โ
2. Use get_node (standard detail is default)
โ
3. Configure required fields
โ
4. Validate configuration
โ
5. If field unclear โ get_node({mode: "search_properties"})
โ
6. Add optional fields as needed
โ
7. Validate again
โ
8. Deploy
Example: Configuring HTTP Request
Step 1: Identify what you need
Step 2: Get node info
const info = get_node({
nodeType: "nodes-base.httpRequest"
});
Step 3: Minimal config
{
"method": "POST",
"url": "https://api.example.com/create",
"authentication": "none"
}
Step 4: Validate
validate_node({
nodeType: "nodes-base.httpRequest",
config,
profile: "runtime"
});
Step 5: Add required field
{
"method": "POST",
"url": "https://api.example.com/create",
"authentication": "none",
"sendBody": true
}
Step 6: Validate again
validate_node({...});
Step 7: Complete configuration
{
"method": "POST",
"url": "https://api.example.com/create",
"authentication": "none",
"sendBody": true,
"body": {
"contentType": "json",
"content": {
"name": "={{$json.name}}",
"email": "={{$json.email}}"
}
}
}
Step 8: Final validation
validate_node({...});
get_node Detail Levels
Standard Detail (DEFAULT - Use This!)
โ
Starting configuration
get_node({
nodeType: "nodes-base.slack"
});
Returns (~1-2K tokens):
- Required fields
- Common options
- Operation list
- Metadata
Use: 95% of configuration needs
Full Detail (Use Sparingly)
โ
When standard isn't enough
get_node({
nodeType: "nodes-base.slack",
detail: "full"
});
Returns (~3-8K tokens):
- Complete schema
- All properties
- All nested options
Warning: Large response, use only when standard insufficient
Search Properties Mode
โ
Looking for specific field
get_node({
nodeType: "nodes-base.httpRequest",
mode: "search_properties",
propertyQuery: "auth"
});
Use: Find authentication, headers, body fields, etc.
Decision Tree
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Starting new node config? โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ YES โ get_node (standard) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Standard has what you need? โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ YES โ Configure with it โ
โ NO โ Continue โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Looking for specific field? โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ YES โ search_properties mode โ
โ NO โ Continue โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Still need more details? โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ YES โ get_node({detail: "full"})โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Property Dependencies Deep Dive
displayOptions Mechanism
Fields have visibility rules:
{
"name": "body",
"displayOptions": {
"show": {
"sendBody": [true],
"method": ["POST", "PUT", "PATCH"]
}
}
}
Translation: "body" field shows when:
- sendBody = true AND
- method = POST, PUT, or PATCH
Common Dependency Patterns
Pattern 1: Boolean Toggle
Example: HTTP Request sendBody
{
"sendBody": true
}
Pattern 2: Operation Switch
Example: Slack resource/operation
{
"resource": "message",