# nodes

node_type: @gammatech/n8n-nodes-gamma.gamma
package_name: @gammatech/n8n-nodes-gamma
display_name: Gamma
description: Create AI-powered presentations, documents, and websites with Gamma
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: max.jackson
author_github_url: https://github.com/gamma-app/n8n-nodes-gamma.git
npm_package_name: @gammatech/n8n-nodes-gamma
npm_version: 0.1.3
community_fetched_at: 2026-03-25T21:19:40.678Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "generation",
      "options": [
        {
          "name": "Generation",
          "value": "generation",
          "description": "Create and manage AI-generated presentations, documents, and social posts"
        },
        {
          "name": "Theme",
          "value": "theme",
          "description": "Browse available themes (read-only - use to get theme IDs)"
        },
        {
          "name": "Folder",
          "value": "folder",
          "description": "Browse workspace folders (read-only - use to get folder IDs)"
        },
        {
          "name": "User",
          "value": "user",
          "description": "Get your account information"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a generation",
          "routing": {
            "request": {
              "url": "/v1.0/generations",
              "method": "POST"
            }
          },
          "description": "Create a new presentation, document, social post, or webpage"
        },
        {
          "name": "Create from Template",
          "value": "createFromTemplate",
          "action": "Create from template",
          "routing": {
            "request": {
              "url": "/v1.0/generations/from-template",
              "method": "POST"
            }
          },
          "description": "Remix an existing Gamma with new prompt"
        },
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get generation status",
          "routing": {
            "request": {
              "url": "=/v1.0/generations/{{$parameter[\"generationId\"]}}",
              "method": "GET"
            }
          },
          "description": "Check the status of a generation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "generation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List themes",
          "routing": {
            "request": {
              "url": "/v1.0/themes",
              "method": "GET"
            }
          },
          "description": "Get available themes from your workspace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "theme"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List folders",
          "routing": {
            "request": {
              "url": "/v1.0/folders",
              "method": "GET"
            }
          },
          "description": "Get workspace folders"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "folder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMe",
      "options": [
        {
          "name": "Get Me",
          "value": "getMe",
          "action": "Get user information",
          "routing": {
            "request": {
              "url": "/v1.0/me",
              "method": "GET"
            }
          },
          "description": "Get authenticated user and workspace information"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a generation",
      "routing": {
        "request": {
          "url": "/v1.0/generations",
          "method": "POST"
        }
      },
      "description": "Create a new presentation, document, social post, or webpage"
    },
    {
      "name": "Create from Template",
      "value": "createFromTemplate",
      "action": "Create from template",
      "routing": {
        "request": {
          "url": "/v1.0/generations/from-template",
          "method": "POST"
        }
      },
      "description": "Remix an existing Gamma with new prompt"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get generation status",
      "routing": {
        "request": {
          "url": "=/v1.0/generations/{{$parameter[\"generationId\"]}}",
          "method": "GET"
        }
      },
      "description": "Check the status of a generation"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List themes",
      "routing": {
        "request": {
          "url": "/v1.0/themes",
          "method": "GET"
        }
      },
      "description": "Get available themes from your workspace"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List folders",
      "routing": {
        "request": {
          "url": "/v1.0/folders",
          "method": "GET"
        }
      },
      "description": "Get workspace folders"
    },
    {
      "name": "Get Me",
      "value": "getMe",
      "action": "Get user information",
      "routing": {
        "request": {
          "url": "/v1.0/me",
          "method": "GET"
        }
      },
      "description": "Get authenticated user and workspace information"
    }
  ]

npm_readme:
  # @gammatech/n8n-nodes-gamma

  Official Gamma community node for n8n - Create AI-powered presentations, documents, and websites directly from your n8n workflows.

  **Status:** Published to npm ✅  
  **Created:** November 10, 2025  
  **Maintained by:** Max Jackson (Gamma)

  ---

  ## 🎯 What This Does

  Integrates Gamma's API v1.0 into n8n, allowing you to:
  - Generate presentations, documents, social posts, and webpages with AI
  - Create content from templates
  - List themes and folders
  - Export to PDF/PPTX
  - Automate content creation workflows

  ---

  ## 📦 Installation

  ### Option 1: From npm (After Publishing)

  ```bash
  # In n8n
  Settings → Community Nodes → Install
  # Enter: @gammatech/n8n-nodes-gamma
  ```

  ### Option 2: Local Development

  ```bash
  # Clone and build
  git clone <this-repo>
  cd n8n-gamma-node
  npm install
  npm run build
  npm link

  # In your n8n installation
  cd ~/.n8n/custom
  npm link n8n-nodes-gamma

  # Start n8n
  n8n start
  ```

  ---

  ## 🏗️ Project Structure

  Based on Gamma's OpenAPI spec and using `@devlikeapro/n8n-openapi-node` for generation.

  ```
  n8n-gamma-node/
  ├── GAMMA_API_OPENAPI_SPEC.yaml   # OpenAPI spec (copied from root)
  ├── package.json                   # npm package config
  ├── tsconfig.json                  # TypeScript config
  ├── .gitignore
  ├── credentials/
  │   └── GammaApi.credentials.ts   # API key authentication
  ├── nodes/
  │   └── Gamma/
  │       ├── Gamma.node.ts         # Main node (generated from OpenAPI)
  │       ├── Gamma.node.json       # Node metadata
  │       └── gamma.svg             # Gamma logo icon
  ├── docs/
  │   ├── SETUP.md                  # Setup and development guide
  │   ├── PUBLISHING.md             # How to publish to npm
  │   ├── VERIFICATION.md           # n8n verification process
  │   └── n8n-resources.md          # All n8n documentation links
  └── examples/
      ├── basic-presentation.json   # Simple workflow example
      ├── zapier-alternative.json   # Replacing Zapier
      └── content-pipeline.json     # Advanced automation
  ```

  ---

  ## 🚀 Quick Start (Development)

  ### Prerequisites

  - Node.js 18+ (LTS recommended)
  - npm or pnpm
  - n8n installed globally (`npm install n8n -g`)

  ### Development Workflow

  ```bash
  # 1. Install dependencies
  npm install

  # 2. Build the node
  npm run build

  # 3. Link to local n8n
  npm link
  cd ~/.n8n/custom
  npm link n8n-nodes-gamma

  # 4. Start n8n
  n8n start

  # 5. Open browser at http://localhost:5678
  # Search for "Gamma" in nodes panel
  ```

  ### Watch Mode (Auto-rebuild)

  ```bash
  npm run dev
  # Rebuilds automatically on file changes
  ```

  ---

  ## 🔑 Authentication

  The node requires a Gamma API key:

  1. Log into [gamma.app](https://gamma.app)
  2. Go to Settings & Members → API
  3. Generate API key
  4. Copy key (starts with `sk-gamma-`)
  5. In n8n: Create credential → Gamma API
  6. Paste API key

  ---

  ## 📚 Available Operations

  ### Generations Resource

  **Create Generation**
  - Generate presentations, documents, social posts, or webpages
  - Parameters: inputText, textMode, format, numCards, themeId, imageOptions, etc.
  - Returns: generationId for status polling

  **Get Generation Status**
  - Poll for generation completion
  - Returns: status, gammaUrl, exportUrl, credits used

  **Create from Template**
  - Remix existing Gamma with new prompt
  - Parameters: prompt, gammaId (template), themeId, imageOptions
  - Returns: generationId

  ### Themes Resource

  **List Themes**
  - Get available themes for styling
  - Parameters: limit, query (search), cursor (pagination)
  - Returns: themes with IDs and names

  ### Folders Resource

  **List Folders**
  - Get workspace folders for organization
  - Parameters: limit, query (search), cursor (pagination)
  - Returns: folders with IDs and names

  ### User Resource

  **Get Me**
  - Get authenticated user info
  - Returns: email, workspaceName

  ---

  ## 🎨 Example Workflows

  ### ⚡ Auto-Polling Workflow (Recommended!)

  **Problem**: Gamma generations are async and take 30-90 seconds to complete.  
  **Solution**: Use our auto-polling workflow template!

  📥 **Import the workflow**: `examples/auto-polling-workflow.json`

  This workflow automatically:
  - ✅ Creates the generation
  - ✅ Waits 30 seconds
  - ✅ Checks status
  - ✅ Loops until completed
  - ✅ Outputs gammaUrl when done

  **No more manual clicking!** This gives users a much better experience.

  ### Basic: Generate Presentation (Manual Polling)

  ```
  Trigger (Manual/Schedule)
      ↓
  Gamma: Create Generation
      - inputText: "Introduction to renewable energy"
      - format: presentation
      - textMode: generate
      - numCards: 10
      ↓
  Gamma: Get Generation Status 
      (Click Execute repeatedly until status = "completed")
      ↓
  Send Email with gammaUrl
  ```

  ⚠️ **Note**: Manual polling requires clicking "Execute" every 30 seconds. Use the auto-polling workflow above for better UX!

  ### Advanced: Content Pipeline

  ```
  RSS Feed (New Article)
      ↓
  Extract Content
      ↓
  Gamma: Create Generation
      - inputText: {{article content}}
      - format: presentation
      ↓
  Wait for Completion (poll)
      ↓
  Gamma: Create from Template (social version)
      - gammaId: {{generated gammaId}}
      - format: social
      ↓
  Post to Social Media
  ```

  ---

  ## 🛠️ Development Guide

  ### Built With

  - **TypeScript** - Node language
  - **@devlikeapro/n8n-openapi-node** - OpenAPI → n8n generator
  - **n8n-workflow** - n8n node types
  - **Gamma OpenAPI v3 spec** - API specification

  ### Key Files

  **`nodes/Gamma/Gamma.node.ts`**
  - Main node implementation
  - Auto-generated from OpenAPI spec using `@devlikeapro/n8n-openapi-node`
  - Handles all API operations

  **`credentials/GammaApi.credentials.ts`**
  - API key authentication
  - Header: `X-API-KEY`

  **`package.json`**
  - npm package configuration
  - MUST include `n8n-community-node-package` in keywords
  - MUST start with `n8n-nodes-`

  ---

  ## 📝 Publishing

  ### To npm (Unverified)

  ```bash
  # 1. Update version
  npm version patch  # or minor, major

  # 2. Build
  npm run build

  # 3. Publish
  npm publish
  ```

  Anyone with self-hosted n8n can install immediately.

  ### For Verification (n8n Cloud)

  Requirements for verified community nodes:
  - ✅ MIT license
  - ✅ No runtime dependencies in package.json
  - ✅ Passes `npm run lint`
  - ✅ Good documentation
  - ✅ Follows n8n conventions

  **Steps:**
  1. Publish to npm (unverified first)
  2. Submit via [n8n Creator Portal](https://n8n.io/creators)
  3. Wait for manual review
  4. Once approved → available on n8n Cloud

  See `docs/VERIFICATION.md` for details.

  ---

  ## 🔗 Resources

  **Official Gamma:**
  - API Docs: https://developers.gamma.app
  - Help Center: https://help.gamma.app
  - API Slack: [Contact for access]

  **n8n Documentation:**
  - Creating Nodes: https://docs.n8n.io/integrations/creating-nodes/
  - Community Nodes: https://docs.n8n.io/integrations/community-nodes/
  - Declarative Style: https://docs.n8n.io/integrations/creating-nodes/build/declarative-style-node/

  **OpenAPI Generator:**
  - devlikeapro/n8n-openapi-node: https://github.com/devlikeapro/n8n-openapi-node
  - npm package: https://www.npmjs.com/package/@devlikeapro/n8n-openapi-node

  ---

  ## 💪 Why This Matters for Gamma

  ### Developer Relations Play

  **This n8n node:**
  - Expands Gamma's automation ecosystem beyond Zapier/Make
  - Reaches self-hosted automation users (enterprises, privacy-focused)
  - Shows commitment to open integration ecosystem
  - Provides reference implementation for community

  **For your DevRel role:**
  - Demonstrates technical ability (built official integration)
  - Shows ownership (end-to-end from spec to published node)
  - Community engagement (support users in n8n forums)
  - Content creation opportunity (tutorials, videos, blog posts)

  ---

  ## 📊 Success Metrics

  Track these to show impact:
  - npm downloads/week
  - n8n Cloud installations (after verification)
  - Community forum mentions
  - GitHub stars/forks
  - Support tickets reduced (self-service via node)

  ---

  ## 🎯 Roadmap

  **Phase 1: MVP** (You are here)
  - [x] Project setup
  - [ ] Generate node from OpenAPI spec
  - [ ] Test locally
  - [ ] Publish to npm (unverified)

  **Phase 2: Polish**
  - [ ] Add examples folder with workflows
  - [ ] Create video tutorial
  - [ ] Write blog post
  - [ ] Submit for verification

  **Phase 3: Growth**
  - [ ] Community support in n8n forums
  - [ ] Advanced workflow examples
  - [ ] Integration guides
  - [ ] Case studies

  ---

  ## 👥 Contributing

  This is an official Gamma integration. For bugs or features:
  - Internal: Message Max directly
  - External (after publishing): GitHub issues

  ---

  **Status:** Published to npm ✅  
  **Next Step:** Continue n8n review / listing workflow as needed

  See `docs/SETUP.md` for complete development guide.

ai_documentation_summary:
  {"purpose":"This n8n community node integrates with Gamma's API to create AI-powered presentations, documents, social posts, and webpages directly from workflows.","capabilities":["Generate presentations, documents, social posts, and webpages from text prompts","Create content from existing Gamma templates","List available themes and workspace folders","Export generated content to PDF and PPTX formats","Retrieve generation status and URLs (gammaUrl, exportUrl)","Get authenticated user information"],"authentication":"API key required (Gamma API key starting with 'sk-gamma-')","commonUseCases":["Automated content creation from RSS feeds or external data sources","Scheduled generation of presentations or social media posts","Content pipelines that convert articles into presentations","Template-based content remixing for different formats"],"limitations":["Generations are asynchronous and require polling for completion (30-90 seconds)","Manual polling requires repeated execution clicks; auto-polling workflow recommended","Requires npm installation and potential local development setup for community nodes","Some advanced features may require n8n Cloud verification for publishing"],"relatedNodes":["Manual Trigger","Schedule Trigger","Wait Node","HTTP Request Node","Function Node"]}


node_type: @oregister/n8n-nodes-openregister.openRegister
package_name: @oregister/n8n-nodes-openregister
display_name: OpenRegister
description: Interact with the OpenRegister API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: joelrose
author_github_url: https://github.com/oregister/n8n-nodes-openregister.git
npm_package_name: @oregister/n8n-nodes-openregister
npm_version: 0.1.1
community_fetched_at: 2026-03-25T21:19:40.678Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "company",
      "options": [
        {
          "name": "Company",
          "value": "company"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Get Company Details",
          "value": "companyDetails",
          "action": "Get company details",
          "routing": {
            "request": {
              "url": "={{\"/v1/company/\" + encodeURIComponent($parameter[\"companyId\"])}}",
              "method": "GET"
            }
          },
          "description": "Fetch company details by ID"
        },
        {
          "name": "Get Company Financials",
          "value": "companyFinancials",
          "action": "Get company financials",
          "routing": {
            "request": {
              "url": "={{\"/v1/company/\" + encodeURIComponent($parameter[\"companyId\"]) + \"/financials\"}}",
              "method": "GET"
            }
          },
          "description": "Fetch company financials by ID"
        },
        {
          "name": "Get Company Holdings",
          "value": "companyHoldings",
          "action": "Get company holdings",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "holdings"
                  }
                }
              ]
            },
            "request": {
              "url": "={{\"/v1/company/\" + encodeURIComponent($parameter[\"companyId\"]) + \"/holdings\"}}",
              "method": "GET"
            }
          },
          "description": "Fetch companies this company holds stakes in"
        },
        {
          "name": "Get Company Owners",
          "value": "companyOwners",
          "action": "Get company owners",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "owners"
                  }
                }
              ]
            },
            "request": {
              "url": "={{\"/v1/company/\" + encodeURIComponent($parameter[\"companyId\"]) + \"/owners\"}}",
              "method": "GET"
            }
          },
          "description": "Fetch company owners by ID"
        },
        {
          "name": "Search for a Company",
          "value": "search",
          "action": "Get companies by name",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "results"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "query": "={{$parameter[\"query\"]}}"
              },
              "url": "=/v1/autocomplete/company",
              "method": "GET"
            }
          },
          "description": "Search companies by name"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "company"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Company Details",
      "value": "companyDetails",
      "action": "Get company details",
      "routing": {
        "request": {
          "url": "={{\"/v1/company/\" + encodeURIComponent($parameter[\"companyId\"])}}",
          "method": "GET"
        }
      },
      "description": "Fetch company details by ID"
    },
    {
      "name": "Get Company Financials",
      "value": "companyFinancials",
      "action": "Get company financials",
      "routing": {
        "request": {
          "url": "={{\"/v1/company/\" + encodeURIComponent($parameter[\"companyId\"]) + \"/financials\"}}",
          "method": "GET"
        }
      },
      "description": "Fetch company financials by ID"
    },
    {
      "name": "Get Company Holdings",
      "value": "companyHoldings",
      "action": "Get company holdings",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "holdings"
              }
            }
          ]
        },
        "request": {
          "url": "={{\"/v1/company/\" + encodeURIComponent($parameter[\"companyId\"]) + \"/holdings\"}}",
          "method": "GET"
        }
      },
      "description": "Fetch companies this company holds stakes in"
    },
    {
      "name": "Get Company Owners",
      "value": "companyOwners",
      "action": "Get company owners",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "owners"
              }
            }
          ]
        },
        "request": {
          "url": "={{\"/v1/company/\" + encodeURIComponent($parameter[\"companyId\"]) + \"/owners\"}}",
          "method": "GET"
        }
      },
      "description": "Fetch company owners by ID"
    },
    {
      "name": "Search for a Company",
      "value": "search",
      "action": "Get companies by name",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "results"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "query": "={{$parameter[\"query\"]}}"
          },
          "url": "=/v1/autocomplete/company",
          "method": "GET"
        }
      },
      "description": "Search companies by name"
    }
  ]

npm_readme:
  # n8n-nodes-openregister

  This package provides n8n community nodes to interact with the OpenRegister API from your workflows. See the official documentation at [docs.openregister.de](https://docs.openregister.de).

  OpenRegister provides programmatic access to structured company registry data from official sources in Germany. See what data exactly are available [here](https://docs.openregister.de/coverage).

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials)  
  [Compatibility](#compatibility)  
  [Usage](#usage)  
  [Resources](#resources)  
  [Version history](#version-history)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation to add this package (`n8n-nodes-openregister`) to your n8n instance.

  ## Operations

  Resource: Company

  - **Search for a Company:** Search companies by name. Endpoint: `/v1/autocomplete/company` (query param: `query`).
  - **Get Company Details:** Fetch company details by ID. Endpoint: `/v1/company/{companyId}`.
  - **Get Company Financials:** Fetch company financials by ID. Endpoint: `/v1/company/{companyId}/financials`.
  - **Get Company Owners:** Fetch company owners by ID. Endpoint: `/v1/company/{companyId}/owners`.
  - **Get Company Holdings:** Fetch companies this company holds stakes in. Endpoint: `/v1/company/{companyId}/holdings`.

  The company ID is a unique identifier for a company inside the OpenRegister ecosystem. You can get the company ID for a company in the results of the `Search for a Company` operation.

  ## Credentials

  This node uses API key authentication via an `Authorization: Bearer` header.

  How to get an API key:

  1. Create an account at [openregister.de](https://openregister.de) and sign in.
  2. In your dashboard, open the API keys section and create a new API key.
  3. Copy the key value. Keep it secure.

  Details and up-to-date instructions: see [Authentication](https://docs.openregister.de/authentication).

  In n8n, create credentials of type `OpenRegister API` and set:

  - Base URL: `https://api.openregister.de` (default)
  - API Key: your generated key

  Requests are sent with:

  ```
  Authorization: Bearer YOUR_API_KEY
  ```

  ## Compatibility

  - n8n Nodes API version: 1
  - Node.js: >= 20.15

  ## Usage

  - Search companies: Choose resource `Company` and operation `Search for a Company`, set "Company Name" (`query`). The node returns the `results` array of the matching companies.
  - Get details/financials/owners/holdings: Use the `id` from a previous search as `Company ID`.

  An example workflow doing exactly that is available [here](./examples/openregister-example-workflow.json).
  To try it out, just add a company name as the search parameter in the first node and click _Execute Workflow_.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [OpenRegister Documentation](https://docs.openregister.de)
  - [OpenRegister Authentication](https://docs.openregister.de/authentication)
  - [OpenRegister Coverage](https://docs.openregister.de/coverage)
  - [OpenRegister Example Workflow](./examples/openregister-example-workflow.json)

  ## Version history

  - 0.1.0: Initial release

ai_documentation_summary:
  {"purpose":"This n8n node enables interaction with the OpenRegister API to access structured company registry data from official German sources.","capabilities":["Search for companies by name","Fetch company details by ID","Retrieve company financials by ID","Get company owners by ID","Retrieve company holdings by ID"],"authentication":"API key required (Bearer token in Authorization header)","commonUseCases":["Background checks on German companies","Corporate structure analysis","Due diligence research","Business intelligence gathering"],"limitations":["Limited to German company registry data","Requires manual API key setup in n8n credentials","Node.js version >= 20.15 required"],"relatedNodes":["HTTP Request","Code","Set"]}


node_type: n8n-nodes-human-in-the-loop.hitlNode
package_name: n8n-nodes-human-in-the-loop
display_name: Human Approvals - HITL Platform
description: Create human-in-the-loop decision requests and wait for human responses
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: hitl.sh
author_github_url: https://github.com/hitl-sh/n8n-plugin.git
npm_package_name: n8n-nodes-human-in-the-loop
npm_version: 0.1.6
community_fetched_at: 2026-03-25T21:19:40.679Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "request",
      "options": [
        {
          "name": "Request",
          "value": "request"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendAndWait",
      "options": [
        {
          "name": "Send and Wait",
          "value": "sendAndWait",
          "action": "Send request and wait for response",
          "description": "Create a request and wait for human response"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "request"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send and Wait",
      "value": "sendAndWait",
      "action": "Send request and wait for response",
      "description": "Create a request and wait for human response"
    }
  ]

npm_readme:
  # n8n-nodes-human-in-the-loop

  n8n community node for HITL (Human-in-the-Loop) Platform integration.

  ## Features

  - **Create Decision Requests**: Send requests to human experts for decision making
  - **Dynamic Loop Selection**: Automatically loads your HITL loops with metadata
  - **Multiple Response Types**: Support for text, single/multi-select, rating, number, and boolean responses
  - **Real-time Integration**: Seamless integration with your HITL platform
  - **Bearer Token Authentication**: Secure API key authentication

  ## Prerequisites

  **Important**: You must download and install the HITL Platform app to receive and respond to decision requests sent from n8n workflows.

  - Download the HITL app:
    - [iOS - App Store](https://apps.apple.com/us/app/hitl-human-in-the-loop/id6752878072)
    - [Android - Play Store](https://play.google.com/store/apps/details?id=hitl.sh.app)
    - Or visit [https://hitl.sh](https://hitl.sh) for more information
  - Create an account and obtain your API key
  - Set up your decision loops in the HITL platform

  ## Installation

  1. Go to Settings > Community Nodes in your n8n instance
  2. Select "Install" 
  3. Enter `n8n-nodes-human-in-the-loop` in "Enter npm package name"
  4. Click "Install"

ai_documentation_summary:
  {"purpose":"Creates human-in-the-loop decision requests and waits for human responses via a dedicated mobile app.","capabilities":["Create decision requests for human experts","Support text responses","Support single-select responses","Support multi-select responses","Support rating responses","Support number responses","Support boolean responses","Automatic loading of HITL loops with metadata"],"authentication":"Bearer Token Authentication (API key required)","commonUseCases":["Require human approval for automated decisions","Gather expert input on workflow outputs","Collect structured feedback from humans"],"limitations":["Requires installation of the dedicated HITL Platform mobile app (iOS or Android)","Requires manual setup of decision loops in the HITL platform","Human intervention is mandatory; no automated fallback mentioned"],"relatedNodes":[]}


node_type: n8n-nodes-parallel.parallel
package_name: n8n-nodes-parallel
display_name: Parallel
description: Highest accuracy web search tools for AI agents
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: janwilmake
author_github_url: https://github.com/parallel-web/paralllel-n8n-nodes.git
npm_package_name: n8n-nodes-parallel
npm_version: 0.1.0
community_fetched_at: 2026-03-25T21:19:40.680Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "webEnrichment",
      "options": [
        {
          "name": "Sync Web Enrichment",
          "value": "webEnrichment",
          "action": "Sync Web Enrichment",
          "description": "Execute a Task with the Parallel Task API and retrieve its result."
        },
        {
          "name": "Async Web Enrichment",
          "value": "asyncWebEnrichment",
          "action": "Async Web Enrichment",
          "description": "Create a Task with the Parallel Task API and retrieve its Run ID for async retrieval."
        },
        {
          "name": "Web Search",
          "value": "webSearch",
          "action": "Web Search",
          "description": "Search the web with the Parallel Search API and retrieve a list of results with excerpts."
        },
        {
          "name": "Web Chat",
          "value": "webChat",
          "action": "Web Chat",
          "description": "AI-powered chat completions API with web access (<5 seconds)"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Sync Web Enrichment",
      "value": "webEnrichment",
      "action": "Sync Web Enrichment",
      "description": "Execute a Task with the Parallel Task API and retrieve its result."
    },
    {
      "name": "Async Web Enrichment",
      "value": "asyncWebEnrichment",
      "action": "Async Web Enrichment",
      "description": "Create a Task with the Parallel Task API and retrieve its Run ID for async retrieval."
    },
    {
      "name": "Web Search",
      "value": "webSearch",
      "action": "Web Search",
      "description": "Search the web with the Parallel Search API and retrieve a list of results with excerpts."
    },
    {
      "name": "Web Chat",
      "value": "webChat",
      "action": "Web Chat",
      "description": "AI-powered chat completions API with web access (<5 seconds)"
    }
  ]

npm_readme:
  # n8n-nodes-parallel

  This is an n8n community node for [Parallel Web Systems](https://parallel.ai/) - the AI-powered web research platform. Transform your n8n workflows with intelligent data extraction, competitive analysis, lead enrichment, and automated research capabilities.

  Try Parallel in the [playground](https://platform.parallel.ai/play) before integrating into your workflows.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  ## Installation

  Install this community node package in n8n:

  ```bash
  npm install n8n-nodes-parallel
  ```

  Or follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ### Prerequisites

  1. **Get API Access**: Sign up at [platform.parallel.ai](https://platform.parallel.ai/) and generate an API key
  2. **Add Credentials**: In n8n, create new credentials of type "Parallel API" and enter your API key
  3. **Webhook Secret**: In your Parallel n8n credential, include a webhook secret (created via [Platform Settings](https://platform.parallel.ai/settings)) in order to be notified when an Async Web Enrichment Task is completed

  ## Available Nodes

  This package provides two powerful nodes for your n8n workflows:

  ### 🔍 **Parallel Node** - Multi-Purpose AI Research

  The main Parallel node offers four distinct operations:

  #### **1. Sync Web Enrichment** - [Task API](https://docs.parallel.ai/task-api/task-quickstart.md)

  Execute tasks synchronously and get immediate results (up to 5 minutes):

  - **Lead Enrichment**: Company profiles, contact information, financials
  - **Competitive Analysis**: Product features, pricing, market positioning
  - **Content Research**: Article summaries, fact-checking, data validation
  - **Market Intelligence**: Industry trends, company updates, regulatory changes

  **Available Processors**: `lite`, `base`, `core`

  #### **2. Async Web Enrichment** - [Task API](https://docs.parallel.ai/task-api/task-quickstart.md)

  Start long-running research tasks asynchronously (up to 30 minutes):

  - Complex multi-source research
  - Deep competitive intelligence
  - Comprehensive due diligence
  - Large-scale data enrichment

  **Available Processors**: `lite`, `base`, `core`, `pro`, `ultra`, `ultra2x`, `ultra4x`, `ultra8x`
  Learn about each Parallel Task API Processor [here](https://docs.parallel.ai/task-api/core-concepts/choose-a-processor).

  #### **3. Web Search** - [Search API](https://docs.parallel.ai/search-api/search-quickstart.md)

  Intelligent web search with AI-powered processing:

  - Natural language search objectives
  - Traditional keyword queries
  - Domain filtering for trusted sources
  - Structured results with excerpts and citations

  **Available Processors**: `base`, `pro`
  Learn about each Parallel Search API Processor [here](https://docs.parallel.ai/search-api/processors).

  #### **4. Web Chat**

  AI-powered chat completions with web access (< 5 seconds):

  - Real-time web-informed responses
  - Fact-checking and verification
  - Current events and news queries
  - Research-backed conversations

  Read the Parallel Chat API documentation [here](https://docs.parallel.ai/chat-api/chat-quickstart).

  ### 🔔 **Parallel Task Run Completion Trigger**

  Automatically trigger workflows when Parallel tasks complete, best paired with Async Web Enrichment:

  - **Real-time notifications**: Instant updates when async tasks finish
  - **Automatic result fetching**: Retrieves full task results automatically
  - **Webhook security**: Built-in signature validation for secure webhooks
  - **Flexible filtering**: Option to trigger only on successful completions

  Perfect for long-running research workflows where you want to process results as soon as they're ready.

  ## Key Features

  ### **Flexible Output Schemas**

  - **Text**: Single text output field with evidence and citations
  - **JSON**: [Custom structured schemas](https://docs.parallel.ai/task-api/core-concepts/specify-a-task.md) for precise data extraction
  - **Auto**: AI-optimized JSON output with nested citations (Pro+ processors only)

  ### **Research Quality & Transparency**

  Every result includes [confidence scores and evidence](https://docs.parallel.ai/task-api/core-concepts/access-research-basis.md) with source citations, so you can validate and trust your automated research.

  ### **Source Control**

  Use [source policies](https://docs.parallel.ai/features/source-policy.md) to include trusted domains (like Wikipedia, Reuters) or exclude unreliable ones.

  ### **Smart Polling & Async Support**

  - Automatically handles long-running research tasks with intelligent retry logic
  - Webhook triggers for immediate notification when async tasks complete
  - No manual polling required

  ## Quick Start Examples

  ### Example 1: Company Research Workflow

  ```text
  1. HTTP Request node → Get company domain from CRM
  2. Parallel node (Sync Web Enrichment) → Enrich company data
  3. Set node → Format results  
  4. HTTP Request node → Update CRM with enriched data
  ```

  ### Example 2: Async Research with Webhook

  ```text
  1. Parallel node (Async Web Enrichment) → Start deep research task
  2. Parallel Task Run Completion Trigger → Wait for completion
  3. Code node → Process comprehensive results
  4. Email node → Send research report
  ```

  ### Example 3: Web Search Pipeline

  ```text
  1. Manual Trigger → Input search query
  2. Parallel node (Web Search) → Search with AI processing
  3. Code node → Extract top results
  4. HTTP Request → Post to knowledge base
  ```

  ## Getting Started

  1. **Install**: `npm install n8n-nodes-parallel`
  2. **Get API Access**: Sign up at [platform.parallel.ai](https://platform.parallel.ai/) and generate an API key
  3. **Try the Playground**: Test your research tasks at [platform.parallel.ai/play](https://platform.parallel.ai/play)
  4. **Add Credentials**: Configure your API key in n8n's credential manager  
  5. **Build Workflows**: Start with simple enrichment tasks and scale to complex research pipelines

  ## Processor Selection Guide

  Choose the right processor based on your use case complexity and timing needs:

  | Processor | Latency | Max Fields | Cost | Best For |
  |-----------|---------|------------|------|----------|
  | **Lite** | 5s-60s | 2 | $5/1000 | Basic metadata, quick lookups |
  | **Base** | 15s-100s | 5 | $10/1000 | Standard enrichment, reliable data |
  | **Core** | 1-5min | 10 | $25/1000 | Cross-referenced research |
  | **Pro** | 3-9min | 20 | $100/1000 | Exploratory research, analysis |
  | **Ultra** | 5-25min | 20 | $300/1000 | Advanced multi-source research |
  | **Ultra 2x** | 5-25min | 25 | $600/1000 | Difficult research tasks |
  | **Ultra 4x** | 8-30min | 25 | $1200/1000 | Very difficult research |
  | **Ultra 8x** | 8-30min | 25 | $2400/1000 | Most complex research |

  > **Note**: Sync operations support up to Core level. Async operations support all processor levels.

  ## n8n Workflow Use Cases

  ### **Sales & CRM Automation**

  - **Lead Scoring**: Enrich incoming leads with company data, funding, employee count
  - **Account Research**: Deep dive on prospects before sales calls
  - **Contact Discovery**: Find decision-makers and their contact information
  - **Competitive Intelligence**: Monitor competitor product updates and pricing

  ### **Content & Marketing**

  - **Content Research**: Gather supporting data and citations for articles
  - **Fact-Checking**: Validate claims and statistics in real-time
  - **Trend Analysis**: Monitor industry trends and news for content ideas
  - **SEO Research**: Find trending topics and keyword opportunities

  ### **Operations & Monitoring**

  - **Vendor Research**: Evaluate potential suppliers and partners
  - **Risk Assessment**: Monitor companies for regulatory changes or news
  - **Market Intelligence**: Track industry developments and competitor moves
  - **Due Diligence**: Comprehensive background checks for business decisions

  ### **Customer Support Enhancement**

  - **Real-time Information**: Answer customer questions with current web data
  - **Documentation**: Auto-generate help articles from web research
  - **Competitive Comparisons**: Provide accurate competitor information

  ## Advanced Configuration

  ### Webhook Setup for Async Tasks

  When using async enrichment with the trigger node:

  1. Add a **Parallel Task Run Completion Trigger** to your workflow
  2. Copy the webhook URL from the trigger node
  3. In the **Parallel node** (Async Web Enrichment), paste the URL in the "Webhook URL" field
  4. Enable "Validate Webhook Signatures" for security (recommended)

  ### JSON Schema Examples

  For structured data extraction, use JSON schemas in the output configuration:

  ```json
  {
    "type": "object",
    "properties": {
      "company_name": {
        "type": "string", 
        "description": "Official company name from recent filings or website."
      },
      "ceo_name": {
        "type": "string",
        "description": "Current CEO full name from company website or recent news."
      },
      "employee_count": {
        "type": "string", 
        "description": "Number of employees as range (e.g., '500-1000') or exact number."
      }
    },
    "required": ["company_name", "ceo_name", "employee_count"],
    "additionalProperties": false
  }
  ```

  ### Source Policies

  Control which websites are used for research:

  - **Include domains**: `wikipedia.org, reuters.com, bloomberg.com`
  - **Exclude domains**: `reddit.com, quora.com`

  ## Resources

  - [Parallel Documentation](https://docs.parallel.ai/)
  - [Task API Quickstart](https://docs.parallel.ai/task-api/task-quickstart.md)
  - [Search API Quickstart](https://docs.parallel.ai/search-api/search-quickstart.md)
  - [Processor Selection Guide](https://docs.parallel.ai/task-api/core-concepts/choose-a-processor.md)
  - [Understanding Task Specifications](https://docs.parallel.ai/task-api/core-concepts/specify-a-task.md)
  - [Webhook Configuration](https://docs.parallel.ai/task-api/features/webhooks)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## Support & Community

  - **Issues**: [GitHub Issues](https://github.com/parallel-web/parallel-n8n-nodes/issues)
  - **Documentation**: [docs.parallel.ai](https://docs.parallel.ai/)
  - **Platform**: [platform.parallel.ai](https://platform.parallel.ai/)

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"A community n8n node that integrates with Parallel Web Systems to perform AI-powered web research, including lead enrichment, competitive analysis, and intelligent web search.","capabilities":["Sync Web Enrichment for immediate results","Async Web Enrichment for long-running complex research","AI-powered web search with natural language processing","Web Chat for real-time, web-informed responses","Lead enrichment (company profiles, contacts, financials)","Competitive analysis (product features, pricing, market positioning)","Content research (summaries, fact-checking, data validation)","Market intelligence (trends, regulatory changes)","Custom JSON schema output","Webhook-based task completion triggers"],"authentication":"API key required (entered in n8n credentials)","commonUseCases":["Automated lead enrichment and CRM updates","Competitive intelligence gathering","Market research and trend analysis","Real-time fact-checking and verification","Automated research reporting via email"],"limitations":["Sync Web Enrichment has a maximum execution time of 5 minutes","Async Web Enrichment has a maximum execution time of 30 minutes","Web Chat responses take less than 5 seconds but may be limited by API rate limits","Some advanced features like Auto JSON output require Pro+ processors","Processor availability varies by operation (e.g., 'pro' processor not available for Sync Web Enrichment)"],"relatedNodes":["HTTP Request","Set","Code","Email","Manual Trigger"]}


node_type: @markupai/n8n-nodes-markupai.markupai
package_name: @markupai/n8n-nodes-markupai
display_name: Markup AI
description: Markup AI Content Checker
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: abhijeet_narvekar
author_github_url: https://github.com/markupai/n8n-app.git
npm_package_name: @markupai/n8n-nodes-markupai
npm_version: 0.2.5
community_fetched_at: 2026-03-25T21:19:40.680Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "content",
      "options": [
        {
          "name": "Content",
          "value": "content"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "styleCheck",
      "options": [
        {
          "name": "Style Check",
          "value": "styleCheck",
          "action": "Content style check",
          "description": "Check the content against your style and branding guidelines"
        },
        {
          "name": "Style Rewrite",
          "value": "styleRewrite",
          "action": "Content style rewrite",
          "description": "Rewrite the content against your style and branding guidelines"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "content"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Style Check",
      "value": "styleCheck",
      "action": "Content style check",
      "description": "Check the content against your style and branding guidelines"
    },
    {
      "name": "Style Rewrite",
      "value": "styleRewrite",
      "action": "Content style rewrite",
      "description": "Rewrite the content against your style and branding guidelines"
    }
  ]

npm_readme:
  ![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)

  # n8n-nodes-markupai

  This is an n8n community node that integrates [Markup AI](https://markup.ai/) — a content guardian platform for ensuring brand-compliant, consistent, and engaging content.

  [Markup AI](https://markup.ai/) provides AI-powered content analysis, suggestions, and rewrites based on your organization's brand standards. Integrate content quality checks and automated improvements directly into your n8n workflows.

  [Installation](#installation) · [Operations](#operations) · [Credentials](#credentials) · [Usage](#usage) · [Resources](#resources) · [Development](#development)

  ## Installation

  ### Community Nodes (Recommended)

  1. In n8n, go to **Settings** > **Community Nodes**
  2. Select **Install**
  3. Enter `@markupai/n8n-nodes-markupai` in the package field
  4. Click **Install**

  For detailed instructions, visit the [n8n community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/).

  ### Manual Installation

  To install manually, run the following command in your n8n installation directory:

  ```bash
  npm install @markupai/n8n-nodes-markupai
  ```

  ## Operations

  The Markup AI node supports the following operations:

  ### Style Check

  Analyze content for quality issues without making changes.

  **Returns:**

  - Quality, clarity, and grammar scores
  - Style guide compliance metrics
  - Tone analysis
  - Readability metrics
  - Detailed list of identified issues

  ### Style Rewrite

  Automatically rewrite and improve content using AI.

  **Returns:**

  - Improved content version
  - Before/after quality scores
  - Score improvements
  - Comparison metrics

  ## Credentials

  To use this node, you'll need a Markup AI API account.

  ### Setting up credentials:

  1. Sign up for a [Markup AI account](https://markup.ai/#early-access)
  2. Get your API key from your account settings
  3. In n8n, add new credentials:
     - Go to **Credentials** > **New**
     - Search for **Markup AI API**
     - Enter your API key
     - Click **Save**

  ## Usage

  ### Configuration Options

  All operations support the following options:

  | Option                  | Type    | Default | Description                                 |
  | ----------------------- | ------- | ------- | ------------------------------------------- |
  | **Style Guide**         | String  | -       | The style guide to apply                    |
  | **Dialect**             | String  | -       | The dialect to be used for content analysis |
  | **Tone**                | String  | -       | The desired tone for content (optional)     |
  | **Wait for Completion** | Boolean | `true`  | Auto-poll for results                       |
  | **Polling Timeout**     | Number  | `60000` | Maximum wait time in milliseconds           |
  | **Polling Interval**    | Number  | `2000`  | Polling frequency in milliseconds           |

  ### Example Workflows

  #### Content Quality Gate

  1. Trigger: New document added to Google Drive
  2. **Markup AI** → Style Check: Analyze document content
  3. Condition: Check if quality score meets threshold
  4. If passed: Approve and publish
  5. If failed: Send notification to content team

  #### Automated Content Improvement

  1. Trigger: Webhook receives content for publication
  2. **Markup AI** → Style Check: Analyze initial quality
  3. **Markup AI** → Style Rewrite: Improve content
  4. Send improved version to CMS for publication

  ### Common Use Cases

  - **Content Compliance & Consistency**: Ensure all company content — from blogs and web pages to documentation and marketing materials — aligns with brand and style guidelines while maintaining a consistent tone.

  - **Automated Quality Gates**: Ensure content meets standards automatically before publication. Monitor content changes in real-time and prevent non-compliant content from going live.

  - **Quality at the Source**: Create and maintain high-quality content right where it's produced. Proactively monitor consistency and compliance across CMS platforms like Google Drive and beyond.

  - **Early Issue Detection**: Automatically identify and flag potential issues or non-compliant content within workflows before they become problems.

  - **Streamlined Content Compliance**: Minimize manual reviews by automating content compliance checks and review processes throughout your content lifecycle.

  - **Actionable Alerts**: Go beyond flagging issues — automatically trigger notifications to stakeholders within workflows, transforming compliance checks into immediate corrective actions.

  ## Resources

  - [Markup AI Documentation](https://docs.markup.ai/)
  - [Markup AI Website](https://markup.ai/)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [n8n Documentation](https://docs.n8n.io/)
  - [GitHub Repository](https://github.com/markupai/n8n-app)

  ## Development

  Contributions are welcome! This section is for developers who want to contribute to this community node or set up a local development environment.

  ### Prerequisites

  - Node.js >= 24
  - npm
  - Basic familiarity with n8n and TypeScript

  ### Quick Setup (Recommended)

  After cloning this repository, run the automated setup script:

  ```bash
  npm run setup
  ```

  This will:

  - Install dependencies (including n8n as a devDependency)
  - Build the code and create the dist folder
  - Link the package from the dist folder (avoiding node_modules conflicts)
  - Configure the n8n custom directory
  - Fix n8n config file permissions
  - Link the package for local development

  Then start n8n:

  ```bash
  npm start
  ```

  This uses the local n8n installation from devDependencies — no global installation needed!

  **Note:** The setup links from the `dist` folder rather than the project root. This ensures that n8n only loads the compiled code without development dependencies, preventing module loading conflicts.

  ### Environment Configuration

  For development, you can configure the API base URL using environment variables:

  **Option 1: Using a `.env` file**

  1. Copy the example environment file:

     ```bash
     cp .env.example .env
     ```

  2. Edit `.env` and set your development API URL:

     ```bash
     MARKUP_AI_BASE_URL=https://api.dev.markup.ai/
     ```

  3. Start n8n (it will automatically load the `.env` file):
     ```bash
     npm start
     ```

  **Option 2: Export environment variable directly**

  ```bash
  export MARKUP_AI_BASE_URL=https://api.dev.markup.ai/
  npm start
  ```

  **Note:** By default, the node uses the production API URL (`https://api.markup.ai/`). The environment variable is only needed for development or custom API endpoints. n8n automatically loads `.env` files from the current working directory, so no additional tools are required.

  ### Manual Setup

  If you prefer to set things up manually:

  1. Install dependencies after cloning this repository

  ```bash
  npm install
  ```

  2. Build the code

  ```bash
  npm run build
  ```

  3. Link the build from the dist folder

  ```bash
  cd dist
  npm link
  cd ..
  ```

  4. Create a `custom` directory inside n8n if it does not exist

  ```bash
  # In ~/.n8n directory run
  mkdir -p ~/.n8n/custom
  cd ~/.n8n/custom
  npm init -y
  ```

  5. Link the custom folder to the build

  ```bash
  npm link @markupai/n8n-nodes-markupai
  ```

  6. Fix n8n config file permissions (if needed)

  ```bash
  chmod 600 ~/.n8n/config
  ```

  7. Start n8n

  ```bash
  # Back in your project directory
  npm start
  ```

  You should now see Markup AI in the list of nodes. Happy hacking!

  ### Making Changes

  1. Make your changes in the `nodes/` or `credentials/` directories
  2. Build the code: `npm run build`
  3. Test in n8n (refresh the browser if n8n is already running)
  4. Run tests: `npm test`
  5. Run linter: `npm run lint:check`

  ### Testing

  Run the test suite:

  ```bash
  npm test
  ```

  Run tests with coverage:

  ```bash
  npm run test:coverage
  ```

  Run tests in watch mode during development:

  ```bash
  npm run test:watch
  ```

  ### Troubleshooting

  **Module loading errors**: If you see errors like `require(...).index is not a constructor`, make sure you've linked from the `dist` folder, not the project root. To fix:

  ```bash
  npm run cleanup  # Remove old links
  npm run setup    # Set up correctly
  ```

  **Permissions errors**: If you see warnings about file permissions, run `chmod 600 ~/.n8n/config` to fix them.

  **Resetting the development environment**: If you need to start fresh:

  ```bash
  npm run cleanup  # Removes all npm links
  npm run setup    # Sets up from scratch
  ```

  **Debugging setup issues**: If you encounter problems during setup, enable debug mode for detailed output:

  ```bash
  DEBUG=1 npm run setup    # Verbose setup with debug information
  DEBUG=1 npm run cleanup  # Verbose cleanup with debug information
  ```

  This will show:

  - Exact commands being executed
  - Full command output (both stdout and stderr)
  - Detailed error information when commands fail
  - Working directory for each command

  ## License

  [MIT](LICENSE)

  ## Support

  - For general n8n questions: [n8n Community Forum](https://community.n8n.io/)
  - For Markup AI API questions: [Markup AI Support](https://community.markup.ai/c/markup-ai-integrations/6)

  ---

  Made with ❤️ by the Markup AI team

ai_documentation_summary:
  {"purpose":"This n8n community node integrates Markup AI to perform AI-powered content analysis, style checks, and automated rewrites to ensure brand-compliant and high-quality content.","capabilities":["Style Check: Analyze content for quality issues without making changes","Style Rewrite: Automatically rewrite and improve content using AI","Quality scoring (clarity, grammar, tone, readability)","Style guide compliance metrics","Dialect-specific content analysis","Tone customization","Automated polling for async operations","Workflow-based content gating"],"authentication":"API key required","commonUseCases":["Content compliance and consistency checks","Automated quality gates before publication","Quality at the source (CMS integration)","Early issue detection in workflows","Streamlined content review processes"],"limitations":["Community node (requires manual installation or n8n community nodes setup)","Requires separate Markup AI account and API key","No built-in credential management UI (requires manual credential setup)"],"relatedNodes":["n8n Webhook","n8n Condition","n8n HTTP Request","n8n Google Drive","n8n Slack"]}


node_type: n8n-nodes-transcript-lol.transcriptLol
package_name: n8n-nodes-transcript-lol
display_name: Transcript LOL
description: Create recordings and get transcripts from Transcript LOL
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: pkpio
author_github_url: https://github.com/transcript-lol/
npm_package_name: n8n-nodes-transcript-lol
npm_version: 0.1.0
community_fetched_at: 2026-03-25T21:19:40.681Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "recording",
      "options": [
        {
          "name": "Recording",
          "value": "recording"
        },
        {
          "name": "Transcript",
          "value": "transcript"
        },
        {
          "name": "Workspace",
          "value": "workspace"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a recording",
          "description": "Create a new recording for transcription"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a recording",
          "description": "Get a recording by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many recordings",
          "description": "Get many recordings from a workspace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "recording"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a transcript",
          "description": "Get transcript for a recording"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transcript"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many workspaces",
          "description": "Get all workspaces"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "workspace"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a recording",
      "description": "Create a new recording for transcription"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a recording",
      "description": "Get a recording by ID"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many recordings",
      "description": "Get many recordings from a workspace"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a transcript",
      "description": "Get transcript for a recording"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many workspaces",
      "description": "Get all workspaces"
    }
  ]

npm_readme:
  # n8n-nodes-transcript-lol

  This is an n8n community node for [Transcript.lol](https://transcript.lol) - an AI-powered audio and video transcription service.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Resources](#resources)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  ### Transcript.lol Node

  #### Recording Resource
  - **Create** - Create a new recording for transcription
  - **Get** - Get a recording by ID
  - **Get Many** - Get many recordings from a workspace

  #### Transcript Resource
  - **Get** - Get transcript for a recording in various formats (JSON, Plain Text, CSV, Word, SRT, VTT)

  #### Workspace Resource
  - **Get Many** - Get all workspaces accessible to your account

  ### Transcript.lol Trigger Node

  Listen for events from Transcript.lol:

  - **New Transcript** - Triggers when a transcript is completed for a recording
  - **Transcript Failed** - Triggers when a transcript fails to be created
  - **New Insights** - Triggers when new AI insights are generated for a recording
  - **Translation Created** - Triggers when a translation is completed for a recording

  ## Credentials

  This node uses OAuth2 with PKCE (Proof Key for Code Exchange) for secure authentication. No client secret is required — the integration uses a public client ID (`tlol_n8n_client`) and relies on PKCE's cryptographic code challenge/verifier exchange to secure the authorization flow.

  ### Setup

  1. In n8n, create new credentials for "Transcript.lol OAuth2 API"
  2. Click "Connect my account" — n8n will automatically handle the PKCE flow
  3. Sign in to your [Transcript.lol account](https://transcript.lol) and authorize the connection
  4. Once authorized, you can use the node in your workflows

  ### How It Works

  1. n8n generates a random `code_verifier` and derives a `code_challenge` (SHA-256 hash)
  2. The `code_challenge` is sent with the authorization request to Transcript.lol
  3. After you authorize, n8n sends the original `code_verifier` to the token endpoint
  4. Transcript.lol verifies that `SHA256(code_verifier)` matches the stored `code_challenge`
  5. On success, an access token (Bearer token) is issued and used for all API requests

  This approach eliminates the need for a shared client secret, making it safe for the credential configuration to be distributed as part of a community node.

  **Note:** You need to be on the Unlimited Plan to use the n8n integration.

  ## Compatibility

  - Tested with n8n version 1.0.0 and above
  - Requires Node.js v22 or higher

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Transcript.lol Documentation](https://transcript.lol/docs)
  - [Transcript.lol API Reference](https://transcript.lol/docs/api)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"This n8n community node enables workflow automation for Transcript.lol, an AI-powered audio and video transcription service, allowing users to create recordings, retrieve transcripts, and listen for completion events.","capabilities":["Create new recordings for transcription","Retrieve a single recording by ID","Retrieve multiple recordings from a workspace","Get transcripts in multiple formats (JSON, Plain Text, CSV, Word, SRT, VTT)","List all accessible workspaces","Trigger on new transcript completion","Trigger on transcript failure","Trigger on new AI insights generation","Trigger on translation completion"],"authentication":"OAuth2 with PKCE (Proof Key for Code Exchange)","commonUseCases":["Automated meeting note generation from audio/video files","Workflow triggers for processing completed transcriptions","Batch processing of multiple recordings from a workspace","Integration with translation workflows for multilingual content"],"limitations":["Requires Transcript.lol Unlimited Plan subscription","Requires Node.js v22 or higher","Compatible only with n8n version 1.0.0 and above"],"relatedNodes":["n8n-nodes-base.webhook","n8n-nodes-base.httpRequest","n8n-nodes-base.code"]}


node_type: n8n-nodes-templatefox.templateFox
package_name: n8n-nodes-templatefox
display_name: TemplateFox
description: Generate PDFs from templates using TemplateFox API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: vincentventalon
author_github_url: https://github.com/TemplateFoxPDF/
npm_package_name: n8n-nodes-templatefox
npm_version: 1.1.5
community_fetched_at: 2026-03-25T21:19:40.681Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "generatePdf",
      "options": [
        {
          "name": "Generate PDF",
          "value": "generatePdf",
          "action": "Generate a PDF from a template",
          "description": "Generate a PDF from a template"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate PDF",
      "value": "generatePdf",
      "action": "Generate a PDF from a template",
      "description": "Generate a PDF from a template"
    }
  ]

npm_readme:
  # n8n-nodes-templatefox

  This is an n8n community node for [TemplateFox](https://pdftemplateapi.com) - a PDF generation API that lets you create professional PDFs from templates.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  **npm:**
  ```bash
  npm install n8n-nodes-templatefox
  ```

  **n8n Desktop/Cloud:**
  1. Go to **Settings** > **Community Nodes**
  2. Select **Install**
  3. Enter `n8n-nodes-templatefox`
  4. Agree to the risks and click **Install**

  ## Operations

  ### Generate PDF

  Generate a PDF document from a template with your data.

  **Features:**
  - **Template Dropdown**: Select from your saved templates
  - **Dynamic Fields**: Fields automatically appear based on the selected template
  - **JSON Mode**: For advanced users who prefer raw JSON input
  - **Custom Filename**: Set a custom filename for the generated PDF
  - **URL Expiration**: Configure how long the PDF URL remains valid

  ## Credentials

  To use this node, you need a TemplateFox API key:

  1. Sign up at [pdftemplateapi.com](https://pdftemplateapi.com)
  2. Go to your [API Dashboard](https://pdftemplateapi.com/dashboard/api)
  3. Copy your API key
  4. In n8n, create new **TemplateFox API** credentials and paste your key

  ## Usage

  ### Basic Example

  1. Add the **TemplateFox** node to your workflow
  2. Configure your TemplateFox API credentials
  3. Select a template from the dropdown
  4. Fill in the template fields with your data
  5. Execute the workflow to generate a PDF

  ### Using JSON Mode

  For complex data structures (arrays, nested objects):

  1. Select **JSON** as the Data Input Mode
  2. Enter your data as JSON:
  ```json
  {
    "customer_name": "John Doe",
    "invoice_number": "INV-001",
    "items": [
      {"description": "Widget A", "quantity": 2, "price": 10.00},
      {"description": "Widget B", "quantity": 1, "price": 25.00}
    ]
  }
  ```

  ### Output

  The node returns:
  - `url`: Direct URL to download the PDF
  - `filename`: The PDF filename
  - `credits_remaining`: Your remaining API credits
  - `expires_in`: Seconds until the URL expires

  ## Resources

  - [TemplateFox Documentation](https://pdftemplateapi.com/docs)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [TemplateFox API Reference](https://pdftemplateapi.com/docs/api)

  ## Support

  - **TemplateFox Support**: support@pdftemplateapi.com
  - **GitHub Issues**: [Report bugs or request features](https://github.com/TemplateFoxPDF/n8n-nodes-templatefox/issues)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Generates professional PDF documents from TemplateFox templates by sending data to the TemplateFox API and returning a downloadable URL.","capabilities":["Generate PDFs from saved templates","Support dynamic fields based on template selection","JSON mode for advanced data structures (arrays, nested objects)","Custom filename configuration","URL expiration time configuration","Return remaining API credits and expiration time"],"authentication":"API key required","commonUseCases":["Generating invoice PDFs from customer data","Creating personalized marketing materials","Producing contract documents with variable fields","Batch generating reports with complex data structures"],"limitations":["Requires external TemplateFox account and API key","URLs have expiration time limits","Credits are consumed per generation"],"relatedNodes":["HTTP Request","Code","PDF"]}


node_type: n8n-nodes-mittwald.mittwald
package_name: n8n-nodes-mittwald
display_name: mittwald API
description: Interact with the mittwald API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: mhelmich-mittwald
author_github_url: https://github.com/mittwald/n8n-nodes.git
npm_package_name: n8n-nodes-mittwald
npm_version: 1.7.1
community_fetched_at: 2026-03-25T21:19:40.682Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Project",
          "value": "Project"
        },
        {
          "name": "App",
          "value": "App"
        },
        {
          "name": "Server",
          "value": "Server"
        },
        {
          "name": "Support",
          "value": "Support"
        },
        {
          "name": "Contributor",
          "value": "Contributor"
        },
        {
          "name": "Domain",
          "value": "Domain"
        },
        {
          "name": "Database",
          "value": "Database"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Create",
      "options": [
        {
          "name": "Create",
          "value": "Create",
          "action": "Create a project on a server",
          "description": "Create a new project on a server"
        },
        {
          "name": "Create SFTP User",
          "value": "Create SFTP User",
          "action": "Create an SFTP user",
          "description": "Create an SFTP user for a project"
        },
        {
          "name": "Create SSH User",
          "value": "Create SSH User",
          "action": "Create an SSH user",
          "description": "Create an SSH user for a project"
        },
        {
          "name": "Delete SFTP User",
          "value": "Delete SFTP User",
          "action": "Delete an SFTP user",
          "description": "Delete an SFTP user by ID"
        },
        {
          "name": "Delete SSH User",
          "value": "Delete SSH User",
          "action": "Delete an SSH user",
          "description": "Delete an SSH user by ID"
        },
        {
          "name": "Delete",
          "value": "Delete",
          "action": "Delete a project",
          "description": "Delete an existing project"
        },
        {
          "name": "Get",
          "value": "Get",
          "action": "Get a project",
          "description": "Get details of a specific project"
        },
        {
          "name": "List SFTP Users",
          "value": "List SFTP Users",
          "action": "List all SFTP users",
          "description": "Get a list of all SFTP users in a project"
        },
        {
          "name": "List SSH Users",
          "value": "List SSH Users",
          "action": "List all SSH users",
          "description": "Get a list of all SSH users in a project"
        },
        {
          "name": "List",
          "value": "List",
          "action": "List all projects",
          "description": "Get a list of all projects"
        },
        {
          "name": "Delete Membership",
          "value": "Delete Membership",
          "action": "Delete a project membership",
          "description": "Remove a member from a project"
        },
        {
          "name": "Get Membership",
          "value": "Get Membership",
          "action": "Get a project membership",
          "description": "Get details of a specific project membership"
        },
        {
          "name": "Accept Invite",
          "value": "Accept Invite",
          "action": "Accept an invite to a project",
          "description": "Accept a project invitation using an invitation token"
        },
        {
          "name": "Create Invite",
          "value": "Create Invite",
          "action": "Create an invite to a project",
          "description": "Create a project invitation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Project"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Install",
      "options": [
        {
          "name": "Install",
          "value": "Install",
          "action": "Install an app",
          "description": "Install an app on a project"
        },
        {
          "name": "Uninstall",
          "value": "Uninstall",
          "action": "Uninstall an app",
          "description": "Remove an app installation"
        },
        {
          "name": "List",
          "value": "List",
          "action": "List all installed apps",
          "description": "Get a list of all installed apps"
        },
        {
          "name": "Update Installation Versions",
          "value": "Update Installation Versions",
          "action": "Update software versions",
          "description": "Update the app or system software versions of an installation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "App"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Get",
      "options": [
        {
          "name": "Get",
          "value": "Get",
          "action": "Get a server",
          "description": "Get details of a specific server"
        },
        {
          "name": "List",
          "value": "List",
          "action": "List all servers",
          "description": "Get a list of all servers"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Server"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Create",
      "options": [
        {
          "name": "Create",
          "value": "Create",
          "action": "Create a ticket",
          "description": "Create a support ticket in a conversation category"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Support"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "List Incoming Invoices",
      "options": [
        {
          "name": "List Incoming Invoices",
          "value": "List Incoming Invoices",
          "action": "List incoming invoices",
          "description": "Get a list of incoming invoices for an organisation"
        },
        {
          "name": "List Outgoing Invoices",
          "value": "List Outgoing Invoices",
          "action": "List outgoing invoices",
          "description": "Get a list of outgoing invoices for an organisation"
        },
        {
          "name": "List Own Extensions",
          "value": "List Own Extensions",
          "action": "List own extensions",
          "description": "Get a list of extensions owned by an organisation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Contributor"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Create",
      "options": [
        {
          "name": "Create",
          "value": "Create",
          "action": "Create and link subdomain",
          "description": "Create a subdomain and link it to an app installation"
        },
        {
          "name": "Check If Registrable",
          "value": "Check If Registrable",
          "action": "Check if domain is registrable",
          "description": "Check whether a domain name is available for registration"
        },
        {
          "name": "Set Target",
          "value": "Set Target",
          "action": "Set target installation for domain",
          "description": "Set the target app installation for a domain"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Domain"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Create Redis Database",
      "options": [
        {
          "name": "Create Redis Database",
          "value": "Create Redis Database",
          "action": "Create Redis database",
          "description": "Create a new Redis database in a project"
        },
        {
          "name": "Delete Redis Database",
          "value": "Delete Redis Database",
          "action": "Delete Redis database",
          "description": "Delete an existing Redis database"
        },
        {
          "name": "Get Redis Database",
          "value": "Get Redis Database",
          "action": "Get a Redis database",
          "description": "Get details of a specific Redis database"
        },
        {
          "name": "List Redis Databases",
          "value": "List Redis Databases",
          "action": "List all Redis databases",
          "description": "Get a list of all Redis databases in a project"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Database"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "Create",
      "action": "Create a project on a server",
      "description": "Create a new project on a server"
    },
    {
      "name": "Create SFTP User",
      "value": "Create SFTP User",
      "action": "Create an SFTP user",
      "description": "Create an SFTP user for a project"
    },
    {
      "name": "Create SSH User",
      "value": "Create SSH User",
      "action": "Create an SSH user",
      "description": "Create an SSH user for a project"
    },
    {
      "name": "Delete SFTP User",
      "value": "Delete SFTP User",
      "action": "Delete an SFTP user",
      "description": "Delete an SFTP user by ID"
    },
    {
      "name": "Delete SSH User",
      "value": "Delete SSH User",
      "action": "Delete an SSH user",
      "description": "Delete an SSH user by ID"
    },
    {
      "name": "Delete",
      "value": "Delete",
      "action": "Delete a project",
      "description": "Delete an existing project"
    },
    {
      "name": "Get",
      "value": "Get",
      "action": "Get a project",
      "description": "Get details of a specific project"
    },
    {
      "name": "List SFTP Users",
      "value": "List SFTP Users",
      "action": "List all SFTP users",
      "description": "Get a list of all SFTP users in a project"
    },
    {
      "name": "List SSH Users",
      "value": "List SSH Users",
      "action": "List all SSH users",
      "description": "Get a list of all SSH users in a project"
    },
    {
      "name": "List",
      "value": "List",
      "action": "List all projects",
      "description": "Get a list of all projects"
    },
    {
      "name": "Delete Membership",
      "value": "Delete Membership",
      "action": "Delete a project membership",
      "description": "Remove a member from a project"
    },
    {
      "name": "Get Membership",
      "value": "Get Membership",
      "action": "Get a project membership",
      "description": "Get details of a specific project membership"
    },
    {
      "name": "Accept Invite",
      "value": "Accept Invite",
      "action": "Accept an invite to a project",
      "description": "Accept a project invitation using an invitation token"
    },
    {
      "name": "Create Invite",
      "value": "Create Invite",
      "action": "Create an invite to a project",
      "description": "Create a project invitation"
    },
    {
      "name": "Install",
      "value": "Install",
      "action": "Install an app",
      "description": "Install an app on a project"
    },
    {
      "name": "Uninstall",
      "value": "Uninstall",
      "action": "Uninstall an app",
      "description": "Remove an app installation"
    },
    {
      "name": "List",
      "value": "List",
      "action": "List all installed apps",
      "description": "Get a list of all installed apps"
    },
    {
      "name": "Update Installation Versions",
      "value": "Update Installation Versions",
      "action": "Update software versions",
      "description": "Update the app or system software versions of an installation"
    },
    {
      "name": "Get",
      "value": "Get",
      "action": "Get a server",
      "description": "Get details of a specific server"
    },
    {
      "name": "List",
      "value": "List",
      "action": "List all servers",
      "description": "Get a list of all servers"
    },
    {
      "name": "Create",
      "value": "Create",
      "action": "Create a ticket",
      "description": "Create a support ticket in a conversation category"
    },
    {
      "name": "List Incoming Invoices",
      "value": "List Incoming Invoices",
      "action": "List incoming invoices",
      "description": "Get a list of incoming invoices for an organisation"
    },
    {
      "name": "List Outgoing Invoices",
      "value": "List Outgoing Invoices",
      "action": "List outgoing invoices",
      "description": "Get a list of outgoing invoices for an organisation"
    },
    {
      "name": "List Own Extensions",
      "value": "List Own Extensions",
      "action": "List own extensions",
      "description": "Get a list of extensions owned by an organisation"
    },
    {
      "name": "Create",
      "value": "Create",
      "action": "Create and link subdomain",
      "description": "Create a subdomain and link it to an app installation"
    },
    {
      "name": "Check If Registrable",
      "value": "Check If Registrable",
      "action": "Check if domain is registrable",
      "description": "Check whether a domain name is available for registration"
    },
    {
      "name": "Set Target",
      "value": "Set Target",
      "action": "Set target installation for domain",
      "description": "Set the target app installation for a domain"
    },
    {
      "name": "Create Redis Database",
      "value": "Create Redis Database",
      "action": "Create Redis database",
      "description": "Create a new Redis database in a project"
    },
    {
      "name": "Delete Redis Database",
      "value": "Delete Redis Database",
      "action": "Delete Redis database",
      "description": "Delete an existing Redis database"
    },
    {
      "name": "Get Redis Database",
      "value": "Get Redis Database",
      "action": "Get a Redis database",
      "description": "Get details of a specific Redis database"
    },
    {
      "name": "List Redis Databases",
      "value": "List Redis Databases",
      "action": "List all Redis databases",
      "description": "Get a list of all Redis databases in a project"
    }
  ]

npm_readme:
  # n8n-nodes-mittwald

  This is an n8n community node. It lets you use the mittwald API in your n8n workflows.

  [mittwald](https://www.mittwald.de/) is a German hosting and cloud service provider. This node allows you to automate interactions with mittwald resources such as projects, Redis databases, applications, and more.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Usage](#usage)
  [Resources](#resources)
  [Version history](#version-history)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  This node provides integration with the [mittwald API v2](https://developer.mittwald.de/). The following resources and operations are available:

  ### App

  - **Install an app**: Install an app on a project
  - **List all installed apps**: Get a list of all installed apps
  - **Uninstall an app**: Remove an app installation
  - **Update software versions**: Update the app or system software versions of an installation

  ### Contributor

  - **List incoming invoices**: Get a list of incoming invoices for an organisation
  - **List outgoing invoices**: Get a list of outgoing invoices for an organisation
  - **List own extensions**: Get a list of extensions owned by an organisation

  ### Conversation

  - **Create a ticket**: Create a support ticket in a conversation category

  ### Project

  - **Create a project on a server**: Create a new project on a server
  - **Create an SSH user**: Create an SSH user for a project (parameters: Project, Name, Password, optional Expires At)
  - **Create an SFTP user**: Create an SFTP user for a project (parameters: Project, Name, Password, Access Level, Directories, optional Expires At)
  - **Delete an SSH user**: Delete an SSH user from a project (parameter: SSH User ID)
  - **Delete an SFTP user**: Delete an SFTP user from a project (parameter: SFTP User ID)
  - **Delete a project**: Delete an existing project
  - **Get a project**: Get details of a specific project
  - **List all SSH users**: Get a list of all SSH users in a project (parameter: Project)
  - **List all SFTP users**: Get a list of all SFTP users in a project (parameter: Project)
  - **List all projects**: Get a list of all projects
  - **Accept an invite to a project**: Accept a project invitation using an invitation token
  - **Create an invite to a project**: Create a project invitation
  - **Get a project membership**: Get details of a specific project membership
  - **Delete a project membership**: Remove a member from a project

  ### Database

  - **List all Redis databases**: Get a list of all Redis databases in a project
  - **Create Redis database**: Create a new Redis database in a project
  - **Delete Redis database**: Delete an existing Redis database
  - **Get a Redis database**: Get details of a specific Redis database

  ### Server

  - **Get a server**: Get details of a specific server
  - **List all servers**: Get a list of all servers

  ### Domain

  - **Create and link subdomain**: Create a subdomain and link it to an app installation
  - **Check if domain is registrable**: Check whether a domain name is available for registration
  - **Set target installation for domain**: Set the target app installation for a domain

  ## Credentials

  To use this node, you need to authenticate with the mittwald API using an API key.

  ### Prerequisites

  - A mittwald account
  - An API key generated from your mittwald account settings

  ### Setting up credentials

  1. Log in to your mittwald account
  2. Navigate to your account settings
  3. Generate an API key
  4. In n8n, create new credentials of type "Mittwald API"
  5. Enter your API key

  ## Compatibility

  This node is tested with n8n Version 2.7.4.

  ## Usage

  1. Add the "Mittwald API" node to your workflow
  2. Set up credentials using your mittwald API key (API keys can be generated in the studio [here](https://studio.mittwald.de/app/profile/api-tokens))
  3. Select the desired resource and operation
  4. Configure the required parameters for the operation
  5. Execute the workflow to interact with the mittwald API and automate your tasks

  If you aren't familiar with n8n and creating workflows, you can find help here: [Try it out](https://docs.n8n.io/try-it-out/)

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [mittwald API documentation](https://developer.mittwald.de/)
  - [mittwald API v2 Reference](https://developer.mittwald.de/docs/v2/api/intro/)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of interactions with the Mittwald hosting and cloud service provider API v2, allowing management of projects, servers, databases, applications, and user accounts.","capabilities":["Install, list, and uninstall applications on projects","Update software versions for app or system installations","Manage incoming and outgoing invoices for organizations","List extensions owned by an organization","Create and manage support tickets in conversation categories","Create, list, delete, and get details of projects","Create, list, delete, and get details of SSH and SFTP users","Manage project memberships and invitations","Create, list, and delete Redis databases in projects","Get details and list servers"],"authentication":"API key required","commonUseCases":["Automating server provisioning and user management for hosting clients","Managing Redis database instances in cloud environments","Handling application deployments and version updates","Managing billing and invoice data for hosting organizations","Automating domain management and subdomain linking"],"limitations":["Requires a valid Mittwald account and API key","Only supports Mittwald API v2","Currently tested with n8n Version 2.7.4","Limited to Mittwald-specific resources (German hosting provider)"],"relatedNodes":["n8n-nodes-core.httpRequest","n8n-nodes-core.credentials"]}


node_type: n8n-nodes-lumify.lumify
package_name: n8n-nodes-lumify
display_name: Lumify
description: AI-powered search and research APIs from Lumify
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: lumify
author_github_url: https://github.com/lumifyai/
npm_package_name: n8n-nodes-lumify
npm_version: 0.1.5
community_fetched_at: 2026-03-25T21:19:40.683Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search your indexed content",
          "description": "Search your indexed website content and get AI-generated answers"
        },
        {
          "name": "Last 30 Days",
          "value": "last30days",
          "action": "Research trends from the last 30 days",
          "description": "Research trends and discussions from social media and web sources"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Search",
      "value": "search",
      "action": "Search your indexed content",
      "description": "Search your indexed website content and get AI-generated answers"
    },
    {
      "name": "Last 30 Days",
      "value": "last30days",
      "action": "Research trends from the last 30 days",
      "description": "Research trends and discussions from social media and web sources"
    }
  ]

npm_readme:
  # n8n-nodes-lumify

  This is an n8n community node for [Lumify](https://lumify.ai) - AI-powered search and research APIs.

  Lumify provides two powerful capabilities:
  - **Search**: AI-powered search across your indexed website content
  - **Last 30 Days**: Research-grade trend analysis from social media and web discussions

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ### In n8n Desktop/Cloud

  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `n8n-nodes-lumify`
  4. Agree to the risks and select **Install**

  ### Self-hosted n8n

  ```bash
  npm install n8n-nodes-lumify
  ```

  ## Prerequisites

  - A [Lumify account](https://www.lumify.ai/beta-signup) (free to sign up)
  - Your API Key from the [Lumify Dashboard](https://www.lumify.ai/app/api-keys)
  - For Search: An Application ID from your dashboard

  ## Operations

  ### Search

  Query your indexed website content and get AI-generated answers with source citations.

  **Required:**
  - API Key
  - Application ID
  - Query (the search question)

  **Options:**
  - **Answer Mode**: Cache high-confidence answers for faster responses (default: true)
  - **Similar Questions**: Return related questions from your knowledge base (default: false)

  **Response includes:**
  - AI-generated answer
  - Source URLs with titles and relevance scores
  - Confidence score (0.0 - 1.0)
  - Similar questions (if enabled)
  - Call-to-action links (when intent is detected)

  ### Last 30 Days

  Research trends and synthesize discussions from Twitter/X, Reddit, and web sources into actionable intelligence.

  **Required:**
  - API Key
  - Topic (the subject to research, max 200 characters)

  **Options:**
  - **Sources**: Data sources to query - Twitter/X, Reddit, Web (default: all three)
  - **Days**: Number of days to look back, 1-30 (default: 30)
  - **Max Results**: Maximum evidence items per source, 5-50 (default: 20)
  - **Output Format**: 
    - `summary` - Markdown-formatted narrative (default)
    - `bullets` - Structured bullet points
    - `json` - Fully structured data

  **Response includes:**
  - Synthesized research brief with patterns, insights, and gotchas
  - Evidence count and source breakdown
  - Confidence score
  - Execution metadata (time, tokens used)

  ## Credentials

  ### Setting up Lumify Credentials

  1. [Sign up for Lumify](https://www.lumify.ai/beta-signup) if you haven't already
  2. Go to your [API Keys page](https://www.lumify.ai/app/api-keys)
  3. Copy your **API Key** (format: `lmfy-xxxxx`)
  4. If using Search, copy your **Application ID** from the dashboard

  In n8n:
  1. Go to **Credentials**
  2. Select **New Credential**
  3. Search for **Lumify API**
  4. Enter your API Key (required)
  5. Enter your Application ID (required for Search, optional for Last 30 Days)

  ## Example Workflows

  ### AI-Powered FAQ Bot

  1. **Trigger**: Webhook receives a user question
  2. **Lumify Search**: Query your knowledge base
  3. **IF**: Check confidence score
  4. **Respond**: Return answer or escalate to human

  ### Weekly Trend Report

  1. **Schedule Trigger**: Every Monday at 9am
  2. **Lumify Last 30 Days**: Research your industry topic
  3. **Slack/Email**: Send the synthesized brief to your team

  ### Content Research Pipeline

  1. **Form Trigger**: Content team submits a topic
  2. **Lumify Last 30 Days**: Research current discussions
  3. **Google Docs**: Create a research document
  4. **Notify**: Alert the team it's ready

  ## Resources

  - [Lumify Documentation](https://docs.lumify.ai)
  - [Search API Reference](https://docs.lumify.ai/search-api)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## Support

  - For Lumify issues: [Contact Lumify Support](https://www.lumify.ai/contact-us)
  - For node issues: [Open an issue](https://github.com/lumifyai/n8n-nodes-lumify/issues)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"This n8n community node integrates Lumify's AI-powered search and research APIs to enable knowledge base querying and social media trend analysis within automated workflows.","capabilities":["AI-powered search across indexed website content","Generate answers with source citations and confidence scores","Research-grade trend analysis from Twitter/X, Reddit, and web sources","Synthesize discussions into actionable intelligence","Support multiple output formats (markdown, bullets, JSON)","Return related questions and call-to-action links"],"authentication":"API Key required (Application ID required for Search operations)","commonUseCases":["AI-powered FAQ bot for knowledge base queries","Weekly trend reports for industry research","Content research pipeline for team collaboration","Automated social media sentiment analysis"],"limitations":["Search requires an Application ID from the dashboard","Last 30 Days research is limited to 1-30 days lookback","Max results per source limited to 50 items","Community node (requires manual installation and risk acceptance)"],"relatedNodes":["n8n-nodes-webhook","n8n-nodes-slack","n8n-nodes-google-docs","n8n-nodes-schedule-trigger","n8n-nodes-if"]}


node_type: n8n-nodes-scrapfly.Scrapfly
package_name: n8n-nodes-scrapfly
display_name: Scrapfly
description: Scrapfly data collection APIs for web page scraping, screenshots, and AI data extraction
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: scrapfly
author_github_url: https://github.com/scrapfly/
npm_package_name: n8n-nodes-scrapfly
npm_version: 0.1.7
community_fetched_at: 2026-03-25T21:19:40.683Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "Scrape",
      "options": [
        {
          "name": "Scrape",
          "value": "Scrape"
        },
        {
          "name": "Extraction",
          "value": "Extraction"
        },
        {
          "name": "Screenshot",
          "value": "Screenshot"
        },
        {
          "name": "Account",
          "value": "Account"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "ScrapeWebPage",
      "options": [
        {
          "name": "Scrape Web Page",
          "value": "ScrapeWebPage",
          "action": "Scrape web page",
          "description": "Scrape a web page given its URL"
        },
        {
          "name": "Scrape API Request",
          "value": "ScrapeAPIRequest",
          "action": "Scrape api request",
          "description": "Send a web scraping API request"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Scrape"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "WebPageDataExtraction",
      "options": [
        {
          "name": "Extract Data From an HTML, Text, or Markdown Document Using AI",
          "value": "WebPageDataExtraction",
          "action": "Extract data from an html text or markdown document using ai",
          "description": "Extracts structured data from any text content. Uses AI, LLM, and custom parsing instructions."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Extraction"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "WebPageScreenshot",
      "options": [
        {
          "name": "Capture Web Page Screenshot",
          "value": "WebPageScreenshot",
          "action": "Capture web page screenshot",
          "description": "Takes a screenshot of a web page given its URL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Screenshot"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "AccountInfo",
      "options": [
        {
          "name": "Get Account Info",
          "value": "AccountInfo",
          "action": "Returns information about the current subscription and account usage",
          "description": "AccountInfo"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Account"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Scrape Web Page",
      "value": "ScrapeWebPage",
      "action": "Scrape web page",
      "description": "Scrape a web page given its URL"
    },
    {
      "name": "Scrape API Request",
      "value": "ScrapeAPIRequest",
      "action": "Scrape api request",
      "description": "Send a web scraping API request"
    },
    {
      "name": "Extract Data From an HTML, Text, or Markdown Document Using AI",
      "value": "WebPageDataExtraction",
      "action": "Extract data from an html text or markdown document using ai",
      "description": "Extracts structured data from any text content. Uses AI, LLM, and custom parsing instructions."
    },
    {
      "name": "Capture Web Page Screenshot",
      "value": "WebPageScreenshot",
      "action": "Capture web page screenshot",
      "description": "Takes a screenshot of a web page given its URL"
    },
    {
      "name": "Get Account Info",
      "value": "AccountInfo",
      "action": "Returns information about the current subscription and account usage",
      "description": "AccountInfo"
    }
  ]

npm_readme:
  # n8n-nodes-scrapfly

  This is an n8n community node. It lets you use ScrapFly in your n8n workflows. [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [ScrapFly.io](https://scrapfly.io/) provides data collection APIs for web page scraping, screenshots, and AI data extraction at scale. Integrating ScrapFly within a workflow enables extracting web page sources, parsing for structured data, or taking screenshots as binary files.

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation. See examples
  from [Scrapfly documentation](https://scrapfly.io/docs/integration/n8n) to see usage.

  ## Operations
  - __Scrape web page URLs__  
  Scrapes the HTML source of a given web page URL with the support of headless browsers, proxies, and anti-bot bypass.
  - __Extract Data From an HTML, Text, or Markdown Document Using AI__  
  Automatically parse HTML, Text, or Markdown documents using pre-defined templates or LLM prompts to extract structured data.
  - __Capture web page screenshot__  
  Takes a screenshot of a web page as an image file given its URL.
  - __Get account info__  
  Get information about the current account subscription and its usage.

  ## Credentials

  ScrapFly API key is used as a credential key. To get your API key, register for free.

  ## Usage

  For example, regarding usage and predefined workflow templates, please look at [ScrapFly's n8n integration docs](https://scrapfly.io/docs/integration/n8n).

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [ScrapFly documentation](https://scrapfly.io/docs)

  ## Development 

  To publish a new release, you need repo access and play command like `make bump-version VERSION=0.1.3`

ai_documentation_summary:
  {"purpose":"This n8n community node enables web page scraping, AI-powered data extraction from HTML/Text/Markdown, and web page screenshot capture using ScrapFly's APIs.","capabilities":["Scrape HTML source from web page URLs with headless browser support","Extract structured data from HTML, text, or markdown documents using AI","Capture web page screenshots as binary image files","Retrieve account subscription and usage information"],"authentication":"API key required","commonUseCases":["Automated web data collection for analytics or monitoring","Extracting structured information from websites for database population","Generating visual snapshots of web pages for reports or archives","Parsing unstructured web content using AI templates or prompts"],"limitations":["Community node (may have fewer updates or support compared to official nodes)","Requires ScrapFly account registration and API key setup"],"relatedNodes":["n8n HTTP Request","n8n Webhook","n8n Binary File"]}


node_type: n8n-nodes-air.air
package_name: n8n-nodes-air
display_name: Air
description: Access, update, and manage assets, boards, custom fields, and tags in your Air workspace
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: bradybrown202
author_github_url: https://github.com/brady-brown20330/
npm_package_name: n8n-nodes-air
npm_version: 1.4.0
community_fetched_at: 2026-03-25T21:19:40.684Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "assets",
      "options": [
        {
          "name": "Assets",
          "value": "assets"
        },
        {
          "name": "Boards",
          "value": "boards"
        },
        {
          "name": "Custom Fields",
          "value": "customFields"
        },
        {
          "name": "Tags",
          "value": "tags"
        },
        {
          "name": "Uploads",
          "value": "uploads"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Apply Custom Field",
          "value": "applyCustomField",
          "action": "Apply Custom Field to Asset",
          "routing": {
            "request": {
              "url": "={{`/assets/${String($parameter[\"assetId\"] || \"\").trim()}/customfields/${String($parameter[\"customFieldId\"] || \"\").trim()}`}}",
              "method": "PUT"
            }
          },
          "description": "Apply a custom field to an asset"
        },
        {
          "name": "Apply Tag",
          "value": "applyTag",
          "action": "Apply Tag to Asset",
          "routing": {
            "request": {
              "url": "={{`/assets/${String($parameter[\"assetId\"] || \"\").trim()}/versions/${String($parameter[\"versionId\"] || \"\").trim()}/tags`}}",
              "method": "POST"
            }
          },
          "description": "Apply a tag to an asset"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get Air Assets",
          "routing": {
            "request": {
              "url": "/assets",
              "method": "GET"
            }
          },
          "description": "Get Air assets"
        },
        {
          "name": "Get by ID",
          "value": "getById",
          "action": "Get Asset by ID",
          "routing": {
            "request": {
              "url": "={{`/assets/${String($parameter[\"assetId\"] || \"\").trim()}`}}",
              "method": "GET"
            }
          },
          "description": "Get a single asset by ID"
        },
        {
          "name": "List Boards",
          "value": "listBoards",
          "action": "List Parent Boards",
          "routing": {
            "request": {
              "url": "={{`/assets/${String($parameter[\"assetId\"] || \"\").trim()}/boards`}}",
              "method": "GET"
            }
          },
          "description": "Get the list of parent boards of an asset"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update Air Asset",
          "routing": {
            "request": {
              "url": "={{`/assets/${String($parameter[\"assetId\"] || \"\").trim()}/versions/${String($parameter[\"versionIdUpdate\"] || \"\").trim()}`}}",
              "method": "PATCH"
            }
          },
          "description": "Update an asset’s details"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "assets"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "initiateUpload",
      "options": [
        {
          "name": "Complete Upload",
          "value": "completeUpload",
          "action": "Complete Upload",
          "routing": {
            "request": {
              "url": "/uploads/completeMultipart",
              "method": "POST"
            }
          },
          "description": "Finalize multipart upload with part ETags"
        },
        {
          "name": "Initiate Upload",
          "value": "initiateUpload",
          "action": "Initiate Upload",
          "routing": {
            "request": {
              "url": "/uploads",
              "method": "POST"
            }
          },
          "description": "Initiate multipart upload and get signed part URLs"
        },
        {
          "name": "Upload Part",
          "value": "uploadPart",
          "action": "Get Signed URL for Upload Part",
          "routing": {
            "request": {
              "url": "/uploads/uploadPart",
              "method": "POST"
            }
          },
          "description": "Request a signed URL to upload a specific part"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "uploads"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Add Assets",
          "value": "addAssets",
          "action": "Add Assets to Board",
          "routing": {
            "request": {
              "url": "={{`/boards/${String($parameter[\"boardId\"] || \"\").trim()}/assets`}}",
              "method": "POST"
            }
          },
          "description": "Associate one or more assets with a board"
        },
        {
          "name": "Apply Custom Field",
          "value": "applyCustomField",
          "action": "Apply Custom Field to Board",
          "routing": {
            "request": {
              "url": "={{`/boards/${String($parameter[\"boardId\"] || \"\").trim()}/customfields/${String($parameter[\"customFieldId\"] || \"\").trim()}`}}",
              "method": "PUT"
            }
          },
          "description": "Set or unset custom field value(s) on a board"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create Air Board",
          "routing": {
            "request": {
              "url": "/boards",
              "method": "POST"
            }
          },
          "description": "Create Air Board"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get Air Boards",
          "routing": {
            "request": {
              "url": "/boards",
              "method": "GET"
            }
          },
          "description": "Get Air Boards"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update Air Board",
          "routing": {
            "request": {
              "url": "={{`/boards/${String($parameter[\"boardId\"] || \"\").trim()}`}}",
              "method": "PATCH"
            }
          },
          "description": "Update a board’s title, description, or parent"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "boards"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Add Value",
          "value": "addValue",
          "action": "Add Custom Field Value",
          "routing": {
            "request": {
              "url": "={{`/customFields/${String($parameter[\"customFieldId\"] || \"\").trim()}/values`}}",
              "method": "POST"
            }
          },
          "description": "Add a new selectable value to a custom field"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create Air Custom Field",
          "routing": {
            "request": {
              "url": "/customFields",
              "method": "POST"
            }
          },
          "description": "Create Air Custom Field"
        },
        {
          "name": "Delete Value",
          "value": "deleteValue",
          "action": "Delete Custom Field Value",
          "routing": {
            "request": {
              "url": "={{`/customFields/${String($parameter[\"customFieldId\"] || \"\").trim()}/values/${String($parameter[\"valueId\"] || \"\").trim()}`}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a selectable value from a custom field"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get Air Custom Fields",
          "routing": {
            "request": {
              "url": "/customFields",
              "method": "GET"
            }
          },
          "description": "Get Air Custom Fields"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update Air Custom Field",
          "routing": {
            "request": {
              "url": "={{`/customFields/${String($parameter[\"customFieldId\"] || \"\").trim()}`}}",
              "method": "PATCH"
            }
          },
          "description": "Update an existing Air custom field"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "customFields"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get Air Tags",
          "routing": {
            "request": {
              "url": "/tags",
              "method": "GET"
            }
          },
          "description": "Get Air Tags"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create Air Tag",
          "routing": {
            "request": {
              "url": "/tags",
              "method": "POST"
            }
          },
          "description": "Create Air Tag"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tags"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Apply Custom Field",
      "value": "applyCustomField",
      "action": "Apply Custom Field to Asset",
      "routing": {
        "request": {
          "url": "={{`/assets/${String($parameter[\"assetId\"] || \"\").trim()}/customfields/${String($parameter[\"customFieldId\"] || \"\").trim()}`}}",
          "method": "PUT"
        }
      },
      "description": "Apply a custom field to an asset"
    },
    {
      "name": "Apply Tag",
      "value": "applyTag",
      "action": "Apply Tag to Asset",
      "routing": {
        "request": {
          "url": "={{`/assets/${String($parameter[\"assetId\"] || \"\").trim()}/versions/${String($parameter[\"versionId\"] || \"\").trim()}/tags`}}",
          "method": "POST"
        }
      },
      "description": "Apply a tag to an asset"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get Air Assets",
      "routing": {
        "request": {
          "url": "/assets",
          "method": "GET"
        }
      },
      "description": "Get Air assets"
    },
    {
      "name": "Get by ID",
      "value": "getById",
      "action": "Get Asset by ID",
      "routing": {
        "request": {
          "url": "={{`/assets/${String($parameter[\"assetId\"] || \"\").trim()}`}}",
          "method": "GET"
        }
      },
      "description": "Get a single asset by ID"
    },
    {
      "name": "List Boards",
      "value": "listBoards",
      "action": "List Parent Boards",
      "routing": {
        "request": {
          "url": "={{`/assets/${String($parameter[\"assetId\"] || \"\").trim()}/boards`}}",
          "method": "GET"
        }
      },
      "description": "Get the list of parent boards of an asset"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update Air Asset",
      "routing": {
        "request": {
          "url": "={{`/assets/${String($parameter[\"assetId\"] || \"\").trim()}/versions/${String($parameter[\"versionIdUpdate\"] || \"\").trim()}`}}",
          "method": "PATCH"
        }
      },
      "description": "Update an asset’s details"
    },
    {
      "name": "Complete Upload",
      "value": "completeUpload",
      "action": "Complete Upload",
      "routing": {
        "request": {
          "url": "/uploads/completeMultipart",
          "method": "POST"
        }
      },
      "description": "Finalize multipart upload with part ETags"
    },
    {
      "name": "Initiate Upload",
      "value": "initiateUpload",
      "action": "Initiate Upload",
      "routing": {
        "request": {
          "url": "/uploads",
          "method": "POST"
        }
      },
      "description": "Initiate multipart upload and get signed part URLs"
    },
    {
      "name": "Upload Part",
      "value": "uploadPart",
      "action": "Get Signed URL for Upload Part",
      "routing": {
        "request": {
          "url": "/uploads/uploadPart",
          "method": "POST"
        }
      },
      "description": "Request a signed URL to upload a specific part"
    },
    {
      "name": "Add Assets",
      "value": "addAssets",
      "action": "Add Assets to Board",
      "routing": {
        "request": {
          "url": "={{`/boards/${String($parameter[\"boardId\"] || \"\").trim()}/assets`}}",
          "method": "POST"
        }
      },
      "description": "Associate one or more assets with a board"
    },
    {
      "name": "Apply Custom Field",
      "value": "applyCustomField",
      "action": "Apply Custom Field to Board",
      "routing": {
        "request": {
          "url": "={{`/boards/${String($parameter[\"boardId\"] || \"\").trim()}/customfields/${String($parameter[\"customFieldId\"] || \"\").trim()}`}}",
          "method": "PUT"
        }
      },
      "description": "Set or unset custom field value(s) on a board"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create Air Board",
      "routing": {
        "request": {
          "url": "/boards",
          "method": "POST"
        }
      },
      "description": "Create Air Board"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get Air Boards",
      "routing": {
        "request": {
          "url": "/boards",
          "method": "GET"
        }
      },
      "description": "Get Air Boards"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update Air Board",
      "routing": {
        "request": {
          "url": "={{`/boards/${String($parameter[\"boardId\"] || \"\").trim()}`}}",
          "method": "PATCH"
        }
      },
      "description": "Update a board’s title, description, or parent"
    },
    {
      "name": "Add Value",
      "value": "addValue",
      "action": "Add Custom Field Value",
      "routing": {
        "request": {
          "url": "={{`/customFields/${String($parameter[\"customFieldId\"] || \"\").trim()}/values`}}",
          "method": "POST"
        }
      },
      "description": "Add a new selectable value to a custom field"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create Air Custom Field",
      "routing": {
        "request": {
          "url": "/customFields",
          "method": "POST"
        }
      },
      "description": "Create Air Custom Field"
    },
    {
      "name": "Delete Value",
      "value": "deleteValue",
      "action": "Delete Custom Field Value",
      "routing": {
        "request": {
          "url": "={{`/customFields/${String($parameter[\"customFieldId\"] || \"\").trim()}/values/${String($parameter[\"valueId\"] || \"\").trim()}`}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a selectable value from a custom field"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get Air Custom Fields",
      "routing": {
        "request": {
          "url": "/customFields",
          "method": "GET"
        }
      },
      "description": "Get Air Custom Fields"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update Air Custom Field",
      "routing": {
        "request": {
          "url": "={{`/customFields/${String($parameter[\"customFieldId\"] || \"\").trim()}`}}",
          "method": "PATCH"
        }
      },
      "description": "Update an existing Air custom field"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get Air Tags",
      "routing": {
        "request": {
          "url": "/tags",
          "method": "GET"
        }
      },
      "description": "Get Air Tags"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create Air Tag",
      "routing": {
        "request": {
          "url": "/tags",
          "method": "POST"
        }
      },
      "description": "Create Air Tag"
    }
  ]

npm_readme:
  # n8n-nodes-air

  A community node for [n8n](https://n8n.io) that lets you programmatically interact with your [Air](https://air.inc) workspaces — upload and manage assets, organize boards, and wire Air into the rest of your stack.

  Air is a Creative Ops system for marketing and creative teams, designed to store, search, approve, and share visual content at scale.:contentReference[oaicite:0]{index=0}

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Usage](#usage)
  [Resources](#resources)
  [Version history](#version-history)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.



  ## Operations


  This node gives n8n workflows access to a subset of the [Air API](https://developer.air.inc/). Typical automations include:​:contentReference

  - **Assets**
    - Upload new assets to Air from any n8n source (S3, GDrive, FTP, webhooks, etc.)
    - List / search assets by metadata or keywords
    - Retrieve details for a specific asset
    - Update asset metadata (title, description, tags, custom fields)
    - Optionally delete or archive assets

  - **Boards**
    - List boards in a workspace
    - Get board details
    - Add / remove assets on boards
    - Drive board organization from other systems (e.g. CRM, project tools)

  - **Custom Fields**
    - List Custom Fields
    - Create Custom Field
    - Update Custom Field (name/description)
    - Add New Values
    - Delete Values

  - **Tags**
    - List Tags
    - Create Tags

  - **Uploads**
    - Create Upload URL
    - Complete Upload Part (files > 5 GB)
    - Complete Uplaod (files > 5 GB)

  > ⚠️ The exact list of operations may evolve. Always check the node’s **Resource** and **Operation** dropdowns in the n8n UI for the current surface area.

  ## Credentials

  Air's API uses:

  \- x-api-key

  \- x-air-workspace-id

  ## Compatibility

  _No known compatibility issues._

  ## Usage
      
  ### Basic Upload Workflow

  Steps to upload assets using binary input.

  ### Metadata Enrichment

  Fetch assets, enrich metadata, update Air.

  ### Board Syncing

  Sync boards with data from project tools.

  ## Compatibility

  \- Works with modern n8n 1.x builds.

  \- Best for self-hosted installations.

  ## Resources

  * [Air Application](https://app.air.inc)
  * [Air Developer Documentation](https://developer.air.inc)
  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)


  ## Version history

  _See CHANGELOG.md for version notes._

ai_documentation_summary:
  {"purpose":"This n8n community node enables automated management of Air workspaces, allowing users to upload, organize, and update assets, boards, custom fields, and tags.","capabilities":["Upload assets from various sources (S3, GDrive, FTP, webhooks)","List and search assets by metadata or keywords","Retrieve and update asset metadata (title, description, tags, custom fields)","Delete or archive assets","List and manage boards in a workspace","Add or remove assets from boards","Manage custom fields (list, create, update, add/delete values)","Manage tags (list, create)","Create upload URLs for large files","Complete upload parts for files over 5 GB"],"authentication":"API key required (x-api-key and x-air-workspace-id headers)","commonUseCases":["Automating asset uploads from multiple storage sources","Syncing project boards with external tools like CRM or project management software","Enriching asset metadata before storing in Air","Managing large file uploads (>5GB) through multipart upload process"],"limitations":["Limited to a subset of the Air API (exact operations may evolve)","Best suited for self-hosted n8n installations","Requires manual verification of available operations in the n8n UI"],"relatedNodes":["n8n-nodes-google-drive","n8n-nodes-s3","n8n-nodes-ftp","n8n-nodes-webhook"]}


node_type: @postnitro/n8n-nodes-postnitro-ai.postNitro
package_name: @postnitro/n8n-nodes-postnitro-ai
display_name: PostNitro
description: Interact with PostNitro Embed API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: postnitro
author_github_url: https://github.com/postnitro/n8n-nodes-postnitro-ai.git
npm_package_name: @postnitro/n8n-nodes-postnitro-ai
npm_version: 0.1.2
community_fetched_at: 2026-03-25T21:19:40.685Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "embedPost",
      "options": [
        {
          "name": "Embed Post",
          "value": "embedPost"
        }
      ],
      "displayName": "Resource"
    },
    {
      "name": "operation",
      "type": "options",
      "default": "aiFromText",
      "options": [
        {
          "name": "Generate Carousel from Text (AI)",
          "value": "aiFromText",
          "action": "Generate carousel using AI from plain text"
        },
        {
          "name": "Generate Carousel from an Article URL (AI)",
          "value": "aiFromArticle",
          "action": "Generate carousel using AI from an Article URL"
        },
        {
          "name": "Generate Carousel from an X (Twitter) Post (AI)",
          "value": "aiFromXPost",
          "action": "Generate carousel using AI from an X (Twitter) post URL"
        },
        {
          "name": "Import Carousel Slides",
          "value": "importSlides",
          "action": "Create carousel by Importing a predefined set of slides content"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate Carousel from Text (AI)",
      "value": "aiFromText",
      "action": "Generate carousel using AI from plain text"
    },
    {
      "name": "Generate Carousel from an Article URL (AI)",
      "value": "aiFromArticle",
      "action": "Generate carousel using AI from an Article URL"
    },
    {
      "name": "Generate Carousel from an X (Twitter) Post (AI)",
      "value": "aiFromXPost",
      "action": "Generate carousel using AI from an X (Twitter) post URL"
    },
    {
      "name": "Import Carousel Slides",
      "value": "importSlides",
      "action": "Create carousel by Importing a predefined set of slides content"
    }
  ]

npm_readme:
  # n8n-nodes-postnitro-ai

  This is an n8n community node. It lets you use [PostNitro](https://postnitro.ai) in your n8n workflows.

  PostNitro.ai is a platform for creating and publishing social media carousels and visuals.

  The PostNitro Embed API is an embed-friendly API to generate carousel posts, images, and PDFs using AI or imported slide content to create carousels.


  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials)  
  [Compatibility](#compatibility)  
  [Usage](#usage)  
  [Resources](#resources)  
  [Version history](#version-history)  

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  The PostNitro node supports:
  - Generate Carousel from Text (AI)
  - Generate Carousel from Article URL (AI)
  - Generate Carousel from X (Twitter) Post (AI)
  - Import Carousel Slides

  Optional behaviors:
  - Wait for completion: Poll the post status until it completes or fails
  - On complete: Return status only, or fetch the generated output
  - Download output as binary: Attach the generated file(s) to the workflow item

  ## Credentials

  This node requires API credentials for the PostNitro Embed API.

  Prerequisites:
  - A PostNitro account and API key

  Setup in n8n:
  - Create credentials of type `PostNitro Embed API`
  - Fields:
    - API Base URL: Base URL of the PostNitro Embed API (for example, `https://embed-api.postnitro.ai`)
    - API Key: Your API key (sent as `embed-api-key` header)

  ## Compatibility

  - Minimum n8n version: 1.0+
  - Tested with `n8n-workflow` ^1.40.0 and TypeScript ^5.4.0

  ## Usage

  Basic flow:
  1. Choose an operation (AI generation from Text/Article/X, or Import Slides)
  2. Provide required fields such as `templateId`, `brandId`, and (for AI flows) `presetId`
  3. Optionally enable "Wait for Completion" to poll status and then fetch output
  4. If you choose to fetch output, you can return just the JSON or download the file(s) as binary

  Output formats:
  - PDF: Single file
  - PNG: Multiple images (array). If "Download Output as Binary" is enabled, multiple binary properties will be attached (e.g., `data1`, `data2`, ...)

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [PostNitro Embed API documentation](https://postnitro.ai/docs/embed/api)

  ## Version history

  - 0.1.0: Initial release with AI generation (Text/Article/X), Import Slides, status polling, and binary download options.
  - 0.1.1: postType drop down set to CAROUSEL type only
  - 0.1.2: implemented fixes suggested in node review

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the PostNitro Embed API to generate social media carousels, images, and PDFs using AI or imported slide content.","capabilities":["Generate carousel from text using AI","Generate carousel from article URL using AI","Generate carousel from X (Twitter) post using AI","Import existing carousel slides","Poll post status until completion","Fetch generated output as JSON or binary files","Download output as PDF or PNG images"],"authentication":"API key required (sent as embed-api-key header)","commonUseCases":["Automated social media content creation","Generating carousel posts from blog articles","Creating visual content from text prompts","Batch processing slide decks into carousels"],"limitations":["Limited to carousel post type only","Requires separate PostNitro account and API key setup","Minimum n8n version 1.0+"],"relatedNodes":["HTTP Request","Binary File","JSON"]}


node_type: n8n-nodes-nedzo.nedzo
package_name: n8n-nodes-nedzo
display_name: Nedzo
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: mudit-nedzo
author_github_url: https://github.com/mudit-nedzo/
npm_package_name: n8n-nodes-nedzo
npm_version: 1.0.18
community_fetched_at: 2026-03-25T21:19:40.686Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "call",
      "options": [
        {
          "name": "Agent",
          "value": "agent"
        },
        {
          "name": "Call",
          "value": "call"
        },
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Workspace",
          "value": "workspace"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create Agent",
          "value": "create",
          "action": "Create Agent",
          "description": "Create a new agent within a workspace"
        },
        {
          "name": "Delete Agent",
          "value": "delete",
          "action": "Delete Agent",
          "description": "Delete agent. This action is permanent and can't be undone."
        },
        {
          "name": "Find Agent",
          "value": "find",
          "action": "Find Agent",
          "description": "Find and get an agent details"
        },
        {
          "name": "Update Agent",
          "value": "update",
          "action": "Update Agent",
          "description": "Updates an agent within a workspace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "agent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Make Phone Call",
          "value": "create",
          "action": "Make Phone Call",
          "description": "Creates an outbound phone call using Nedzo voice agent"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "call"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upsert",
      "options": [
        {
          "name": "Create/Update Contact",
          "value": "upsert",
          "action": "Create/Update Contact",
          "description": "Creates or updates a contact in a workspace"
        },
        {
          "name": "Delete Contact",
          "value": "delete",
          "action": "Delete Contact",
          "description": "Deletes a contact in a workspace"
        },
        {
          "name": "Find Contact",
          "value": "find",
          "action": "Find Contact",
          "description": "Gets a contact and all its information"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create Workspace",
          "value": "create",
          "action": "Create Workspace",
          "description": "Creates a workspace in an account"
        },
        {
          "name": "Delete Workspace",
          "value": "delete",
          "action": "Delete Workspace",
          "description": "Deletes a workspace. This action is permanent and can't be undone."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "workspace"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Agent",
      "value": "create",
      "action": "Create Agent",
      "description": "Create a new agent within a workspace"
    },
    {
      "name": "Delete Agent",
      "value": "delete",
      "action": "Delete Agent",
      "description": "Delete agent. This action is permanent and can't be undone."
    },
    {
      "name": "Find Agent",
      "value": "find",
      "action": "Find Agent",
      "description": "Find and get an agent details"
    },
    {
      "name": "Update Agent",
      "value": "update",
      "action": "Update Agent",
      "description": "Updates an agent within a workspace"
    },
    {
      "name": "Make Phone Call",
      "value": "create",
      "action": "Make Phone Call",
      "description": "Creates an outbound phone call using Nedzo voice agent"
    },
    {
      "name": "Create/Update Contact",
      "value": "upsert",
      "action": "Create/Update Contact",
      "description": "Creates or updates a contact in a workspace"
    },
    {
      "name": "Delete Contact",
      "value": "delete",
      "action": "Delete Contact",
      "description": "Deletes a contact in a workspace"
    },
    {
      "name": "Find Contact",
      "value": "find",
      "action": "Find Contact",
      "description": "Gets a contact and all its information"
    },
    {
      "name": "Create Workspace",
      "value": "create",
      "action": "Create Workspace",
      "description": "Creates a workspace in an account"
    },
    {
      "name": "Delete Workspace",
      "value": "delete",
      "action": "Delete Workspace",
      "description": "Deletes a workspace. This action is permanent and can't be undone."
    }
  ]

npm_readme:
  # n8n-nodes-nedzo

  This is an n8n community node for [Nedzo](https://nedzo.ai) - AI Voice Agent Automation Platform.

  [n8n](https://n8n.io/) is a fair-code licensed workflow automation platform.

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ### Community Nodes (Recommended)

  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `n8n-nodes-nedzo` in **Enter npm package name**
  4. Agree to the risks and select **Install**

  ### Manual Installation

  ```bash
  npm install n8n-nodes-nedzo
  ```

  ## Credentials

  This node requires Nedzo API credentials. You can obtain an API key from your [Nedzo dashboard](https://app.nedzo.ai).

  ## Operations

  ### Agent
  - **Create Agent** - Create a new agent within a workspace
  - **Find Agent** - Find and get an agent details
  - **Update Agent** - Updates an agent within a workspace
  - **Delete Agent** - Delete agent (permanent)

  ### Call
  - **Make Phone Call** - Creates an outbound phone call using Nedzo voice agent

  ### Contact
  - **Create/Update Contact** - Creates or updates a contact in a workspace
  - **Find Contact** - Gets a contact and all its information
  - **Delete Contact** - Deletes a contact in a workspace

  ### Workspace
  - **Create Workspace** - Creates a workspace in an account
  - **Delete Workspace** - Deletes a workspace (permanent)

  ## Documentation

  For detailed step-by-step instructions on using each operation, see the [full documentation](DOCUMENTATION.md).

  ## Compatibility

  Tested with n8n version 1.0.0 and above.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Nedzo API Documentation](https://docs.nedzo.ai)
  - [Nedzo Website](https://nedzo.ai)

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of Nedzo AI Voice Agent features, allowing users to manage agents, contacts, and workspaces, as well as initiate outbound phone calls.","capabilities":["Create a new Nedzo agent","Find and retrieve agent details","Update an existing agent","Delete an agent permanently","Make outbound phone calls using Nedzo voice agents","Create or update contacts in a workspace","Retrieve contact information","Delete contacts from a workspace","Create a new workspace","Delete a workspace permanently"],"authentication":"API key required (obtained from Nedzo dashboard)","commonUseCases":["Automating outbound sales or support calls via AI voice agents","Managing customer contact records within the Nedzo platform","Orchestrating multi-agent workflows for customer interactions","Setting up dedicated workspaces for different client projects"],"limitations":["Requires valid Nedzo API credentials","Agent and workspace deletions are permanent and cannot be undone"],"relatedNodes":["n8n-nodes-core.httpRequest","n8n-nodes-core.webhook"]}


node_type: n8n-nodes-nimbasms.nimbaSMS
package_name: n8n-nodes-nimbasms
display_name: Nimba SMS
description: Send SMS, manage campaigns, and track delivery reports using the Nimba SMS API with ease.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: diallo
author_github_url: https://github.com/nimbasms/
npm_package_name: n8n-nodes-nimbasms
npm_version: 1.0.36
community_fetched_at: 2026-03-25T21:19:40.686Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Message",
          "value": "message",
          "description": "Send and manage SMS"
        },
        {
          "name": "Contact",
          "value": "contact",
          "description": "Manage contacts"
        },
        {
          "name": "Group",
          "value": "group",
          "description": "Manage contact groups"
        },
        {
          "name": "Account",
          "value": "account",
          "description": "Account information and billing"
        },
        {
          "name": "Purchase",
          "value": "purchase",
          "description": "View purchase history and invoices"
        },
        {
          "name": "Sender Name",
          "value": "senderName",
          "description": "Manage sender names"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "action": "Send an SMS",
          "description": "Send a single SMS"
        },
        {
          "name": "Verification OTP",
          "value": "verification",
          "action": "Send OTP verification",
          "description": "Send OTP verification code"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many SMS",
          "description": "Get many SMS history"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a Message",
          "description": "Get a specific message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact",
          "description": "Create a new contact"
        },
        {
          "name": "Get All",
          "value": "getAll",
          "action": "Get all contacts",
          "description": "Get all contacts"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get All",
          "value": "getAll",
          "action": "Get all groups",
          "description": "Get all groups"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "group"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getBalance",
      "options": [
        {
          "name": "Get Balance",
          "value": "getBalance",
          "action": "Get account balance",
          "description": "Get account balance"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get All",
          "value": "getAll",
          "action": "Get all purchases",
          "description": "Get all purchase history"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "purchase"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send",
      "value": "send",
      "action": "Send an SMS",
      "description": "Send a single SMS"
    },
    {
      "name": "Verification OTP",
      "value": "verification",
      "action": "Send OTP verification",
      "description": "Send OTP verification code"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many SMS",
      "description": "Get many SMS history"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a Message",
      "description": "Get a specific message"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a contact",
      "description": "Create a new contact"
    },
    {
      "name": "Get All",
      "value": "getAll",
      "action": "Get all contacts",
      "description": "Get all contacts"
    },
    {
      "name": "Get All",
      "value": "getAll",
      "action": "Get all groups",
      "description": "Get all groups"
    },
    {
      "name": "Get Balance",
      "value": "getBalance",
      "action": "Get account balance",
      "description": "Get account balance"
    },
    {
      "name": "Get All",
      "value": "getAll",
      "action": "Get all purchases",
      "description": "Get all purchase history"
    }
  ]

npm_readme:
  # n8n-nodes-nimbasms

  ![npm version](https://img.shields.io/npm/v/n8n-nodes-nimbasms)
  ![npm downloads](https://img.shields.io/npm/dm/n8n-nodes-nimbasms)
  ![License](https://img.shields.io/badge/license-MIT-green)
  ![n8n Community Node](https://img.shields.io/badge/n8n-community--node-ff6d5a)

  A comprehensive n8n community node that integrates with the Nimba SMS API, enabling you to send SMS messages, manage contacts, create campaigns, and handle billing operations directly from your n8n workflows.

  <p align="center"><img src="examples/automation_example.png" alt="Nimba SMS in n8n"></p>

  ## 🚀 Features

  - ✅ **SMS Operations**: Send individual SMS and retrieve message history
  - ✅ **Contact Management**: Create, update, delete, and organize contacts
  - ✅ **Group Management**: Organize contacts into groups for targeted campaigns
  - ✅ **Account Operations**: Check balance, view SMS packs, and monitor usage
  - ✅ **Purchase Management**: View purchase history and invoices
  - ✅ **Sender Name Management**: Manage custom sender names

  ## 📦 Installation

  ### Option 1: Install via n8n Community Nodes (Recommended)

  1. Open your n8n instance
  2. Go to **Settings > Community Nodes**
  3. Click **Install**
  4. Enter `n8n-nodes-nimbasms`
  5. Click **Install**

  ### Option 2: Manual Installation

  ```bash
  # For self-hosted n8n instances
  npm install n8n-nodes-nimbasms

  # For global n8n installation
  npm install -g n8n-nodes-nimbasms
  ```

  ### Option 3: Docker Installation

  Add to your n8n Docker configuration:

  ```dockerfile
  FROM n8nio/n8n:latest
  USER root
  RUN npm install -g n8n-nodes-nimbasms
  USER node
  ```

  ## 🔑 Credentials Setup

  Before using this node, configure your Nimba SMS API credentials:

  1. In n8n, go to **Credentials** and create **Nimba SMS API** credentials
  2. Fill in the required information:
     - **Service ID (SID)**: Your Nimba SMS Service ID
     - **Secret Token**: Your Nimba SMS Secret Token
     - **Base URL**: Default is `https://api.nimbasms.com`

  > 💡 Get your credentials from your [Nimba SMS Dashboard](https://wwww.nimbasms.com/app)

  ## 📱 Supported Operations

  ### SMS Operations
  - **Send**: Send individual SMS messages
  - **Get Many**: Retrieve SMS history with filtering options
  - **Get**: Get details of a specific SMS message

  ### Contact Operations
  - **Create**: Add new contacts with optional group assignment
  - **Update**: Modify contact information and group memberships

  ### Group Operations
  - **Get**: Retrieve group details

  ### Account Operations
  - **Get Balance**: Check your SMS credit balance

  ### Purchase Operations
  - **Get All**: Retrieve purchase history with filtering options
  - **Get**: Get details of a specific purchase by UID

  ### Sender Name Operations
  - **Get**: Check sender name status
  - **Get Many**: List all your sender names

  ## 🎯 Quick Start Examples

  ### Send a Simple SMS

  ```json
  {
    "resource": "sms",
    "operation": "send",
    "senderName": "YourBrand",
    "contact": "+224123456789",
    "message": "Hello from n8n! Your order has been confirmed."
  }
  ```

  ### Get Purchase History

  ```json
  {
    "resource": "purchase",
    "operation": "getAll",
    "returnAll": false,
    "limit": 10,
    "additionalFields": {
      "payment_type": "Orange",
      "start_date": "2024-01-01T00:00:00Z",
      "end_date": "2024-12-31T23:59:59Z"
    }
  }
  ```

  ### Get Specific Purchase Details

  ```json
  {
    "resource": "purchase",
    "operation": "get",
    "purchaseUid": "07cc67f4-45d6-494b-adac-09b5cbc7e2b5"
  }
  ```

  ### Create a Contact with Group Assignment

  ```json
  {
    "resource": "contact",
    "operation": "create",
    "numero": "+224123456789",
    "additionalFields": {
      "name": "John Doe",
      "groupes_id": "1,2,3"
    }
  }
  ```

  ### Launch an SMS Campaign

  ```json
  {
    "resource": "campaign",
    "operation": "create",
    "name": "Welcome Campaign",
    "senderName": "YourBrand",
    "message": "Welcome to our service! Enjoy 20% off your first order.",
    "groupsIds": "1,2"
  }
  ```

  ### Check Account Balance

  ```json
  {
    "resource": "account",
    "operation": "getBalance"
  }
  ```

  ## 🌍 Regional Support

  Optimized for African markets with:
  - Guinea country code (+224) auto-formatting
  - Support for local phone number formats

  ## 🛠️ Compatibility

  - **n8n Version**: 0.190.0 or later
  - **Node.js Version**: 16.x or later
  - **API Version**: Nimba SMS API v1

  ## 📈 Use Cases

  ### E-commerce
  - Order confirmations and shipping notifications
  - Abandoned cart recovery campaigns
  - Customer support and feedback collection

  ### Marketing
  - Promotional campaigns and special offers
  - Event notifications and reminders
  - Customer segmentation and targeting

  ### Business Operations
  - Employee notifications and alerts
  - Appointment reminders
  - System status updates and monitoring

  ### Customer Service
  - Support ticket updates
  - Account verification codes
  - Service outage notifications

  ## 🤝 Support & Resources

  - **Documentation**: [Nimba SMS API Docs](https://developers.nimbasms.com)
  - **Community**: [n8n Community Forum](https://community.n8n.io)
  - **Issues**: [GitHub Issues](https://github.com/nimbasms/n8n-nodes-nimbasms/issues)
  - **Support**: Contact contact@nimbasms.com for API-related questions

  ## 📄 License

  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

  ## 🔗 Links

  - [npm Package](https://www.npmjs.com/package/n8n-nodes-nimbasms)
  - [Nimba SMS Website](https://www.nimbasms.com)
  - [n8n Website](https://n8n.io)

ai_documentation_summary:
  {"purpose":"This n8n community node integrates with the Nimba SMS API to send SMS messages, manage contacts and groups, handle campaigns, and monitor account operations.","capabilities":["Send individual SMS messages","Retrieve SMS message history","Create, update, and delete contacts","Organize contacts into groups","Create and manage SMS campaigns","Check account balance and SMS packs","View purchase history and invoices","Manage custom sender names","Retrieve specific message or purchase details by ID"],"authentication":"API key required (Service ID and Secret Token)","commonUseCases":["E-commerce order confirmations and shipping notifications","Marketing promotional campaigns and special offers","Customer segmentation and targeted messaging","Appointment reminders and system alerts","Support ticket updates and verification codes"],"limitations":["Optimized primarily for African markets with specific country code support","Requires n8n version 0.190.0 or later","Requires Node.js version 16.x or later"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.code"]}


node_type: @steuerboard/n8n-nodes-steuerboard.steuerboard
package_name: @steuerboard/n8n-nodes-steuerboard
display_name: Steuerboard
description: Consume the Steuerboard API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: matheins
author_github_url: https://github.com/steuerboard/n8n-nodes-steuerboard.git
npm_package_name: @steuerboard/n8n-nodes-steuerboard
npm_version: 1.8.0
community_fetched_at: 2026-03-25T21:19:40.687Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "client",
      "options": [
        {
          "name": "Admin User",
          "value": "adminUser"
        },
        {
          "name": "Client",
          "value": "client"
        },
        {
          "name": "File",
          "value": "file"
        },
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "User",
          "value": "user"
        },
        {
          "name": "Workspace",
          "value": "workspace"
        },
        {
          "name": "Workspace Member",
          "value": "workspaceMember"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List accountant users",
          "routing": {
            "request": {
              "url": "=/admin/users",
              "method": "GET"
            }
          },
          "description": "Returns a paginated list of accountant users"
        },
        {
          "name": "Get by ID",
          "value": "get",
          "action": "Get an accountant user by ID",
          "routing": {
            "request": {
              "url": "=/admin/users/{{$parameter.userId}}",
              "method": "GET"
            }
          },
          "description": "Returns a single accountant user by ID"
        },
        {
          "name": "Invite",
          "value": "create",
          "action": "Invite an accountant user",
          "routing": {
            "request": {
              "url": "=/admin/users",
              "method": "POST"
            }
          },
          "description": "Invites a new accountant user and returns the created record"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an accountant user",
          "routing": {
            "request": {
              "url": "=/admin/users/{{$parameter.userId}}",
              "method": "PATCH"
            }
          },
          "description": "Updates an accountant user by ID"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an accountant user",
          "routing": {
            "request": {
              "url": "=/admin/users/{{$parameter.userId}}",
              "method": "DELETE"
            }
          },
          "description": "Deletes an accountant user by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "adminUser"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a client",
          "routing": {
            "request": {
              "url": "=/admin/clients",
              "method": "POST"
            }
          },
          "description": "Creates a new client for the accountant"
        },
        {
          "name": "Get by ID",
          "value": "get",
          "action": "Get a client by ID",
          "routing": {
            "request": {
              "url": "=/admin/clients/{{$parameter.clientId}}",
              "method": "GET"
            }
          },
          "description": "Returns a single client object by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List clients",
          "routing": {
            "request": {
              "url": "=/admin/clients",
              "method": "GET"
            }
          },
          "description": "Returns a list of clients"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a client",
          "routing": {
            "request": {
              "url": "=/admin/clients/{{$parameter.clientId}}",
              "method": "PATCH"
            }
          },
          "description": "Updates a client by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List users",
          "routing": {
            "request": {
              "url": "=/users",
              "method": "GET",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Returns a paginated list of client users"
        },
        {
          "name": "Get by ID",
          "value": "get",
          "action": "Get a user by ID",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter.userId}}",
              "method": "GET",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Returns a single client user by ID"
        },
        {
          "name": "Invite",
          "value": "create",
          "action": "Invite a user",
          "routing": {
            "request": {
              "url": "=/users",
              "method": "POST",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Invites a new client user and returns the created record"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a user",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter.userId}}",
              "method": "PATCH",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Updates a client user by ID"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a user",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter.userId}}",
              "method": "DELETE",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Deletes a client user by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List workspaces",
          "routing": {
            "request": {
              "url": "=/workspaces",
              "method": "GET",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Returns a list of workspaces"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a workspace",
          "routing": {
            "request": {
              "url": "=/workspaces",
              "method": "POST",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Creates a new workspace and returns the created workspace"
        },
        {
          "name": "Get by ID",
          "value": "get",
          "action": "Get a workspace by ID",
          "routing": {
            "request": {
              "url": "=/workspaces/{{$parameter.workspaceId}}",
              "method": "GET",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Returns a single workspace object by ID"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a workspace",
          "routing": {
            "request": {
              "url": "=/workspaces/{{$parameter.workspaceId}}",
              "method": "PATCH",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Updates a workspace by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "workspace"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List workspace members",
          "routing": {
            "request": {
              "url": "=/workspaces/{{$parameter.workspaceId}}/members",
              "method": "GET",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Returns workspace members for a workspace"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a workspace member",
          "routing": {
            "request": {
              "url": "=/workspaces/{{$parameter.workspaceId}}/members",
              "method": "POST",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Creates a new workspace member"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Remove a workspace member",
          "routing": {
            "request": {
              "url": "=/workspaces/{{$parameter.workspaceId}}/members",
              "method": "DELETE",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Removes a workspace member from a workspace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "workspaceMember"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List files",
          "routing": {
            "request": {
              "url": "=/files",
              "method": "GET",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Returns a paginated list of files"
        },
        {
          "name": "Upload",
          "value": "create",
          "action": "Upload a file",
          "routing": {
            "request": {
              "url": "=/files",
              "method": "POST",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Uploads a new file"
        },
        {
          "name": "Get by ID",
          "value": "get",
          "action": "Get a file by ID",
          "routing": {
            "request": {
              "url": "=/files/{{$parameter.fileId}}",
              "method": "GET",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Returns a single file object by ID"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a file",
          "routing": {
            "request": {
              "url": "=/files/{{$parameter.fileId}}",
              "method": "DELETE",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Deletes a file by ID"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a file",
          "routing": {
            "request": {
              "url": "=/files/{{$parameter.fileId}}",
              "method": "PATCH",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Updates a file by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List tasks",
          "routing": {
            "request": {
              "url": "=/tasks",
              "method": "GET",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Returns a list of tasks"
        },
        {
          "name": "Get by ID",
          "value": "get",
          "action": "Get a task by ID",
          "routing": {
            "request": {
              "url": "=/tasks/{{$parameter.taskId}}",
              "method": "GET",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Returns a single task object by ID"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a task",
          "routing": {
            "request": {
              "url": "=/tasks",
              "method": "POST",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Creates a new task"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a task",
          "routing": {
            "request": {
              "url": "=/tasks/{{$parameter.taskId}}",
              "method": "PATCH",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Updates an existing task"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a task",
          "routing": {
            "request": {
              "url": "=/tasks/{{$parameter.taskId}}",
              "method": "DELETE",
              "headers": {
                "x-client-id": "={{ $parameter.clientId }}"
              }
            }
          },
          "description": "Deletes a task by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "List",
      "value": "list",
      "action": "List accountant users",
      "routing": {
        "request": {
          "url": "=/admin/users",
          "method": "GET"
        }
      },
      "description": "Returns a paginated list of accountant users"
    },
    {
      "name": "Get by ID",
      "value": "get",
      "action": "Get an accountant user by ID",
      "routing": {
        "request": {
          "url": "=/admin/users/{{$parameter.userId}}",
          "method": "GET"
        }
      },
      "description": "Returns a single accountant user by ID"
    },
    {
      "name": "Invite",
      "value": "create",
      "action": "Invite an accountant user",
      "routing": {
        "request": {
          "url": "=/admin/users",
          "method": "POST"
        }
      },
      "description": "Invites a new accountant user and returns the created record"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an accountant user",
      "routing": {
        "request": {
          "url": "=/admin/users/{{$parameter.userId}}",
          "method": "PATCH"
        }
      },
      "description": "Updates an accountant user by ID"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an accountant user",
      "routing": {
        "request": {
          "url": "=/admin/users/{{$parameter.userId}}",
          "method": "DELETE"
        }
      },
      "description": "Deletes an accountant user by ID"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a client",
      "routing": {
        "request": {
          "url": "=/admin/clients",
          "method": "POST"
        }
      },
      "description": "Creates a new client for the accountant"
    },
    {
      "name": "Get by ID",
      "value": "get",
      "action": "Get a client by ID",
      "routing": {
        "request": {
          "url": "=/admin/clients/{{$parameter.clientId}}",
          "method": "GET"
        }
      },
      "description": "Returns a single client object by ID"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List clients",
      "routing": {
        "request": {
          "url": "=/admin/clients",
          "method": "GET"
        }
      },
      "description": "Returns a list of clients"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a client",
      "routing": {
        "request": {
          "url": "=/admin/clients/{{$parameter.clientId}}",
          "method": "PATCH"
        }
      },
      "description": "Updates a client by ID"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List users",
      "routing": {
        "request": {
          "url": "=/users",
          "method": "GET",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Returns a paginated list of client users"
    },
    {
      "name": "Get by ID",
      "value": "get",
      "action": "Get a user by ID",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter.userId}}",
          "method": "GET",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Returns a single client user by ID"
    },
    {
      "name": "Invite",
      "value": "create",
      "action": "Invite a user",
      "routing": {
        "request": {
          "url": "=/users",
          "method": "POST",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Invites a new client user and returns the created record"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a user",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter.userId}}",
          "method": "PATCH",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Updates a client user by ID"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a user",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter.userId}}",
          "method": "DELETE",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Deletes a client user by ID"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List workspaces",
      "routing": {
        "request": {
          "url": "=/workspaces",
          "method": "GET",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Returns a list of workspaces"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a workspace",
      "routing": {
        "request": {
          "url": "=/workspaces",
          "method": "POST",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Creates a new workspace and returns the created workspace"
    },
    {
      "name": "Get by ID",
      "value": "get",
      "action": "Get a workspace by ID",
      "routing": {
        "request": {
          "url": "=/workspaces/{{$parameter.workspaceId}}",
          "method": "GET",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Returns a single workspace object by ID"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a workspace",
      "routing": {
        "request": {
          "url": "=/workspaces/{{$parameter.workspaceId}}",
          "method": "PATCH",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Updates a workspace by ID"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List workspace members",
      "routing": {
        "request": {
          "url": "=/workspaces/{{$parameter.workspaceId}}/members",
          "method": "GET",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Returns workspace members for a workspace"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a workspace member",
      "routing": {
        "request": {
          "url": "=/workspaces/{{$parameter.workspaceId}}/members",
          "method": "POST",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Creates a new workspace member"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Remove a workspace member",
      "routing": {
        "request": {
          "url": "=/workspaces/{{$parameter.workspaceId}}/members",
          "method": "DELETE",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Removes a workspace member from a workspace"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List files",
      "routing": {
        "request": {
          "url": "=/files",
          "method": "GET",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Returns a paginated list of files"
    },
    {
      "name": "Upload",
      "value": "create",
      "action": "Upload a file",
      "routing": {
        "request": {
          "url": "=/files",
          "method": "POST",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Uploads a new file"
    },
    {
      "name": "Get by ID",
      "value": "get",
      "action": "Get a file by ID",
      "routing": {
        "request": {
          "url": "=/files/{{$parameter.fileId}}",
          "method": "GET",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Returns a single file object by ID"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a file",
      "routing": {
        "request": {
          "url": "=/files/{{$parameter.fileId}}",
          "method": "DELETE",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Deletes a file by ID"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a file",
      "routing": {
        "request": {
          "url": "=/files/{{$parameter.fileId}}",
          "method": "PATCH",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Updates a file by ID"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List tasks",
      "routing": {
        "request": {
          "url": "=/tasks",
          "method": "GET",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Returns a list of tasks"
    },
    {
      "name": "Get by ID",
      "value": "get",
      "action": "Get a task by ID",
      "routing": {
        "request": {
          "url": "=/tasks/{{$parameter.taskId}}",
          "method": "GET",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Returns a single task object by ID"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a task",
      "routing": {
        "request": {
          "url": "=/tasks",
          "method": "POST",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Creates a new task"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a task",
      "routing": {
        "request": {
          "url": "=/tasks/{{$parameter.taskId}}",
          "method": "PATCH",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Updates an existing task"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a task",
      "routing": {
        "request": {
          "url": "=/tasks/{{$parameter.taskId}}",
          "method": "DELETE",
          "headers": {
            "x-client-id": "={{ $parameter.clientId }}"
          }
        }
      },
      "description": "Deletes a task by ID"
    }
  ]

npm_readme:
  # n8n-nodes-steuerboard

  This is an n8n community node. It lets you use Steuerboard API in your n8n workflows.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Usage](#usage)
  [Resources](#resources)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  - Clients
    - List clients
    - Get client by ID

  ## Credentials

  This node uses API key authentication via an Authorization: Bearer header.

  How to get an API key:

  - Create an account at steuerboard.net and sign in.
  - In your dashboard, open the API keys section and create a new API key.
  - Copy the key value. Keep it secure.
  - Details and up-to-date instructions: see Authentication.

  In n8n, create credentials of type Steuerboard API and set:

  API Key: your generated key
  Requests are sent with:

  Authorization: Bearer YOUR_API_KEY

  ## Compatibility

  Compatible with n8n@1.60.0 or later

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Steuerboard docs](https://docs.steuerboard.com)
  - [Steuerboard Website](https://steuerboard.net)

ai_documentation_summary:
  {"purpose":"This n8n community node enables users to interact with the Steuerboard API by performing client management operations within n8n workflows.","capabilities":["List all clients in Steuerboard","Retrieve a specific client by ID"],"authentication":"API key via Authorization: Bearer header","commonUseCases":["Automating client data retrieval in n8n workflows","Integrating Steuerboard client management with other automation tasks"],"limitations":["Limited to client listing and retrieval operations only","Requires manual API key creation and management in n8n credentials"],"relatedNodes":["HTTP Request node","Steuerboard API node"]}


node_type: n8n-nodes-roam.roam
package_name: n8n-nodes-roam
display_name: Roam
description: Interact with Roam
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: robfigroam
author_github_url: https://github.com/WonderInventions/
npm_package_name: n8n-nodes-roam
npm_version: 0.1.10
community_fetched_at: 2026-03-25T21:19:40.687Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Meeting",
          "value": "meeting"
        },
        {
          "name": "Message",
          "value": "message"
        },
        {
          "name": "Transcript",
          "value": "transcript"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send Message",
          "value": "send",
          "action": "Send a message",
          "description": "Send a message to a Roam group"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create Meeting Link",
          "value": "create",
          "action": "Create a meeting link",
          "description": "Create a meeting link"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "meeting"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get Transcript Info",
          "value": "info",
          "action": "Get transcript info",
          "description": "Get detailed information about a specific transcript"
        },
        {
          "name": "List Transcripts",
          "value": "list",
          "action": "List transcripts",
          "description": "List transcripts with optional date filtering"
        },
        {
          "name": "Prompt Transcript",
          "value": "prompt",
          "action": "Prompt a transcript",
          "description": "Ask a question about a transcript using AI"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transcript"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send Message",
      "value": "send",
      "action": "Send a message",
      "description": "Send a message to a Roam group"
    },
    {
      "name": "Create Meeting Link",
      "value": "create",
      "action": "Create a meeting link",
      "description": "Create a meeting link"
    },
    {
      "name": "Get Transcript Info",
      "value": "info",
      "action": "Get transcript info",
      "description": "Get detailed information about a specific transcript"
    },
    {
      "name": "List Transcripts",
      "value": "list",
      "action": "List transcripts",
      "description": "List transcripts with optional date filtering"
    },
    {
      "name": "Prompt Transcript",
      "value": "prompt",
      "action": "Prompt a transcript",
      "description": "Ask a question about a transcript using AI"
    }
  ]

npm_readme:
  # n8n-nodes-roam

  This is an n8n community node. It lets you use Roam in your n8n workflows.

  Roam is a video conferencing and messaging platform that enables teams to connect, collaborate, and communicate effectively through video meetings, messaging, and integrations.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials)  
  [Compatibility](#compatibility)  
  [Usage](#usage)  
  [Resources](#resources)  
  [Version history](#version-history)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  ### Roam Node
  - **Send Message**: Send messages to Roam groups
  - **Create Meeting Link**: Create new video meeting links

  ### Roam Trigger Node
  - **Webhook Events**: Trigger workflows when webhook events are received from Roam

  ## Credentials

  To use this node, you need to authenticate with Roam's API using OAuth2.

  1. Go to your Roam developer account at [developer.ro.am](https://developer.ro.am)
  2. Create an API Key application
  3. Enable permissions corresponding to what you want it to do: 
    - Actions
      - Send chat message: `chat:send_message`, `groups:read`
      - Create meeting link: `meetinglink:write`
    - Webhooks: `webhook:write`
      - New Recording: `recordings:read`
      - New Transcript: `transcript:read`
  3. In n8n, create a new credential of type "Roam API Key"
  4. Fill in your secret key

  ## Compatibility

  - n8n version: 1.0.0+
  - Node.js version: 18.0.0+
  - Tested with n8n versions: 1.0.x, 1.1.x

  ## Usage

  ### Basic Setup
  1. Install the community node
  2. Set up your Roam OAuth2 credentials
  3. Use the Roam node to send messages or create meetings
  4. Use the Roam Trigger node to respond to webhook events

  ### Example Workflow
  1. **Trigger**: HTTP Request (when a form is submitted)
  2. **Action**: Roam - Send Message (notify team about the submission)
  3. **Action**: Roam - Create Meeting Link (schedule a follow-up meeting)

  ## Development

  To run n8n locally: 

  - Run `ngrok http 5678` to support incoming webhooks. Set `WEBHOOK_URL` to the ngrok URL.
  - Run `npm run dev`

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Roam API Documentation](https://developer.ro.am/)
  * [Roam Developer Portal](https://developer.ro.am)

  ## Version history

  ### 0.1.1
  - Initial release
  - Roam node with meeting and messaging operations
  - Roam Trigger node for webhook events
  - Basic transport layer for API communication
  - OAuth2 authentication

ai_documentation_summary:
  {"purpose":"A community node that enables n8n workflows to interact with Roam, a video conferencing and messaging platform, for sending messages and creating meeting links.","capabilities":["Send messages to Roam groups","Create new video meeting links","Trigger workflows on webhook events (new recordings, new transcripts)","Read recordings and transcripts via webhooks"],"authentication":"OAuth2","commonUseCases":["Notifying teams about form submissions via group messages","Scheduling follow-up meetings automatically after events","Automated responses to new Roam recordings or transcripts"],"limitations":["Community node (not official n8n node)","Requires manual setup of OAuth2 credentials via Roam developer portal","Requires n8n version 1.0.0+ and Node.js 18.0.0+"],"relatedNodes":["HTTP Request","Webhook"]}


node_type: @orq-ai/n8n-nodes-orq.orqDeployment
package_name: @orq-ai/n8n-nodes-orq
display_name: Orq Deployment
description: Invoke Orq AI deployment
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: sohrabhosseini
author_github_url: https://github.com/orq-ai/orqkit.git
npm_package_name: @orq-ai/n8n-nodes-orq
npm_version: 1.1.0
community_fetched_at: 2026-03-25T21:19:40.688Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # @orq-ai/n8n-nodes-orq

  Community nodes for integrating [Orq AI](https://orq.ai) with n8n workflows. These nodes provide seamless access to Orq AI's deployment and knowledge base capabilities within your automation workflows.

  ## Features

  - **Deployment Invocation**: Execute Orq AI deployments with messages, context, and inputs
  - **Knowledge Base Search**: Search and retrieve content from Orq knowledge bases
  - **Dynamic Configuration**: Automatically load available deployments and knowledge bases
  - **Multi-modal Support**: Send text and image content to vision-capable models
  - **Metadata Filtering**: Advanced filtering options for knowledge base searches
  - **Error Handling**: Built-in error handling with continue-on-fail support

  ## Installation

  ### Community Node Installation

  Follow the [n8n community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) to install this package.

  ### Manual Installation

  ```bash
  bun add @orq-ai/n8n-nodes-orq
  ```

  ### Docker Installation

  If using n8n with Docker, set the environment variable:

  ```bash
  N8N_COMMUNITY_NODE_PACKAGES=@orq-ai/n8n-nodes-orq
  ```

  ### Local Development Installation

  For local development and testing with n8n:

  1. Clone and navigate to the package:
  ```bash
  git clone https://github.com/orq-ai/orqkit.git
  cd orqkit/packages/n8n-nodes-orq
  ```

  2. Install dependencies:
  ```bash
  bun install
  ```

  3. Build the nodes:
  ```bash
  bunx nx build n8n-nodes-orq
  ```

  4. Start n8n with custom nodes:
  ```bash
  N8N_CUSTOM_EXTENSIONS="$(pwd)" n8n start
  ```

  The nodes will appear as "OrqDeployment" and "OrqKnowledgeBaseSearch" in the n8n node panel.

  ## Authentication

  1. Sign up or log in at [Orq AI](https://orq.ai)
  2. Navigate to your account settings to generate an API key
  3. In n8n, create new credentials:
     - Go to **Credentials** → **New**
     - Select **Orq API**
     - Enter your API key
     - Save the credentials

  ## Available Nodes

  ### Orq Deployment

  Invoke Orq AI deployments to process messages with AI models.

  #### Configuration

  - **Deployment Key**: Select from your available deployments or specify via expression
  - **Messages**: Add conversation messages with roles (User, System, Assistant)
  - **Context**: Set key-value pairs for deployment routing
  - **Inputs**: Provide values for prompt template variables

  #### Message Types

  - **Text Messages**: Standard text content for all roles
  - **Image Messages**: For User role only, supporting:
    - Image URLs
    - Base64 encoded images
    - Optional text descriptions with images

  #### Example Use Cases

  - Generate content based on templates
  - Process customer inquiries
  - Analyze images with vision models
  - Chain multiple AI operations

  ### Orq Knowledge Base Search

  Search and retrieve relevant content from your Orq knowledge bases.

  #### Configuration

  - **Knowledge Base**: Select from your available knowledge bases
  - **Query**: Search query to find relevant content
  - **Metadata Filters**: Optional filtering with AND/OR conditions or custom JSON

  #### Filter Types

  - **None**: No filtering, return all matching results
  - **AND**: All filter conditions must match
  - **OR**: Any filter condition must match
  - **Custom JSON**: Advanced recursive filter structures

  #### Example Use Cases

  - Semantic search across documents
  - Context retrieval for RAG applications
  - Content discovery and recommendations
  - Metadata-based filtering

  ## Workflow Examples

  ### Basic Text Generation

  ```yaml
  1. Trigger (e.g., Webhook)
  2. Orq Deployment
     - Deployment: "content-generator"
     - Input: { topic: "{{$json.topic}}" }
     - Message: "Generate an article"
  3. Output (e.g., Google Sheets)
  ```

  ### Knowledge-Enhanced Response

  ```yaml
  1. Trigger (e.g., Form submission)
  2. Orq Knowledge Base Search
     - Query: "{{$json.question}}"
     - Knowledge Base: "product-docs"
  3. Orq Deployment
     - Context from search results
     - Generate informed response
  4. Send response (e.g., Email)
  ```

  ### Image Analysis Pipeline

  ```yaml
  1. Image input (e.g., S3 trigger)
  2. Orq Deployment
     - Vision model deployment
     - Image URL from trigger
     - Analyze and extract data
  3. Store results (e.g., Database)
  ```

  ## Development

  ```bash
  # Build the package
  bunx nx build n8n-nodes-orq

  # Run development mode
  bunx nx dev n8n-nodes-orq

  # Test locally with n8n
  bun run test:local
  ```

  ## Resources

  - [n8n Documentation](https://docs.n8n.io)
  - [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)
  - [Orq AI Documentation](https://docs.orq.ai)
  - [Orq AI Platform](https://orq.ai)

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with Orq AI by allowing workflow execution of AI deployments and searching knowledge bases with support for multi-modal inputs.","capabilities":["Invoke Orq AI deployments with messages, context, and inputs","Search and retrieve content from Orq knowledge bases","Support for text and image content (vision models)","Advanced metadata filtering for knowledge base searches","Dynamic configuration of deployments and knowledge bases","Built-in error handling with continue-on-fail support"],"authentication":"API key required (via Orq API credentials in n8n)","commonUseCases":["Generate content based on templates","Process customer inquiries","Analyze images with vision models","Semantic search across documents for RAG applications","Chain multiple AI operations in a workflow"],"limitations":[],"relatedNodes":["Orq Knowledge Base Search","Webhook Trigger","Google Sheets Output","Database Store"]}


node_type: n8n-nodes-transcript-lol.transcriptLolTrigger
package_name: n8n-nodes-transcript-lol
display_name: Transcript LOL Trigger
description: Starts the workflow when a Transcript.lol event occurs
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: pkpio
author_github_url: https://github.com/transcript-lol/
npm_package_name: n8n-nodes-transcript-lol
npm_version: 0.1.0
community_fetched_at: 2026-03-25T21:19:40.688Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # n8n-nodes-transcript-lol

  This is an n8n community node for [Transcript.lol](https://transcript.lol) - an AI-powered audio and video transcription service.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Resources](#resources)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  ### Transcript.lol Node

  #### Recording Resource
  - **Create** - Create a new recording for transcription
  - **Get** - Get a recording by ID
  - **Get Many** - Get many recordings from a workspace

  #### Transcript Resource
  - **Get** - Get transcript for a recording in various formats (JSON, Plain Text, CSV, Word, SRT, VTT)

  #### Workspace Resource
  - **Get Many** - Get all workspaces accessible to your account

  ### Transcript.lol Trigger Node

  Listen for events from Transcript.lol:

  - **New Transcript** - Triggers when a transcript is completed for a recording
  - **Transcript Failed** - Triggers when a transcript fails to be created
  - **New Insights** - Triggers when new AI insights are generated for a recording
  - **Translation Created** - Triggers when a translation is completed for a recording

  ## Credentials

  This node uses OAuth2 with PKCE (Proof Key for Code Exchange) for secure authentication. No client secret is required — the integration uses a public client ID (`tlol_n8n_client`) and relies on PKCE's cryptographic code challenge/verifier exchange to secure the authorization flow.

  ### Setup

  1. In n8n, create new credentials for "Transcript.lol OAuth2 API"
  2. Click "Connect my account" — n8n will automatically handle the PKCE flow
  3. Sign in to your [Transcript.lol account](https://transcript.lol) and authorize the connection
  4. Once authorized, you can use the node in your workflows

  ### How It Works

  1. n8n generates a random `code_verifier` and derives a `code_challenge` (SHA-256 hash)
  2. The `code_challenge` is sent with the authorization request to Transcript.lol
  3. After you authorize, n8n sends the original `code_verifier` to the token endpoint
  4. Transcript.lol verifies that `SHA256(code_verifier)` matches the stored `code_challenge`
  5. On success, an access token (Bearer token) is issued and used for all API requests

  This approach eliminates the need for a shared client secret, making it safe for the credential configuration to be distributed as part of a community node.

  **Note:** You need to be on the Unlimited Plan to use the n8n integration.

  ## Compatibility

  - Tested with n8n version 1.0.0 and above
  - Requires Node.js v22 or higher

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Transcript.lol Documentation](https://transcript.lol/docs)
  - [Transcript.lol API Reference](https://transcript.lol/docs/api)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"A community n8n node that triggers workflows when specific events occur in Transcript.lol, an AI-powered audio and video transcription service.","capabilities":["Trigger on new transcript completion","Trigger on transcript failure","Trigger on new AI insights generation","Trigger on translation completion","Create new recordings for transcription","Retrieve single or multiple recordings by ID","Retrieve transcripts in multiple formats (JSON, Plain Text, CSV, Word, SRT, VTT)","List all accessible workspaces"],"authentication":"OAuth2 with PKCE (Proof Key for Code Exchange)","commonUseCases":["Automate follow-up actions when a transcription is completed","Alert team members when a transcription fails","Process new AI insights automatically","Handle translation completions in a workflow"],"limitations":["Requires Transcript.lol Unlimited Plan","Requires Node.js v22 or higher","Compatible with n8n version 1.0.0 and above"],"relatedNodes":["n8n-nodes-core-credentials","n8n-nodes-core-start-of-flow","n8n-nodes-core-webhook"]}


node_type: @permitio/n8n-nodes-permitio.permit
package_name: @permitio/n8n-nodes-permitio
display_name: Permit
description: Interact with Permit.io authorization service
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: permit-dev-manager
author_github_url: https://github.com/permitio/n8n-nodes-permitio.git
npm_package_name: @permitio/n8n-nodes-permitio
npm_version: 0.2.3
community_fetched_at: 2026-03-25T21:19:40.689Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "check",
      "options": [
        {
          "name": "Check",
          "value": "check",
          "action": "Check permission",
          "description": "Check if user has permission"
        },
        {
          "name": "Get User Permissions",
          "value": "getUserPermissions",
          "action": "Get user permissions",
          "description": "Get all permissions for a user"
        },
        {
          "name": "Get Authorized Users",
          "value": "getAuthorizedUsers",
          "action": "Get authorized users",
          "description": "Get users authorized for an action"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    },
    {
      "name": "resource",
      "type": "string",
      "default": "",
      "required": true,
      "description": "Resource to check access to",
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "operation": [
            "check"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "name": "Check",
      "value": "check",
      "action": "Check permission",
      "description": "Check if user has permission"
    },
    {
      "name": "Get User Permissions",
      "value": "getUserPermissions",
      "action": "Get user permissions",
      "description": "Get all permissions for a user"
    },
    {
      "name": "Get Authorized Users",
      "value": "getAuthorizedUsers",
      "action": "Get authorized users",
      "description": "Get users authorized for an action"
    }
  ]

npm_readme:
  ![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)

  # n8n-nodes-permitio

  An n8n community node for integrating with [Permit.io](https://permit.io) authorization service.
  Permit is a fullstack, plug-and-play application-level authorization solution. This node allows you to check permissions, retrieve user permissions, and get authorized users directly within your n8n workflows.

  ![ABAC Expense Approval System](/assets/permit-n8n-workflow.png)

  ## Features

  - **Check Permissions**: Verify if a user has permission to perform a specific action on a resource
  - **Get User Permissions**: Retrieve all permissions for a specific user across tenants and resources
  - **Get Authorized Users**: Find all users authorized to perform a specific action on a resource type

  ## Installation

  **Install via n8n UI:**

  1. In your n8n workflow editor, click the "+" to add a new node
  2. Search for "Permit" in the node search box
  3. Click on the Permit node in the search results
  4. Click "Install node" button in the Node details panel
  5. Wait for installation to complete
  6. The Permit node will now be available in your workflow

  **Package name:** `@permitio/n8n-nodes-permitio`
  ![Installation Guide](./assets/permit-n8n-installation.gif)

  For alternative installation methods, follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Credentials

  To use this node, you need to set up Permit.io API credentials in n8n.

  **Prerequisites:**

  - A [Permit.io account](https://app.permit.io)
  - Your Permit.io API key

  **Setting up credentials:**

  1. In n8n, go to the **Overview** tab in the left sidebar
  2. Click on the **Credentials** tab
  3. Click **"Add first credential"** (or **"Create credential"** if you have existing credentials)
  4. Search for **"Permit"** and select **"Permit API"**
  5. Fill in the required fields:
     - **API Key**: Your Permit.io API key (found in Permit.io dashboard under Settings → API Keys)
     - **PDP URL**: `https://cloudpdp.api.permit.io` (default for cloud PDP)

  **For ABAC and ReBAC policies:**

  - **Local PDP**: If running a self-hosted PDP container, you'll need to expose it publicly (e.g., using ngrok) and use that public URL
  - Example: `https://abc123.ngrok.io` instead of `http://localhost:7766`
  - This provides better performance and supports advanced policy types

  **Getting your API key:**

  1. Log into your [Permit.io dashboard](https://app.permit.io)
  2. Go to Settings → API Keys
  3. Copy your API key and paste it into the n8n credential configuration

  ![Credentials Workflow](./assets/credentials-workflow.gif)

  **Note:** Keep your API key secure and never share it publicly.

  ## Operations

  **Check**

  - Check if a user has permission to perform an action on a resource
  - Supports RBAC, ABAC, and ReBAC policies with automatic attribute extraction
  - Returns boolean permission result with detailed debug information

  _Configuration:_

  - **User:** `{{$node['Webhook'].json.body.employee_email}}`
  - **Action:** `submit`
  - **Resource:** `expense`
  - **Enable ABAC:** ✅ (automatically extracts `expense_amount`, `category`, etc.)

  _Response Sample:_

  ```json
  {
  	"allow": true,
  	"decision": "2024-01-15T10:30:00Z",
  	"debug": {
  		"reason": "User john.employee can submit expense within $2000 limit"
  	}
  }
  ```

  **Get User Permissions**

  - Get all permissions for a specific user
  - Filter by resource types
  - Optional ABAC support for dynamic permissions

  _Configuration:_

  - **User:** `john.employee`
  - **Resource Types:** `expense,document`
  - **Enable ABAC:** ✅

  _Response Sample:_

  ```json
  {
  	"permissions": [
  		{
  			"resource": "expense",
  			"action": "submit",
  			"allowed": true
  		}
  	]
  }
  ```

  **Get Authorized Users**

  - Find all users who can perform a specific action on a resource
  - Useful for approval workflows and delegation
  - Returns list of authorized users with their roles and permissions

  _Configuration:_

  - **Action:** `approve`
  - **Resource Type:** `expense`
  - **Resource Attributes:** `{"expense_amount": 1500, "category": "Travel"}`
  - **Enable ABAC:** ✅

  _Response Sample:_

  ```json
  [
  	{
  		"resource": "expense:*",
  		"tenant": "default",
  		"users": {
  			"taofeek2sure@gmail.com": [
  				{
  					"user": "taofeek2sure@gmail.com",
  					"tenant": "default",
  					"resource": "resourceset_all_5fexpenses",
  					"role": "userset_finance_5fteam"
  				}
  			]
  		}
  	}
  ]
  ```

  ## Basic Usage Example

  ![ABAC Expense Example](/assets/abac-expense-example.png)

  This example shows how to build an ABAC-powered expense approval workflow using the Permit node.

  **Scenario:** Employees submit expenses for approval. The system automatically determines if they can submit based on their spending limits, then routes to authorized approvers.

  **Workflow:**

  1. **Webhook** receives expense submission (`employee_email`, `expense_amount`, `category`)
  2. **Check Permission** with ABAC enabled - automatically extracts expense attributes
  3. **IF node** branches on approval/denial
  4. **TRUE path:** Get Authorized Users → Send Email to approver
  5. **FALSE path:** Return 403 error response

  **Result:**

  - Employee submitting $1500 (within $2000 limit) → Email sent to finance approver
  - Employee submitting $2500 (exceeds limit) → Access denied with detailed error

  This demonstrates how the Permit node enables complex authorization workflows with minimal configuration.

  ## Compatibility

  - **Minimum n8n version**: 1.0+
  - **Node.js**: 20.15+ required
  - **Tested with**: n8n 1.111.0

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Permit.io Documentation](https://docs.permit.io/)
  - [Permit.io API Reference](https://api.permit.io/v2/redoc)
  - [Getting Started with Permit.io](https://docs.permit.io/quickstart/)

  **Authorization Models:**

  - [ABAC Guide - Building Your First ABAC Policy](https://docs.permit.io/how-to/build-policies/abac/building-abac-policy/)
  - [ReBAC Guide - What is ReBAC?](https://docs.permit.io/how-to/build-policies/rebac/overview/)
  - [Create a ReBAC Policy](https://docs.permit.io/overview/create-a-rebac-policy/)

  **Infrastructure & Deployment:**

  - [Terraform Provider Guide](https://docs.permit.io/integrations/infra-as-code/terraform-provider/)
  - [Self-Deployed PDP for ABAC/ReBAC](https://docs.permit.io/concepts/pdp/overview/)
  - [Running Local PDP Container](https://docs.permit.io/overview/connecting-your-app/)

  **API Methods:**

  - [Permit.check() - Permission Checking](https://docs.permit.io/how-to/enforce-permissions/check/)
  - [Get User Permissions API](https://docs.permit.io/how-to/enforce-permissions/user-permissions/)
  - [Get Authorized Users API](https://docs.permit.io/how-to/enforce-permissions/authorized-users/)

  ## License

  [MIT](LICENSE.md)

  ## Contributing

  Contributions are welcome! Please read our contributing guidelines and submit pull requests to our GitHub repository.

  ---

  Built with ❤️ for the n8n community

ai_documentation_summary:
  {"purpose":"A community n8n node that integrates with Permit.io to handle authorization checks, retrieve user permissions, and find authorized users for workflow automation.","capabilities":["Check if a user has permission to perform a specific action on a resource","Retrieve all permissions for a specific user across tenants and resources","Find all users authorized to perform a specific action on a resource type","Support for RBAC, ABAC, and ReBAC authorization policies","Automatic attribute extraction for ABAC policies","Detailed debug information in permission check responses"],"authentication":"API Key required (Permit.io API key)","commonUseCases":["Expense approval workflows with spending limits","Role-based access control (RBAC) enforcement","Attribute-based access control (ABAC) for dynamic permissions","Finding authorized approvers for delegation workflows","Access control for internal tools and applications"],"limitations":["Requires a Permit.io account with API credentials","Self-hosted PDP requires public exposure (e.g., ngrok) for cloud integration","Minimum n8n version 1.0+ required","Node.js 20.15+ runtime requirement"],"relatedNodes":["Webhook","IF","Email","Error Trigger"]}


node_type: @servicem8/n8n-nodes-servicem8.serviceM8
package_name: @servicem8/n8n-nodes-servicem8
display_name: ServiceM8
description: Automate job, staff & client workflows in your trade service business.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: servicem8-devops
author_github_url: https://github.com/servicem8/n8n-nodes-servicem8.git
npm_package_name: @servicem8/n8n-nodes-servicem8
npm_version: 0.1.4
community_fetched_at: 2026-03-25T21:19:40.689Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "client",
      "options": [
        {
          "name": "Client",
          "value": "client"
        },
        {
          "name": "Email",
          "value": "email"
        },
        {
          "name": "Inbox",
          "value": "inbox"
        },
        {
          "name": "Job",
          "value": "job"
        },
        {
          "name": "Search",
          "value": "search"
        },
        {
          "name": "SMS",
          "value": "sms"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get customer details"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get multiple clients"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Add Note To Job",
          "value": "addNoteToJob",
          "action": "Add job note"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create new job"
        },
        {
          "name": "Create From Template",
          "value": "createFromTemplate",
          "action": "Create job from template"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete job"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get job details"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get multiple jobs"
        },
        {
          "name": "Send Job To Queue",
          "value": "sendJobToQueue",
          "action": "Queue job"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update job details"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "job"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendEmail",
      "options": [
        {
          "name": "Send Email",
          "value": "sendEmail",
          "action": "Send email"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "email"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendSMS",
      "options": [
        {
          "name": "Send SMS",
          "value": "sendSMS",
          "action": "Send text message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sms"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createInboxMessage",
      "options": [
        {
          "name": "Create Inbox Message",
          "value": "createInboxMessage",
          "action": "Create inbox message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "inbox"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "globalSearch",
      "options": [
        {
          "name": "Global Search",
          "value": "globalSearch",
          "action": "Search everything"
        },
        {
          "name": "Search",
          "value": "objectSearch",
          "action": "Search specific type"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get customer details"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get multiple clients"
    },
    {
      "name": "Add Note To Job",
      "value": "addNoteToJob",
      "action": "Add job note"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create new job"
    },
    {
      "name": "Create From Template",
      "value": "createFromTemplate",
      "action": "Create job from template"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete job"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get job details"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get multiple jobs"
    },
    {
      "name": "Send Job To Queue",
      "value": "sendJobToQueue",
      "action": "Queue job"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update job details"
    },
    {
      "name": "Send Email",
      "value": "sendEmail",
      "action": "Send email"
    },
    {
      "name": "Send SMS",
      "value": "sendSMS",
      "action": "Send text message"
    },
    {
      "name": "Create Inbox Message",
      "value": "createInboxMessage",
      "action": "Create inbox message"
    },
    {
      "name": "Global Search",
      "value": "globalSearch",
      "action": "Search everything"
    },
    {
      "name": "Search",
      "value": "objectSearch",
      "action": "Search specific type"
    }
  ]

npm_readme:
  # n8n-nodes-servicem8

  This is an n8n community node. It lets you use ServiceM8 in your n8n workflows.

  ServiceM8 is a job management software designed for small service businesses, helping them streamline scheduling, quoting, invoicing, and communication. It enables field staff to access job details, capture information, and process payments on-site via a mobile app.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Usage](#usage)
  [Resources](#resources)
  [Version history](#version-history)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  ### Attachment
  - **Upload** - Upload a file and create an attachment record
  - **Get** - Get attachment metadata with optional file download
  - **Get Many** - Get multiple attachments for a job or client
  - **Delete** - Soft delete an attachment

  ### Client
  - **Create** - Create a new client
  - **Get** - Get client details
  - **Get Many** - Get multiple clients
  - **Update** - Update client details
  - **Delete** - Delete client
  - **Update Client Contacts** - Update client contact details

  ### Job
  - **Create** - Create new job
  - **Create From Template** - Create job from template
  - **Get** - Get job details
  - **Get Many** - Get multiple jobs
  - **Update** - Update job details
  - **Delete** - Delete job
  - **Add Note To Job** - Add job note
  - **Send Job To Queue** - Queue job
  - **Update Job Contacts** - Update job contact details

  ### Job Booking
  - **Create** - Create a job booking
  - **Get** - Get booking details
  - **Get Many** - Get multiple bookings
  - **Update** - Update booking details
  - **Delete** - Delete booking

  ### Job Checkin
  - **Get** - Get job checkin details
  - **Get Many** - Get multiple job checkins

  ### Inbox
  - **Create** - Create inbox message
  - **Get** - Get inbox message details
  - **Get Many** - Get multiple inbox messages
  - **Convert To Job** - Convert inbox message to a job

  ### Email
  - **Send** - Send email

  ### SMS
  - **Send** - Send text message

  ### Search
  - **Global Search** - Search everything
  - **Object Search** - Search specific type

  ### Webhook Trigger
  Available webhook events:
  - Badge Added to Job
  - Badge Removed From Job
  - Customer Accepted the Quote
  - Customer Details Updated
  - Customer Review Submitted
  - Form Response Submitted
  - Full Payment Received for Invoice
  - Invoice Sent to Customer
  - Job Added to Queue
  - Job Details Modified
  - Job Marked as Completed
  - Job Status Changed
  - New Customer Added
  - New Job Created in the System
  - New Message Received in Inbox
  - Note Added to Job
  - Photo Attached to Job
  - Proposal Sent to Customer
  - Proposal Viewed by Customer
  - Quote Sent to Customer

  ## Credentials

  This node supports two authentication methods:

  ### API Key Authentication 
  1. Log in to your ServiceM8 account
  2. Navigate to **Settings** > **API Keys**
  3. Click **Generate API Key**
  4. Copy your API key and account email
  5. In n8n, create new ServiceM8 credentials with your email and API key

  ## Compatibility

  Tested with n8n v1.110.0 and later.

  ## Usage

  ### Create Job from Web Form
  This example shows how to create a new job when a web form is submitted:

  1. Set up a Webhook trigger to receive form submissions
  2. Use the Company node to create or find the customer
  3. Use the Job node to create a new job for that customer

  ### Daily Schedule Email
  This example shows how to email tomorrow's schedule to staff:

  1. Set up a Schedule trigger to run daily
  2. Use the Activity node to list tomorrow's activities
  3. Use an Email node to send the schedule

  For detailed usage examples and field mapping information, refer to the ServiceM8 API documentation.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes)
  * [ServiceM8 API Documentation](https://developer.servicem8.com/docs)
  * [ServiceM8 Developer Forum](https://developer.servicem8.com/discuss)
  * [GitHub Issues](https://github.com/servicem8/n8n-nodes-servicem8/issues)

  ## Version history

  ### 0.1.5
  **New Resources:**
  - **Attachment** - Full support for file attachments
    - Upload files to jobs or clients with automatic metadata handling
    - Get attachment metadata with optional binary file download
    - Get multiple attachments with filtering support
    - Delete attachments
  - **Job Booking** - Full support for job allocations (flexible time) and job activities (fixed time)
  - **Job Checkin** - Get and list job checkin records

  **New Operations:**
  - **Client**: Create, Update, Delete, Update Client Contacts
  - **Job**: Update Job Contacts
  - **Inbox**: Get, Get Many, Convert To Job

  **Enhancements:**
  - Client and Job Get/Get Many now support optional contact inclusion
  - Get Many operations support pagination (limit) and advanced filtering
  - Attachment Get Many supports filtering by attachment name, file type, source, tags, and more
  - "Include Inactive Records" moved to Advanced Options section for cleaner UI
  - Job Create now uses a cleaner UI with required Status field and dynamic field picker
  - Readonly fields (uuid, edit_date, created_by_staff_uuid, etc.) are now excluded from create/update field pickers but remain available for filtering
  - Job Template dropdowns now filter to show only active templates with valid names
  - Improved UI consistency across all resources (standardised field labels and action names)
  - Refactored to handler-based architecture for better maintainability

  ### 0.1.4
  - Added Inbox resource with create message action

  ### 0.1.0
  Initial release of the ServiceM8 node with support for:
  - Jobs management
  - Customer (Company) management
  - Webhook triggers

ai_documentation_summary:
  {"purpose":"Automates job, staff, and client workflows in trade service businesses by integrating ServiceM8's job management software with n8n workflows.","capabilities":["Manage jobs (create, update, delete, queue, add notes, send to queue)","Manage clients (create, update, delete, update contacts)","Manage job bookings and check-ins","Handle file attachments (upload, download, get metadata, delete)","Manage inbox messages and convert messages to jobs","Send emails and SMS messages","Global and object-specific search","Webhook triggers for 20+ events (e.g., job status changes, quote acceptance, payment received)","Create jobs from templates","Support for pagination and advanced filtering in Get Many operations"],"authentication":"API Key (requires API key and account email)","commonUseCases":["Automating job creation from web form submissions","Sending daily schedule emails to staff","Automating invoice and payment notifications","Syncing customer data between ServiceM8 and other systems","Triggering workflows when job status changes or quotes are accepted"],"limitations":["Community node (not official n8n node)","Requires active ServiceM8 account with API key access","Some advanced features may depend on ServiceM8 API capabilities"],"relatedNodes":["Webhook","Schedule","Email","SMS","Activity"]}


node_type: n8n-nodes-contextualai.contextualAi
package_name: n8n-nodes-contextualai
display_name: Contextual AI
description: Access Contextual AI tools for agents, parsing, querying, and reranking.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: jinash_rouniyar1
author_github_url: https://github.com/ContextualAI/
npm_package_name: n8n-nodes-contextualai
npm_version: 0.1.11
community_fetched_at: 2026-03-25T21:19:40.690Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "Agent",
      "options": [
        {
          "name": "Agent",
          "value": "Agent"
        },
        {
          "name": "Datastore",
          "value": "Datastore"
        },
        {
          "name": "Query",
          "value": "Query"
        },
        {
          "name": "Reranker",
          "value": "Reranker"
        },
        {
          "name": "LMUnit",
          "value": "LMUnit"
        },
        {
          "name": "Parser",
          "value": "Parser"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Create Agent",
      "options": [
        {
          "name": "Create Agent",
          "value": "Create Agent",
          "action": "Create Agent",
          "description": "Create agent, datastore, and upload documents"
        },
        {
          "name": "List Agents",
          "value": "List Agents",
          "action": "List Agents",
          "description": "Retrieve a list of all agents"
        },
        {
          "name": "Delete Agent",
          "value": "Delete Agent",
          "action": "Delete Agent",
          "description": "Delete a given agent (irreversible operation)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Agent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Parse Document",
      "options": [
        {
          "name": "Parse Document",
          "value": "Parse Document",
          "action": "Parse Document",
          "description": "Parse a document using Contextual AI parser"
        },
        {
          "name": "Parse Status",
          "value": "Parse Status",
          "action": "Parse Status",
          "description": "Get the status of a parse job"
        },
        {
          "name": "Parse Result",
          "value": "Parse Result",
          "action": "Parse Result",
          "description": "Get the results of a parse job"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Parser"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Query agent",
      "options": [
        {
          "name": "Query agent",
          "value": "Query agent",
          "action": "Query agent",
          "description": "Query a Contextual AI agent"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Query"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Rerank documents",
      "options": [
        {
          "name": "Rerank documents",
          "value": "Rerank documents",
          "action": "Rerank documents",
          "description": "Rerank documents against a query"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Reranker"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Run LMUnit",
      "options": [
        {
          "name": "Run LMUnit",
          "value": "Run LMUnit",
          "action": "Run LMUnit",
          "description": "Evaluate a response with LMUnit"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "LMUnit"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Create Datastore",
      "options": [
        {
          "name": "Create Datastore",
          "value": "Create Datastore",
          "action": "Create Datastore",
          "description": "Create a new datastore"
        },
        {
          "name": "Ingest Document",
          "value": "Ingest Document",
          "action": "Ingest Document",
          "description": "Ingest a document into a datastore"
        },
        {
          "name": "Get Document Metadata",
          "value": "Get Document Metadata",
          "action": "Get Document Metadata",
          "description": "Get metadata and processing status for a document"
        },
        {
          "name": "List Datastores",
          "value": "List Datastores",
          "action": "List Datastores",
          "description": "Retrieve a list of all datastores"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Datastore"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Agent",
      "value": "Create Agent",
      "action": "Create Agent",
      "description": "Create agent, datastore, and upload documents"
    },
    {
      "name": "List Agents",
      "value": "List Agents",
      "action": "List Agents",
      "description": "Retrieve a list of all agents"
    },
    {
      "name": "Delete Agent",
      "value": "Delete Agent",
      "action": "Delete Agent",
      "description": "Delete a given agent (irreversible operation)"
    },
    {
      "name": "Parse Document",
      "value": "Parse Document",
      "action": "Parse Document",
      "description": "Parse a document using Contextual AI parser"
    },
    {
      "name": "Parse Status",
      "value": "Parse Status",
      "action": "Parse Status",
      "description": "Get the status of a parse job"
    },
    {
      "name": "Parse Result",
      "value": "Parse Result",
      "action": "Parse Result",
      "description": "Get the results of a parse job"
    },
    {
      "name": "Query agent",
      "value": "Query agent",
      "action": "Query agent",
      "description": "Query a Contextual AI agent"
    },
    {
      "name": "Rerank documents",
      "value": "Rerank documents",
      "action": "Rerank documents",
      "description": "Rerank documents against a query"
    },
    {
      "name": "Run LMUnit",
      "value": "Run LMUnit",
      "action": "Run LMUnit",
      "description": "Evaluate a response with LMUnit"
    },
    {
      "name": "Create Datastore",
      "value": "Create Datastore",
      "action": "Create Datastore",
      "description": "Create a new datastore"
    },
    {
      "name": "Ingest Document",
      "value": "Ingest Document",
      "action": "Ingest Document",
      "description": "Ingest a document into a datastore"
    },
    {
      "name": "Get Document Metadata",
      "value": "Get Document Metadata",
      "action": "Get Document Metadata",
      "description": "Get metadata and processing status for a document"
    },
    {
      "name": "List Datastores",
      "value": "List Datastores",
      "action": "List Datastores",
      "description": "Retrieve a list of all datastores"
    }
  ]

npm_readme:
  # n8n-nodes-contextualai

  This is an n8n community node. It lets you use Contextual AI in your n8n workflows.

  Contextual AI provides enterprise-grade RAG (Retrieval-Augmented Generation) agents, advanced document parsing, intelligent querying, and document reranking capabilities for building sophisticated AI-powered applications.

  [Contextual AI](https://contextual.ai) is a platform for building enterprise-grade AI applications with advanced RAG capabilities, while [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  ## Table of contents

  - [Installation on self hosted instance](#installation-self-hosted)
  - [Installation on n8n cloud](#installation-n8n-cloud)
  - [Operations](#operations)
  - [Credentials](#credentials)
  - [Compatibility](#compatibility)
  - [Usage](#usage)
  - [Resources](#resources)
  - [Troubleshooting](#troubleshooting)  

  ## Installation (self-hosted)

  To install the Contextual AI community node directly from the n8n Editor UI:

  1. Open your n8n instance.
  2. Go to **Settings > Community Nodes**
  3. Select **Install**.
  4. Enter the npm package name: `n8n-nodes-contextualai` to install the latest version.
  5. Agree to the [risks](https://docs.n8n.io/integrations/community-nodes/risks/) of using community nodes and select **Install**
  6. The node is now available to use in your workflows.

  ## Installation (n8n Cloud)

  If you're using n8n Cloud, installing community nodes is even simpler:

  1. Go to the **Canvas** and open the **nodes panel**.
  2. Search for **Contextual AI** in the community node registry.
  3. Click **Install node** to add the Contextual AI node to your instance.

  > On n8n cloud users can choose not to show verified community nodes. Instance owners can toggle this in the Cloud Admin Panel. To install the Contextual AI node, make sure the installation of verified community nodes is enabled.


  ## Operations

  This node supports a comprehensive range of Contextual AI operations, organized by resource type:

  ### Agent
  - **Create agent**: Create a new Contextual AI RAG agent with datastore and upload documents
    - Configure agent name, description, and datastore settings
    - Upload multiple documents via binary data
    - Support for various document formats (PDF, DOC/DOCX, PPT/PPTX)
    - Automatic document processing and indexing
  - **List agents**: Retrieve a list of all agents in your Contextual AI account
    - View agent details and metadata
    - Check agent status and configuration
  - **Delete agent**: Remove an agent from your Contextual AI account
    - Permanent deletion of agent and associated data
    - Requires agent ID for confirmation

  ### Datastore
  - **Create datastore**: Create a new datastore for document storage
    - Configure datastore name and settings
    - Set up document storage and indexing
  - **Ingest document**: Upload and process documents into a datastore
    - Support for multiple document formats (PDF, DOC/DOCX, PPT/PPTX, HTML)
    - Optional metadata attachment
    - Batch processing capabilities
  - **Get document metadata**: Retrieve metadata for a specific document
    - Document information and processing status
    - Metadata and indexing details
  - **List datastores**: Retrieve a list of all datastores in your account
    - View datastore details and configuration
    - Check datastore status and document counts

  ### Query
  - **Query agent**: Query existing Contextual AI agents with intelligent retrieval
    - Natural language querying capabilities
    - Optional retrieval-only mode
    - Document readiness checking
    - Contextual response generation
    - Retrieval content inclusion

  ### Parser  
  - **Parse document**: Parse documents using Contextual AI's advanced document parser
    - Support for PDF, DOC/DOCX, PPT/PPTX files
    - Configurable parsing modes (standard)
    - Figure caption extraction (concise/detailed)
    - Document hierarchy preservation
    - Page range selection
    - Returns job ID for status monitoring
  - **Parse status**: Check the status of a document parsing job
    - Monitor parsing progress
    - Retrieve parsed results when completed
    - Track job status and file information
  - **Parse result**: Get the results of a completed parse job
    - Retrieve parsed content in multiple formats (markdown-document, markdown-per-page, blocks-per-page)
    - Access document metadata and hierarchy information
    - Get structured content blocks with confidence levels and bounding boxes

  ### Reranker
  - **Rerank documents**: Rank documents according to their relevance to a query
    - Instruction-following reranker technology
    - Custom instruction support
    - Metadata integration
    - Relevance scoring and ranking

  ### LMUnit
  - **Run LMUnit**: Evaluate model responses using Contextual AI's scoring system
    - Automated response evaluation
    - Custom unit test criteria
    - Scoring from 1-5 scale
    - Quality assessment and validation

  ### AI Tools Integration

  All Contextual AI node operations can be combined with n8n's AI tools to create powerful workflows.
  For example, you can ingest documents into a datastore, create an agent from that information, and then query over the documents for grounded responses and citations.

  ## Credentials

  This node requires a Contextual AI API key for authentication.

  ### Prerequisites
  - Sign up for a free trial of Contextual AI account at [app.contextual.ai](https://app.contextual.ai)
  - Obtain your API key from the Contextual AI dashboard

  ### Setup
  1. In n8n, go to **Credentials**
  2. Add a new **"Contextual AI API"** credential
  3. Enter your API key in the **API Key** field
  4. Optionally add a **Name** for easy identification
  5. Click **Save** to store the credential

  ### Authentication Methods

  The node supports API key authentication:
  - **API Key**: Configure your Contextual AI API key in the n8n credentials section under `ContextualAiApi`
  - **Security**: API keys are securely stored and encrypted in n8n's credential system

  ## Compatibility

  This node has been tested with n8n version 1.57.0 and is compatible with:

  - **n8n version**: 1.0.0 or later
  - **Node.js version**: 20.15 or later
  - **Contextual AI API**: Latest version

  ## Usage

  ### Getting Started

  1. **Set up credentials**: Configure your Contextual AI API key in n8n credentials
  2. **Create a workflow**: Start a new workflow in n8n
  3. **Add the Contextual AI node**: Insert the Contextual AI node into your workflow
  4. **Select an operation**: Choose the desired operation for your use case
  5. **Execute the workflow**: Run the workflow to perform the Contextual AI operation

  ### Creating an Agent with Documents

  1. Add the Contextual AI node to your workflow
  2. Select **"Agent"** as the resource and **"Create agent"** as the operation
  3. Configure your agent settings:
     - **Agent Name**: Give your agent a descriptive name
     - **Description**: Provide a brief description of the agent's purpose
     - **Datastore Name**: Specify the datastore name for document storage
  4. Provide documents via binary data (supports multiple files)
  5. Configure document processing options if needed
  6. Execute to create the agent and upload documents

  ### Datastore Management

  1. **Create a datastore**:
     - Select **"Datastore"** as the resource and **"Create datastore"** as the operation
     - Enter a datastore name
     - Execute to create the datastore and receive the datastore ID

  2. **Upload documents**:
     - Select **"Ingest document"** as the operation
     - Provide the datastore ID and document files via binary data
     - Optionally add metadata as JSON
     - Execute to upload and process documents

  3. **Using data connectors (Optional)**:
     > **Note**: To use source connectors for your datastore, you need to configure them in the [Contextual AI platform](https://app.contextual.ai) first, then use that datastore in your n8n workflow.
     
     - **Step 1**: Configure connectors in the [Contextual AI platform](https://app.contextual.ai)
       - Go to Datastores → Create → Select "Third-Party Connection"
       - Choose your data source (Google Drive, SharePoint)
       - Authorize and select specific folders to sync
       - Wait for initial sync to complete (status shows "Synced" with green checkmark)
     - **Step 2**: Use the connector datastore in your n8n workflow
       - Copy the datastore ID from the platform
       - Use this ID when creating agents or querying in n8n
       - The datastore will automatically stay in sync with your source data
     - **Benefits**: No manual document uploads, automatic permissions enforcement, real-time data updates

  4. **Manage documents**:
     - Use **"List datastores"** to view all datastores
     - Use **"Get document metadata"** to retrieve specific document information

  ### Querying an Agent

  1. Select **"Query"** as the resource and **"Query agent"** as the operation
  2. Enter the **Agent ID** and your **Query**
  3. Configure query options:
     - Enable **retrieval-only mode** for document search without generation
     - Include **retrieval content text** for context
     - Set **document readiness** checking
  4. Execute to get the agent's response

  ### Document Reranking

  1. Select **"Reranker"** as the resource and **"Rerank documents"** as the operation
  2. Provide a **Query** and **comma-separated list of documents**
  3. Configure reranking options:
     - Add **custom instructions** for ranking criteria
     - Include **metadata** for enhanced ranking
  4. Execute to get ranked results with relevance scores

  ### Response Evaluation

  1. Select **"LMUnit"** as the resource and **"Run LMUnit"** as the operation
  2. Provide the required inputs:
     - **Original Query**: The question that was asked
     - **Model Response**: The response to evaluate
     - **Unit Test Criteria**: The criteria for evaluation
  3. Execute to get a score from 1-5 on the unit test

  ### Document Parsing

  1. Select **"Parser"** as the resource and **"Parse document"** as the operation
  2. Provide a document file via binary data
  3. Configure parsing options:
     - **Parse Mode**: Choose parsing mode (standard)
     - **Figure Caption Mode**: Choose caption extraction (concise/detailed)
     - **Enable Document Hierarchy**: Preserve document structure
     - **Page Range**: Specify pages to parse (e.g., "0-5")
  4. Execute to submit the parse job and receive a job ID
  5. Use **"Parse status"** operation with the job ID to monitor progress and retrieve results


  ### Advanced Workflow Examples

  - **Document Processing Pipeline**: Parse documents → Create datastore → Ingest documents → Create agent → Query agent
  - **Quality Assurance**: Query agent → Evaluate response with LMUnit
  - **Content Optimization**: Rerank documents → Parse top results → Create refined agent
  - **Batch Document Processing**: List datastores → Ingest multiple documents → Monitor processing status
  - **Agent Management**: List agents → Delete unused agents → Create new agents with updated documents

  ## Resources

  * [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Contextual AI Documentation](https://docs.contextual.ai)
  * [Contextual AI API Reference](https://docs.contextual.ai/api-reference)

  ## Troubleshooting

  ### Common issues

  1. **Authentication errors**
     - Verify your API key is correct and active
     - Check if your Contextual AI account has sufficient permissions
     - Ensure the API key hasn't expired

  2. **Agent Not Found**
     - Verify the agent ID format is correct
     - Check if the agent exists in your Contextual AI account
     - Ensure you have access to the agent

  3. **Document parsing failures**
     - Verify the document format is supported (PDF, DOC/DOCX, PPT/PPTX)
     - Check file size limits
     - Ensure the document isn't corrupted or password-protected

  4. **Query operation failures**
     - Verify the agent ID is correct
     - Check if the agent is ready (documents processed)
     - Review query format and parameters

  5. **Reranking errors**
     - Ensure documents are provided in the correct format
     - Check query and document content validity
     - Verify custom instructions are properly formatted

  6. **Parse job failures**
     - Verify the job ID format is correct (should be a UUID)
     - Check if the parse job exists and hasn't expired
     - Ensure the original document was valid and supported

  7. **Datastore operation failures**
     - Verify datastore ID format is correct (should be a UUID)
     - Check if the datastore exists in your account
     - Ensure you have proper permissions for the datastore

  ### Getting help

  If you encounter issues:
  1. Check the [Contextual AI API documentation](https://docs.contextual.ai/api-reference)
  2. Review the [n8n Community Nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  3. Open an issue in the [GitHub repository](https://github.com/contextual-ai/n8n-nodes-contextualai)

ai_documentation_summary:
  {"purpose":"This n8n community node enables enterprise-grade RAG (Retrieval-Augmented Generation) workflows by providing tools for agent management, document parsing, intelligent querying, document reranking, and model evaluation.","capabilities":["Create, list, and delete RAG agents","Create and manage datastores for document storage","Ingest and process multiple document formats (PDF, DOCX, PPTX, HTML)","Parse documents with configurable modes and hierarchy preservation","Query agents with natural language retrieval and contextual responses","Rerank documents based on relevance to queries","Evaluate model responses using automated scoring","Support for binary data uploads and batch processing"],"authentication":"API Key required (Contextual AI API key stored in n8n credentials)","commonUseCases":["Building enterprise RAG applications with document grounding","Automated document ingestion and indexing workflows","Intelligent document querying with citation support","Model evaluation and quality assessment pipelines"],"limitations":["Community node (self-hosted only, not included in n8n Cloud base plan)","Requires separate Contextual AI account and API key","Some advanced features may require paid Contextual AI tier"],"relatedNodes":["n8n-nodes-core.code","n8n-nodes-core.httpRequest","n8n-nodes-core.binary","n8n-nodes-core.waitUntil","n8n-nodes-core.splitInBatches"]}


node_type: n8n-nodes-vikunja.vikunjaTrigger
package_name: n8n-nodes-vikunja
display_name: Vikunja Trigger
description: Starts the workflow when Vikunja events occur
category: Productivity
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: kolaente
author_github_url: https://github.com/go-vikunja/n8n-vikunja-nodes.git
npm_package_name: n8n-nodes-vikunja
npm_version: 0.4.1
community_fetched_at: 2026-03-25T21:19:40.690Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-vikunja

  This is an n8n community node. It lets you use Vikunja in your n8n workflows.

  Vikunja is an open-source, self-hostable to-do and productivity application.
  Check out [our website](https://vikunja.io/) for more information.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  * [Installation](#installation)  
  * [Operations](#operations)  
  * [Credentials](#credentials)
  * [Compatibility](#compatibility)  
  * [Development](#development)
  * [Resources](#resources)  

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  This node supports all operations supported by Vikunja API tokens.
  You can see a full list of possible actions when creating a token in Vikunja.

  It also allows you to trigger n8n workflows by Vikunja webhooks.

  ## Credentials

  The only supported authentication method for this node are API tokens.
  On your Vikunja instance, head over to *Settings > API Tokens* and create a new token.

  In n8n, create credentials as you usually would.
  Enter the API token created previously and the API url.

  ## Compatibility

  Tested with n8n Version 1.91.3.

  ## Development

  You need npm and NodeJS installed.

  * Install dependencies with `npm i`
  * Build the node with `npm run build`
  * Check for lint errors with `npm run lint` and fix them with `npm run lintfix`
  * To release a new version in the npm registry, run `npm publish`
  * To test the node, build the node with `npm run build`, then while in the project directory run `export N8N_CUSTOM_EXTENSIONS=$PWD` and start n8n with the `n8n` command. You should now be able to find the node when searching for it.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Vikunja n8n Docs](https://vikunja.io/docs/n8n)
  * [Vikunja General Docs](https://vikunja.io/docs/)

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows when Vikunja events occur and enables automation using Vikunja API tokens.","capabilities":["Trigger workflows on Vikunja events","Execute Vikunja API operations","Use Vikunja webhooks"],"authentication":"API token required (API URL and token)","commonUseCases":["Automate task management in Vikunja","Sync tasks between Vikunja and other services","Execute workflows upon task creation or updates"],"limitations":["Limited to Vikunja API token operations","Community node (not official n8n node)"],"relatedNodes":["Vikunja Task","Vikunja List","Vikunja User"]}


node_type: @virtuoussoftware/n8n-nodes-virtuous-crm.virtuousCrm
package_name: @virtuoussoftware/n8n-nodes-virtuous-crm
display_name: Virtuous CRM
description: Interact with the Virtuous CRM API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: cogitatorprimarch
author_github_url: https://github.com/VirtuousCRM/n8n-nodes-virtuous-crm.git
npm_package_name: @virtuoussoftware/n8n-nodes-virtuous-crm
npm_version: 0.1.3
community_fetched_at: 2026-03-25T21:19:40.691Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "contact",
      "options": [
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Gift",
          "value": "gift"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "singleContactTransaction",
      "options": [
        {
          "name": "Create Contact Transaction",
          "value": "singleContactTransaction",
          "action": "Create a contact that will go through the import process",
          "description": "Create a Contact that will go through the import process"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "singleGiftTransaction",
      "options": [
        {
          "name": "Create Gift Transaction",
          "value": "singleGiftTransaction",
          "action": "Create a gift that will go through the import process",
          "description": "Create a Gift that will go through the import process"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "gift"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Contact Transaction",
      "value": "singleContactTransaction",
      "action": "Create a contact that will go through the import process",
      "description": "Create a Contact that will go through the import process"
    },
    {
      "name": "Create Gift Transaction",
      "value": "singleGiftTransaction",
      "action": "Create a gift that will go through the import process",
      "description": "Create a Gift that will go through the import process"
    }
  ]

npm_readme:
  ![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)

  # n8n-nodes-virtuous-crm

  This is an n8n community node. It lets you use the [Virtuous CRM API](https://docs.virtuoussoftware.com/) in your n8n workflows.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  ## Table of Contents

  - [Installation](#installation)  
  - [Operations](#operations)  
  - [Credentials](#credentials)
  - [Compatibility](#compatibility)  
  - [Usage](#usage)
  - [Resources](#resources) 

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  This node presently supports operations to create Contact and Gift Transactions:
  - [Create Contact Transaction](https://docs.virtuoussoftware.com/#0b27a920-243c-4f02-a5c3-6e522b926431)
  - [Create Gift Transaction](https://docs.virtuoussoftware.com/#e4a6a1e3-71a4-44f9-bd7c-9466996befac)

  ## Credentials

  An API Key is required to interact with the Virtuous node. Refer to the documentation for API Keys [here](https://docs.virtuoussoftware.com/#authentication)

  ## Compatibility

  Tested locally against n8n 1.115.3

  ## Usage

  The Contact and Gift Transactions allow users to send data to Virtuous CRM+ to create or update Contacts or Gifts. The creation of records is asynchronous and requires user input on CRM+, so responses will be limited only to headers and status codes. See resources for more information

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Virtuous CRM API Documentation](https://docs.virtuoussoftware.com/)
  * [Gifts Integration Best Practices](https://support.virtuous.org/hc/en-us/articles/21329138310285-Gifts-Integration-Best-Practices)
  * [Contacts Integration Best Practices](https://support.virtuous.org/hc/en-us/articles/21152926831501-Contacts-Integration-Best-Practices)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation workflows to interact with the Virtuous CRM API for managing contacts and gift transactions.","capabilities":["Create Contact Transactions","Create Gift Transactions","Asynchronous record creation","API interaction with Virtuous CRM+"],"authentication":"API Key required","commonUseCases":["Automating contact onboarding in Virtuous CRM","Processing gift transactions via workflow automation","Integrating CRM data into marketing or sales workflows"],"limitations":["Record creation is asynchronous and requires manual user input on the Virtuous CRM+ platform","API responses are limited to headers and status codes only","Currently supports only Create operations for Contacts and Gifts"],"relatedNodes":["n8n HTTP Request","n8n Webhook","n8n Set"]}


node_type: n8n-nodes-hubbi.hubbi
package_name: n8n-nodes-hubbi
display_name: Hubbi
description: Get data from the Hubbi services
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: hubbi.parts
author_github_url: https://github.com/Hubbiparts/
npm_package_name: n8n-nodes-hubbi
npm_version: 1.0.1
community_fetched_at: 2026-03-25T21:19:40.691Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "part",
      "options": [
        {
          "name": "Stock",
          "value": "stock",
          "description": "Operations related to your stock"
        },
        {
          "name": "Autopart",
          "value": "part",
          "description": "Operations related to autoparts"
        },
        {
          "name": "Vehicle",
          "value": "vehicle",
          "description": "Operations related to vehicles"
        }
      ],
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "userType": [
            "dealer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "resource",
      "type": "options",
      "default": "part",
      "options": [
        {
          "name": "Autopart",
          "value": "part",
          "description": "Operations related to autoparts"
        },
        {
          "name": "Vehicle",
          "value": "vehicle",
          "description": "Operations related to vehicles"
        }
      ],
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "userType": [
            "buyer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listParts",
      "options": [
        {
          "name": "Create Autopart in Stock",
          "value": "createPart",
          "action": "Create autopart in stock",
          "routing": {
            "request": {
              "url": "=erps/parts/",
              "body": [
                {
                  "code": "={{$parameter.code}}",
                  "name": "={{$parameter.name}}",
                  "price": "={{$parameter.price}}",
                  "stock": "={{$parameter.stock}}",
                  "erp_id": "={{$parameter.erpId}}"
                }
              ],
              "method": "POST"
            }
          },
          "description": "Create a new autopart",
          "displayOptions": {
            "show": {
              "userType": [
                "dealer"
              ]
            }
          }
        },
        {
          "name": "Delete Stock",
          "value": "deletePart",
          "action": "Delete autopart",
          "routing": {
            "request": {
              "url": "=erps/parts/{{$parameter.id}}/",
              "method": "DELETE"
            }
          },
          "description": "Delete an autopart by ID",
          "displayOptions": {
            "show": {
              "userType": [
                "dealer"
              ]
            }
          }
        },
        {
          "name": "Get Autopart in Stock",
          "value": "getPart",
          "action": "Get autopart",
          "routing": {
            "request": {
              "url": "=erps/parts/{{$parameter.id}}/",
              "method": "GET"
            }
          },
          "description": "Get a specific autopart by ID",
          "displayOptions": {
            "show": {
              "userType": [
                "dealer"
              ]
            }
          }
        },
        {
          "name": "List Stock",
          "value": "listParts",
          "action": "List autoparts",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "results"
                  }
                }
              ]
            },
            "request": {
              "url": "=erps/parts/",
              "method": "GET"
            }
          },
          "description": "List all available autoparts",
          "displayOptions": {
            "show": {
              "userType": [
                "dealer"
              ]
            }
          }
        },
        {
          "name": "Update Stock",
          "value": "updatePart",
          "action": "Update autopart",
          "routing": {
            "request": {
              "url": "=erps/parts/{{$parameter.id}}/",
              "body": {
                "code": "={{$parameter.code}}",
                "name": "={{$parameter.name}}",
                "price": "={{$parameter.price}}",
                "stock": "={{$parameter.stock}}",
                "erp_id": "={{$parameter.erpId}}"
              },
              "method": "PATCH"
            }
          },
          "description": "Update an existing autopart by ID",
          "displayOptions": {
            "show": {
              "userType": [
                "dealer"
              ]
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "stock"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "searchPart",
      "options": [
        {
          "name": "Search Autopart",
          "value": "searchPart",
          "action": "Search for autoparts",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "results"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "sku": "={{$parameter[\"partNumber\"]}}",
                "limit": 96,
                "stock": "={{$parameter[\"inStock\"] ? \"true\" : \"false\"}}",
                "offset": 0,
                "search": "={{$parameter[\"partName\"]}}",
                "barcode": "={{$parameter[\"barcode\"]}}",
                "state_uf": "={{Array.isArray($parameter[\"uf\"]) ? $parameter[\"uf\"].join(\",\") : $parameter[\"uf\"]}}",
                "positions": "={{Array.isArray($parameter[\"position\"]) ? $parameter[\"position\"].join(\",\") : $parameter[\"position\"]}}",
                "application": "={{$parameter[\"vehicle\"]}}"
              },
              "url": "/catalog/filter/",
              "method": "GET"
            }
          },
          "description": "Retrieve details of a part"
        },
        {
          "name": "Part Specifications",
          "value": "partSpecs",
          "action": "Get part specifications",
          "routing": {
            "request": {
              "qs": {
                "nome_fabricante": "={{$parameter[\"brandName\"]}}",
                "codigo_fabricante": "={{$parameter[\"partNumber\"]}}"
              },
              "url": "/public/api/v1/catalog/part/technical-specs",
              "method": "GET"
            }
          },
          "description": "Retrieve specifications of a part"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "part"
          ],
          "userType": [
            "buyer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "searchPart",
      "options": [
        {
          "name": "Search Autopart",
          "value": "searchPart",
          "action": "Search for autoparts",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "results"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "sku": "={{$parameter[\"partNumber\"]}}",
                "limit": 96,
                "stock": "={{$parameter[\"inStock\"] ? \"true\" : \"false\"}}",
                "offset": 0,
                "search": "={{$parameter[\"partName\"]}}",
                "barcode": "={{$parameter[\"barcode\"]}}",
                "state_uf": "={{Array.isArray($parameter[\"uf\"]) ? $parameter[\"uf\"].join(\",\") : $parameter[\"uf\"]}}",
                "positions": "={{Array.isArray($parameter[\"position\"]) ? $parameter[\"position\"].join(\",\") : $parameter[\"position\"]}}",
                "application": "={{$parameter[\"vehicle\"]}}"
              },
              "url": "/catalog/filter/",
              "method": "GET"
            }
          },
          "description": "Retrieve details of a part"
        },
        {
          "name": "Part Specifications",
          "value": "partSpecs",
          "action": "Get part specifications",
          "routing": {
            "request": {
              "qs": {
                "nome_fabricante": "={{$parameter[\"brandName\"]}}",
                "codigo_fabricante": "={{$parameter[\"partNumber\"]}}"
              },
              "url": "/public/api/v1/catalog/part/technical-specs",
              "method": "GET"
            }
          },
          "description": "Retrieve specifications of a part"
        },
        {
          "name": "Part Quotation",
          "value": "partQuotation",
          "action": "Get part quotation",
          "routing": {
            "request": {
              "qs": {
                "nome_fabricante": "={{$parameter[\"brandName\"]}}",
                "codigo_fabricante": "={{$parameter[\"partNumber\"]}}"
              },
              "url": "/public/api/v1/catalog/part/quotation",
              "method": "GET"
            }
          },
          "description": "Retrieve quotation details for a part"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "part"
          ],
          "userType": [
            "dealer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "vehicleByPlate",
      "options": [
        {
          "name": "Get Vehicle by Plate",
          "value": "vehicleByPlate",
          "action": "Get vehicle by license plate",
          "routing": {
            "request": {
              "qs": {
                "plate": "={{$parameter[\"plate\"]}}"
              },
              "url": "/platesearch/vehicle-info/",
              "method": "GET"
            }
          },
          "description": "Retrieve vehicle description by plate number"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "vehicle"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Autopart in Stock",
      "value": "createPart",
      "action": "Create autopart in stock",
      "routing": {
        "request": {
          "url": "=erps/parts/",
          "body": [
            {
              "code": "={{$parameter.code}}",
              "name": "={{$parameter.name}}",
              "price": "={{$parameter.price}}",
              "stock": "={{$parameter.stock}}",
              "erp_id": "={{$parameter.erpId}}"
            }
          ],
          "method": "POST"
        }
      },
      "description": "Create a new autopart",
      "displayOptions": {
        "show": {
          "userType": [
            "dealer"
          ]
        }
      }
    },
    {
      "name": "Delete Stock",
      "value": "deletePart",
      "action": "Delete autopart",
      "routing": {
        "request": {
          "url": "=erps/parts/{{$parameter.id}}/",
          "method": "DELETE"
        }
      },
      "description": "Delete an autopart by ID",
      "displayOptions": {
        "show": {
          "userType": [
            "dealer"
          ]
        }
      }
    },
    {
      "name": "Get Autopart in Stock",
      "value": "getPart",
      "action": "Get autopart",
      "routing": {
        "request": {
          "url": "=erps/parts/{{$parameter.id}}/",
          "method": "GET"
        }
      },
      "description": "Get a specific autopart by ID",
      "displayOptions": {
        "show": {
          "userType": [
            "dealer"
          ]
        }
      }
    },
    {
      "name": "List Stock",
      "value": "listParts",
      "action": "List autoparts",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "results"
              }
            }
          ]
        },
        "request": {
          "url": "=erps/parts/",
          "method": "GET"
        }
      },
      "description": "List all available autoparts",
      "displayOptions": {
        "show": {
          "userType": [
            "dealer"
          ]
        }
      }
    },
    {
      "name": "Update Stock",
      "value": "updatePart",
      "action": "Update autopart",
      "routing": {
        "request": {
          "url": "=erps/parts/{{$parameter.id}}/",
          "body": {
            "code": "={{$parameter.code}}",
            "name": "={{$parameter.name}}",
            "price": "={{$parameter.price}}",
            "stock": "={{$parameter.stock}}",
            "erp_id": "={{$parameter.erpId}}"
          },
          "method": "PATCH"
        }
      },
      "description": "Update an existing autopart by ID",
      "displayOptions": {
        "show": {
          "userType": [
            "dealer"
          ]
        }
      }
    },
    {
      "name": "Search Autopart",
      "value": "searchPart",
      "action": "Search for autoparts",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "results"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "sku": "={{$parameter[\"partNumber\"]}}",
            "limit": 96,
            "stock": "={{$parameter[\"inStock\"] ? \"true\" : \"false\"}}",
            "offset": 0,
            "search": "={{$parameter[\"partName\"]}}",
            "barcode": "={{$parameter[\"barcode\"]}}",
            "state_uf": "={{Array.isArray($parameter[\"uf\"]) ? $parameter[\"uf\"].join(\",\") : $parameter[\"uf\"]}}",
            "positions": "={{Array.isArray($parameter[\"position\"]) ? $parameter[\"position\"].join(\",\") : $parameter[\"position\"]}}",
            "application": "={{$parameter[\"vehicle\"]}}"
          },
          "url": "/catalog/filter/",
          "method": "GET"
        }
      },
      "description": "Retrieve details of a part"
    },
    {
      "name": "Part Specifications",
      "value": "partSpecs",
      "action": "Get part specifications",
      "routing": {
        "request": {
          "qs": {
            "nome_fabricante": "={{$parameter[\"brandName\"]}}",
            "codigo_fabricante": "={{$parameter[\"partNumber\"]}}"
          },
          "url": "/public/api/v1/catalog/part/technical-specs",
          "method": "GET"
        }
      },
      "description": "Retrieve specifications of a part"
    },
    {
      "name": "Search Autopart",
      "value": "searchPart",
      "action": "Search for autoparts",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "results"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "sku": "={{$parameter[\"partNumber\"]}}",
            "limit": 96,
            "stock": "={{$parameter[\"inStock\"] ? \"true\" : \"false\"}}",
            "offset": 0,
            "search": "={{$parameter[\"partName\"]}}",
            "barcode": "={{$parameter[\"barcode\"]}}",
            "state_uf": "={{Array.isArray($parameter[\"uf\"]) ? $parameter[\"uf\"].join(\",\") : $parameter[\"uf\"]}}",
            "positions": "={{Array.isArray($parameter[\"position\"]) ? $parameter[\"position\"].join(\",\") : $parameter[\"position\"]}}",
            "application": "={{$parameter[\"vehicle\"]}}"
          },
          "url": "/catalog/filter/",
          "method": "GET"
        }
      },
      "description": "Retrieve details of a part"
    },
    {
      "name": "Part Specifications",
      "value": "partSpecs",
      "action": "Get part specifications",
      "routing": {
        "request": {
          "qs": {
            "nome_fabricante": "={{$parameter[\"brandName\"]}}",
            "codigo_fabricante": "={{$parameter[\"partNumber\"]}}"
          },
          "url": "/public/api/v1/catalog/part/technical-specs",
          "method": "GET"
        }
      },
      "description": "Retrieve specifications of a part"
    },
    {
      "name": "Part Quotation",
      "value": "partQuotation",
      "action": "Get part quotation",
      "routing": {
        "request": {
          "qs": {
            "nome_fabricante": "={{$parameter[\"brandName\"]}}",
            "codigo_fabricante": "={{$parameter[\"partNumber\"]}}"
          },
          "url": "/public/api/v1/catalog/part/quotation",
          "method": "GET"
        }
      },
      "description": "Retrieve quotation details for a part"
    },
    {
      "name": "Get Vehicle by Plate",
      "value": "vehicleByPlate",
      "action": "Get vehicle by license plate",
      "routing": {
        "request": {
          "qs": {
            "plate": "={{$parameter[\"plate\"]}}"
          },
          "url": "/platesearch/vehicle-info/",
          "method": "GET"
        }
      },
      "description": "Retrieve vehicle description by plate number"
    }
  ]

npm_readme:
  # n8n-nodes-hubbi

  This is an n8n community node. It lets you use Hubbi services in your n8n workflows.

  Hubbi is a B2B marketplace platform that connects corporate consumers with auto parts suppliers. Using BigData technologies, it enables an agile and assertive quotation, purchase and sale process.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials)  
  [Compatibility](#compatibility)  
  [Resources](#resources)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  - Vehicle Operations: get detailed information about a vehicle by it's license plate.
  - Stock Operations: List, create, update and delete your stock at Hubbi.
  - Part Operations: Get detailed technical speficiation for an autopart, search for parts in Hubbi's catalog and see the lowest quotation for auto parts.

  ## Credentials

  To use this node, you need to have a Hubbi account and valid API keys.

  1. **Create a Hubbi Account:**  
     Sign up at [Hubbi](https://hubbi.app) if you don't already have an account.

  2. **Generate API Keys:**  
     After logging in, navigate to your account settings to generate your API keys.

  3. **Configure Credentials in n8n:**  
     In n8n, add a new set of credentials for the Hubbi node and enter your API keys.

  These credentials will allow the node to authenticate and interact with Hubbi services securely.

  ## Compatibility

  This node is compatible with n8n version 1.93.0 and onwards.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Hubbi](https://hubbi.app)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation workflows to interact with Hubbi, a B2B marketplace connecting corporate consumers with auto parts suppliers.","capabilities":["Retrieve detailed vehicle information by license plate","List stock inventory","Create stock entries","Update stock entries","Delete stock entries","Retrieve detailed technical specifications for auto parts","Search parts in Hubbi's catalog","Retrieve lowest quotations for auto parts"],"authentication":"API key required","commonUseCases":["Automating purchase order creation for auto parts","Tracking vehicle maintenance records via license plate lookup","Managing inventory levels for corporate auto parts suppliers"],"limitations":["Requires a separate Hubbi account and API keys","Compatible only with n8n version 1.93.0 and newer"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.set"]}


node_type: @notainc/n8n-nodes-gyazo.gyazo
package_name: @notainc/n8n-nodes-gyazo
display_name: Gyazo
description: Interact with Gyazo API for image list, get, search and upload operations
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: mountainboooy
author_github_url: https://github.com/nota/n8n-nodes-gyazo.git
npm_package_name: @notainc/n8n-nodes-gyazo
npm_version: 0.3.3
community_fetched_at: 2026-03-25T21:19:40.692Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "image",
      "options": [
        {
          "name": "Image",
          "value": "image"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get an image",
          "description": "Get a specific image by ID or URL"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List user images",
          "description": "Get a list of user's saved images"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search for images",
          "description": "Search for images (Pro users only)"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an image attributes",
          "description": "Update image description and alt text"
        },
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload an image",
          "description": "Upload an image"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get an image",
      "description": "Get a specific image by ID or URL"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List user images",
      "description": "Get a list of user's saved images"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search for images",
      "description": "Search for images (Pro users only)"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an image attributes",
      "description": "Update image description and alt text"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload an image",
      "description": "Upload an image"
    }
  ]

npm_readme:
  # n8n Nodes - Gyazo integration

  This is an n8n community node that integrates [Gyazo](https://gyazo.com) with your n8n workflows, so you can run Gyazo operations, manage images, and automate image sharing tasks.

  [Gyazo](https://gyazo.com) serves an API platform for developers to capture, share, and manage screenshots and images, while [n8n](https://n8n.io) is a fair-code licensed tool for AI workflow automation that allows you to connect various services.

  ## Table of contents

  - [n8n Nodes - Gyazo integration](#n8n-nodes---gyazo-integration)
    - [Table of contents](#table-of-contents)
    - [Installation (self-hosted)](#installation-self-hosted)
    - [Installation on n8n cloud](#installation-on-n8n-cloud)
    - [Installation for development and contributing](#installation-for-development-and-contributing)
    - [Operations](#operations)
      - [Image Operations](#image-operations)
        - [List](#list)
        - [Get](#get)
        - [Search](#search)
        - [Upload](#upload)
        - [Update](#update)
    - [Credentials](#credentials)
      - [Setting up Gyazo API Access](#setting-up-gyazo-api-access)
      - [Configuring credentials in n8n](#configuring-credentials-in-n8n)
    - [Compatibility](#compatibility)
    - [Usage](#usage)
      - [Basic Image Upload Workflow](#basic-image-upload-workflow)
      - [Search and Process Images](#search-and-process-images)
    - [Resources](#resources)
    - [Release](#release)
      - [Publishing to npm](#publishing-to-npm)
    - [Version History](#version-history)
    - [Troubleshooting](#troubleshooting)
      - [Authentication Issues](#authentication-issues)
      - [Invalid Resource Format](#invalid-resource-format)
      - [Upload Issues](#upload-issues)
      - [Rate Limiting](#rate-limiting)
      - [Node Not Appearing](#node-not-appearing)
    - [License](#license)

  ## Installation (self-hosted)

  For self-hosted n8n instances, you can install this community node by following these steps:

  1. Go to **Settings > Community Nodes** in your n8n instance
  2. Select **Install**
  3. Enter `@notainc/n8n-nodes-gyazo` in the npm Package Name field
  4. Agree to the risks of using community nodes: select **I understand the risks of installing unverified code from a public source**
  5. Select **Install**

  After installation restart n8n to register the community node.

  ## Installation on n8n cloud

  For n8n cloud users:

  1. Go to **Settings > Community Nodes** in your n8n cloud instance
  2. Select **Install**
  3. Enter `@notainc/n8n-nodes-gyazo` in the npm Package Name field
  4. Select **Install**

  n8n cloud will automatically restart and register the community node.

  ## Installation for development and contributing

  To install this node for development:

  1. Clone this repository:

     ```bash
     git clone https://github.com/nota/n8n-nodes-gyazo.git
     cd n8n-nodes-gyazo
     ```

  2. Install dependencies:

     ```bash
     npm install
     ```

  3. Build the node:

     ```bash
     npm run build
     ```

  4. Link the node locally:

     ```bash
     npm link
     ```

  5. Install the node into your local n8n instance:

     ```bash
     # In your n8n custom nodes directory (usually ~/.n8n/custom/)
     npm link @notainc/n8n-nodes-gyazo
     ```

  6. Start n8n:
     ```bash
     n8n start
     ```

  ## Operations

  The Gyazo node supports the **Image** resource.

  ### Image Operations

  #### List

  Get a list of user's saved images with pagination support.

  **Parameters:**

  - **Page** (optional): Page number for pagination (default: 1)
  - **Per Page** (optional): Number of results per page, max 100 (default: 20)

  **Example output:**

  ```json
  [
  	{
  		"image_id": "abc123def456789012345678901234ef",
  		"permalink_url": "https://gyazo.com/abc123def456789012345678901234ef",
  		"thumb_url": "https://thumb.gyazo.com/thumb/200/_abc123def456789012345678901234ef.png",
  		"url": "https://i.gyazo.com/abc123def456789012345678901234ef.png",
  		"type": "png",
  		"created_at": "2024-01-15T10:30:00+0000"
  	}
  ]
  ```

  #### Get

  Retrieve a specific image by ID or URL.

  **Parameters:**

  - **Image**: Resource locator supporting:
    - **By ID**: 32-character hexadecimal string (e.g., `abc123def456789012345678901234ef`)
    - **By URL**: Full Gyazo URL (e.g., `https://gyazo.com/abc123def456789012345678901234ef`)

  **Example output:**

  ```json
  {
  	"image_id": "abc123def456789012345678901234ef",
  	"type": "png",
  	"created_at": "2024-01-15T10:30:00+0000",
  	"permalink_url": "https://gyazo.com/abc123def456789012345678901234ef",
  	"thumb_url": "https://thumb.gyazo.com/thumb/200/_abc123def456789012345678901234ef.png",
  	"url": "https://i.gyazo.com/abc123def456789012345678901234ef.png",
  	"metadata": {
  		"app": "n8n",
  		"title": "Screenshot",
  		"desc": "Automated screenshot"
  	}
  }
  ```

  #### Search

  Search for images using a query string with pagination support (Pro users only).

  **Parameters:**

  - **Query** (required): Search query for images
  - **Page** (optional): Page number for pagination (default: 1)
  - **Per Page** (optional): Number of results per page, max 100 (default: 20)

  **Example usage:**

  - Query: `"workflow diagram"`
  - Results: Images matching the search term

  #### Upload

  Upload an image to Gyazo.

  **Parameters:**

  - **Image Binary** (required): Name of the binary property containing image data (default: `data`)
  - **App Name** (optional): Application name (default: `n8n`)
  - **Collection ID** (optional): Collection ID to add image to
  - **Description** (optional): Description for the image
  - **Referer URL** (optional): Referer site URL
  - **Title** (optional): Title for the image

  **Example output:**

  ```json
  {
  	"type": "png",
  	"thumb_url": "https://thumb.gyazo.com/thumb/200/_def456abc123789012345678901234ef.png",
  	"created_at": "2024-01-15T11:00:00+0000",
  	"image_id": "def456abc123789012345678901234ef",
  	"permalink_url": "https://gyazo.com/def456abc123789012345678901234ef",
  	"url": "https://i.gyazo.com/def456abc123789012345678901234ef.png"
  }
  ```

  #### Update

  Update an existing image's description and alt text.

  **Parameters:**

  - **Image**: Resource locator supporting:
    - **By ID**: 32-character hexadecimal string (e.g., `abc123def456789012345678901234ef`)
    - **By URL**: Full Gyazo URL (e.g., `https://gyazo.com/abc123def456789012345678901234ef`)
  - **Description** (optional): Description for the image
  - **Alt Text** (optional): Alternative text for the image

  **Example output:**

  ```json
  {
  	"image_id": "abc123def456789012345678901234ef",
  	"type": "png",
  	"created_at": "2024-01-15T10:30:00+0000",
  	"permalink_url": "https://gyazo.com/abc123def456789012345678901234ef",
  	"thumb_url": "https://thumb.gyazo.com/thumb/200/_abc123def456789012345678901234ef.png",
  	"url": "https://i.gyazo.com/abc123def456789012345678901234ef.png",
  	"metadata": {
  		"app": "n8n",
  		"title": "Screenshot",
  		"desc": "Updated description",
  		"alt_text": "Updated alt text"
  	}
  }
  ```

  ## Credentials

  To use this node, you need to configure Gyazo API credentials:

  ### Setting up Gyazo API Access

  1. **Create a Gyazo account** at [gyazo.com](https://gyazo.com) if you don't have one
  2. **Register an application**:
     - Go to [Gyazo API Applications](https://gyazo.com/oauth/applications)
     - Click "Register new application"
     - Fill in your application details
  3. **Generate an access token**:
     - Use the OAuth flow or generate a personal access token

  ### Configuring credentials in n8n

  1. In your n8n workflow, add the Gyazo node
  2. Click on the credential dropdown and select "Create New"
  3. Choose "Gyazo API" from the credential types
  4. Enter your **Access Token** in the provided field
  5. Click "Save" to store the credentials

  The node will automatically use Bearer token authentication for all API requests.

  ## Compatibility

  This node is compatible with:

  - **n8n version**: 1.0.0 and above
  - **Node.js version**: 22.0.0 and above

  ## Usage

  ### Basic Image Upload Workflow

  1. **Add a trigger node** (e.g., Manual Trigger, Webhook)
  2. **Add the Gyazo node**:
     - Set Resource to "Image"
     - Set Operation to "Upload"
     - Configure the binary property name (default: "data")
  3. **Configure credentials** with your Gyazo API access token
  4. **Execute the workflow**

  ### Search and Process Images

  1. **Add the Gyazo node**:
     - Set Resource to "Image"
     - Set Operation to "Search"
     - Enter your search query
  2. **Process results** with additional nodes (e.g., filter, transform)
  3. **Use image URLs** in subsequent workflow steps

  ## Resources

  - [Gyazo API Documentation](https://gyazo.com/api/docs)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [n8n Creating Nodes Documentation](https://docs.n8n.io/integrations/creating-nodes/)

  ## Release

  This package follows semantic versioning. Current version: **0.3.3**

  ### Publishing to npm

  To publish a new version:

  1. Update the version in `package.json`
  2. Run `npm run build` to compile the TypeScript
  3. Run `npm run lint` to ensure code quality
  4. Run `npm publish` to publish to npm registry

  ## Version History

  - **0.3.3** - Removed requestDefaults from node definition
  - **0.3.2** - Fixed versioning issue in package.json
  - **0.3.1** - Unified node styles into the programmatic
  - **0.3.0** - Support updating image description and alt text, improved error handling
  - **0.2.0** - Removed support for collection operations, added Pro user restrictions for search
  - **0.1.0** - Initial release with image and collection operations

  ## Troubleshooting

  ### Authentication Issues

  **Problem**: "Unauthorized" or "Invalid access token" errors

  **Solution**:

  - Verify your access token is correct and hasn't expired
  - Ensure your Gyazo application has the necessary scopes

  ### Invalid Resource Format

  **Problem**: "Invalid Image ID format" or "Invalid Gyazo URL format" errors

  **Solution**:

  - Image IDs must be 32-character hexadecimal strings
  - Gyazo URLs must follow the format: `https://gyazo.com/{image_id}`

  ### Upload Issues

  **Problem**: Image upload fails or returns errors

  **Solution**:

  - Ensure the binary property contains valid image data
  - Check that the binary property name matches the configured parameter
  - Verify the image format is supported by Gyazo (PNG, JPEG, GIF)

  ### Rate Limiting

  **Problem**: "Too Many Requests" errors

  **Solution**:

  - Implement delays between requests using n8n's Wait node
  - Reduce the number of concurrent requests
  - Check Gyazo API rate limits in their documentation

  ### Node Not Appearing

  **Problem**: Gyazo node doesn't appear in n8n after installation

  **Solution**:

  - Restart your n8n instance after installing the community node
  - Check that the installation completed successfully
  - Verify the node appears in Settings > Community Nodes

  For additional support, please check the [GitHub repository](https://github.com/nota/n8n-nodes-gyazo) or refer to the [Gyazo API documentation](https://gyazo.com/api/docs).

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of Gyazo API operations, allowing users to capture, share, manage, and search for screenshots and images within n8n workflows.","capabilities":["List user's saved images with pagination","Retrieve specific images by ID or URL","Search images using query strings (Pro users only)","Upload images to Gyazo with metadata options","Update existing image descriptions and alt text","Support for binary image data","Pagination support for list and search operations"],"authentication":"API key required (configured via Gyazo credentials in n8n)","commonUseCases":["Automate screenshot capture and sharing","Manage and organize image collections","Search and filter images based on content","Integrate image workflows with other automation tools"],"limitations":["Search functionality requires Gyazo Pro subscription","Self-hosted installation requires manual npm package installation","Node is a community node and may have limited support"],"relatedNodes":["HTTP Request","Binary File","Code","Wait Until"]}


node_type: @datafix/n8n-nodes-anthias.anthias
package_name: @datafix/n8n-nodes-anthias
display_name: Anthias
description: Node for controlling Anthias deployments with the Anthias API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: bramknuever
author_github_url: https://github.com/DataFix-B-V/n8n-nodes-anthias.git
npm_package_name: @datafix/n8n-nodes-anthias
npm_version: 0.1.3
community_fetched_at: 2026-03-25T21:19:40.693Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "asset",
      "options": [
        {
          "name": "Asset",
          "value": "asset"
        },
        {
          "name": "Device",
          "value": "device"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAllAssets",
      "options": [
        {
          "name": "Control Asset Playback",
          "value": "controlAssetPlayback",
          "action": "Control asset playback"
        },
        {
          "name": "Create Asset",
          "value": "createAsset",
          "action": "Create an asset"
        },
        {
          "name": "Delete Asset",
          "value": "deleteAsset",
          "action": "Delete an asset"
        },
        {
          "name": "Get All Assets",
          "value": "getAllAssets",
          "action": "Get all assets"
        },
        {
          "name": "Get Asset",
          "value": "getAsset",
          "action": "Get an asset"
        },
        {
          "name": "Get Asset Content",
          "value": "getAssetContent",
          "action": "Get asset content"
        },
        {
          "name": "Update Asset",
          "value": "updateAsset",
          "action": "Update an asset"
        },
        {
          "name": "Update Playlist Order",
          "value": "updatePlaylistOrder",
          "action": "Update playlist order"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "asset"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getDeviceSettings",
      "options": [
        {
          "name": "Get Device Settings",
          "value": "getDeviceSettings",
          "action": "Get device settings"
        },
        {
          "name": "Get Integrations Information",
          "value": "getIntegrationsInformation",
          "action": "Get integrations information"
        },
        {
          "name": "Get System Information",
          "value": "getSystemInfo",
          "action": "Get system information"
        },
        {
          "name": "Reboot Device",
          "value": "rebootDevice",
          "action": "Reboot device"
        },
        {
          "name": "Shutdown Device",
          "value": "shutdownDevice",
          "action": "Shutdown device"
        },
        {
          "name": "Update Device Settings",
          "value": "updateDeviceSettings",
          "action": "Update device settings"
        }
      ],
      "displayName": "Operation",
      "placeholder": "Select operation",
      "displayOptions": {
        "show": {
          "resource": [
            "device"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Control Asset Playback",
      "value": "controlAssetPlayback",
      "action": "Control asset playback"
    },
    {
      "name": "Create Asset",
      "value": "createAsset",
      "action": "Create an asset"
    },
    {
      "name": "Delete Asset",
      "value": "deleteAsset",
      "action": "Delete an asset"
    },
    {
      "name": "Get All Assets",
      "value": "getAllAssets",
      "action": "Get all assets"
    },
    {
      "name": "Get Asset",
      "value": "getAsset",
      "action": "Get an asset"
    },
    {
      "name": "Get Asset Content",
      "value": "getAssetContent",
      "action": "Get asset content"
    },
    {
      "name": "Update Asset",
      "value": "updateAsset",
      "action": "Update an asset"
    },
    {
      "name": "Update Playlist Order",
      "value": "updatePlaylistOrder",
      "action": "Update playlist order"
    },
    {
      "name": "Get Device Settings",
      "value": "getDeviceSettings",
      "action": "Get device settings"
    },
    {
      "name": "Get Integrations Information",
      "value": "getIntegrationsInformation",
      "action": "Get integrations information"
    },
    {
      "name": "Get System Information",
      "value": "getSystemInfo",
      "action": "Get system information"
    },
    {
      "name": "Reboot Device",
      "value": "rebootDevice",
      "action": "Reboot device"
    },
    {
      "name": "Shutdown Device",
      "value": "shutdownDevice",
      "action": "Shutdown device"
    },
    {
      "name": "Update Device Settings",
      "value": "updateDeviceSettings",
      "action": "Update device settings"
    }
  ]

npm_readme:
  ![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)

  # n8n-nodes-anthias

  This is a custom node for n8n, a powerful workflow automation tool. It provides a simple way to connect your n8n workflows with the Anthias, a digital signage platform. By using this node, you can automate tasks related to your digital displays, content management, and player controls.

  ## What can you do with this node?
  The n8n-nodes-anthias node acts as a bridge between n8n and the Anthias API. It includes features like:

  - Retrieve information about your screens and players.
  - Update content on a display.
  - Change the schedule for a screen.
  - Trigger actions on a player, such as a reboot or a content refresh.

  ## Developer
  ![logo](https://github.com/datafix-b-v/n8n-nodes-anthias/blob/master/images/logoDataFix.png)

  This node was created by [DataFix B.V.](https://datafix.nl), a n8n expert partner from the Netherlands.

  DataFix supports companies with their implementation of n8n, including node development. If you want to use our services, feel free to reach out. You can contact us through our [site](https://datafix.nl) or by emailing hi@datafix.nl

  ## More information

  Refer to the [documentation on installing nodes](https://docs.n8n.io/integrations/community-nodes/installation/) for detailed information on installing custom nodes.

  Refer to the [documentation on creating nodes](https://docs.n8n.io/integrations/creating-nodes/) for detailed information on building your own nodes.

  ## License

  [MIT](https://github.com/n8n-io/n8n-nodes-starter/blob/master/LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n node enables automation of Anthias digital signage deployments by connecting n8n workflows to the Anthias API for managing screens, players, and content.","capabilities":["Retrieve screen and player information","Update content on displays","Modify screen schedules","Trigger player actions (reboot, content refresh)"],"authentication":"API key required (implied by 'Anthias API' reference, specific method not detailed in README)","commonUseCases":["Automating digital signage content updates","Managing player reboots via workflow triggers","Scheduling display content changes"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-gatus-trigger.gatusTrigger
package_name: n8n-nodes-gatus-trigger
display_name: Gatus Trigger
description: Receives webhook alerts from Gatus monitoring system
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: twin.sh
author_github_url: https://github.com/TwiN/
npm_package_name: n8n-nodes-gatus-trigger
npm_version: 1.0.4
community_fetched_at: 2026-03-25T21:19:40.744Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-gatus-trigger
  [![npm package version](https://img.shields.io/npm/v/n8n-nodes-gatus-trigger)](https://www.npmjs.com/package/n8n-nodes-gatus-trigger)

  This is a n8n community node that lets you receive webhook alerts from [Gatus](https://github.com/TwiN/gatus), a developer-oriented health monitoring and status page system.


  ## Installation
  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ### npm

  ```bash
  npm install n8n-nodes-gatus-trigger
  ```

  ### n8n Cloud
  For n8n cloud users, follow the [n8n Cloud installation guide](https://docs.n8n.io/integrations/community-nodes/installation/gui-install/).

  ## Operations
  This node provides a single trigger operation:

  - **Webhook Trigger**: Receives HTTP POST webhooks from Gatus when alerts are triggered or resolved

  ## Configuring Gatus
  To send alerts to this n8n trigger node, configure Gatus to use the n8n alerting provider:

  ### 1. Get Your Webhook URL
  After adding the Gatus Trigger node to your n8n workflow:
  1. Click "Listen for Test Event" to get the test webhook URL
  2. Once your workflow is activated, use the Production webhook URL

  ### 2. Configure Gatus
  Add the following to your Gatus configuration file (`config.yaml`):

  ```yaml
  alerting:
    n8n:
      webhook-url: "https://your-n8n-instance.com/webhook/your-webhook-path"
    default-alert:
      send-on-resolved: true 

  endpoints:
    - name: example-api
      url: "https://api.example.com/health"
      interval: 1m
      conditions:
        - "[STATUS] == 200"
      alerts:
        - type: n8n
          description: "API health check failed"
  ```

  ### Gatus Webhook Payload Structure
  Gatus automatically sends webhooks with the following JSON structure (based on the [official n8n provider implementation](https://github.com/TwiN/gatus/blob/master/alerting/provider/n8n/n8n.go)):

  - `title`: Title of the alert (configurable in Gatus, defaults to "Gatus")
  - `endpoint_name`: Name of the monitored endpoint
  - `endpoint_group`: Group the endpoint belongs to (optional)
  - `endpoint_url`: URL being monitored
  - `alert_description`: Description from your alert configuration (optional)
  - `resolved`: Boolean - `true` if alert is resolved, `false` if triggered
  - `message`: Auto-generated message describing the alert
  - `condition_results`: Array of condition check results (optional)

  **Note:** You typically don't need to customize the payload - Gatus sends the correct structure automatically. However, if you need to customize the title, you can configure it in your Gatus config:

  ```yaml
  alerting:
    n8n:
      webhook-url: "https://your-n8n-instance.com/webhook/your-webhook-path"
      title: "Production Monitoring"  # Optional: customize the title
  ```

  ## Node Parameters

  ### Path
  - **Optional**: Custom webhook path
  - **Default**: Auto-generated
  - Leave empty to use an automatically generated webhook path, or specify a custom path for easier management

  ### Options

  #### Alert Type Filter
  - **All**: Receive both triggered and resolved alerts (default)
  - **Triggered Only**: Only receive alerts when endpoints fail
  - **Resolved Only**: Only receive alerts when endpoints recover

  #### Endpoint Group Filter
  - Filter alerts by endpoint group
  - Leave empty to receive alerts from all groups
  - Example: Set to "production" to only receive alerts for production endpoints

  #### Endpoint Name Filter
  - Filter alerts by endpoint name
  - Leave empty to receive alerts from all endpoints
  - Example: Set to "api-server" to only receive alerts for that specific endpoint

  ## Example Workflows

  ### Basic Alert Notification

  ```
  Gatus Trigger → Send Email
  ```

  Send an email whenever a Gatus alert is triggered.

  ### Conditional Response Based on Alert Type

  ```
  Gatus Trigger → IF Node → Send Slack Message / Log to Database
  ```

  Send Slack notifications for triggered alerts and log resolved alerts to a database.

  ### Alert Management

  ```
  Gatus Trigger → Set Variables → HTTP Request → Update Dashboard
  ```

  Process the alert data and update an external monitoring dashboard.

  ## Output Data

  The trigger node outputs the following data structure:

  ```json
  {
    "title": "Gatus",
    "endpoint_name": "api-server",
    "endpoint_group": "production",
    "endpoint_url": "https://api.example.com/health",
    "alert_description": "API health check failed",
    "resolved": false,
    "message": "An alert for api-server has been triggered due to having failed 3 time(s) in a row",
    "condition_results": [
      {
        "condition": "[STATUS] == 200",
        "success": false
      },
      {
        "condition": "[RESPONSE_TIME] < 500",
        "success": true
      }
    ]
  }
  ```

  ### Field Descriptions

  - **title**: The configured title from Gatus (defaults to "Gatus")
  - **endpoint_name**: Name of the endpoint that triggered the alert
  - **endpoint_group**: Optional group classification
  - **endpoint_url**: The URL being monitored
  - **alert_description**: Custom description from your Gatus alert configuration
  - **resolved**: `true` when an alert is resolved, `false` when triggered
  - **message**: Human-readable message generated by Gatus
  - **condition_results**: Array of all condition checks with their results

  ## Development

  ### Setup

  ```bash
  # Install dependencies
  npm install

  # Build the node
  npm run build

  # Link for local development
  npm link
  cd ~/.n8n/nodes
  npm link n8n-nodes-gatus-trigger
  ```

  ### Testing

  To test the node locally:

  1. Start n8n with `n8n start`
  2. Add the Gatus Trigger node to a workflow
  3. Click "Listen for Test Event"
  4. Send a test webhook using curl:

  ```bash
  curl -X POST https://your-n8n-instance.com/webhook/your-webhook-path \
    -H "Content-Type: application/json" \
    -d '{
      "title": "Gatus",
      "endpoint_name": "test-api",
      "endpoint_group": "test",
      "endpoint_url": "https://test.example.com",
      "alert_description": "Test alert",
      "resolved": false,
      "message": "An alert for test-api has been triggered due to having failed 3 time(s) in a row",
      "condition_results": [
        {
          "condition": "[STATUS] == 200",
          "success": false
        }
      ]
    }'
  ```

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Gatus documentation](https://gatus.io/docs/)
  - [Gatus GitHub repository](https://github.com/TwiN/gatus)
  - [Gatus alerting configuration](https://gatus.io/docs/alerting-getting-started)

ai_documentation_summary:
  {"purpose":"Receives webhook alerts from the Gatus monitoring system when endpoints fail or recover, enabling automated responses to infrastructure health events.","capabilities":["Receives HTTP POST webhooks from Gatus for triggered alerts","Receives HTTP POST webhooks from Gatus for resolved alerts","Filters alerts by alert type (All, Triggered Only, Resolved Only)","Filters alerts by endpoint group","Filters alerts by endpoint name","Outputs structured JSON data including alert details and condition results","Supports custom webhook path configuration"],"authentication":"None","commonUseCases":["Send email notifications when services go down","Trigger Slack messages for critical infrastructure failures","Update external monitoring dashboards with real-time status","Log resolved alerts to a database for historical tracking","Automatically restart failed services via HTTP requests"],"limitations":["Requires Gatus to be configured with the n8n alerting provider","Does not support authentication between Gatus and n8n","Webhook payload structure is fixed and may not match all custom Gatus configurations","Only supports basic filtering options (alert type, endpoint group, endpoint name)"],"relatedNodes":["Gatus","HTTP Request","IF","Send Email","Send Slack"]}


node_type: @meistrari/n8n-nodes-tela.tela
package_name: @meistrari/n8n-nodes-tela
display_name: Tela
description: Integrates with Tela to run AI-driven workflows and automation tasks
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: 0xthierry
author_github_url: https://github.com/meistrari/n8n-nodes-tela.git
npm_package_name: @meistrari/n8n-nodes-tela
npm_version: 1.5.0
community_fetched_at: 2026-03-25T21:19:40.745Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "canvas",
      "options": [
        {
          "name": "Canvas",
          "value": "canvas"
        }
      ],
      "description": "The resource to operate on",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "execute",
      "options": [
        {
          "name": "Execute",
          "value": "execute",
          "action": "Execute a canvas",
          "description": "Execute a canvas with variables"
        },
        {
          "name": "Execute Workstation",
          "value": "executeWorkstation",
          "action": "Execute workstation task",
          "description": "Create a task in the workstation dashboard"
        },
        {
          "name": "Get Completion",
          "value": "getCompletion",
          "action": "Get completion status",
          "description": "Get the result of an async completion"
        }
      ],
      "description": "The operation to perform",
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "canvas"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Execute",
      "value": "execute",
      "action": "Execute a canvas",
      "description": "Execute a canvas with variables"
    },
    {
      "name": "Execute Workstation",
      "value": "executeWorkstation",
      "action": "Execute workstation task",
      "description": "Create a task in the workstation dashboard"
    },
    {
      "name": "Get Completion",
      "value": "getCompletion",
      "action": "Get completion status",
      "description": "Get the result of an async completion"
    }
  ]

npm_readme:
  # n8n-nodes-tela

  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.

  ![n8n.io - Workflow Automation](https://raw.githubusercontent.com/n8n-io/n8n/master/assets/n8n-logo.png)

  ## TL;DR

  Don't want to read? Import the sample workflow **"Tela Canvas Execution with Dynamic Variables"** to test this node with real Tela API integration.

  ## What This Node Does

  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

  ## Installation

  ### Community Nodes (Recommended)

  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `@meistrari/n8n-nodes-tela` as the package name
  4. Agree to the [risks](https://docs.n8n.io/integrations/community-nodes/risks/) of using community nodes
  5. Select **Install**

  ### Manual Installation

  For self-hosted n8n instances:

  ```bash
  npm install @meistrari/n8n-nodes-tela
  ```

  For Docker installations, follow the [custom nodes guide](https://docs.n8n.io/integrations/creating-nodes/deploy/install-private-nodes/).

  ## Configuration

  ### 1. Create Tela API Credentials

  1. Create a new credential of type **"Tela API"**
  2. Enter your Tela API key (find this in your [Tela dashboard](https://app.tela.com))
  3. Test the connection to verify it works

  ### 2. Configure the Node

  1. **Project**: Select the project containing your canvas
  2. **Canvas**: Choose the specific canvas to execute
  3. **Variables**: Configure dynamic fields based on your canvas configuration

  ## Operations

  ### Execute Canvas

  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

  ### Execute Workstation

  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

  ### Get Completion

  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`, and `outputContent`

  **Use Cases:**

  - Poll for long-running canvas executions
  - Build async workflows with wait loops
  - Handle high-latency AI processing without timeouts

  ## Node Reference

  ### Credentials

  | Field       | Description                           |
  | ----------- | ------------------------------------- |
  | **API Key** | Your Tela API key from your dashboard |

  ### 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 |

  ## Usage Examples

  ### Example 1: Basic Canvas Execution

  **Input Data:**

  ```json
  {
    "customerName": "John Doe",
    "productType": "Premium Subscription",
    "monthlyAmount": 99.99
  }
  ```

  **Canvas Variables:**

  - `customer_name`: John Doe
  - `product_type`: Premium Subscription
  - `monthly_amount`: 99.99

  **Result:** AI-generated personalized content based on your canvas configuration.

  ### Example 2: File Processing

  **Input Data:**

  ```json
  {
    "document": "binary_file_data",
    "processingType": "summarize"
  }
  ```

  **Canvas Variables:**

  - `document`: [File upload]
  - `processing_type`: summarize

  **Result:** AI-processed document with summary or analysis.

  ### Example 3: Dynamic Content Generation

  **Input Data:**

  ```json
  {
    "industry": "Technology",
    "companySize": "100-500 employees",
    "challenge": "Digital transformation"
  }
  ```

  **Canvas Variables:**

  - `industry`: Technology
  - `company_size`: 100-500 employees
  - `challenge`: Digital transformation

  **Result:** Tailored content addressing specific business challenges.

  ## Sample Workflows

  ### Workflow 1: Automated Customer Onboarding

  1. **Webhook** receives new customer signup
  2. **Tela** generates personalized welcome email
  3. **Send Email** delivers the generated content

  ### Workflow 2: Document Processing Pipeline

  1. **File Upload** receives document
  2. **Tela** processes and analyzes document
  3. **Database** stores processed results
  4. **Notification** sends completion alert

  ### Workflow 3: Marketing Campaign Generator

  1. **CRM** provides customer segments
  2. **Tela** generates personalized campaigns
  3. **Marketing Platform** deploys campaigns
  4. **Analytics** tracks performance

  ## Advanced Features

  ### Dynamic Variable Detection

  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

  ### Smart File Handling

  - Supports multiple file formats
  - Automatic MIME type detection
  - Secure file upload to Tela servers
  - Binary data processing from n8n workflows

  ### Load Options

  - **Projects**: Dynamically loads available projects
  - **Canvases**: Loads canvases based on selected project
  - **Variables**: Auto-populates variable fields based on canvas

  ## Compatibility

  - **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

  ## Troubleshooting

  ### Common Issues

  1. **API Key Invalid**

     - Verify your Tela API key is correct
     - Check if the key has expired
     - Ensure proper permissions

  2. **Project Not Loading**

     - Verify API key has access to projects
     - Check Tela API status
     - Refresh credentials

  3. **Canvas Execution Fails**
     - Verify all required variables are set
     - Check canvas configuration in Tela
     - Review API response for error details

  ### Error Messages

  - `Failed to load projects`: Check API key and permissions
  - `Failed to load canvases`: Verify project ID and access
  - `Failed to execute canvas`: Review variable configuration

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Tela API Documentation](https://docs.tela.com)
  - [n8n Workflow Automation](https://n8n.io)
  - [Community Support](https://community.n8n.io)

  ## Support

  ### Getting Help

  - **GitHub Issues**: [Report bugs and request features](https://github.com/meistrari/n8n-nodes-tela/issues)
  - **n8n Community**: [Ask questions in the community](https://community.n8n.io)
  - **Documentation**: [Check the comprehensive docs](https://docs.n8n.io)

  ## Development

  ### Local Development

  ```bash
  # 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
  ```

  ### Testing

  ```bash
  # Run tests
  npm test

  # Build and test
  npm run build && npm test
  ```

  ## Changelog

  ### Version 1.5.0

  **Improved Binary File Handling**

  #### Improvements

  - **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 `file` type variables. Tela will automatically parse text content from files when needed
  - **Simplified binary detection**: Cleaner logic with 3 clear cases:
    1. String with binary field name (e.g., `"data"`)
    2. Binary object passed directly (e.g., `{{ $binary.data }}`)
    3. Fallback to first available binary when value is empty
  - **Removed unnecessary API call**: No longer fetches canvas variable definitions just to check types

  #### Migration Guide

  No breaking changes - all existing workflows continue to work. The only difference is:
  - Variables with `type: text` can now receive binary files (previously only `type: file` variables could)

  ### Version 1.4.0

  **BREAKING CHANGE: Simplified API Response Handling**

  All operations now return the raw API response directly instead of formatted/transformed data.

  #### Breaking Changes

  - **Execute Canvas**: Now returns the full `CompletionResponse` object from the API
    - Before: `data.choices[0].message?.content` (sync) or `{ id, status }` (async)
    - After: Full API response object

  - **Execute Workstation**: Now returns the full API response
    - Before: `{ status: "created" }`
    - After: Full `CompletionResponse` object from the API

  - **Get Completion**: Now returns the full API response
    - Before: `{ status, ...outputContent }` (succeeded) or `{ status }` (pending)
    - After: Full `GetCompletionResponse` object with `id`, `status`, and `outputContent`

  #### Migration Guide

  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 }}
  ```

  #### Why This Change?

  - 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

  ### Version 1.2.0

  **New Features: Async Execution, Completion Polling & Workstation Integration**

  #### New Operations
  - **Execute Workstation**: Create tasks in the Tela Workstation dashboard
    - Tasks are visible in the Tela web interface for review and approval
    - Supports optional `label` field for task identification
    - Automatically fetches `application_id` from the canvas
    - Returns `{ status: "created" }` on success

  - **Get Completion**: Retrieve the result of an async canvas execution
    - Accepts a `completionId` parameter
    - Returns `{ status, ...content }` when succeeded
    - Returns `{ status }` when still processing (for polling workflows)

  #### Execute Canvas Enhancements
  - **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

  #### Use Case: Async Workflow Pattern
  ```
  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
  ```

  #### Use Case: Workstation Task Creation
  ```
  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]
  ```

  #### Technical Details
  - Added `async` parameter to completion request body
  - Added `status` field to completion response types
  - New `GetCompletionResponse` type for get completion endpoint
  - New `PromptApplication` and `WorkstationRequest` types
  - New `/prompt-application` endpoint integration
  - Graceful error handling for polling requests

  ### Version 1.1.2

  **UX Pattern compliance for n8n verification:**

  #### n8n Verification Requirements
  - **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

  #### User Experience Improvements
  - **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.)

  #### Technical Details
  - Added `resource` property with 'canvas' option
  - Added `operation` property with 'execute' action
  - Updated all existing properties with `displayOptions` to show conditionally
  - Maintains backwards compatibility with existing workflows

  #### Breaking Changes
  - None - all changes are backwards compatible

  ### Version 1.1.0

  **Major improvements for n8n Cloud verification compliance:**

  #### Critical Fixes
  - **Removed dependency overrides**: Eliminated `overrides` section from package.json to prevent masking security vulnerabilities
  - **Replaced native fetch() with n8n HTTP helpers**: All API requests now use n8n's `httpRequest` helper for proper proxy support, retry logic, and request logging
  - **Added pairedItem linking**: Implemented proper data flow tracking with `pairedItem` metadata on all outputs

  #### High Priority Improvements
  - **Enhanced error logging**: Replaced `console.error` with 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

  #### Quality Improvements
  - **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
  - **Improved error handling**: Added `NodeOperationError` with detailed metadata including itemIndex
  - **Better type safety**: Enhanced TypeScript types for HTTP request methods

  #### Breaking Changes
  - None - all changes are backwards compatible

  #### Developer Experience
  - Enhanced logging visibility in n8n execution logs
  - Better error messages with actionable descriptions
  - Improved workflow debugging with proper data flow tracking

  ### Version 1.0.16

  - Replace get prompts call (includeLastVersion=true) for /promoted-version endpoint (the old one was deprecated internally)

  ### Version 1.0.15

  - 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

  ### Version 1.0.14

  - 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

  ### Version 1.0.1

  - Enhanced error handling
  - Improved file upload support
  - Better variable validation

  ### Version 1.0.0

  - Initial release
  - Basic Tela API integration
  - Dynamic variable support

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n community node integrates with the Tela API to execute AI-driven canvases, manage projects, and handle file uploads for automation workflows.","capabilities":["Execute Tela canvases with dynamic variables","Handle file uploads for canvas processing","List and manage Tela projects and canvases","Create tasks in Tela Workstation dashboard","Poll for async canvas execution completion status","Generate dynamic content for emails and marketing materials","Process documents with AI assistance"],"authentication":"API key required (Tela API key from dashboard)","commonUseCases":["Generate personalized marketing materials","Process documents with AI assistance","Create tasks for human review in Tela dashboard","Build hybrid human-AI pipelines with manual checkpoints","Poll for long-running AI processing without timeouts"],"limitations":["Community node (requires accepting n8n community node risks)","Manual installation required for self-hosted instances","Requires Tela API credentials setup"],"relatedNodes":["n8n HTTP Request","n8n Wait","n8n File"]}


node_type: n8n-nodes-botnoi-voice.botnoitts
package_name: n8n-nodes-botnoi-voice
display_name: Botnoi Voice
description: Generate speech using Botnoi Voice API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: phoovadet.noobdev
author_github_url: https://github.com/HakusaiTH/n8n-BotnoiVoice.git
npm_package_name: n8n-nodes-botnoi-voice
npm_version: 2.0.7
community_fetched_at: 2026-03-25T21:19:40.745Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "voice",
      "options": [
        {
          "name": "Voice",
          "value": "voice"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate",
          "value": "generate",
          "action": "Generate voice",
          "description": "Generate voice from text"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "voice"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate",
      "value": "generate",
      "action": "Generate voice",
      "description": "Generate voice from text"
    }
  ]

npm_readme:
  # 🔊 n8n-BotnoiVoice

  Plug-in to connect [Botnoi Voice API](https://voice.botnoi.ai/api-login) to [n8n](https://n8n.io/) — allowing easy use of **Thai Text-to-Speech (TTS)** and **Subtitle Generation (Gensub)** directly inside your n8n workflows.

  ---

  ## 📌 Requirements before starting

  ### 1. Install basic tools

  - [Git](https://git-scm.com/downloads)
  - Node.js version **20+**
  - Recommended via [nvm](https://github.com/nvm-sh/nvm) (Linux, Mac, WSL)
  - For Windows, see [Microsoft Docs](https://learn.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-windows)
  - Install n8n globally:

  ```bash
  npm install -g n8n
  ````

  ---

  ## 🚀 How to use the plugin

  ### ✅ Install from npm (recommended)

  1. Create a custom n8n extensions folder:

  ```bash
  mkdir -p ~/.n8n/custom
  cd ~/.n8n/custom
  npm init -y
  ```

  2. Install the plugin:

  ```bash
  npm i n8n-nodes-botnoi-voice
  ```

  3. Start n8n:

  ```bash
  n8n start
  ```

  > 💡 Once installed, search in n8n for **Botnoi Voice** or **Botnoi Gensub** nodes.

  ---

  ### 🛠️ Install locally (if cloning repo)

  1. Clone and install dependencies:

  ```bash
  git clone https://github.com/phoovadetnoobdev/n8n-nodes-botnoi-voice
  cd n8n-nodes-botnoi-voice
  npm install
  ```

  2. Build and link the plugin:

  ```bash
  npm run build
  npm link
  ```

  3. Link to your n8n instance:

  ```bash
  mkdir -p ~/.n8n/custom
  cd ~/.n8n/custom
  npm init -y
  npm link n8n-nodes-botnoi-voice
  ```

  4. Start n8n:

  ```bash
  n8n start
  ```

  ---

  ## 🔐 Get API Key from Botnoi Voice

  1. Visit [https://voice.botnoi.ai/api-login](https://voice.botnoi.ai/api-login)
  2. Login or sign up for a free account
  3. Click **Generate API Key**
  4. Copy the key for use in n8n

  <p align="center">
    <img src="https://github.com/user-attachments/assets/53cae275-c947-49ac-aa5f-49c224914da9" width="640" alt="Generate API Key"/>
  </p>

  ---

  ## ⚙️ Add API Key in n8n

  1. Open **Credentials** tab in n8n
  2. Create a new credential → Select **Botnoi Voice**
  3. Paste your API key and test connection

  <p align="center">
    <img src="https://github.com/user-attachments/assets/7ddb26c4-2241-420f-8212-5096e1e052c5" width="640"/>
  </p>
  <p align="center">
    <img src="https://github.com/user-attachments/assets/2d5a905a-7f46-4447-a5fe-aa682a318621" width="640"/>
  </p>

  > ✅ If the key is correct, it will show “Connection tested successfully”.

  ---

  ## 🗣️ Botnoi Voice (TTS)

  Convert any text into natural-sounding speech in Thai, English, Japanese, Vietnamese, and more.

  ### 🧾 Usage Steps

  #### 1️⃣ Enter text to convert

  <p align="center">
    <img src="https://github.com/user-attachments/assets/a20ee802-7ecb-4005-bc18-7ffe18e2ac92" width="640"/>
  </p>

  * Add a `Botnoi Voice` node
  * Enter text manually or use expression (e.g. `{{ $json.output }}`)

  #### 2️⃣ Choose a speaker

  <p align="center">
    <img src="https://github.com/user-attachments/assets/1628e724-a7c6-4f76-a203-dad037eca3a4" width="640"/>
  </p>

  * Over 300 voices available (Eva, Bo, Max, Alisa, etc.)

  #### 3️⃣ Select language

  <p align="center">
    <img src="https://github.com/user-attachments/assets/8fb5380f-f4b2-48cf-89f6-03d77e8679d4" width="640"/>
  </p>

  * Supports multiple languages — choose `Thai`, `English`, `Japanese`, etc.

  #### 4️⃣ Generate audio

  <p align="center">
    <img src="https://github.com/user-attachments/assets/06ecb4b4-cd85-45a2-b99e-6db17f63f443" width="640"/>
  </p>

  * Click **Execute Step** → Output shows `audio_url` for playback or download.

  ---

  ## 🎧 Botnoi Gensub (Subtitle Generator)

  Generate subtitles (SRT / JSON) automatically from any **audio URL** via [Botnoi Voice API](https://voice.botnoi.ai/api-login).

  Ideal for creating Thai transcripts, podcast captions, or speech analytics.

  ### 🧩 Overview

  * Supports **URL input only**
  * Generates **SRT or JSON** subtitles
  * Adjustable silence and duration segmentation
  * Perfect with free hosting (e.g., [EdgeOne Pages](https://pages.edgeone.ai/drop))

  ---

  ### 🧱 Example: Generate Subtitles from an Audio URL

  #### ✅ Step 1 — Upload audio

  Use [EdgeOne Pages Drop](https://pages.edgeone.ai/drop) to host your file:

  1. Go to [https://pages.edgeone.ai/drop](https://pages.edgeone.ai/drop)
  2. Enter a temporary domain name
  3. Upload your `.mp3` or `.wav`
  4. Copy the URL (e.g.)

     ```
     https://forward-cyan-xo4dfpu9q6.edgeone.app/Recording.mp3
     ```

  <p align="center">
    <img alt="Image" src="https://github.com/user-attachments/assets/02666ee6-50c8-40fc-a1c8-f0d4908559f0" width="640"/>
  </p>

  ---

  #### ✅ Step 2 — Configure Botnoi Gensub Node

  | Field                          | Example                                                     | Description                              |
  | ------------------------------ | ----------------------------------------------------------- | ---------------------------------------- |
  | **Credential to connect with** | Botnoi account                                              | Use your `botnoiApi` credential          |
  | **Audio URL**                  | `https://forward-cyan-xo4dfpu9q6.edgeone.app/Recording.mp3` | Publicly accessible file URL             |
  | **Max Duration (Seconds)**     | `10`                                                        | Max duration per subtitle segment        |
  | **Max Silence (Seconds)**      | `0.3`                                                       | Silence threshold before splitting lines |
  | **Return SRT**                 | `Yes`                                                       | Choose “Yes” to get SRT subtitle text    |
  | **Timeout (Ms)**               | `60000`                                                     | Request timeout (default 60s)            |

  <p align="center">
   	<img alt="Image" src="https://github.com/user-attachments/assets/4c46f6c1-594d-48dc-83df-b23db3abb38c" width="640"/>
  </p>

  ---

  #### ✅ Step 3 — Execute and check result

  ```json
  {
    "message": "Transcribe successfully",
    "data": {
      "text": "1\n00:00:00,390 --> 00:00:02,220\nสวัสดีตอนเช้า\n",
      "current_point": 509,
      "current_monthly_point": 0,
      "used_points": 15
    }
  }
  ```

  **Result (SRT format):**

  ```
  1
  00:00:00,390 --> 00:00:02,220
  สวัสดีตอนเช้า
  ```

  <p align="center">
    <img alt="Image" src="https://github.com/user-attachments/assets/f992c796-8185-482d-80f5-188fd6599706" width="640"/>
  </p>

  ---

  ## ⚙️ Tips

  * Both nodes share the same credential `botnoiApi`
  * Ensure your audio URL is **publicly accessible** (no login needed)
  * Supported file formats: `.mp3`, `.wav`, `.m4a`
  * Recommended audio length ≤ 60 seconds for best transcription quality

  ---

  ## 📚 References

  * [Botnoi Voice API Docs](https://www.botnoigroup.com/botnoivoice/doc/api-user-guide)
  * [EdgeOne Pages Drop](https://pages.edgeone.ai/drop) — free quick hosting
  * [n8n Node Developer Docs](https://docs.n8n.io/integrations/creating-nodes/)

  ---

  ## 🧑‍💻 Maintainer

  Developed by **Phoovadet Noobdev**

  ---

  ## 📝 License

  [MIT License](https://github.com/n8n-io/n8n-nodes-starter/blob/master/LICENSE.md)

ai_documentation_summary:
  {"purpose":"A n8n node that connects to the Botnoi Voice API to generate Thai, English, Japanese, and Vietnamese speech from text (TTS) and create subtitles (SRT/JSON) from audio URLs (Gensub).","capabilities":["Text-to-Speech (TTS) generation in multiple languages","Selection from over 300 available voices","Subtitle generation from audio URLs (SRT format)","Subtitle generation from audio URLs (JSON format)","Configurable subtitle segmentation by max duration and silence threshold","Audio playback URL output"],"authentication":"API Key required (configured via n8n Credentials tab)","commonUseCases":["Automated voice announcements in Thai or other supported languages","Creating subtitles for podcasts or video content","Generating audio from text documents","Transcribing audio files into text or subtitle format"],"limitations":["Subtitle generation (Gensub) requires a publicly accessible audio URL only","Audio URLs must be hosted on free platforms like EdgeOne Pages for Gensub functionality","Gensub has a default request timeout of 60 seconds (configurable up to 60000ms)"],"relatedNodes":["n8n-nodes-core.webhook","n8n-nodes-core.httpRequest","n8n-nodes-core.code"]}


node_type: @xano/n8n-nodes-xano.xano
package_name: @xano/n8n-nodes-xano
display_name: Xano
description: Interact with Xano API to manage workspaces, tables, and content.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: xanosean
author_github_url: https://github.com/xano-inc/n8n-nodes-xano.git
npm_package_name: @xano/n8n-nodes-xano
npm_version: 1.0.6
community_fetched_at: 2026-03-25T21:19:40.746Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "table",
      "options": [
        {
          "name": "Table",
          "value": "table"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getTableContent",
      "options": [
        {
          "name": "Create Row",
          "value": "createRow",
          "action": "Create a row",
          "description": "Add a new row to a table"
        },
        {
          "name": "Create Row Bulk",
          "value": "bulkCreateContent",
          "action": "Create bulk rows",
          "description": "Bulk create rows in a table"
        },
        {
          "name": "Delete a Row",
          "value": "deleteSingleContent",
          "action": "Delete a row",
          "description": "Delete a single row from a table"
        },
        {
          "name": "Get a Row",
          "value": "getSingleContent",
          "action": "Get a row",
          "description": "Get a single row from a table"
        },
        {
          "name": "Get Many Rows",
          "value": "getTableContent",
          "action": "Get many rows",
          "description": "Get all rows from a table"
        },
        {
          "name": "Search Row",
          "value": "searchRow",
          "action": "Search row",
          "description": "Search for a row in a table"
        },
        {
          "name": "Update Row by ID",
          "value": "updateRow",
          "action": "Update row by ID",
          "description": "Update a new row to a table"
        },
        {
          "name": "Update Rows in Bulk by ID",
          "value": "bulkUpdateContent",
          "action": "Update rows in bulk by ID",
          "description": "Bulk Update rows to a table"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "table"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Row",
      "value": "createRow",
      "action": "Create a row",
      "description": "Add a new row to a table"
    },
    {
      "name": "Create Row Bulk",
      "value": "bulkCreateContent",
      "action": "Create bulk rows",
      "description": "Bulk create rows in a table"
    },
    {
      "name": "Delete a Row",
      "value": "deleteSingleContent",
      "action": "Delete a row",
      "description": "Delete a single row from a table"
    },
    {
      "name": "Get a Row",
      "value": "getSingleContent",
      "action": "Get a row",
      "description": "Get a single row from a table"
    },
    {
      "name": "Get Many Rows",
      "value": "getTableContent",
      "action": "Get many rows",
      "description": "Get all rows from a table"
    },
    {
      "name": "Search Row",
      "value": "searchRow",
      "action": "Search row",
      "description": "Search for a row in a table"
    },
    {
      "name": "Update Row by ID",
      "value": "updateRow",
      "action": "Update row by ID",
      "description": "Update a new row to a table"
    },
    {
      "name": "Update Rows in Bulk by ID",
      "value": "bulkUpdateContent",
      "action": "Update rows in bulk by ID",
      "description": "Bulk Update rows to a table"
    }
  ]

npm_readme:
  # 📘 n8n-nodes-xano — Custom Node Documentation

  This is an n8n community node. It lets you use [Xano](https://www.xano.com/) in your n8n workflows, enabling workflow automation through custom API actions like managing rows, fetching table schemas, and more.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)  
  [Operations](#-operations)  
  [Credentials](#credentials) <!-- delete if no auth needed -->  
  [Compatibility](#compatibility)  
  [Usage](#usage) <!-- delete if not using this section -->  
  [Resources](#resources)  
  [Version history](#version-history) <!-- delete if not using this section -->

  ---

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## 🔧 Operations

  | Action                   | Value (operation)     | Description                              |
  | ------------------------ | --------------------- | ---------------------------------------- |
  | ✅ Create Row            | `createRow`           | Create a new row in a selected table     |
  | ✅ Update Row            | `updateRow`           | Update a row with specific field values  |
  | ✅ Delete Single Content | `deleteSingleContent` | Delete a single row by ID                |
  | ✅ Get a Row             | `getSingleContent`    | Fetch a row by ID                        |
  | ✅ Get Many Rows         | `getTableContent`     | Fetch multiple rows with pagination      |
  | ✅ Create Bulk Rows      | `bulkCreateContent`   | Insert multiple rows                     |
  | ✅ Update Bulk Rows      | `bulkUpdateContent`   | Bulk update multiple records             |
  | ✅ Search Rows           | `searchRow`           | Search using filter queries (JSON input) |

  ## Credentials

  To use this node in your workflows, you’ll need to authenticate your Xano account using the **Metadata API Access Token**.

  ### 🔑 Step 1: Get Your Xano Metadata API Access Token

  1. **Log in to your Xano account**
     Visit: [https://xano.com](https://xano.com)

  2. **Access your instance**
     In the lower-left corner of the dashboard, click **Instances**.

  3. **Open instance settings**
     Click the ⚙️ icon next to your instance name.

  4. **Select Metadata API**
     From the panel that opens, select **Metadata API**.

  5. **Generate an Access Token**
     Click on **➕ Create Token** and configure the following:
     - **Name**: Something descriptive like `n8n integration token`
     - **Expiry**: Set an expiry (e.g. 7 days, or "Never" if preferred)
     - **Scopes**: Select the necessary access:
       - ✅ `Database` (CRUD)

       - ✅ `Content`, `API Groups`, or other required scopes for your use case

     > ⚠️ Make sure to select `Read` and `Update` at a minimum for basic operations.

  6. **Copy the generated access token**
     This token will be shown only once. Store it securely.

  ### 🔌 Step 2: Add Credentials in n8n

  1. Open your n8n instance
  2. Go to **Credentials** and click **"New"**
  3. Search for **Xano API** (your node’s credential type)
  4. In the **Access Token** field, paste the token from Xano

  #### ✅ Successful connection will show:

  ![Connection Success](./assets/success.png)

  #### ❌ If token is invalid or expired:

  ![Connection Failed](./assets/error.png)

  > If the token is invalid, regenerate one from Xano and repeat the above steps.

  ### ✅ Final Step

  Once the connection is verified, you’re ready to start using Xano in your workflows via this custom node!

  ## Compatibility

  Tested on n8n v1.100.0 and above.

  ## Usage

  Note about the **Search Rows** operation. It uses a simplified version of the [external filtering search](https://docs.xano.com/xano-features/metadata-api/search#search) syntax.

  Here's a quick example where I'm searching for the record where id = 2.

  `[{"id|=":"2"}]`

  Simply add the JSON above to the Search field.

  **Pro tip**: Open Dev Tools in your browser then use the Xano UI filter in your table view to see what syntax gets generated by the /content API request, then copy the value from the search field in the payload and use that.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Xano Documentation](https://docs.xano.com/)

  ## Version history

  ### 1.0.1

  - Initial release

  ### 1.0.2

  - Minor updates

  ### 1.0.3

  - Minor updates

  ### 1.0.4

  - Minor updates

  ### 1.0.5

  - Minor updates

ai_documentation_summary:
  {"purpose":"This n8n community node enables workflow automation by interacting with the Xano API to manage workspaces, tables, and content through CRUD operations and search functionality.","capabilities":["Create a new row in a selected table","Update a row with specific field values","Delete a single row by ID","Fetch a row by ID","Fetch multiple rows with pagination","Insert multiple rows in bulk","Update multiple records in bulk","Search rows using filter queries (JSON input)"],"authentication":"API key required (Xano Metadata API Access Token with Database scope)","commonUseCases":["Automating data entry into Xano tables","Syncing data between n8n and Xano databases","Bulk data migration or updates","Searching and filtering Xano content dynamically"],"limitations":["Search Rows operation uses a simplified version of Xano's external filtering search syntax","Requires manual configuration of token scopes (Database, Content, API Groups) in Xano dashboard","Token must be generated with specific scopes and may expire based on configured settings"],"relatedNodes":["n8n community nodes","Xano API nodes"]}


node_type: n8n-nodes-presenton.presenton
package_name: n8n-nodes-presenton
display_name: Presenton
description: Interact with presenton API (async generation + status checking)
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: badu5
author_github_url: https://github.com/shivarajbadu/
npm_package_name: n8n-nodes-presenton
npm_version: 1.2.7
community_fetched_at: 2026-03-25T21:19:40.746Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "generateAsync",
      "options": [
        {
          "name": "Generate Presentation (Async)",
          "value": "generateAsync",
          "action": "Initiate presentation generation",
          "description": "Initiate presentation generation asynchronously"
        },
        {
          "name": "Check Presentation Status",
          "value": "checkStatus",
          "action": "Poll or check until presentation is done",
          "description": "Poll or check until presentation is done"
        },
        {
          "name": "Upload File",
          "value": "uploadFile",
          "action": "Upload a file to presenton to reference later",
          "description": "Upload a file to Presenton to reference later"
        }
      ],
      "required": true,
      "description": "What you want to do with Presenton",
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate Presentation (Async)",
      "value": "generateAsync",
      "action": "Initiate presentation generation",
      "description": "Initiate presentation generation asynchronously"
    },
    {
      "name": "Check Presentation Status",
      "value": "checkStatus",
      "action": "Poll or check until presentation is done",
      "description": "Poll or check until presentation is done"
    },
    {
      "name": "Upload File",
      "value": "uploadFile",
      "action": "Upload a file to presenton to reference later",
      "description": "Upload a file to Presenton to reference later"
    }
  ]

npm_readme:
  ## Presenton for n8n

  Generate professional presentations with the Presenton API directly from your n8n workflows. This community node supports asynchronous presentation generation, file uploads, and task status checks.

  Homepage: [presenton.ai](https://presenton.ai) • API docs: [presenton.ai/docs/api-reference](https://presenton.ai/docs/api-reference)

  ### Features

  - **Generate Presentation (Async)**: Kick off a background job to create PPTX or PDF
  - **Check Presentation Status**: Poll a task by ID until it’s complete
  - **Upload File**: Upload binary files and reference them during generation

  ## Installation

  ### Install in n8n (Community nodes)

  1. In n8n, go to Settings → Community Nodes → Install.
  2. Search for or enter the package name: `n8n-nodes-Presenton`.
  3. Confirm installation and restart n8n if prompted.

  ### Self-hosted filesystem install

  If you mount community nodes from disk, add this package to your custom nodes directory and install:

  ```bash
  npm install n8n-nodes-Presenton
  ```

  Minimum Node.js version: 20

  ## Credentials

  Create credentials of type `Presenton API`:

  - **API Key**: Your Presenton API key
  - **Base API URL** (optional): Override the default `https://api.presenton.ai` for staging or self-hosted deployments

  The node adds the `Authorization: Bearer <apiKey>` header automatically.

  ## Node operations

  ### Generate Presentation (Async)

  Starts a background job: `POST /api/v1/ppt/presentation/generate/async`

  - **content**: Main content to generate from
  - **slides_markdown**: Optional list of slide markdown strings
  - **instructions**: Additional guidance for the generator
  - **tone**: `default | professional | educational | funny | sale_pitch | causal`
  - **verbosity**: `standard | concise | text-heavy`
  - **web_search**: Allow web search during generation (boolean)
  - **image_type**: `stock | ai-generated`
  - **theme**: Theme name (string)
  - **noOfSlides**: Number of slides (number)
  - **language**: e.g. `English`
  - **template**: e.g. `general`
  - **include_table_of_contents**: boolean
  - **include_title_slide**: boolean
  - **files**: A file ID returned by the Upload File operation (string[])
  - **export_as**: `pptx | pdf`

  The node cleans empty values before sending. Response typically includes a task identifier you can pass to Check Presentation Status.

  ### Check Presentation Status

  Checks a task: `GET /api/v1/ppt/presentation/status/{taskId}`

  - **taskId**: The ID returned by Generate Presentation (Async)

  Returns the current status. When complete, the API usually includes result metadata (such as download links) defined by Presenton.

  ### Upload File

  Uploads a binary file: `POST /api/v1/ppt/files/upload`

  - **binaryPropertyName**: Name of the binary property on the incoming item (default: `data`)

  Returns a file ID you can set in the `files` field of the Generate Presentation (Async) operation.

  ## Typical workflow examples

  ### Generate a presentation from text

  1. Set operation to “Generate Presentation (Async)”.
  2. Fill in `content`, choose `export_as` (e.g. `pptx`), adjust options (tone, verbosity, slides, etc.).
  3. Use “Check Presentation Status” with the returned `taskId` until status is complete.

  ### Upload then generate

  1. Add a node with operation “Upload File” and set `binaryPropertyName` to the property holding your file.
  2. From its response, read the returned `file id`.
  3. Pass that id into the `files` field of “Generate Presentation (Async)”, then check status as above.

  ## Error handling

  - The node validates required parameters and throws meaningful errors (e.g., invalid slide count, missing task ID, or missing binary data).
  - If you enable “Continue On Fail”, errors are returned in the item’s JSON so your workflow can handle them.

  ## Development

  Clone, install, and build:

  ```bash
  npm i
  npm run dev   # TypeScript watch
  # or
  npm run build # build to dist
  ```

  Linting and formatting:

  ```bash
  npm run lint
  npm run lintfix
  npm run format
  ```

  To test locally, follow n8n’s guide to running custom nodes and point n8n to your built `dist` directory.

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"A community node that enables asynchronous generation of professional presentations (PPTX or PDF) using the Presenton API, supporting file uploads, status checking, and customizable generation parameters.","capabilities":["Asynchronous presentation generation from text content","Generation from markdown slide lists","Customizable tone, verbosity, and theme","Web search integration during generation","AI-generated or stock image support","Custom slide count and language selection","Template selection","Table of contents and title slide inclusion","Binary file upload for use in generation","Task status polling until completion"],"authentication":"API Key required (Bearer token)","commonUseCases":["Automated creation of pitch decks from text input","Generating educational or sales presentations from content","Converting uploaded documents or drafts into slide decks","Workflow automation for content-to-presentation conversion"],"limitations":["Generation is asynchronous, requiring a separate status check node","File uploads require a separate operation to obtain file IDs","Minimum Node.js version 20 required for self-hosted installation","Some result metadata (like download links) depends on Presenton API definitions"],"relatedNodes":["Wait Until Node","Code Node","Set Node","HTTP Request Node","Binary File Node"]}


node_type: n8n-nodes-abyssale.abyssale
package_name: n8n-nodes-abyssale
display_name: Abyssale
description: Consume Abyssale API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: remyabyssale
author_github_url: https://github.com/getabyssale/
npm_package_name: n8n-nodes-abyssale
npm_version: 1.0.3
community_fetched_at: 2026-03-25T21:19:40.746Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "banner",
      "options": [
        {
          "name": "Banner",
          "value": "banner"
        },
        {
          "name": "Design",
          "value": "design"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generateSingle",
      "options": [
        {
          "name": "Export Banners",
          "value": "exportBanners",
          "action": "Export banners",
          "description": "Export one or multiple previously generated visuals in .zip format"
        },
        {
          "name": "Generate HTML5 Banner Ads",
          "value": "generateHTML5BannerAds",
          "action": "Generate html5 banner ads",
          "description": "Generate HTML5 banner ads from an animated design"
        },
        {
          "name": "Generate Multi-Format Animated GIFs",
          "value": "generateMultiFormatGIFs",
          "action": "Generate multi format animated gifs",
          "description": "Generate multiple animated GIFs at once from a design created in Abyssale"
        },
        {
          "name": "Generate Multi-Format Images",
          "value": "generateMultiFormatImages",
          "action": "Generate multiple images",
          "description": "Generate a multiple images (JPEG, PNG, PDF,..) from a design"
        },
        {
          "name": "Generate Multi-Format PDFs for Printing",
          "value": "generateMultiFormatPDFs",
          "action": "Generate multi format pdfs for printing",
          "description": "Generate multiple printable PDFs at once from a design created in Abyssale"
        },
        {
          "name": "Generate Multi-Format Videos",
          "value": "generateMultiFormatVideos",
          "action": "Generate multi format videos",
          "description": "Generate multiple videos at once from an animated design created in Abyssale"
        },
        {
          "name": "Generate Single Image",
          "value": "generateSingle",
          "action": "Generate a single image",
          "description": "Generate a single image (JPEG, PNG, PDF) from a design"
        },
        {
          "name": "Get Banner",
          "value": "getBanner",
          "action": "Get banner",
          "description": "Retrieves the details about a previously generated banner"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "banner"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getDesign",
      "options": [
        {
          "name": "Get a Design",
          "value": "getDesign",
          "action": "Get a design",
          "description": "Retrieves the details about a design you created on Abyssale"
        },
        {
          "name": "Get a Design Format",
          "value": "getDesignFormat",
          "action": "Get a design format",
          "description": "Retrieves the details about a format added to a design you created on Abyssale"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "design"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Export Banners",
      "value": "exportBanners",
      "action": "Export banners",
      "description": "Export one or multiple previously generated visuals in .zip format"
    },
    {
      "name": "Generate HTML5 Banner Ads",
      "value": "generateHTML5BannerAds",
      "action": "Generate html5 banner ads",
      "description": "Generate HTML5 banner ads from an animated design"
    },
    {
      "name": "Generate Multi-Format Animated GIFs",
      "value": "generateMultiFormatGIFs",
      "action": "Generate multi format animated gifs",
      "description": "Generate multiple animated GIFs at once from a design created in Abyssale"
    },
    {
      "name": "Generate Multi-Format Images",
      "value": "generateMultiFormatImages",
      "action": "Generate multiple images",
      "description": "Generate a multiple images (JPEG, PNG, PDF,..) from a design"
    },
    {
      "name": "Generate Multi-Format PDFs for Printing",
      "value": "generateMultiFormatPDFs",
      "action": "Generate multi format pdfs for printing",
      "description": "Generate multiple printable PDFs at once from a design created in Abyssale"
    },
    {
      "name": "Generate Multi-Format Videos",
      "value": "generateMultiFormatVideos",
      "action": "Generate multi format videos",
      "description": "Generate multiple videos at once from an animated design created in Abyssale"
    },
    {
      "name": "Generate Single Image",
      "value": "generateSingle",
      "action": "Generate a single image",
      "description": "Generate a single image (JPEG, PNG, PDF) from a design"
    },
    {
      "name": "Get Banner",
      "value": "getBanner",
      "action": "Get banner",
      "description": "Retrieves the details about a previously generated banner"
    },
    {
      "name": "Get a Design",
      "value": "getDesign",
      "action": "Get a design",
      "description": "Retrieves the details about a design you created on Abyssale"
    },
    {
      "name": "Get a Design Format",
      "value": "getDesignFormat",
      "action": "Get a design format",
      "description": "Retrieves the details about a format added to a design you created on Abyssale"
    }
  ]

npm_readme:
  # n8n-nodes-abyssale

  This is an n8n community node. It lets you use Abyssale API in your n8n workflows.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  [Abyssale](https://www.abyssale.com/) helps you generate creative content at scale.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Usage](#usage)
  [Resources](#resources)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  - Banner
    - Export banners
    - Generate html5 banner ads
    - Generate multi format animated gifs
    - Generate multiple images
    - Generate multiple format pds for printing
    - Generate multiple format videos
    - Generate a single image
    - Get banner
    - Watch banner creation
    - Watch banner batch creation
    - Watch banners export
  - Design
    - Get a design
    - Get a design format
    - Watch design status changes

  ## Credentials

  You can use abyssale access token to use this node.

  ### Access token

  1. Follow this [tutorial](https://help.abyssale.com/en/articles/329008-how-to-create-your-abyssale-api-key) to generate your api key.
  2. Copy the token.

  ## Compatibility

  Compatible with n8n@1.117.3 or later

  ## Usage

  ### Generate marketing visuals with n8n
  Transform your n8n workflows with automated visual generation. 
  Pull data from any source and turn it into engaging visuals for every channel - from social posts to email campaigns.

  #### Basic image generation
  1. Add an **Abyssale** node to your workflow.
  2. Select the **Generate a single image** operation from the node's dropdown menu.
  3. Add your Abyssale API credential.
  4. Choose a static design. The design must be created in the Abyssale app beforehand and will be used as the base for your generated images.
  5. Select your desired format you want to use.
  6. Configure the design elements you want to customize. Map input data to specific elements like text, images, or colors to personalize each generated visual.
  7. Execute the node by clicking **Execute step**.
  8. Abyssale will automatically generate an image with your specified element modifications applied.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Abyssale API docs](https://developers.abyssale.com/)

ai_documentation_summary:
  {"purpose":"This n8n community node enables the consumption of the Abyssale API to generate creative marketing visuals, including banners, images, videos, and animated GIFs.","capabilities":["Generate HTML5 banner ads","Generate multi-format animated GIFs","Generate multiple images","Generate multiple format PDFs for printing","Generate multiple format videos","Generate a single image","Export banners","Get banner details","Watch banner creation status","Watch banner batch creation status"],"authentication":"API key (Abyssale access token)","commonUseCases":["Automated social media post generation","Email campaign visual creation","Dynamic marketing material personalization","Multi-channel content scaling"],"limitations":["Static designs must be created in the Abyssale app beforehand","Requires n8n version 1.117.3 or later","Community node (not official n8n product)"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.code"]}


node_type: n8n-nodes-chartmogul.chartmogul
package_name: n8n-nodes-chartmogul
display_name: ChartMogul
description: Interact with ChartMogul API
category: Community
development_style: declarative
version: 2.0.2
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: gef-chartmogul
author_github_url: https://github.com/chartmogul/
npm_package_name: n8n-nodes-chartmogul
npm_version: 2.0.2
community_fetched_at: 2026-03-25T21:19:40.747Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-chartmogul

  This is an n8n community node. It lets you interact with the ChartMogul API in your n8n workflows. 

  [ChartMogul](https://www.chartmogul.com/) is a subscription analytics platform that helps SaaS (Software-as-a-Service) and recurring revenue businesses understand, measure, and grow their revenue. ChartMogul CRM is a customer relationship management platform built specifically for B2B SaaS companies that unifies sales pipeline tracking with subscription analytics, enabling teams to manage leads, opportunities, and recurring revenue in a single integrated system.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  * [Installation](#installation)
  * [Operations](#operations)
  * [Credentials](#credentials)
  * [Compatibility](#compatibility)
  * [Resources](#resources)
  * [Version history](#version-history)

  ## Installation
  ### Community Nodes (Recommended)
  1. Go to **Settings > Community Nodes**.
  2. Select **Install**.
  3. Enter `n8n-nodes-chartmogul` in **Enter npm package name**.
  4. Agree to the [risks](https://docs.n8n.io/integrations/community-nodes/risks/) of using community nodes: select **I understand the risks of installing unverified code from a public source**.
  5. Select **Install**.

  After installing the node, you can use it like any other node. n8n displays the node in search results in the **Nodes** panel.

  ## Operations
  V1 of the ChartMogul N8N node focuses on functions that help you interface with ChartMogul CRM. These are based on the publicly available endpoints found at [https://dev.chartmogul.com/](https://dev.chartmogul.com/).
  Functions:
  1. Sources
  2. Customers
  3. Contacts
  4. Enrichment (Custom Attributes and Tags)
  5. Notes and Call Logs
  6. Opportunities
  7. Tasks
     
  ## Credentials

  _If users need to authenticate with the app/service, provide details here. You should include prerequisites (such as signing up with the service), available authentication methods, and how to set them up._
  You need to have a ChartMogul account to interact with this node.

  In ChartMogul, create an API key by navigating to **Profile > View Profile > API keys**. Then:
  1. Click **Add API Key**.
  2. Enter a unique name for the key in the **Name** field.
  3. A **Read & Write** key is required for this node.
  4. Click **Add** to create the key.
  5. Copy your newly created key and create a ChartMogul credential in N8N
  <img width="776" height="370" alt="image" src="https://github.com/user-attachments/assets/6443c18e-fe9e-4146-a3e1-b4e62862b774" />

  ## Compatibility

  This node was developed and tested using N8N version 1.116.2.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [ChartMogul Help Center](https://help.chartmogul.com)
  * [ChartMogul Developer Reference](https://dev.chartmogul.com)
    
  ## Versioning

  This node implements n8n's versioning system to support future updates while maintaining backwards compatibility. The current version is v1.

  For detailed information about the versioning structure and how to add new versions, see [VERSIONING.md](VERSIONING.md).

  ## Version history

  **v1.0.4** (Current)
  - Implemented full versioning structure
  - Reorganized codebase with v1 directory for future version support

  **v1.0.0**
  - Initial Release

ai_documentation_summary:
  {"purpose":"This n8n community node enables workflow automation by interacting with the ChartMogul API for SaaS subscription analytics and CRM management.","capabilities":["Retrieve and manage customer data","Access contact information","Perform data enrichment with custom attributes and tags","Manage notes and call logs","Track and manage sales opportunities","Create and assign tasks"],"authentication":"API Key (Read & Write required)","commonUseCases":["Automating SaaS revenue tracking workflows","Syncing customer data between ChartMogul and other tools","Enriching lead records with custom attributes","Automating sales pipeline management"],"limitations":["Limited to ChartMogul CRM endpoints (not all ChartMogul API features)","Community node status may lack official support","Requires a paid ChartMogul account with API key access"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.code"]}


node_type: @crono-one/n8n-nodes-crono-public-api.cronoPublicApi
package_name: @crono-one/n8n-nodes-crono-public-api
display_name: Crono
description: Consume the Crono Public API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: alen_crono
author_github_url: https://github.com/crono-one/n8n-nodes-crono-public-api.git
npm_package_name: @crono-one/n8n-nodes-crono-public-api
npm_version: 1.0.0
community_fetched_at: 2026-03-25T21:19:40.747Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "company",
      "options": [
        {
          "name": "Activity",
          "value": "activity"
        },
        {
          "name": "Company",
          "value": "company"
        },
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Deal",
          "value": "deal"
        },
        {
          "name": "External Property",
          "value": "externalProperty"
        },
        {
          "name": "Import",
          "value": "import"
        },
        {
          "name": "List",
          "value": "list"
        },
        {
          "name": "Note",
          "value": "note"
        },
        {
          "name": "Pipeline",
          "value": "pipeline"
        },
        {
          "name": "Strategy",
          "value": "strategy"
        },
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a company"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a company"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many companies"
        },
        {
          "name": "Import",
          "value": "import",
          "action": "Import companies"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search companies"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a company"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "company"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a contact"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many contacts"
        },
        {
          "name": "Import",
          "value": "import",
          "action": "Import contacts"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search contacts"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a deal"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a deal"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many deals"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search deals"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a deal"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "deal"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a note"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a note"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many notes"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search notes"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "note"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a task"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search tasks"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get an activity"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many activities"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search activities"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "activity"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search lists"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "list"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many pipelines"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pipeline"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search strategies"
        },
        {
          "name": "Search Details",
          "value": "searchDetails",
          "action": "Search strategy details"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "strategy"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search external properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "externalProperty"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a user"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many users"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search users"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get an import"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many imports"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "import"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a company"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a company"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many companies"
    },
    {
      "name": "Import",
      "value": "import",
      "action": "Import companies"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search companies"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a company"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a contact"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a contact"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many contacts"
    },
    {
      "name": "Import",
      "value": "import",
      "action": "Import contacts"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search contacts"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a contact"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a deal"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a deal"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many deals"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search deals"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a deal"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a note"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a note"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many notes"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search notes"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a task"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search tasks"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an activity"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many activities"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search activities"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search lists"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many pipelines"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search strategies"
    },
    {
      "name": "Search Details",
      "value": "searchDetails",
      "action": "Search strategy details"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search external properties"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a user"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many users"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search users"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an import"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many imports"
    }
  ]

npm_readme:
  # n8n-nodes-crono-public-api

  This is an n8n community node. It lets you use Crono Public API in your n8n workflows.

  Crono Public API gives programmatic access to Crono CRM data such as companies, contacts, deals, activities, and more.

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials)  
  [Compatibility](#compatibility)  
  [Resources](#resources)  
  [Version history](#version-history)  

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  - Activities: Get, Get Many, Search
  - Companies: Create, Get, Get Many, Search, Update, Import
  - Contacts: Create, Get, Get Many, Search, Update, Import
  - Deals: Create, Get, Get Many, Search, Update
  - External Properties: Search
  - Imports: Get, Get Many
  - Lists: Search
  - Notes: Create, Get, Get Many, Search
  - Pipelines: Get Many
  - Strategies: Search, Search Details
  - Tasks: Create, Search
  - Users: Get, Get Many, Search

  ## Credentials

  This node uses Crono Public API credentials.

  Credentials are required for all operations.

  You need:
  - API Key
  - API Secret

  The node sends credentials via headers:
  - `X-Api-Key`
  - `X-Api-Secret`

  ## Compatibility

  Minimum n8n version: 1.120.4  
  Tested against n8n version: 1.120.4

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Crono Public API documentation](https://ext.crono.one/docs/)

  ## Version history

  * [CHANGELOG](./CHANGELOG.md)

  ----

ai_documentation_summary:
  {"purpose":"This n8n community node enables programmatic access to Crono CRM data by consuming the Crono Public API within n8n workflows.","capabilities":["Retrieve company data","Retrieve contact data","Retrieve deal data","Retrieve activity data","Create new companies","Create new contacts","Create new deals","Create new tasks","Create new notes","Update existing companies"],"authentication":"API Key and API Secret required, sent via X-Api-Key and X-Api-Secret headers","commonUseCases":["Automating CRM data synchronization between n8n and Crono","Creating and managing leads and contacts through workflow automation","Tracking deal progression and activities","Generating reports on company and contact data"],"limitations":["Requires valid API credentials (API Key and Secret) for all operations","Limited to Crono Public API access (no private API features)"],"relatedNodes":["Crono Private API node","Generic HTTP Request node","CRM integration nodes"]}


node_type: n8n-nodes-atriomail-email.atriomail
package_name: n8n-nodes-atriomail-email
display_name: Atriomail
description: Manage email domains, mailboxes, forwarders, and catch-all configurations with Atriomail
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: atriomail
author_github_url: https://github.com/Atriomail/n8n-atriomail.git
npm_package_name: n8n-nodes-atriomail-email
npm_version: 0.2.1
community_fetched_at: 2026-03-25T21:19:40.747Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "domain",
      "options": [
        {
          "name": "Catch-All",
          "value": "catchAll"
        },
        {
          "name": "Domain",
          "value": "domain"
        },
        {
          "name": "Forwarder",
          "value": "forwarder"
        },
        {
          "name": "Mailbox",
          "value": "mailbox"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a domain",
          "description": "Create a new domain"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a domain",
          "description": "Delete a domain"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a domain",
          "description": "Get a domain by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many domains",
          "description": "Get many domains"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a domain",
          "description": "Update a domain"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "domain"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a mailbox",
          "description": "Create a new mailbox"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a mailbox",
          "description": "Delete a mailbox"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a mailbox",
          "description": "Get a mailbox by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many mailboxes",
          "description": "Get many mailboxes"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a mailbox",
          "description": "Update a mailbox"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "mailbox"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a forwarder",
          "description": "Create a new forwarder"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a forwarder",
          "description": "Delete a forwarder"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a forwarder",
          "description": "Get a forwarder by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many forwarders",
          "description": "Get many forwarders"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a forwarder",
          "description": "Update a forwarder"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "forwarder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a catch all",
          "description": "Create a new catch-all configuration"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a catch all",
          "description": "Delete a catch-all configuration"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a catch all",
          "description": "Get a catch-all configuration by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many catch alls",
          "description": "Get many catch-all configurations"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a catch all",
          "description": "Update a catch-all configuration"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "catchAll"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a domain",
      "description": "Create a new domain"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a domain",
      "description": "Delete a domain"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a domain",
      "description": "Get a domain by ID"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many domains",
      "description": "Get many domains"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a domain",
      "description": "Update a domain"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a mailbox",
      "description": "Create a new mailbox"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a mailbox",
      "description": "Delete a mailbox"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a mailbox",
      "description": "Get a mailbox by ID"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many mailboxes",
      "description": "Get many mailboxes"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a mailbox",
      "description": "Update a mailbox"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a forwarder",
      "description": "Create a new forwarder"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a forwarder",
      "description": "Delete a forwarder"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a forwarder",
      "description": "Get a forwarder by ID"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many forwarders",
      "description": "Get many forwarders"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a forwarder",
      "description": "Update a forwarder"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a catch all",
      "description": "Create a new catch-all configuration"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a catch all",
      "description": "Delete a catch-all configuration"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a catch all",
      "description": "Get a catch-all configuration by ID"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many catch alls",
      "description": "Get many catch-all configurations"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a catch all",
      "description": "Update a catch-all configuration"
    }
  ]

npm_readme:
  # n8n-nodes-atriomail

  This is an n8n community node for [Atriomail](https://system.atriomail.com) - an Email System Management API for managing domains, mailboxes, forwarders, and catch-all configurations.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials)  
  [Compatibility](#compatibility)  
  [Usage](#usage)  
  [Resources](#resources)  

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  ### Domain
  - **Create** - Create a new email domain
  - **Delete** - Delete an existing domain
  - **Get** - Retrieve a specific domain by ID
  - **Get Many** - List all domains
  - **Update** - Update domain settings (active status, description)

  ### Mailbox
  - **Create** - Create a new mailbox with email address and password
  - **Delete** - Delete an existing mailbox
  - **Get** - Retrieve a specific mailbox by ID
  - **Get Many** - List all mailboxes
  - **Update** - Update mailbox settings (name, password, quota, active status)

  ### Forwarder
  - **Create** - Create a new email forwarder
  - **Delete** - Delete an existing forwarder
  - **Get** - Retrieve a specific forwarder by ID
  - **Get Many** - List all forwarders
  - **Update** - Update forwarder settings (forward-to addresses, active status)

  ### Catch-All
  - **Create** - Create a new catch-all configuration for a domain
  - **Delete** - Delete an existing catch-all configuration
  - **Get** - Retrieve a specific catch-all by ID
  - **Get Many** - List all catch-all configurations
  - **Update** - Update catch-all settings (forward-to addresses, active status)

  ## Credentials

  To use this node, you need to configure the Atriomail API credentials:

  1. **API URL**: Your Atriomail instance URL (default: `https://system.atriomail.com`)
  2. **API Token**: Your API token generated from the Atriomail dashboard

  ### Getting your API Token

  1. Log in to your Atriomail dashboard
  2. Navigate to your account settings
  3. Generate a new API token
  4. Copy the token and use it in the n8n credentials

  ## Compatibility

  - Tested with n8n version 1.0.0 and above
  - Requires Node.js 18.10 or higher

  ## Usage

  ### Create a Domain

  1. Add the Atriomail node to your workflow
  2. Select **Domain** as the resource
  3. Select **Create** as the operation
  4. Enter the domain name (e.g., `example.com`)
  5. Optionally set the domain as active and add a description

  ### Create a Mailbox

  1. Select **Mailbox** as the resource
  2. Select **Create** as the operation
  3. Choose the domain from the dropdown (domains are loaded dynamically)
  4. Enter the local part (e.g., `john` for `john@example.com`)
  5. Set a password for the mailbox
  6. Optionally set display name and quota

  ### Create a Forwarder

  1. Select **Forwarder** as the resource
  2. Select **Create** as the operation
  3. Choose the domain from the dropdown
  4. Enter the local part (e.g., `sales` for `sales@example.com`)
  5. Enter comma-separated email addresses to forward to

  ### Create a Catch-All

  1. Select **Catch-All** as the resource
  2. Select **Create** as the operation
  3. Choose the domain from the dropdown
  4. Enter comma-separated email addresses to receive catch-all emails

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Atriomail API Documentation](https://system.atriomail.com/api/documentation)

  ## License

  [MIT](LICENSE)

  ## More Information

  [Atriomail](https://atriomail.com)

ai_documentation_summary:
  {"purpose":"This n8n community node manages email domain configurations, mailboxes, forwarders, and catch-all settings via the Atriomail API.","capabilities":["Create email domains","Delete email domains","Retrieve specific or list all domains","Update domain settings (active status, description)","Create mailboxes with custom email addresses and passwords","Delete mailboxes","Retrieve specific or list all mailboxes","Update mailbox settings (name, password, quota, active status)","Create email forwarders","Delete forwarders"],"authentication":"API Token required","commonUseCases":["Automating email domain registration in n8n workflows","Managing mailbox creation and password resets","Setting up email forwarding rules dynamically","Configuring catch-all email addresses for domain-wide forwarding"],"limitations":["Community node (not official n8n node)","Requires manual API token generation from Atriomail dashboard","Requires Node.js 18.10 or higher"],"relatedNodes":["n8n-nodes-base-httpRequest","n8n-nodes-base-set"]}


