This is an n8n community node that provides seamless integration with the Tela API. It allows you to interact with Tela projects and canvases in your n8n workflows, enabling dynamic content generation and workflow automation.
Don't want to read? Import the sample workflow "Tela Canvas Execution with Dynamic Variables" to test this node with real Tela API integration.
The Tela node enables you to:
- Execute Tela Canvases: Run AI-powered canvases with dynamic variables and get results
- Dynamic Variable Handling: Automatically detect and configure canvas variables
- File Upload Support: Handle file uploads for canvas processing
- Project Management: List and manage Tela projects and their canvases
- Workflow Integration: Seamlessly integrate Tela AI workflows into your n8n automation
- Go to Settings > Community Nodes
- Select Install
- Enter
@meistrari/n8n-nodes-telaas the package name - Agree to the risks of using community nodes
- Select Install
For self-hosted n8n instances:
npm install @meistrari/n8n-nodes-telaFor Docker installations, follow the custom nodes guide.
- Create a new credential of type "Tela API"
- Enter your Tela API key (find this in your Tela dashboard)
- Test the connection to verify it works
- Project: Select the project containing your canvas
- Canvas: Choose the specific canvas to execute
- Variables: Configure dynamic fields based on your canvas configuration
The main operation that runs your Tela canvas with the specified variables and returns the AI-generated results.
Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
| Project | Options | Yes | Select the project containing your canvas |
| Canvas | Options | Yes | Select the canvas to execute |
| Variables | Collection | No | Dynamic fields based on your canvas configuration |
| Async Execution | Boolean | No | When enabled, returns immediately with completion ID instead of waiting |
Use Cases:
- Generate dynamic content for emails
- Create personalized marketing materials
- Process documents with AI assistance
- Generate reports based on input data
Create a task in the Tela Workstation dashboard. Tasks are visible in the Tela web interface and can be reviewed, approved, or processed manually.
Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
| Project | Options | Yes | Select the project containing your canvas |
| Canvas | Options | Yes | Select the canvas to execute |
| Label | String | No | Optional label for the workstation task |
| Variables | Collection | No | Dynamic fields based on your canvas configuration |
Response:
- Returns the full API response object
Use Cases:
- Create tasks for human review in Tela dashboard
- Queue AI-generated content for approval workflows
- Build hybrid human-AI pipelines with manual checkpoints
Retrieve the result of an async canvas execution. Use this operation to poll for completion status when using async execution.
Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
| Completion ID | String | Yes | The ID returned from async execution |
Response:
- Returns the full API response object with
id,status, andoutputContent
Use Cases:
- Poll for long-running canvas executions
- Build async workflows with wait loops
- Handle high-latency AI processing without timeouts
| Field | Description |
|---|---|
| API Key | Your Tela API key from your dashboard |
| Field | Type | Required | Description |
|---|---|---|---|
| Project | Options | Yes | Select the project containing your canvas |
| Canvas | Options | Yes | Select the canvas to execute |
| Variables | Collection | No | Dynamic fields based on your canvas configuration |
Input Data:
{
"customerName": "John Doe",
"productType": "Premium Subscription",
"monthlyAmount": 99.99
}Canvas Variables:
customer_name: John Doeproduct_type: Premium Subscriptionmonthly_amount: 99.99
Result: AI-generated personalized content based on your canvas configuration.
Input Data:
{
"document": "binary_file_data",
"processingType": "summarize"
}Canvas Variables:
document: [File upload]processing_type: summarize
Result: AI-processed document with summary or analysis.
Input Data:
{
"industry": "Technology",
"companySize": "100-500 employees",
"challenge": "Digital transformation"
}Canvas Variables:
industry: Technologycompany_size: 100-500 employeeschallenge: Digital transformation
Result: Tailored content addressing specific business challenges.
- Webhook receives new customer signup
- Tela generates personalized welcome email
- Send Email delivers the generated content
- File Upload receives document
- Tela processes and analyzes document
- Database stores processed results
- Notification sends completion alert
- CRM provides customer segments
- Tela generates personalized campaigns
- Marketing Platform deploys campaigns
- Analytics tracks performance
The node automatically detects canvas variables and their types:
- Text variables: Standard string inputs
- File variables: Automatic file upload handling
- Required fields: Clearly marked in the interface
- Supports multiple file formats
- Automatic MIME type detection
- Secure file upload to Tela servers
- Binary data processing from n8n workflows
- Projects: Dynamically loads available projects
- Canvases: Loads canvases based on selected project
- Variables: Auto-populates variable fields based on canvas
- n8n Version: 0.174.0 or later
- Node.js: 18.0.0 or later
- npm: 8.0.0 or later
- Platforms: n8n Cloud, Self-hosted instances
-
API Key Invalid
- Verify your Tela API key is correct
- Check if the key has expired
- Ensure proper permissions
-
Project Not Loading
- Verify API key has access to projects
- Check Tela API status
- Refresh credentials
-
Canvas Execution Fails
- Verify all required variables are set
- Check canvas configuration in Tela
- Review API response for error details
Failed to load projects: Check API key and permissionsFailed to load canvases: Verify project ID and accessFailed to execute canvas: Review variable configuration
- GitHub Issues: Report bugs and request features
- n8n Community: Ask questions in the community
- Documentation: Check the comprehensive docs
# Clone the repository
git clone https://github.com/meistrari/n8n-nodes-tela.git
cd n8n-nodes-tela
# Install dependencies
npm install
# Build the project
npm run build
# Link locally for testing
npm link# Run tests
npm test
# Build and test
npm run build && npm testImproved Binary File Handling
- Uses n8n's official helper: Now uses
helpers.getBinaryDataBuffer()instead of directly accessing binary data, which works correctly in all n8n storage modes (memory, filesystem, S3) - Any variable can receive files: Removed type validation - binary files can now be sent to any canvas variable, not just
filetype variables. Tela will automatically parse text content from files when needed - Simplified binary detection: Cleaner logic with 3 clear cases:
- String with binary field name (e.g.,
"data") - Binary object passed directly (e.g.,
{{ $binary.data }}) - Fallback to first available binary when value is empty
- String with binary field name (e.g.,
- Removed unnecessary API call: No longer fetches canvas variable definitions just to check types
No breaking changes - all existing workflows continue to work. The only difference is:
- Variables with
type: textcan now receive binary files (previously onlytype: filevariables could)
BREAKING CHANGE: Simplified API Response Handling
All operations now return the raw API response directly instead of formatted/transformed data.
-
Execute Canvas: Now returns the full
CompletionResponseobject from the API- Before:
data.choices[0].message?.content(sync) or{ id, status }(async) - After: Full API response object
- Before:
-
Execute Workstation: Now returns the full API response
- Before:
{ status: "created" } - After: Full
CompletionResponseobject from the API
- Before:
-
Get Completion: Now returns the full API response
- Before:
{ status, ...outputContent }(succeeded) or{ status }(pending) - After: Full
GetCompletionResponseobject withid,status, andoutputContent
- Before:
If your workflows depend on the previous response format, you'll need to update your expressions:
# Execute Canvas (sync) - accessing content
Before: {{ $json.fieldName }}
After: {{ $json.choices[0].message.content.fieldName }}
# Execute Canvas (async) - accessing id/status
Before: {{ $json.id }}
After: {{ $json.id }} (no change needed)
# Get Completion - accessing output content
Before: {{ $json.fieldName }}
After: {{ $json.outputContent.content.fieldName }}
- Provides full API response data for advanced use cases
- Eliminates data loss from response transformation
- Gives users complete control over how to process the response
- Simplifies codebase maintenance
New Features: Async Execution, Completion Polling & Workstation Integration
-
Execute Workstation: Create tasks in the Tela Workstation dashboard
- Tasks are visible in the Tela web interface for review and approval
- Supports optional
labelfield for task identification - Automatically fetches
application_idfrom the canvas - Returns
{ status: "created" }on success
-
Get Completion: Retrieve the result of an async canvas execution
- Accepts a
completionIdparameter - Returns
{ status, ...content }when succeeded - Returns
{ status }when still processing (for polling workflows)
- Accepts a
- Async Execution: New toggle to execute canvases asynchronously
- When enabled, returns immediately with
{ id, status }instead of waiting for completion - Ideal for long-running AI tasks that may exceed timeout limits
- Enables building polling workflows with Wait + If nodes
- When enabled, returns immediately with
1. [Tela: Execute Canvas] (Async: ON) → { id: "abc-123", status: "pending" }
2. [Wait] → 5 seconds
3. [Tela: Get Completion] (ID: {{ $json.id }}) → { status: "pending" } or { status: "succeeded", ...content }
4. [If] status !== "succeeded" → Loop back to step 2
5. [Continue] → Process the completed result
1. [Webhook] → Receive data from external system
2. [Tela: Execute Workstation] → Create task with label "{{ $json.customer }} - {{ $json.orderId }}"
3. [Task appears in Tela dashboard for human review]
- Added
asyncparameter to completion request body - Added
statusfield to completion response types - New
GetCompletionResponsetype for get completion endpoint - New
PromptApplicationandWorkstationRequesttypes - New
/prompt-applicationendpoint integration - Graceful error handling for polling requests
UX Pattern compliance for n8n verification:
- Implemented Resources and Operations pattern: Added standard n8n UX pattern with Resource and Operation dropdowns
- Resource: Canvas (single option, extensible for future resources)
- Operation: Execute (executes a canvas with variables)
- All existing functionality preserved and unchanged
- No breaking changes - workflows continue to work seamlessly
- Better discoverability: Users can now see available resources and operations in dropdown menus
- Consistent with n8n ecosystem: Follows the same UX pattern as official n8n nodes
- Future-proof architecture: Easy to extend with additional operations (Get Details, List, etc.)
- Added
resourceproperty with 'canvas' option - Added
operationproperty with 'execute' action - Updated all existing properties with
displayOptionsto show conditionally - Maintains backwards compatibility with existing workflows
- None - all changes are backwards compatible
Major improvements for n8n Cloud verification compliance:
- Removed dependency overrides: Eliminated
overridessection from package.json to prevent masking security vulnerabilities - Replaced native fetch() with n8n HTTP helpers: All API requests now use n8n's
httpRequesthelper for proper proxy support, retry logic, and request logging - Added pairedItem linking: Implemented proper data flow tracking with
pairedItemmetadata on all outputs
- Enhanced error logging: Replaced
console.errorwith n8n's logger service for better debugging in production - Added continueOnFail support: Workflows can now handle errors gracefully and continue processing remaining items
- Multi-item processing: Refactored execute() method to properly process multiple input items in batch
- Converted icon to SVG format: Replaced PNG icon with SVG for better scalability and 70% smaller file size
- Updated both node and credential files to use
tela.svg - Removed legacy PNG icon from build output
- Consistent icon format across entire package
- Updated both node and credential files to use
- Improved error handling: Added
NodeOperationErrorwith detailed metadata including itemIndex - Better type safety: Enhanced TypeScript types for HTTP request methods
- None - all changes are backwards compatible
- Enhanced logging visibility in n8n execution logs
- Better error messages with actionable descriptions
- Improved workflow debugging with proper data flow tracking
- Replace get prompts call (includeLastVersion=true) for /promoted-version endpoint (the old one was deprecated internally)
- Fixed critical security vulnerabilities in transitive dependencies
- Updated axios from vulnerable version to 1.12.2 (fixes CVE-2025-58754)
- Updated form-data from vulnerable version to 4.0.4 (fixes CVE-2025-7783)
- Added npm overrides to ensure secure dependency versions across all packages
- Zero vulnerabilities reported by npm audit
- Added credential test method to fix n8n verification pre-checks
- Fixed n8n verification pre-checks by restructuring project to match n8n-nodes-starter template
- Moved credentials and nodes to proper directories as required by n8n
- Enhanced README documentation for n8n verification compliance
- Added comprehensive usage examples and sample workflows
- Improved installation and configuration instructions
- Added troubleshooting guide and development documentation
- Enhanced error handling
- Improved file upload support
- Better variable validation
- Initial release
- Basic Tela API integration
- Dynamic variable support
