# nodes

node_type: @leadspicker/n8n-nodes-leadspicker.leadspickerTrigger
package_name: @leadspicker/n8n-nodes-leadspicker
display_name: Leadspicker Trigger
description: Receive Leadspicker webhook events for multiple features
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: janskacel
author_github_url: https://github.com/Leadspicker/n8n-nodes-leadspicker.git
npm_package_name: @leadspicker/n8n-nodes-leadspicker
npm_version: 0.4.4
community_fetched_at: 2026-07-14T14:40:33.644Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # **n8n-nodes-leadspicker**

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

  Leadspicker is a B2B data and sales intelligence platform that helps businesses find, enrich, and connect with relevant contacts.

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

  [Installation](#installation)

  [Operations](#operations)

  [Triggers](#triggers)

  [Credentials](#credentials)

  [Compatibility](#compatibility)

  [Resources](#resources)

  [Changelog](#changelog)

  ## **Installation**

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

  ## **Operations**

  This node supports the following resources and operations:

  * **Lead**
    * Create a new lead in a campaign
    * Delete a lead
    * Get a lead by ID
    * List leads in a campaign
    * Update an existing lead
    * Find leads by a company's LinkedIn URL
    * Find leads by a company's name
  * **Campaign**
    * Create a new campaign
    * Delete a campaign
    * Get the campaign log (timeline events with optional search, date, person, and type filters)
    * Add a lead to the campaign exclusion list
    * Remove a lead from the campaign exclusion list
    * Get the campaign exclusion list
  * **Reply**
    * Get replies based on filters (email accounts, campaigns, sentiment)
  * **Linkedin Activity**
    * Get a LinkedIn profile's details
    * Get a profile's latest posts
    * Get a profile's recent activities (reactions and comments)
    * Get people who reacted to posts and send the results to a webhook
    * Retrieve LinkedIn profiles that reacted to posts returned by a content search URL
    * Retrieve reactors for posts authored by specific LinkedIn profiles
  * **Global Exclusion List**
    * Add a lead identifier to the global exclusion list
    * Remove a lead identifier from the global exclusion list
    * Get the global exclusion list
  * **Outreach**
    * List LinkedIn outreach accounts
    * List email outreach accounts
  * **Account**
    * Get account info and limits

  Note: The Linkedin Activity operations "Search Post Reactors" and "Profiles Post Reactors" auto-paginate. They aggregate all pages internally (handling the cursor automatically) and return a single flat list of reactor profiles.

  ## **Triggers**

  The Leadspicker Trigger node lets you subscribe to webhook events across all projects or filter down to a single campaign and fire workflows from these Leadspicker events:

  * Account revoked (connected account access revoked)
  * Email bounced
  * Email reply
  * Email sent
  * LinkedIn reply
  * LinkedIn sent
  * Lead added to a project

  ## **Credentials**

  To use this node, you need to authenticate using your Leadspicker API credentials.

  1. Sign up for an account with [Leadspicker](https://leadspicker.com/).
  2. Find your API Key in your account settings on the Leadspicker platform.
  3. In n8n, create a new credential for the Leadspicker node.
  4. Enter your API Key into the credential configuration screen.

  ## **Compatibility**

  This node has been developed and tested against n8n version 1.0.0. It may work with older versions, but it is not guaranteed.

  ## **Resources**

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Leadspicker Website](https://leadspicker.com/)

  ## **Changelog**

  ### 0.4.3

  * Replaced global timer usage with n8n workflow sleep helper to satisfy community-node linting.

  ### 0.4.2

  * Compliance fixes for n8n verification (removed external dependency usage and updated auth helper).

  ### 0.4.1
  * Added an **Account** resource with a "Get Account Info" action that surfaces subscription renewal dates, allowed LinkedIn/email accounts, allowed robots, and how many robots are currently running.
  * Added an **Outreach** resource to list all connected LinkedIn accounts and configured email accounts in one call so workflows can fan out automatically.
  * Added campaign-level exclusion list management actions (add, remove, list).
  * Added a **Global Exclusion List** resource to manage the organization-wide blacklist and return categorized LinkedIn/email/domain identifiers.
  * Leadspicker Trigger can now listen to every project when no campaign is selected.
  * Leadspicker Trigger requests Leadspicker to immediately send a test payload whenever the node is executed manually so `Test workflow` runs receive sample data instantly.
  * Added a **Bulk Create Leads** action under the Lead resource to send multiple user-provided leads (with optional custom fields) to the `/persons/bulk` API endpoint in a single call.

  ### 0.4.0

  * **Breaking:** Replaced the legacy `leadspickerNode` with the new `Leadspicker` node (type `leadspicker`), renamed resources to Lead/Campaign/Reply/Linkedin, and moved the AutoCPH operations under the Lead resource. Existing workflows referencing `leadspickerNode` must be recreated.
  * **Breaking:** Lead operations now expose individual fields (name, email, company, socials, custom fields) and all ID selectors use "Name or ID" dropdowns with a manual ID fallback, so any references to the previous collection-style parameters need to be reconfigured.
  * **Breaking:** Lead responses are flattened (no nested `person_data`) and the Lead/Reply list operations auto-paginate to return the entire dataset rather than a single page, changing the output structure and removing pagination parameters.
  * Added the Leadspicker Trigger node that manages webhooks for account revoked, email sent/replied/bounced, LinkedIn sent/replied, and lead-added events per campaign.
  * Linkedin Activity operations gained new controls (include/exclude profile cards, opt-in liker/commenter collection) and cursor-based aggregation so reactor searches return a single deduplicated array.
  * Lead finders now return the same flattened lead payloads as create/get/update results, keeping company/contact metadata consistent when searching by company name or LinkedIn URL.

  ### 0.3.1

  * Legacy release of the original `leadspickerNode` implementation.

ai_documentation_summary:
  {"purpose":"The Leadspicker Trigger node allows n8n workflows to subscribe to and process webhook events from the Leadspicker B2B sales intelligence platform, enabling automation based on account changes, email activities, and lead additions.","capabilities":["Subscribe to webhook events for multiple features","Handle Account Revoked events","Handle Email Bounced events","Handle Email Reply events","Handle Email Sent events","Handle LinkedIn Reply events","Handle LinkedIn Sent events","Handle Lead Added to Project events","Filter events by specific campaigns","Listen to all projects when no campaign is selected"],"authentication":"API Key required","commonUseCases":["Automate workflows triggered by new lead additions","Process email replies and bounces automatically","Monitor account access revocations","Track LinkedIn activity and engagement","Filter incoming events by specific campaigns"],"limitations":["Requires a Leadspicker account and API key","Compatible primarily with n8n version 1.0.0 and newer","Requires manual reconfiguration of existing workflows using the legacy leadspickerNode"],"relatedNodes":["Leadspicker Operation Node","Leadspicker Credential Node","Webhook Node","Email Node","LinkedIn Node"]}


node_type: n8n-nodes-justcall.justCallTrigger
package_name: n8n-nodes-justcall
display_name: JustCall Trigger
description: Starts the workflow when JustCall events occur
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: devjustcall
author_github_url: https://github.com/saaslabsco/
npm_package_name: n8n-nodes-justcall
npm_version: 1.0.4
community_fetched_at: 2026-07-14T14:40:33.648Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-justcall

  [![npm version](https://img.shields.io/npm/v/n8n-nodes-justcall)](https://www.npmjs.com/package/n8n-nodes-justcall)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

  An n8n community node package that provides seamless integration with the JustCall API, enabling you to automate calls, SMS, contact management, AI voice agents, Sales Dialer campaigns, and JustCall AI insights within your n8n workflows.

  ## Features

  This package includes two main nodes:

  ### 1. JustCall Node

  A comprehensive node for interacting with the JustCall API, supporting the following resources:

  #### 📞 **Call**
  - **Get** - Retrieve a specific call by ID
  - **Get Many** - List and filter calls with pagination support
  - **Update** - Update call notes, disposition, and rating
  - **Download Call Recording** - Download the recording of a completed call
  - **Get Call Journey** - Get journey details of a completed call (available after call has ended)
  - **Get Voice Agent Data** - Get voice agent insights and metadata for a completed call

  #### 💬 **SMS**
  - **Send** - Send SMS or MMS messages
  - **Get** - Retrieve a specific SMS by ID
  - **Get Many** - List and filter SMS messages

  #### 👤 **Contact**
  - **Create** - Create a new contact
  - **Get** - Retrieve a specific contact
  - **Get Many** - List and filter contacts
  - **Update** - Update an existing contact

  #### 📱 **Phone Number**
  - **Get** - Retrieve a specific phone number
  - **Get Many** - List all phone numbers

  #### 🤖 **AI Voice Agent**
  - **List Agents** - List all available AI voice agents
  - **Initiate Call** - Initiate a call with an AI voice agent

  #### 📋 **Sales Dialer**
  - **List All Calls** - List all Sales Dialer calls with filters (campaign, agent, date range, etc.)
  - **Get a Call** - Get a specific Sales Dialer call by ID
  - **List All Campaigns** - List all Sales Dialer campaigns
  - **Get a Campaign** - Get a specific Sales Dialer campaign by ID
  - **List Campaign Contacts** - List contacts in a Sales Dialer campaign
  - **Add Contact to Campaign** - Add a contact to a Sales Dialer campaign (by phone number or contact ID)
  - **List All Contacts** - List all Sales Dialer contacts
  - **Get a Contact** - Get a specific Sales Dialer contact by ID

  #### 🧠 **JustCall AI**
  - **List Calls AI Data** - List AI-generated analysis for JustCall and Sales Dialer calls (summary, transcription, insights, action items)
  - **Get Call AI Data** - Get AI-generated analysis for a specific call
  - **List Meetings AI Data** - List AI-generated analysis for meeting instances
  - **Get Meeting AI Data** - Get AI-generated analysis for a specific meeting instance

  ### 2. JustCall Trigger Node

  A webhook trigger node that automatically starts workflows when JustCall events occur:

  - **Call Answered** - Triggered when a call is answered
  - **Call Completed** - Triggered when a call is completed
  - **Call Initiated** - Triggered when a call is initiated
  - **Call Missed** - Triggered when a call is missed
  - **Call Updated** - Triggered when a call is updated
  - **Incoming Call** - Triggered when an incoming call is received
  - **SMS Received** - Triggered when an SMS is received
  - **SMS Sent** - Triggered when an SMS is sent
  - **Voicemail Received** - Triggered when a voicemail is received

  ## Installation

  ### For n8n Cloud Users

  This node is available in the n8n community nodes catalog. You can install it directly from the n8n interface:

  1. Go to **Settings** → **Community Nodes**
  2. Search for `n8n-nodes-justcall`
  3. Click **Install**

  ### For Self-Hosted n8n

  If you're running a self-hosted instance of n8n, install this package in your n8n installation directory:

  ```bash
  npm install n8n-nodes-justcall
  ```

  Or if you're using n8n via Docker, add this to your `docker-compose.yml`:

  ```yaml
  services:
    n8n:
      environment:
        - N8N_USER_FOLDER=/home/node/.n8n
      volumes:
        - n8n_data:/home/node/.n8n
  ```

  Then install the package in the container:

  ```bash
  docker exec -it <container-name> npm install n8n-nodes-justcall
  ```

  ## Configuration

  ### API Credentials

  Before using the JustCall nodes, you need to configure your JustCall API credentials:

  1. In n8n, go to **Credentials** → **Add Credential**
  2. Search for **JustCall API**
  3. Enter your JustCall API key
     - You can find your API key in your JustCall dashboard under **Profile** → **APIs and Webhooks**

  ## Usage Examples

  ### Example 1: Send SMS on Contact Creation

  Create a workflow that automatically sends a welcome SMS when a new contact is created:

  1. Add a **JustCall** node
  2. Select **Contact** → **Create**
  3. Configure the contact details
  4. Add another **JustCall** node
  5. Select **SMS** → **Send**
  6. Use the contact's phone number from the previous node

  ### Example 2: Trigger Workflow on Call Completion

  Set up a workflow that processes call data when a call is completed:

  1. Add a **JustCall Trigger** node
  2. Select **Call Completed** event
  3. Add subsequent nodes to process the call data (e.g., save to database, send notification)

  ### Example 3: AI Voice Agent Outbound Call

  Initiate an outbound call using an AI voice agent:

  1. Add a **JustCall** node
  2. Select **AI Voice Agent** → **Initiate Call**
  3. Select the agent and provide the phone number
  4. Configure call parameters

  ### Example 4: Sales Dialer – Add Contact to Campaign

  Add a contact to a Sales Dialer campaign for power dialing:

  1. Add a **JustCall** node
  2. Select **Sales Dialer** → **Add Contact to Campaign**
  3. Enter the campaign ID and either phone number or contact ID
  4. Optionally add contact details (name, email, custom fields)

  ### Example 5: JustCall AI – Get Call Insights

  Retrieve AI-generated summary and insights for a call:

  1. Add a **JustCall** node
  2. Select **JustCall AI** → **Get Call AI Data**
  3. Enter the call ID (JustCall or Sales Dialer)
  4. Optionally enable summary, transcription, smart chapters, or action items

  ## Development

  ### Prerequisites

  - Node.js (v18 or higher)
  - npm or pnpm
  - TypeScript

  ### Setup

  1. Clone the repository:
  ```bash
  git clone https://github.com/saaslabsco/n8n-nodes-justcall.git
  cd n8n-nodes-justcall
  ```

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

  3. Build the project:
  ```bash
  npm run build
  ```

  ### Available Scripts

  - `npm run build` - Compile TypeScript to JavaScript
  - `npm run dev` - Watch mode for development
  - `npm run lint` - Run ESLint
  - `npm run lintfix` - Fix ESLint errors automatically
  - `npm run format` - Format code with Prettier
  - `npm run changeset` - Create a new changeset for versioning
  - `npm run version` - Bump versions based on changesets
  - `npm run release` - Publish the package

  ### Project Structure

  ```
  n8n-nodes-justcall/
  ├── nodes/
  │   └── JustCall/
  │       ├── descriptions/     # Node property descriptions
  │       ├── handlers/          # Operation handlers
  │       ├── utils/             # Utility functions
  │       ├── JustCall.node.ts   # Main JustCall node
  │       └── JustCallTrigger.node.ts  # Trigger node
  ├── credentials/               # Credential definitions
  └── dist/                     # Compiled output
  ```

  ## Contributing

  Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (`git checkout -b feature/amazing-feature`)
  3. Make your changes
  4. Run tests and linting (`npm run lint`)
  5. Commit your changes (`git commit -m 'Add some amazing feature'`)
  6. Create a changeset (`npm run changeset`)
  7. Push to the branch (`git push origin feature/amazing-feature`)
  8. Open a Pull Request

  ### Versioning

  This project uses [Changesets](https://github.com/changesets/changesets) for version management. When making changes:

  1. Run `npm run changeset` to document your changes
  2. Commit the changeset file along with your code changes
  3. When ready to release, maintainers will run `npm run version` to update versions and changelog

  ## Changelog

  See [CHANGELOG.md](./CHANGELOG.md) for a list of changes and version history.

  ## License

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

  ## Support

  For issues, questions, or contributions, please visit:
  - **GitHub Issues**: [https://github.com/saaslabsco/n8n-nodes-justcall/issues](https://github.com/saaslabsco/n8n-nodes-justcall/issues)
  - **JustCall API Documentation**: [https://developer.justcall.io/reference/initiate_outbound_call_v21](https://developer.justcall.io/reference/initiate_outbound_call_v21)

  ## Author

  **JustCall Dev**
  - Email: dev@justcall.io
  - GitHub: [@saaslabsco](https://github.com/saaslabsco)

  ---

  Made with ❤️ by the JustCall team

ai_documentation_summary:
  {"purpose":"The JustCall Trigger node automatically starts n8n workflows when specific JustCall events occur, such as calls being answered, completed, or SMS messages being sent or received.","capabilities":["Trigger on Call Answered","Trigger on Call Completed","Trigger on Call Initiated","Trigger on Call Missed","Trigger on Call Updated","Trigger on Incoming Call","Trigger on SMS Received","Trigger on SMS Sent","Trigger on Voicemail Received"],"authentication":"API key required (JustCall API key configured in n8n Credentials)","commonUseCases":["Automate follow-up actions when a call is completed","Process incoming SMS messages in real-time","Start workflows based on call events (answered, missed, etc.)","Integrate JustCall events with external databases or notification systems"],"limitations":["Trigger events only occur after the event has happened (not predictive or scheduled)","Requires valid JustCall API credentials configured in n8n"],"relatedNodes":["JustCall Node","n8n-nodes-justcall.justCallNode"]}


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

updated_at: 2026-07-14 14:40:33
author_name: devjustcall
author_github_url: https://github.com/saaslabsco/
npm_package_name: n8n-nodes-justcall
npm_version: 1.0.4
community_fetched_at: 2026-07-14T14:40:33.649Z
ai_summary_generated_at: 2026-03-25 22:51:43
description:
  Interact with JustCall API (Calls, SMS, Contacts, Phone Numbers, AI Voice Agents, Sales Dialer, JustCall AI)

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "call",
      "options": [
        {
          "name": "AI Voice Agent",
          "value": "aiVoiceAgent"
        },
        {
          "name": "Call",
          "value": "call"
        },
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "JustCall AI",
          "value": "justCallAi"
        },
        {
          "name": "Phone Number",
          "value": "phoneNumber"
        },
        {
          "name": "Sales Dialer",
          "value": "salesDialer"
        },
        {
          "name": "SMS",
          "value": "sms"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Download Call Recording",
          "value": "downloadRecording",
          "action": "Download call recording",
          "description": "Download the recording of a completed call"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a call",
          "description": "Get a specific call"
        },
        {
          "name": "Get Call Journey",
          "value": "getJourney",
          "action": "Get call journey",
          "description": "Get journey details of a completed call (available only after call has ended)"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many calls",
          "description": "Get many calls"
        },
        {
          "name": "Get Voice Agent Data",
          "value": "getVoiceAgentData",
          "action": "Get voice agent data",
          "description": "Get voice agent insights and metadata for a completed call"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a call",
          "description": "Update a call (notes, disposition, rating)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "call"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "action": "Send an SMS",
          "description": "Send an SMS or MMS"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an SMS",
          "description": "Get a specific SMS"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many SMS",
          "description": "Get many SMS messages"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sms"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact",
          "description": "Create a new contact"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a contact",
          "description": "Get a specific contact"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many contacts",
          "description": "Get many contacts"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a contact",
          "description": "Update an existing contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get all phone numbers",
          "description": "Get all phone numbers"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a phone number",
          "description": "Get a specific phone number"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "phoneNumber"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listAgents",
      "options": [
        {
          "name": "List Agents",
          "value": "listAgents",
          "action": "List all AI voice agents",
          "description": "List all AI voice agents"
        },
        {
          "name": "Initiate Call",
          "value": "initiateCall",
          "action": "Initiate a call with AI voice agent",
          "description": "Initiate a call with an AI voice agent"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "aiVoiceAgent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listCalls",
      "options": [
        {
          "name": "Add Contact to Campaign",
          "value": "addContactToCampaign",
          "action": "Add contact to a campaign",
          "description": "Add a contact to a Sales Dialer campaign"
        },
        {
          "name": "Get a Call",
          "value": "getCall",
          "action": "Get a call",
          "description": "Get a specific Sales Dialer call"
        },
        {
          "name": "Get a Campaign",
          "value": "getCampaign",
          "action": "Get a campaign",
          "description": "Get a specific Sales Dialer campaign"
        },
        {
          "name": "Get a Contact",
          "value": "getContact",
          "action": "Get a contact",
          "description": "Get a specific Sales Dialer contact"
        },
        {
          "name": "List All Calls",
          "value": "listCalls",
          "action": "List all calls",
          "description": "List all Sales Dialer calls"
        },
        {
          "name": "List All Campaigns",
          "value": "listCampaigns",
          "action": "List all campaigns",
          "description": "List all Sales Dialer campaigns"
        },
        {
          "name": "List All Contacts",
          "value": "listContacts",
          "action": "List all contacts",
          "description": "List all Sales Dialer contacts"
        },
        {
          "name": "List Campaign Contacts",
          "value": "listCampaignContacts",
          "action": "List campaign contacts",
          "description": "List contacts in a Sales Dialer campaign"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "salesDialer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listCallsAiData",
      "options": [
        {
          "name": "Get Call AI Data",
          "value": "getCallAiData",
          "action": "Get call AI data",
          "description": "Get AI-generated analysis for a specific call"
        },
        {
          "name": "Get Meeting AI Data",
          "value": "getMeetingAiData",
          "action": "Get meeting AI data",
          "description": "Get AI-generated analysis for a specific meeting instance"
        },
        {
          "name": "List Calls AI Data",
          "value": "listCallsAiData",
          "action": "List calls AI data",
          "description": "List AI-generated analysis for JustCall and Sales Dialer calls"
        },
        {
          "name": "List Meetings AI Data",
          "value": "listMeetingsAiData",
          "action": "List meetings AI data",
          "description": "List AI-generated analysis for meeting instances"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "justCallAi"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Download Call Recording",
      "value": "downloadRecording",
      "action": "Download call recording",
      "description": "Download the recording of a completed call",
      "resource": "call"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a call",
      "description": "Get a specific call",
      "resource": "call"
    },
    {
      "name": "Get Call Journey",
      "value": "getJourney",
      "action": "Get call journey",
      "description": "Get journey details of a completed call (available only after call has ended)",
      "resource": "call"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many calls",
      "description": "Get many calls",
      "resource": "call"
    },
    {
      "name": "Get Voice Agent Data",
      "value": "getVoiceAgentData",
      "action": "Get voice agent data",
      "description": "Get voice agent insights and metadata for a completed call",
      "resource": "call"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a call",
      "description": "Update a call (notes, disposition, rating)",
      "resource": "call"
    },
    {
      "name": "Send",
      "value": "send",
      "action": "Send an SMS",
      "description": "Send an SMS or MMS",
      "resource": "sms"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an SMS",
      "description": "Get a specific SMS",
      "resource": "sms"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many SMS",
      "description": "Get many SMS messages",
      "resource": "sms"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a contact",
      "description": "Create a new contact",
      "resource": "contact"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a contact",
      "description": "Get a specific contact",
      "resource": "contact"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many contacts",
      "description": "Get many contacts",
      "resource": "contact"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a contact",
      "description": "Update an existing contact",
      "resource": "contact"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get all phone numbers",
      "description": "Get all phone numbers",
      "resource": "phoneNumber"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a phone number",
      "description": "Get a specific phone number",
      "resource": "phoneNumber"
    },
    {
      "name": "List Agents",
      "value": "listAgents",
      "action": "List all AI voice agents",
      "description": "List all AI voice agents",
      "resource": "aiVoiceAgent"
    },
    {
      "name": "Initiate Call",
      "value": "initiateCall",
      "action": "Initiate a call with AI voice agent",
      "description": "Initiate a call with an AI voice agent",
      "resource": "aiVoiceAgent"
    },
    {
      "name": "Add Contact to Campaign",
      "value": "addContactToCampaign",
      "action": "Add contact to a campaign",
      "description": "Add a contact to a Sales Dialer campaign",
      "resource": "salesDialer"
    },
    {
      "name": "Get a Call",
      "value": "getCall",
      "action": "Get a call",
      "description": "Get a specific Sales Dialer call",
      "resource": "salesDialer"
    },
    {
      "name": "Get a Campaign",
      "value": "getCampaign",
      "action": "Get a campaign",
      "description": "Get a specific Sales Dialer campaign",
      "resource": "salesDialer"
    },
    {
      "name": "Get a Contact",
      "value": "getContact",
      "action": "Get a contact",
      "description": "Get a specific Sales Dialer contact",
      "resource": "salesDialer"
    },
    {
      "name": "List All Calls",
      "value": "listCalls",
      "action": "List all calls",
      "description": "List all Sales Dialer calls",
      "resource": "salesDialer"
    },
    {
      "name": "List All Campaigns",
      "value": "listCampaigns",
      "action": "List all campaigns",
      "description": "List all Sales Dialer campaigns",
      "resource": "salesDialer"
    },
    {
      "name": "List All Contacts",
      "value": "listContacts",
      "action": "List all contacts",
      "description": "List all Sales Dialer contacts",
      "resource": "salesDialer"
    },
    {
      "name": "List Campaign Contacts",
      "value": "listCampaignContacts",
      "action": "List campaign contacts",
      "description": "List contacts in a Sales Dialer campaign",
      "resource": "salesDialer"
    },
    {
      "name": "Get Call AI Data",
      "value": "getCallAiData",
      "action": "Get call AI data",
      "description": "Get AI-generated analysis for a specific call",
      "resource": "justCallAi"
    },
    {
      "name": "Get Meeting AI Data",
      "value": "getMeetingAiData",
      "action": "Get meeting AI data",
      "description": "Get AI-generated analysis for a specific meeting instance",
      "resource": "justCallAi"
    },
    {
      "name": "List Calls AI Data",
      "value": "listCallsAiData",
      "action": "List calls AI data",
      "description": "List AI-generated analysis for JustCall and Sales Dialer calls",
      "resource": "justCallAi"
    },
    {
      "name": "List Meetings AI Data",
      "value": "listMeetingsAiData",
      "action": "List meetings AI data",
      "description": "List AI-generated analysis for meeting instances",
      "resource": "justCallAi"
    }
  ]

npm_readme:
  # n8n-nodes-justcall

  [![npm version](https://img.shields.io/npm/v/n8n-nodes-justcall)](https://www.npmjs.com/package/n8n-nodes-justcall)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

  An n8n community node package that provides seamless integration with the JustCall API, enabling you to automate calls, SMS, contact management, AI voice agents, Sales Dialer campaigns, and JustCall AI insights within your n8n workflows.

  ## Features

  This package includes two main nodes:

  ### 1. JustCall Node

  A comprehensive node for interacting with the JustCall API, supporting the following resources:

  #### 📞 **Call**
  - **Get** - Retrieve a specific call by ID
  - **Get Many** - List and filter calls with pagination support
  - **Update** - Update call notes, disposition, and rating
  - **Download Call Recording** - Download the recording of a completed call
  - **Get Call Journey** - Get journey details of a completed call (available after call has ended)
  - **Get Voice Agent Data** - Get voice agent insights and metadata for a completed call

  #### 💬 **SMS**
  - **Send** - Send SMS or MMS messages
  - **Get** - Retrieve a specific SMS by ID
  - **Get Many** - List and filter SMS messages

  #### 👤 **Contact**
  - **Create** - Create a new contact
  - **Get** - Retrieve a specific contact
  - **Get Many** - List and filter contacts
  - **Update** - Update an existing contact

  #### 📱 **Phone Number**
  - **Get** - Retrieve a specific phone number
  - **Get Many** - List all phone numbers

  #### 🤖 **AI Voice Agent**
  - **List Agents** - List all available AI voice agents
  - **Initiate Call** - Initiate a call with an AI voice agent

  #### 📋 **Sales Dialer**
  - **List All Calls** - List all Sales Dialer calls with filters (campaign, agent, date range, etc.)
  - **Get a Call** - Get a specific Sales Dialer call by ID
  - **List All Campaigns** - List all Sales Dialer campaigns
  - **Get a Campaign** - Get a specific Sales Dialer campaign by ID
  - **List Campaign Contacts** - List contacts in a Sales Dialer campaign
  - **Add Contact to Campaign** - Add a contact to a Sales Dialer campaign (by phone number or contact ID)
  - **List All Contacts** - List all Sales Dialer contacts
  - **Get a Contact** - Get a specific Sales Dialer contact by ID

  #### 🧠 **JustCall AI**
  - **List Calls AI Data** - List AI-generated analysis for JustCall and Sales Dialer calls (summary, transcription, insights, action items)
  - **Get Call AI Data** - Get AI-generated analysis for a specific call
  - **List Meetings AI Data** - List AI-generated analysis for meeting instances
  - **Get Meeting AI Data** - Get AI-generated analysis for a specific meeting instance

  ### 2. JustCall Trigger Node

  A webhook trigger node that automatically starts workflows when JustCall events occur:

  - **Call Answered** - Triggered when a call is answered
  - **Call Completed** - Triggered when a call is completed
  - **Call Initiated** - Triggered when a call is initiated
  - **Call Missed** - Triggered when a call is missed
  - **Call Updated** - Triggered when a call is updated
  - **Incoming Call** - Triggered when an incoming call is received
  - **SMS Received** - Triggered when an SMS is received
  - **SMS Sent** - Triggered when an SMS is sent
  - **Voicemail Received** - Triggered when a voicemail is received

  ## Installation

  ### For n8n Cloud Users

  This node is available in the n8n community nodes catalog. You can install it directly from the n8n interface:

  1. Go to **Settings** → **Community Nodes**
  2. Search for `n8n-nodes-justcall`
  3. Click **Install**

  ### For Self-Hosted n8n

  If you're running a self-hosted instance of n8n, install this package in your n8n installation directory:

  ```bash
  npm install n8n-nodes-justcall
  ```

  Or if you're using n8n via Docker, add this to your `docker-compose.yml`:

  ```yaml
  services:
    n8n:
      environment:
        - N8N_USER_FOLDER=/home/node/.n8n
      volumes:
        - n8n_data:/home/node/.n8n
  ```

  Then install the package in the container:

  ```bash
  docker exec -it <container-name> npm install n8n-nodes-justcall
  ```

  ## Configuration

  ### API Credentials

  Before using the JustCall nodes, you need to configure your JustCall API credentials:

  1. In n8n, go to **Credentials** → **Add Credential**
  2. Search for **JustCall API**
  3. Enter your JustCall API key
     - You can find your API key in your JustCall dashboard under **Profile** → **APIs and Webhooks**

  ## Usage Examples

  ### Example 1: Send SMS on Contact Creation

  Create a workflow that automatically sends a welcome SMS when a new contact is created:

  1. Add a **JustCall** node
  2. Select **Contact** → **Create**
  3. Configure the contact details
  4. Add another **JustCall** node
  5. Select **SMS** → **Send**
  6. Use the contact's phone number from the previous node

  ### Example 2: Trigger Workflow on Call Completion

  Set up a workflow that processes call data when a call is completed:

  1. Add a **JustCall Trigger** node
  2. Select **Call Completed** event
  3. Add subsequent nodes to process the call data (e.g., save to database, send notification)

  ### Example 3: AI Voice Agent Outbound Call

  Initiate an outbound call using an AI voice agent:

  1. Add a **JustCall** node
  2. Select **AI Voice Agent** → **Initiate Call**
  3. Select the agent and provide the phone number
  4. Configure call parameters

  ### Example 4: Sales Dialer – Add Contact to Campaign

  Add a contact to a Sales Dialer campaign for power dialing:

  1. Add a **JustCall** node
  2. Select **Sales Dialer** → **Add Contact to Campaign**
  3. Enter the campaign ID and either phone number or contact ID
  4. Optionally add contact details (name, email, custom fields)

  ### Example 5: JustCall AI – Get Call Insights

  Retrieve AI-generated summary and insights for a call:

  1. Add a **JustCall** node
  2. Select **JustCall AI** → **Get Call AI Data**
  3. Enter the call ID (JustCall or Sales Dialer)
  4. Optionally enable summary, transcription, smart chapters, or action items

  ## Development

  ### Prerequisites

  - Node.js (v18 or higher)
  - npm or pnpm
  - TypeScript

  ### Setup

  1. Clone the repository:
  ```bash
  git clone https://github.com/saaslabsco/n8n-nodes-justcall.git
  cd n8n-nodes-justcall
  ```

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

  3. Build the project:
  ```bash
  npm run build
  ```

  ### Available Scripts

  - `npm run build` - Compile TypeScript to JavaScript
  - `npm run dev` - Watch mode for development
  - `npm run lint` - Run ESLint
  - `npm run lintfix` - Fix ESLint errors automatically
  - `npm run format` - Format code with Prettier
  - `npm run changeset` - Create a new changeset for versioning
  - `npm run version` - Bump versions based on changesets
  - `npm run release` - Publish the package

  ### Project Structure

  ```
  n8n-nodes-justcall/
  ├── nodes/
  │   └── JustCall/
  │       ├── descriptions/     # Node property descriptions
  │       ├── handlers/          # Operation handlers
  │       ├── utils/             # Utility functions
  │       ├── JustCall.node.ts   # Main JustCall node
  │       └── JustCallTrigger.node.ts  # Trigger node
  ├── credentials/               # Credential definitions
  └── dist/                     # Compiled output
  ```

  ## Contributing

  Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (`git checkout -b feature/amazing-feature`)
  3. Make your changes
  4. Run tests and linting (`npm run lint`)
  5. Commit your changes (`git commit -m 'Add some amazing feature'`)
  6. Create a changeset (`npm run changeset`)
  7. Push to the branch (`git push origin feature/amazing-feature`)
  8. Open a Pull Request

  ### Versioning

  This project uses [Changesets](https://github.com/changesets/changesets) for version management. When making changes:

  1. Run `npm run changeset` to document your changes
  2. Commit the changeset file along with your code changes
  3. When ready to release, maintainers will run `npm run version` to update versions and changelog

  ## Changelog

  See [CHANGELOG.md](./CHANGELOG.md) for a list of changes and version history.

  ## License

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

  ## Support

  For issues, questions, or contributions, please visit:
  - **GitHub Issues**: [https://github.com/saaslabsco/n8n-nodes-justcall/issues](https://github.com/saaslabsco/n8n-nodes-justcall/issues)
  - **JustCall API Documentation**: [https://developer.justcall.io/reference/initiate_outbound_call_v21](https://developer.justcall.io/reference/initiate_outbound_call_v21)

  ## Author

  **JustCall Dev**
  - Email: dev@justcall.io
  - GitHub: [@saaslabsco](https://github.com/saaslabsco)

  ---

  Made with ❤️ by the JustCall team

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of JustCall API operations including calls, SMS, contacts, phone numbers, AI voice agents, sales dialer campaigns, and AI insights.","capabilities":["Retrieve and list calls with pagination","Update call notes, disposition, and ratings","Download call recordings","Retrieve call journey and voice agent data","Send and retrieve SMS/MMS messages","Create, retrieve, update, and list contacts","Retrieve and list phone numbers","List and initiate calls with AI voice agents","Manage Sales Dialer campaigns and contacts","Retrieve AI-generated call and meeting insights"],"authentication":"API key required","commonUseCases":["Automate welcome SMS upon contact creation","Process call data when calls complete","Initiate outbound calls using AI voice agents","Add contacts to sales dialer campaigns","Retrieve AI summaries and insights from calls"],"limitations":["Some features like Get Call Journey require the call to be completed","AI data retrieval may depend on JustCall AI service availability"],"relatedNodes":["JustCall Trigger","n8n-nodes-justcall"]}


node_type: @docuseal/n8n-nodes-docuseal.docusealTrigger
package_name: @docuseal/n8n-nodes-docuseal
display_name: DocuSeal Trigger
description: Handle DocuSeal events via webhooks
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: petem
author_github_url: https://github.com/docusealco/n8n-nodes-docuseal.git
npm_package_name: @docuseal/n8n-nodes-docuseal
npm_version: 1.0.4
community_fetched_at: 2026-07-14T14:40:33.651Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # n8n-nodes-docuseal

  This is an **n8n community node** that allows you to integrate [DocuSeal](https://www.docuseal.com) with your n8n workflows.

  [DocuSeal](https://www.docuseal.com) is a modern document signing platform that lets you securely collect legally binding electronic signatures online. You can create templates, send signature requests, and automate your signing process with ease.

  [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 Examples](#usage-examples)
  - [Resources](#resources)
  - [License](#license)

  ## Installation

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

  ### Community Nodes (Recommended)

  For n8n cloud or instances with UI access:

  1. Go to **Settings → Community Nodes** in your n8n dashboard.
  2. Click **Install**.
  3. Enter `@docuseal/n8n-nodes-docuseal` in the **Enter npm package name** field.
  4. Accept the [community node usage risks](https://docs.n8n.io/integrations/community-nodes/risks/).
  5. Click **Install** to complete setup.

  ### npm Installation

  To install manually in your n8n root directory:

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

  ### Docker Installation

  For Docker users, add the package to your setup using environment variables:

  **docker-compose.yml:**
  ```yaml
  services:
    n8n:
      image: docker.n8n.io/n8nio/n8n
      environment:
        - N8N_COMMUNITY_PACKAGES=@docuseal/n8n-nodes-docuseal
      ports:
        - "5678:5678"
      volumes:
        - ~/.n8n:/home/node/.n8n
  ```

  **Docker run command:**
  ```bash
  docker run -it --rm \
    --name n8n \
    -p 5678:5678 \
    -e N8N_COMMUNITY_PACKAGES="@docuseal/n8n-nodes-docuseal" \
    -v ~/.n8n:/home/node/.n8n \
    docker.n8n.io/n8nio/n8n
  ```

  ## Operations

  This package includes two nodes:

  ### DocuSeal Node

  The main node for creating and managing signature requests.

  #### Create Submission
  Create a signature request from an existing template.

  **Features:**
  - Select from your existing templates
  - Define multiple signers with their details
  - Pre-fill form fields
  - Customize email notifications
  - Set expiration dates
  - Configure signing order (sequential or random)

  #### Create Submission From DOCX
  Create a signature request from DOCX files with dynamic content.

  **Features:**
  - Upload DOCX or PDF files
  - Use dynamic variables for content replacement
  - Merge multiple documents
  - Define signers with roles
  - Support for template merging

  #### Create Submission From HTML
  Generate signature requests from HTML content.

  **Features:**
  - HTML document content with field tags
  - Custom headers and footers
  - Multiple page sizes (Letter, A4, Legal, etc.)
  - Merge with existing templates
  - Convert HTML to PDF automatically

  #### Create Submission From PDF
  Create signature requests from PDF documents.

  **Features:**
  - Upload PDF files (Base64 or URL)
  - Flatten PDF form fields
  - Remove or preserve text tags
  - Merge multiple PDFs
  - Template integration

  ### DocuSeal Trigger Node

  Webhook-based trigger for DocuSeal events.

  #### Signing Form Completed
  Triggers when a single signer completes their signing form.

  **Use cases:**
  - Send notifications to internal teams
  - Update CRM records
  - Trigger follow-up workflows

  #### Submission Completed
  Triggers when all parties complete the signing process.

  **Use cases:**
  - Archive completed documents
  - Send completion notifications
  - Update databases with signed document URLs
  - Generate invoices or contracts

  ## Credentials

  You'll need your **DocuSeal API key** to connect n8n to your account.

  ### Getting Your API Key

  1. Create an account at [DocuSeal Global](https://docuseal.com/sign_in) or [DocuSeal Europe](https://docuseal.eu/sign_in)
  2. Go to **Settings → Console → API**
  3. Copy an API key for your account

  ### Setting Up Credentials in n8n

  1. In n8n, click on **Credentials** in the left sidebar
  2. Click **Add Credential**
  3. Search for "DocuSeal" and select **DocuSeal API**
  4. Fill in the following fields:
     - **API Key** – your generated API key
     - **Server** – choose between *Global Server* or *Europe Server*
  5. Click **Save**

  ### Authentication Methods

  This node supports two authentication methods:

  - **Access Token** (recommended) - Use your API key directly
  - **OAuth2** - For more secure integrations (requires app setup)

  ## Compatibility

  - **n8n** version `0.187.0` or later
  - **Node.js** version `18.10` or later

  ## Usage Examples

  ### Example 1: Automated Contract Signing

  Send contracts for signing whenever a new deal is created in your CRM:

  1. **Trigger**: CRM Trigger (e.g., HubSpot, Salesforce)
  2. **DocuSeal Node**: Create Submission
     - Template: "Sales Contract"
     - Signer Email: `{{$json.contact_email}}`
     - Pre-fill fields with deal data
  3. **Slack Node**: Notify sales team

  ### Example 2: Onboarding Automation

  Automatically send onboarding documents to new employees:

  1. **Trigger**: HR System Webhook
  2. **DocuSeal Node**: Create Submission From DOCX
     - Upload employee handbook
     - Variables: Employee name, start date, department
     - Signers: New employee + HR manager
  3. **Email Node**: Send welcome email with signing link

  ### Example 3: Document Archive Workflow

  Archive completed documents automatically:

  1. **DocuSeal Trigger**: Submission Completed
  2. **HTTP Request Node**: Download signed PDF
  3. **Google Drive Node**: Upload to archive folder
  4. **Database Node**: Update records with document URL

  ### Example 4: Multi-Party Signing

  Send documents requiring multiple signatures in sequence:

  1. **Google Sheets Trigger**: New row in contracts sheet
  2. **DocuSeal Node**: Create Submission
     - Signers Order: "Preserved"
     - Signer 1: Client
     - Signer 2: Account Manager
     - Signer 3: Legal Team
  3. **Slack Node**: Notify when all parties sign

  ## Advanced Features

  ### Pre-filling Form Fields

  You can pre-fill form fields in your templates using the `Values` parameter in submitters:

  ```json
  {
    "field": "Company Name",
    "value": "{{$json.company}}"
  }
  ```

  ### Custom Email Notifications

  Customize the email sent to signers:

  - **Email Subject**: Your custom subject line
  - **Email Body**: Your custom message (supports plain text)
  - **Reply-To**: Set a custom reply-to address
  - **BCC**: Add BCC recipients for completed documents

  ### Metadata and External IDs

  Track your documents by adding:

  - **External ID**: Your internal reference ID
  - **Metadata**: Custom key-value pairs for additional data

  ### Expiration Dates

  Set expiration dates for signature requests:
  - After expiration, the signing link becomes unavailable
  - Use ISO 8601 format: `2025-12-31T23:59:59Z`

  ## Troubleshooting

  ### 🧩 Common Issues

  #### 🔑 Invalid API Key error
  **Solution:** Verify your API key is correct and matches the selected server (Global/Europe)

  #### 📄 Template not found
  **Solution:** Ensure the template exists in your DocuSeal account and is not archived

  #### 🌐 Webhook not triggering
  **Solution:** Check that your n8n instance is publicly accessible and the webhook is properly registered

  #### 📚 Documents not merging
  **Solution:** Verify that all documents are valid PDFs or DOCX files and properly encoded

  ### Getting Help

  If you encounter issues:

  1. Check the [DocuSeal API documentation](https://www.docuseal.com/docs/api)
  2. Visit the [n8n community forum](https://community.n8n.io/)
  3. Open an issue on [GitHub](https://github.com/docusealco/n8n-nodes-docuseal/issues)

  ## Resources

  - [DocuSeal Website](https://www.docuseal.com)
  - [DocuSeal API Reference](https://www.docuseal.com/docs/api)
  - [DocuSeal Webhooks Documentation](https://www.docuseal.com/docs/api#form-webhook)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [n8n Community Forum](https://community.n8n.io/)

  ## Support

  - 📧 Email: support@docuseal.com
  - 💬 Community: [n8n Community Forum](https://community.n8n.io/)
  - 🐛 Issues: [GitHub Issues](https://github.com/docusealco/n8n-nodes-docuseal/issues)

  ## License

  [MIT](https://github.com/docusealco/n8n-nodes-docuseal/blob/main/LICENSE.md)

ai_documentation_summary:
  {"purpose":"The DocuSeal Trigger node listens for webhook events from DocuSeal document signing platform to automate workflows upon signature completion or form submission.","capabilities":["Triggers on single signer form completion","Triggers on full submission completion","Integrates with n8n workflows for post-signing automation","Supports multiple DocuSeal event types"],"authentication":"API key required (Access Token) or OAuth2","commonUseCases":["Send notifications to internal teams when documents are signed","Update CRM records with signed document status","Archive completed documents automatically","Generate invoices or contracts upon signature completion","Trigger follow-up workflows after signing"],"limitations":["Requires separate DocuSeal API key setup","Requires n8n version 0.187.0 or later","Requires Node.js version 18.10 or later"],"relatedNodes":["DocuSeal Node","HTTP Request Node","Google Drive Node","Database Node","Slack Node"]}


node_type: n8n-nodes-geminigen.Geminigen
package_name: n8n-nodes-geminigen
display_name: Geminigen
description: Generate AI videos using geminigen.ai API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: tranhaiminh
author_github_url: https://github.com/tranhaiming14/
npm_package_name: n8n-nodes-geminigen
npm_version: 1.0.8
community_fetched_at: 2026-07-14T14:40:33.651Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "videoGeneration",
      "options": [
        {
          "name": "Video Generation",
          "value": "videoGeneration"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generateVideo",
      "options": [
        {
          "name": "Generate Video",
          "value": "generateVideo",
          "action": "Generate a video",
          "description": "Generate Video using AI Models"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "videoGeneration"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate Video",
      "value": "generateVideo",
      "action": "Generate a video",
      "description": "Generate Video using AI Models",
      "resource": "videoGeneration"
    }
  ]

npm_readme:
  # n8n-nodes-geminigen

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

  The GeminiGen.AI Video Generation API allows you to create high-quality videos from text prompts using state-of-the-art AI models. You can use this API to generate video content, animations, marketing materials, or any visual video content you can imagine.


  [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.

  ### Community Nodes 

  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `n8n-nodes-geminigen` in **Enter npm package name**
  4. Select **Install**

  ### Manual Installation

  To get started install the package in your n8n root directory:
  ```bash
  npm install n8n-nodes-geminigen
  ```

  For Docker-based deployments add the package to your [data directory](https://docs.n8n.io/hosting/configuration/configuration-methods/#mount-the-data-folder):
  ```bash
  cd /path/to/.n8n/nodes
  npm install n8n-nodes-geminigen
  ```

  ## Operations

  Generate Video

  ## Credentials

  In order to get the api key needed to use this node, you should visit https://geminigen.ai to sign up, click on your profile then API to generate the api key

  ## Compatibility

  - Minimum n8n version: 1.0.0
  - Tested against: n8n 1.0.0 and later versions
  - No known version incompatibility issues

  ## Usage

  ### Basic Setup

  1. **Install the node**: Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) to add this community node to your n8n instance.

  2. **Set up credentials**: 
     - Visit [GeminiGen.AI](https://geminigen.ai) and sign up for an account
     - Go to your profile → API to generate an API key
     - In n8n, create new credentials of type "GeminiGen API" and enter your API key

  3. **Add the node to your workflow**: Search for "GeminiGen" in the node palette and drag it into your workflow.

  ### Configuration

  - **Prompt**: Enter a detailed text description of the video you want to generate (e.g., "A serene mountain landscape with flowing rivers and wildlife")
  - **Model**: Choose from available AI models:
    - Veo 3, Veo 3 Fast (Google's Veo models)
    - Sora 2, Sora 2 Pro (OpenAI's Sora models)
    - Seedance 2 Remix, Seedance 2 Omni (Seedance models)
    - Grok (xAI's model)

  ### Example Workflow

  1. **Trigger**: Use a Schedule Trigger to run daily
  2. **GeminiGen Node**: Configure with your prompt and preferred model
  3. **Output**: The generated video URL will be returned after generation is complete, please be patient since the video generation can take a few minutes.

  ### Tips

  - More detailed prompts generally produce better results
  - Video generation can take several minutes
  - Check the "fullResponse" output for additional metadata about the generation
  - If generation fails, the node will output the error message for debugging

  For more advanced usage, combine with other n8n nodes to create automated video content workflows.

  ### Docs

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [GeminiGen API documentation](https://docs.geminigen.ai/)

ai_documentation_summary:
  {"purpose":"Generates AI videos from text prompts using the GeminiGen.AI API, supporting multiple state-of-the-art video generation models.","capabilities":["Generate videos from text prompts","Support multiple AI video models (Veo, Sora, Seedance, Grok)","Return generated video URLs","Provide fullResponse metadata for generation details","Handle error messages for failed generations"],"authentication":"API key required (obtained from https://geminigen.ai)","commonUseCases":["Automated video content creation","Marketing material generation","Animation workflows","Daily scheduled video updates"],"limitations":["Video generation can take several minutes","Community node (may not be available in all n8n instances)","Requires manual API key setup"],"relatedNodes":["Schedule Trigger","HTTP Request","Code"]}


node_type: @2chat/n8n-nodes-twochat.twoChatTrigger
package_name: @2chat/n8n-nodes-twochat
display_name: 2Chat Trigger
description: Triggers on 2Chat events (messages, phone calls, status updates, etc.)
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: 2chat_integrations
author_github_url: https://github.com/2ChatCo/2chat-n8n.git
npm_package_name: @2chat/n8n-nodes-twochat
npm_version: 0.4.2
community_fetched_at: 2026-07-14T14:40:33.652Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-twochat

  This is an n8n community node. It lets you use 2Chat WhatsApp API in your n8n workflows.

  2Chat is a conversational commerce automation platform that makes WhatsApp Messenger and WhatsApp Business programmable through a unified API.

  [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.

  ```
  npm install n8n-nodes-twochat
  ```

  ## Operations

  ### Message Resource
  - **Send Message**: Send WhatsApp messages to individual contacts
    - Support for text messages
    - Support for media attachments (images, documents, etc.)
    - Support for location pins

  - **Send Message to group**: Send WhatsApp messages to groups
  	- Support for text messages
    - Support for media attachments (images, documents, etc.)
    - Support for location pins

  ### Phone Number Resource
  - **Check Number**: Verify if a phone number is registered on WhatsApp
    - Get detailed information about the number (region, carrier, timezone)
    - Check if the number is a business account
    - Get business profile information when available

  ### WABA Resource
  - **Send Message**: Send WABA messages to individual contacts
  	- Support for text messages

  - **Send Template Message**: Send WABA template messages to individual contacts
    - Support for template messages

  ## Triggers

  - **WhatsApp Message Events:** Listen for message events
    - New Message: Triggers when a new message is either sent or received on 2Chat. Works for messages sent by agents or your users/customers.
    - Message Received: Triggers when a WhatsApp message is received on your 2Chat connected number.
    - Message Sent: Triggers when a WhatsApp message is sent from your 2Chat connected number.
    - New Conversation: Triggers when a new WhatsApp conversation is started within the specified time period.
    - Message Edited: Triggers when a message is edited. It will also trigger for group messages being edited.
    - Reaction Received: Triggers when a WhatsApp message is reacted to.

  - **WhatsApp Business API Events**: Listen for WhatsApp Business API events
  	- WABA Message Received: Triggers when a new WABA message is received
  	- WABA Message Sent: Triggers when a new WABA message is sent

  - **WhatsApp Calls**: Listen for WhatsApp calls events
  	- Call Made: Triggers when a new WhatsApp call is made
  	- Call Received: Triggers when a new WhatsApp call is received or missed on your connected number

  - **WhatsApp group**: Listen for WhatsApp group events
    - Message Received: Triggers when a new WhatsApp Group Message is received on the configured group
    - Participant Join: Triggers when someone joins a group
    - Participant Left: Triggers when someone leaves a group
    - Participant Removed: Triggers when someone is kicked/removed from a group
    - Message Reaction Received: Triggers when a group participant reacts to a message

  - **Phone Calls**: Listen for phone calls events
  	- Incoming completed: Triggers when an incoming phone call is completed (answered or missed)
  	- Oubound Completed: Triggers when an outbound phone call is completed (answered or failed)
  	- Status Update: Triggers when a phone call status changes (e.g., ringing, answered, ended)

  ## Credentials

  You need to create a 2Chat account and get an API key to use this node.

  1. Create a 2Chat account at [2Chat.co](https://2chat.co)
  2. Connect a WhatsApp channel in the channels section
  3. Get an API key from the developers section
  4. Use this API key in the n8n credentials for the 2Chat node

  ## Compatibility

  - Requires n8n version 1.0.0 or later

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [2Chat API Documentation](https://developers.2chat.co/docs/intro)

ai_documentation_summary:
  {"purpose":"The 2Chat Trigger node monitors and responds to real-time events from 2Chat's WhatsApp API, including messages, calls, and group activities, enabling automated workflows within n8n.","capabilities":["Trigger on new WhatsApp messages (sent or received)","Trigger on message edits and reactions","Trigger on new conversations","Trigger on WhatsApp Business API events (WABA messages)","Trigger on WhatsApp calls (incoming/outbound)","Trigger on phone call status updates","Trigger on WhatsApp group events (messages, participants joining/leaving)","Send text and media messages to individuals and groups","Send WABA template messages"],"authentication":"API key required (obtained from 2Chat account developers section)","commonUseCases":["Automated customer support responses via WhatsApp","Monitoring incoming messages for order confirmations","Notifying team members of new conversations","Automated follow-ups after missed calls","Managing group chat interactions and member changes"],"limitations":["Requires a paid 2Chat account and API key","Requires n8n version 1.0.0 or later","Limited to events supported by the 2Chat platform"],"relatedNodes":["2Chat Send Message","2Chat Check Number","2Chat Send Template Message","2Chat WABA Send Message"]}


node_type: n8n-nodes-zitedb.ziteTrigger
package_name: n8n-nodes-zitedb
display_name: Zite Trigger
description: Triggers when events occur in Zite (records, tables, or fields)
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: xkcdstickfigure
author_github_url: https://github.com/fillout/
npm_package_name: n8n-nodes-zitedb
npm_version: 1.0.1
community_fetched_at: 2026-07-14T14:40:33.653Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n package for Zite Database

  ![Banner](https://raw.githubusercontent.com/fillout/n8n-nodes-zitedb/refs/heads/main/banner.png)

  This is an n8n community node that lets you interact with databases in Zite. [Learn more](https://www.fillout.com/help/database/overview).

  ## Installation

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

  ## Usage

  Add the trigger in n8n, and when creating a credential, you'll need to get an API key from your [account settings](https://build.fillout.com/home/settings/developer) in Zite. Make sure that the correct base URL is set, as you can have your data hosted in different regions with [Fillout Enterprise](https://www.fillout.com/enterprise).

  ## Developers

  For instructions on testing this node on a local n8n instance for development purposes, see https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally/

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows automatically when events occur in Zite databases, including records, tables, or field changes.","capabilities":["Monitor Zite database records for changes","Detect table modifications","Track field-level updates","Automate workflow execution based on database events"],"authentication":"API key required (obtained from Zite account settings)","commonUseCases":["Automate data processing when new records are added to Zite","Trigger notifications or actions when database fields are updated","Integrate Zite database changes with external systems via n8n workflows"],"limitations":["Requires Fillout Enterprise for multi-region base URL configuration","Limited to Zite database events only"],"relatedNodes":["n8n-nodes-zitedb.ziteDatabase","n8n-nodes-zitedb.ziteRecord","n8n-nodes-zitedb.ziteField"]}


node_type: n8n-nodes-zitedb.zite
package_name: n8n-nodes-zitedb
display_name: Zite Database
description: Interact with databases in Zite
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: xkcdstickfigure
author_github_url: https://github.com/fillout/
npm_package_name: n8n-nodes-zitedb
npm_version: 1.0.1
community_fetched_at: 2026-07-14T14:40:33.654Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "record",
      "options": [
        {
          "name": "Record",
          "value": "record"
        },
        {
          "name": "Table",
          "value": "table"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many tables",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/bases/{{$parameter.baseId}}",
              "method": "GET"
            }
          },
          "description": "Retrieve a list of tables from a base"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get table",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/bases/{{$parameter.baseId}}",
              "method": "GET"
            }
          },
          "description": "Retrieve a table by ID or name"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "table"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many records",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/bases/{{$parameter.baseId}}/tables/{{$parameter.tableId}}/records",
              "method": "GET"
            }
          },
          "description": "Retrieve a list of records from a table"
        },
        {
          "name": "Get by ID",
          "value": "getById",
          "action": "Get record by ID",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/bases/{{$parameter.baseId}}/tables/{{$parameter.tableId}}/records/{{$parameter.recordId}}",
              "method": "GET"
            }
          },
          "description": "Retrieve a record from a table"
        },
        {
          "name": "Get by Field",
          "value": "getByField",
          "action": "Get record by field value",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "qs": {
                "limit": 1
              },
              "url": "=/bases/{{$parameter.baseId}}/tables/{{$parameter.tableId}}/records",
              "method": "GET"
            }
          },
          "description": "Retrieve a record by searching a field value"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create record",
          "routing": {
            "request": {
              "url": "=/bases/{{$parameter.baseId}}/tables/{{$parameter.tableId}}/records",
              "method": "POST"
            }
          },
          "description": "Create a new record"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update record",
          "routing": {
            "request": {
              "url": "=/bases/{{$parameter.baseId}}/tables/{{$parameter.tableId}}/records/{{$parameter.recordId}}",
              "method": "PATCH"
            }
          },
          "description": "Update an existing record"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete record",
          "routing": {
            "request": {
              "url": "=/bases/{{$parameter.baseId}}/tables/{{$parameter.tableId}}/records/{{$parameter.recordId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a record permanently"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "record"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many tables",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/bases/{{$parameter.baseId}}",
          "method": "GET"
        }
      },
      "description": "Retrieve a list of tables from a base",
      "resource": "table"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get table",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/bases/{{$parameter.baseId}}",
          "method": "GET"
        }
      },
      "description": "Retrieve a table by ID or name",
      "resource": "table"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many records",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/bases/{{$parameter.baseId}}/tables/{{$parameter.tableId}}/records",
          "method": "GET"
        }
      },
      "description": "Retrieve a list of records from a table",
      "resource": "record"
    },
    {
      "name": "Get by ID",
      "value": "getById",
      "action": "Get record by ID",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/bases/{{$parameter.baseId}}/tables/{{$parameter.tableId}}/records/{{$parameter.recordId}}",
          "method": "GET"
        }
      },
      "description": "Retrieve a record from a table",
      "resource": "record"
    },
    {
      "name": "Get by Field",
      "value": "getByField",
      "action": "Get record by field value",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "qs": {
            "limit": 1
          },
          "url": "=/bases/{{$parameter.baseId}}/tables/{{$parameter.tableId}}/records",
          "method": "GET"
        }
      },
      "description": "Retrieve a record by searching a field value",
      "resource": "record"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create record",
      "routing": {
        "request": {
          "url": "=/bases/{{$parameter.baseId}}/tables/{{$parameter.tableId}}/records",
          "method": "POST"
        }
      },
      "description": "Create a new record",
      "resource": "record"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update record",
      "routing": {
        "request": {
          "url": "=/bases/{{$parameter.baseId}}/tables/{{$parameter.tableId}}/records/{{$parameter.recordId}}",
          "method": "PATCH"
        }
      },
      "description": "Update an existing record",
      "resource": "record"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete record",
      "routing": {
        "request": {
          "url": "=/bases/{{$parameter.baseId}}/tables/{{$parameter.tableId}}/records/{{$parameter.recordId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a record permanently",
      "resource": "record"
    }
  ]

npm_readme:
  # n8n package for Zite Database

  ![Banner](https://raw.githubusercontent.com/fillout/n8n-nodes-zitedb/refs/heads/main/banner.png)

  This is an n8n community node that lets you interact with databases in Zite. [Learn more](https://www.fillout.com/help/database/overview).

  ## Installation

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

  ## Usage

  Add the trigger in n8n, and when creating a credential, you'll need to get an API key from your [account settings](https://build.fillout.com/home/settings/developer) in Zite. Make sure that the correct base URL is set, as you can have your data hosted in different regions with [Fillout Enterprise](https://www.fillout.com/enterprise).

  ## Developers

  For instructions on testing this node on a local n8n instance for development purposes, see https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally/

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with databases hosted in Zite (Fillout) within automated workflows.","capabilities":["Query Zite databases","Retrieve database records","Update database entries","Create new database records","Delete database entries"],"authentication":"API key required (obtained from Zite account settings)","commonUseCases":["Automating form data storage and retrieval","Integrating Zite forms with other business applications","Building custom workflows that require Zite database access"],"limitations":["Community node (not officially maintained by n8n)","Requires Zite Enterprise for multi-region base URL configuration","Limited documentation compared to official n8n nodes"],"relatedNodes":["Zite Trigger","Zite Database Item","Zite Database Update","Zite Database Delete"]}


node_type: @replyio/n8n-nodes-reply.reply
package_name: @replyio/n8n-nodes-reply
display_name: Reply
description: Interact with Reply.io API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: bborys
author_github_url: https://github.com/reply-team/n8n-public.git
npm_package_name: @replyio/n8n-nodes-reply
npm_version: 0.28.0
community_fetched_at: 2026-07-14T14:40:33.655Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "contact",
      "options": [
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Contact Status",
          "value": "contactStatus"
        },
        {
          "name": "Sequence",
          "value": "sequence"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact",
          "description": "Create a new contact"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a contact",
          "description": "Delete a contact"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a contact",
          "description": "Get a contact"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many contacts",
          "description": "Get many contacts with pagination"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a contact",
          "description": "Update an existing contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "updateStatus",
      "options": [
        {
          "name": "Clear Status",
          "value": "clearStatus",
          "action": "Clear contact status",
          "description": "Clear statuses from a contact"
        },
        {
          "name": "Get Statuses",
          "value": "getStatuses",
          "action": "Get contact statuses",
          "description": "Get all current statuses for a contact"
        },
        {
          "name": "Update Status",
          "value": "updateStatus",
          "action": "Update contact status",
          "description": "Update the status of a contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contactStatus"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Add Contact",
          "value": "addContact",
          "action": "Add contact to sequence",
          "description": "Add an existing contact to a sequence by contact ID"
        },
        {
          "name": "Archive a Sequence",
          "value": "archive",
          "action": "Archive a sequence"
        },
        {
          "name": "Get a Sequence",
          "value": "get",
          "action": "Get a sequence",
          "description": "Get a sequence by ID"
        },
        {
          "name": "Get Contacts",
          "value": "getContacts",
          "action": "Get contacts in sequence",
          "description": "Get contacts in a sequence with pagination"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many sequences",
          "description": "Get many sequences with pagination"
        },
        {
          "name": "Pause a Sequence",
          "value": "pause",
          "action": "Pause a sequence"
        },
        {
          "name": "Start a Sequence",
          "value": "start",
          "action": "Start a sequence"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sequence"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a contact",
      "description": "Create a new contact",
      "resource": "contact"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a contact",
      "description": "Delete a contact",
      "resource": "contact"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a contact",
      "description": "Get a contact",
      "resource": "contact"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many contacts",
      "description": "Get many contacts with pagination",
      "resource": "contact"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a contact",
      "description": "Update an existing contact",
      "resource": "contact"
    },
    {
      "name": "Clear Status",
      "value": "clearStatus",
      "action": "Clear contact status",
      "description": "Clear statuses from a contact",
      "resource": "contactStatus"
    },
    {
      "name": "Get Statuses",
      "value": "getStatuses",
      "action": "Get contact statuses",
      "description": "Get all current statuses for a contact",
      "resource": "contactStatus"
    },
    {
      "name": "Update Status",
      "value": "updateStatus",
      "action": "Update contact status",
      "description": "Update the status of a contact",
      "resource": "contactStatus"
    },
    {
      "name": "Add Contact",
      "value": "addContact",
      "action": "Add contact to sequence",
      "description": "Add an existing contact to a sequence by contact ID",
      "resource": "sequence"
    },
    {
      "name": "Archive a Sequence",
      "value": "archive",
      "action": "Archive a sequence",
      "resource": "sequence"
    },
    {
      "name": "Get a Sequence",
      "value": "get",
      "action": "Get a sequence",
      "description": "Get a sequence by ID",
      "resource": "sequence"
    },
    {
      "name": "Get Contacts",
      "value": "getContacts",
      "action": "Get contacts in sequence",
      "description": "Get contacts in a sequence with pagination",
      "resource": "sequence"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many sequences",
      "description": "Get many sequences with pagination",
      "resource": "sequence"
    },
    {
      "name": "Pause a Sequence",
      "value": "pause",
      "action": "Pause a sequence",
      "resource": "sequence"
    },
    {
      "name": "Start a Sequence",
      "value": "start",
      "action": "Start a sequence",
      "resource": "sequence"
    }
  ]

npm_readme:
  # @replyio/n8n-nodes-reply

  This is an n8n official community node for [Reply.io](https://reply.io) - a sales engagement platform that automates multichannel outreach across email, LinkedIn, calls, SMS, and WhatsApp.

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

  ## Installation

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

  ## Nodes

  ### Reply

  Interact with Reply.io API to manage contacts, sequences, and contact statuses.

  **Resources & Operations:**

  | Resource | Operations |
  |----------|------------|
  | Contact | Create, Get, Get Many, Update, Delete |
  | Contact Status | Update Status, Clear Status |
  | Sequence | Get, Get Many, Get Contacts, Add Contact, Start, Pause, Archive |

  ### Reply Trigger

  Starts workflows when Reply.io events occur.

  **Supported Events:**

  | Category | Events |
  |----------|--------|
  | Email | Sent, Opened, Bounced, Link Clicked, Replied, Reply Categorized |
  | LinkedIn | Message Sent, Message Replied, Connection Sent, Connection Accepted, Reply Categorized |
  | Sequence | Contact Finished, Contact Opted Out, Contact Called |
  | Account Health | Email Connection Lost, Email Account Error |

  ## Credentials

  1. Log in to your [Reply.io](https://reply.io) account
  2. Go to **Settings** > **API Key**
  3. Copy your API key
  4. In n8n, create new Reply API credentials and paste the key

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Reply.io API to manage sales engagement workflows, including contacts, sequences, and statuses.","capabilities":["Create, retrieve, update, and delete contacts","Update and clear contact statuses","Manage sequences (get, add contacts, start, pause, archive)","Trigger workflows on Reply.io events (email, LinkedIn, sequence, account health)","Monitor outreach metrics like opens, clicks, replies, and bounces"],"authentication":"API key required (obtained from Reply.io Settings > API Key)","commonUseCases":["Automating multi-channel sales outreach","Tracking engagement across email, LinkedIn, calls, SMS, and WhatsApp","Managing contact lists and sequence execution","Monitoring campaign performance and opt-outs"],"limitations":["Community node (not official n8n node)","Requires manual API key configuration in n8n"],"relatedNodes":["n8n HTTP Request","n8n Webhook","n8n Code Node"]}


node_type: @replyio/n8n-nodes-reply.replyTrigger
package_name: @replyio/n8n-nodes-reply
display_name: Reply Trigger
description: Starts the workflow when Reply.io events occur
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: bborys
author_github_url: https://github.com/reply-team/n8n-public.git
npm_package_name: @replyio/n8n-nodes-reply
npm_version: 0.28.0
community_fetched_at: 2026-07-14T14:40:33.656Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # @replyio/n8n-nodes-reply

  This is an n8n official community node for [Reply.io](https://reply.io) - a sales engagement platform that automates multichannel outreach across email, LinkedIn, calls, SMS, and WhatsApp.

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

  ## Installation

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

  ## Nodes

  ### Reply

  Interact with Reply.io API to manage contacts, sequences, and contact statuses.

  **Resources & Operations:**

  | Resource | Operations |
  |----------|------------|
  | Contact | Create, Get, Get Many, Update, Delete |
  | Contact Status | Update Status, Clear Status |
  | Sequence | Get, Get Many, Get Contacts, Add Contact, Start, Pause, Archive |

  ### Reply Trigger

  Starts workflows when Reply.io events occur.

  **Supported Events:**

  | Category | Events |
  |----------|--------|
  | Email | Sent, Opened, Bounced, Link Clicked, Replied, Reply Categorized |
  | LinkedIn | Message Sent, Message Replied, Connection Sent, Connection Accepted, Reply Categorized |
  | Sequence | Contact Finished, Contact Opted Out, Contact Called |
  | Account Health | Email Connection Lost, Email Account Error |

  ## Credentials

  1. Log in to your [Reply.io](https://reply.io) account
  2. Go to **Settings** > **API Key**
  3. Copy your API key
  4. In n8n, create new Reply API credentials and paste the key

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows automatically when specific events occur in a Reply.io sales engagement account.","capabilities":["Monitors email events (sent, opened, bounced, link clicked, replied, categorized)","Monitors LinkedIn events (message sent, replied, connection sent/accepted, categorized)","Monitors sequence events (contact finished, opted out, called)","Monitors account health events (connection lost, account errors)","Configurable event filtering by category and specific event type"],"authentication":"API key required (obtained from Reply.io Settings > API Key)","commonUseCases":["Automated follow-up sequences based on email opens or clicks","Lead scoring based on engagement metrics","Alerting on bounced emails or connection rejections","Triggering LinkedIn outreach based on email responses"],"limitations":["Requires active Reply.io account with API access","Limited to event-based triggers (no direct data manipulation like Reply node)","No built-in credential management UI (requires manual API key entry)"],"relatedNodes":["Reply (for managing contacts and sequences)","Webhook (for custom event handling)","Email (for sending follow-ups)","LinkedIn (for social engagement)"]}


node_type: n8n-nodes-formaloo.formalooTrigger
package_name: n8n-nodes-formaloo
display_name: Formaloo Trigger
description: Trigger workflow on Formaloo form submissions and updates
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: formaloohq
author_github_url: https://github.com/formaloo/
npm_package_name: n8n-nodes-formaloo
npm_version: 1.7.1
community_fetched_at: 2026-07-14T14:40:33.657Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-formaloo

  This package provides n8n nodes for integrating with [Formaloo](https://formaloo.com), a form builder platform.

  ## Nodes

  ### Formaloo Trigger
  - **Node Name**: `Formaloo Trigger`
  - **Type**: Trigger
  - **Description**: Triggers workflows when forms are submitted or updated in Formaloo
  - **Events Supported**:
    - Form Submit
    - Row Update
    - Payment Completed
    - All Events

  ### Formaloo Action
  - **Node Name**: `Formaloo`
  - **Type**: Action
  - **Description**: Submit data to Formaloo forms with advanced field type handling
  - **Operations**:
    - Submit Form: Submit data to a specific Formaloo form with automatic field type conversion

  ## Credentials

  The nodes require Formaloo API credentials with the following fields:
  - **Secret API**: Your Formaloo secret API key (used for JWT authentication)
  - **API Key**: Your Formaloo API key (used for API requests)

  These credentials are used to:
  1. Generate JWT tokens for authentication
  2. Make API requests to Formaloo endpoints
  3. Create and manage webhooks

  ### Prerequisites
  - A Formaloo account with API access
  - Your Formaloo Secret API key
  - Your Formaloo API key

  ## Compatibility

  - **Minimum n8n version**: 0.1.0
  - **Tested with n8n version**: 1.17.0+
  - **Node.js version**: 20.15 or higher

  ## Installation

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

  Alternatively, you can install manually:

  1. Install the package:
     ```bash
     npm install n8n-nodes-formaloo
     ```

  2. Add the nodes to your n8n instance by copying the `dist` folder to your n8n custom nodes directory.

  ## Usage

  ### Setting up the Trigger Node

  1. Add a "Formaloo Trigger" node to your workflow
  2. Configure your Formaloo API credentials
  3. Select the form you want to monitor
  4. Choose the event type (form submit, row update, etc.)
  5. The node will create a webhook in Formaloo and trigger your workflow when events occur

  ### Setting up the Action Node

  1. Add a "Formaloo" node to your workflow
  2. Configure your Formaloo API credentials
  3. Select the form you want to submit to
  4. Add form fields with their IDs and values
  5. The node automatically handles field type conversion for complex fields

  For new users, check out the [Try it out](https://docs.n8n.io/try-it-out/) documentation to get started with n8n.

  ## Field Types

  ### Unsupported Field Types
  The following field types are currently **not supported** and will be filtered out from the field selection:
  - `matrix` - Matrix fields
  - `table` - Table fields
  - `lookup` - Lookup fields
  - `user` - User fields
  - `profile` - Profile fields
  - `linked_rows` - Linked rows fields
  - `repeating_section` - Repeating section fields

  ### Multiple Choice Fields
  For **Multiple Select** fields, use comma-separated values to select multiple options:

  **Example:**
  ```
  Field Value: "Option 1, Option 2, Option 3"
  ```

  **Note:** Make sure to use the exact option titles as they appear in your Formaloo form.

  ### City/Country Fields
  For **City** and **Country** fields, the node automatically searches and maps your input to the correct Formaloo option:

  **Example:**
  ```
  Field Value: "New York" or "United States"
  ```

  The node will automatically find the matching city/country and submit the correct slug.

  ## API Endpoints

  The nodes use the following Formaloo API endpoints:
  - **Forms List**: `GET https://api.formaloo.me/v3.0/forms/`
  - **Form Details**: `GET https://api.formaloo.me/v3.0/forms/{formSlug}/`
  - **Webhooks**: `POST/GET/DELETE https://api.formaloo.me/v3.0/forms/{formSlug}/webhooks/`
  - **Form Submit**: `POST https://api.formaloo.me/v3.0/form-displays/slug/{formSlug}/submit/`
  - **Field Options**: `GET https://api.formaloo.me/v3.0/fields/{fieldSlug}/`
  - **City/Country Search**: `GET https://api.formaloo.me/v4/fields/{fieldSlug}/choices/?search={searchValue}`

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Formaloo API Documentation](https://docs.formaloo.com/)
  * [Formaloo Website](https://formaloo.com)

  ## Development

  ### Local Development

  1. Clone the repository and install dependencies:
     ```bash
     git clone https://github.com/formaloo/n8n-nodes-formaloo.git
     cd n8n-nodes-formaloo
     npm install
     ```

  2. Build and test locally:
     ```bash
     npm run build
     npm run lint:n8n
     npm run start
     ```

     This will build the package and start n8n with your custom node loaded at http://localhost:5678

     **Alternative (manual):**
     ```bash
     npm run build
     N8N_CUSTOM_EXTENSIONS=$(pwd) npx n8n start
     ```

     **Windows:**
     ```cmd
     set N8N_CUSTOM_EXTENSIONS=%CD% & npx n8n start
     ```

  3. After making changes, rebuild and restart n8n:
     ```bash
     npm run build
     ```

  ### Available Scripts

  - `npm run build` - Build TypeScript to JavaScript
  - `npm run dev` - Watch mode (auto-rebuild on changes)
  - `npm run start` - Build and start n8n for testing
  - `npm run lint` - Check code quality
  - `npm run lint:n8n` - Validate the package with the current n8n node CLI
  - `npm run lintfix` - Auto-fix linting issues
  - `npm run format` - Format code with Prettier

  ## Publishing

  ### Publishing to npm

  Releases are published only by [`.github/workflows/publish.yml`](.github/workflows/publish.yml). It installs dependencies with `npm ci`, builds, runs the n8n node validation, and publishes with npm provenance.

  Before the first release, configure an npm Trusted Publisher for `n8n-nodes-formaloo` with GitHub Actions owner `formaloo`, repository `n8n-nodes-formaloo`, and workflow filename `publish.yml`. No npm access token is required.

  To release, update the package version, merge it to `master`, then publish a GitHub Release for the matching tag (for example, `v1.7.1`). The workflow publishes that release to npm.

  ## Version History

  ### 1.5.0
  - Current version
  - ResourceLocator with search functionality for form selection
  - Improved form loading performance
  - Enhanced error handling with `pairedItem` support
  - Migrated to `httpRequestWithAuthentication`
  - Backward compatibility with deprecated functions

  ### Previous Versions
  - See git tags and GitHub releases for detailed version history

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows when Formaloo forms are submitted or updated, and submits data to Formaloo forms with automatic field type conversion.","capabilities":["Trigger workflow on form submission","Trigger workflow on row updates","Trigger workflow on payment completion","Submit form data to Formaloo","Automatic field type conversion for complex fields","City/Country auto-mapping","Multiple select field support with comma-separated values","Webhook creation and management","ResourceLocator search for form selection"],"authentication":"API Key required (Secret API key for JWT authentication, API Key for API requests)","commonUseCases":["Automated email notifications on form submission","Data synchronization between Formaloo and other systems","Payment processing workflows","Form data validation and processing","Lead capture automation"],"limitations":["Matrix fields are not supported","Table fields are not supported","Lookup fields are not supported","User fields are not supported","Profile fields are not supported"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.webhook","n8n-nodes-base.formula"]}


node_type: n8n-nodes-sarvam.sarvam
package_name: n8n-nodes-sarvam
display_name: Sarvam AI
description: Indian language AI APIs — transcribe, speak, and chat across 22+ Indian languages
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: vinayak-sarvam
author_github_url: https://github.com/vinayak-sarvam/n8n-sarvam-node.git
npm_package_name: n8n-nodes-sarvam
npm_version: 0.1.6
community_fetched_at: 2026-07-14T14:40:33.658Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "speech",
      "options": [
        {
          "name": "Chat",
          "value": "chat"
        },
        {
          "name": "Speech",
          "value": "speech"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "speechToText",
      "options": [
        {
          "name": "Speech to Text",
          "value": "speechToText",
          "action": "Speech to text",
          "description": "Transcribe audio to text with multiple output modes"
        },
        {
          "name": "Text to Speech",
          "value": "textToSpeech",
          "action": "Text to speech",
          "description": "Convert text to spoken audio"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "speech"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "complete",
      "options": [
        {
          "name": "Complete",
          "value": "complete",
          "action": "Complete chat",
          "description": "Generate a chat completion"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chat"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Speech to Text",
      "value": "speechToText",
      "action": "Speech to text",
      "description": "Transcribe audio to text with multiple output modes",
      "resource": "speech"
    },
    {
      "name": "Text to Speech",
      "value": "textToSpeech",
      "action": "Text to speech",
      "description": "Convert text to spoken audio",
      "resource": "speech"
    },
    {
      "name": "Complete",
      "value": "complete",
      "action": "Complete chat",
      "description": "Generate a chat completion",
      "resource": "chat"
    }
  ]

npm_readme:
  # n8n-nodes-sarvam

  [![npm version](https://img.shields.io/npm/v/n8n-nodes-sarvam.svg)](https://www.npmjs.com/package/n8n-nodes-sarvam)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE.md)
  [![n8n community node](https://img.shields.io/badge/n8n-community%20node-ff6d5a)](https://www.npmjs.com/package/n8n-nodes-sarvam)

  This is an n8n community node for [Sarvam AI](https://sarvam.ai) — Indian language AI APIs for transcription, speech synthesis, and chat across 22+ Indian languages.

  ## Installation

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

  In n8n, go to **Settings > Community Nodes** and install:

  ```
  n8n-nodes-sarvam
  ```

  ## Authentication

  You need a Sarvam AI API key. Get one from the [Sarvam AI Dashboard](https://dashboard.sarvam.ai) after signing up. You receive ₹1000 free credits on signup.

  In n8n, create a new **Sarvam AI API** credential and paste your API key.

  ## Operations

  ### Speech

  | Operation | Description |
  |---|---|
  | **Speech to Text** | Transcribe audio files with multiple modes — transcribe, translate to English, transliterate (roman), code-mixed, and verbatim |
  | **Text to Speech** | Convert text to natural-sounding speech with 39 voice options |

  ### Chat

  | Operation | Description |
  |---|---|
  | **Complete** | Generate chat completions using Sarvam AI language models |

  ## Speech to Text Modes

  | Mode | Description |
  |---|---|
  | **Transcribe** | Standard transcription in the original language |
  | **Translate to English** | Translate speech from any Indic language to English |
  | **Transliterate (Roman)** | Romanize speech to Latin script |
  | **Code Mixed** | English words in English, Indic words in native script |
  | **Verbatim** | Exact word-for-word transcription without normalization |

  ## Supported Languages

  **Speech to Text (23 languages):** Assamese, Bengali, Bodo, Dogri, English, Gujarati, Hindi, Kannada, Kashmiri, Konkani, Maithili, Malayalam, Manipuri, Marathi, Nepali, Odia, Punjabi, Sanskrit, Santali, Sindhi, Tamil, Telugu, Urdu.

  **Text to Speech (11 languages):** Bengali, English, Gujarati, Hindi, Kannada, Malayalam, Marathi, Odia, Punjabi, Tamil, Telugu.

  **Chat:** Supports all languages via sarvam-105b (flagship) and sarvam-30b models.

  ## Publishing (maintainers)

  Releases go to npm from **GitHub Actions** with [npm provenance](https://docs.npmjs.com/generating-provenance-statements/), per [n8n’s publishing rules](https://docs.n8n.io/integrations/creating-nodes/deploy/submit-community-nodes/).

  1. On [npm](https://www.npmjs.com/), add **Trusted Publishers** for this package: GitHub Actions, repository `vinayak-sarvam/n8n-sarvam-node`, workflow **`publish.yml`**. Alternatively, store an **`NPM_TOKEN`** secret in GitHub (granular token with write access to this package).
  2. Either:
     - **Tag the version already in `package.json`:** with `main` at the version you want (for example `0.1.6`), run `git tag 0.1.6 && git push origin 0.1.6`, **or**
     - **Interactive bump:** on `main`, run **`npm run release`** to bump the version, update the changelog, commit, tag, and push (nothing is published from your laptop).
  3. Pushing a semver tag matching `*.*.*` triggers [`.github/workflows/publish.yml`](.github/workflows/publish.yml), which runs lint, build, and **`npm publish`** with provenance.

  ### Publish from your machine (interim)

  For a **manual** publish while CI is sorted out, log in to npm (`npm login` or a valid `~/.npmrc` token), then from the repo root:

  ```bash
  npm run publish:cli
  ```

  That runs lint, build, then **`npm publish`** with **`RELEASE_MODE=true`** (so `prepublishOnly` passes) and **`--provenance=false`** (local publishes cannot satisfy `publishConfig.provenance` the way CI does). **n8n Cloud verification still expects** a GitHub Actions publish with provenance when you submit.

  If **`npm whoami`** or publish returns **`401 Unauthorized`**, npm is using a **bad or revoked token** (or a stale line in an **`.npmrc`**). Run **`npm logout`**, delete any **`//registry.npmjs.org/`** auth lines in **`~/.npmrc`** and in **this repo’s `.npmrc`** if you created one, revoke the old token on [npmjs.com](https://www.npmjs.com/settings/~/tokens), then **`npm login`** or set a **new** granular write token. Do not commit **`.npmrc`** (it is gitignored).

  Keep **`package.json` `version` and `nodes/` on `main` aligned** with what you intend to ship; the published tarball must match this repository.

  If the **Publish** workflow shows provenance then **`E404` on `PUT …/n8n-nodes-sarvam`**: that response usually means **no publish permission** (not a missing package). Use **npm ≥11.5.1**, Node **≥22.14**, and a **`repository.url`** that matches this GitHub repo. For **Trusted Publishers (OIDC)** only: remove the **`environment: NPM_TOKEN`** line from [`.github/workflows/publish.yml`](.github/workflows/publish.yml) if you do not use that GitHub Environment (otherwise the job can fail before publish). Delete any unused **`NPM_TOKEN`** secret; the workflow uses **`NODE_AUTH_TOKEN=""`** with `registry-url` for OIDC (see [setup-node#1440](https://github.com/actions/setup-node/issues/1440)). For **token publish**, keep **`NPM_TOKEN`**. If that value is stored under **Settings → Environments → … → Environment secrets**, the workflow job must declare **`environment: <that-environment-name>`** (this repo uses **`NPM_TOKEN`**) or GitHub never injects the secret and you get **`ENEEDAUTH`**. Repository-level **Actions** secrets do not need `environment:`.

  If the log shows **`NPM_TOKEN length: …`** but **`npm whoami` → 401**, the secret value is **not a valid npm credential** (revoked, expired, typo, or not **Read and write** for `n8n-nodes-sarvam`). Create a **new granular token** on [npmjs.com](https://www.npmjs.com/settings/~/tokens) while logged in as **`vinayak-sarvam`**, paste the full value into the **`NPM_TOKEN`** environment secret, and re-run the workflow. **`npm whoami`** in the log must succeed and print **`vinayak-sarvam`** before publish.

  ## Resources

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

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n community node integrates Sarvam AI APIs to handle speech processing and chat interactions in 22+ Indian languages.","capabilities":["Speech to text transcription with multiple modes (transcribe, translate to English, transliterate, code-mixed, verbatim)","Text to speech synthesis with 39 voice options","Chat completion using sarvam-100b and sarvam-30b language models","Support for 23 languages in speech to text","Support for 11 languages in text to speech"],"authentication":"API key required","commonUseCases":["Transcribing audio files in Indian languages","Converting text to natural-sounding speech","Chatbots and conversational AI in Indian languages","Translation from Indic languages to English"],"limitations":["Text to speech only supports 11 languages compared to 23 for speech to text","Chat functionality requires specific model selection (sarvam-100b or sarvam-30b)"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.code"]}


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

updated_at: 2026-07-14 14:40:33
author_name: ashlonare
author_github_url: https://github.com/harshalone/
npm_package_name: n8n-nodes-eranol
npm_version: 0.3.2
community_fetched_at: 2026-07-14T14:40:33.659Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "universal",
      "options": [
        {
          "name": "Universal",
          "value": "universal",
          "description": "Run any Eranol API operation with a JSON body"
        },
        {
          "name": "Job",
          "value": "job",
          "description": "Check job status, fetch results, or verify your API key"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "hidden",
      "default": "universal",
      "options": [
        {
          "name": "Universal",
          "value": "universal",
          "action": "Universal",
          "description": "Run any Eranol API operation with a JSON body"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "universal"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getStatus",
      "options": [
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get job status",
          "description": "Retrieve current job status, progress, and completion data"
        },
        {
          "name": "Get Result",
          "value": "getResult",
          "action": "Get job result",
          "description": "Get the result of a completed job"
        },
        {
          "name": "Delete",
          "value": "deleteJob",
          "action": "Delete a job",
          "description": "Remove a job and its associated output file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "job"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Universal",
      "value": "universal",
      "action": "Universal",
      "description": "Run any Eranol API operation with a JSON body",
      "resource": "universal"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get job status",
      "description": "Retrieve current job status, progress, and completion data",
      "resource": "job"
    },
    {
      "name": "Get Result",
      "value": "getResult",
      "action": "Get job result",
      "description": "Get the result of a completed job",
      "resource": "job"
    },
    {
      "name": "Delete",
      "value": "deleteJob",
      "action": "Delete a job",
      "description": "Remove a job and its associated output file",
      "resource": "job"
    }
  ]

npm_readme:
  # n8n-nodes-eranol

  This is an n8n community node that lets you professionaly process media using the [Eranol FFmpeg API](https://www.eranol.com). Eranol provides a powerful, cloud-based FFmpeg engine for video, audio, and image processing.

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

  ## Features

  - **Video Processing**: Trim, watermark, caption, overlay, progressBar, reframe, thumbnail, generate GIF, and more.
  - **Audio Processing**: Denoise, highlights, remove silence, and conversion.
  - **Composition**: Merge multiple images into videos with transitions and background audio.
  - **Conversion**: Batch convert between common video (MP4, WebM), audio (MP3, WAV), and image (JPG, WebP) formats.
  - **Job Management**: Long-running media tasks managed via a robust job system.

  ## Installation

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

  ```bash
  npm install n8n-nodes-eranol
  ```

  ## Credentials

  You'll need an API Key from your [Eranol Dashboard](https://www.eranol.com/dashboard).

  1. Go to **Credentials** in n8n.
  2. Select **Eranol API**.
  3. Paste your **API Key**.

  ## Resources & Operations

  ### Video
  - **Add Intro/Outro**: Seamlessly stitch intro or outro videos.
  - **Caption**: Add text overlays or closed captions.
  - **Extract Audio/Images**: Pull assets from your video files.
  - **Generate GIF**: Convert video segments into high-quality GIFs.
  - **Overlay**: Layer images or videos over your footage.
  - **Progress Bar**: Add custom progress bars to your videos.
  - **Reframe**: Automatically adjust video aspect ratios.
  - **Thumbnail**: Generate preview images at specific timestamps.
  - **Trim**: Precise cut operations.
  - **Watermark**: Brand your content with logo overlays.

  ### Audio
  - **Denoise**: Remove background noise from recordings.
  - **Highlights**: Automatically extract key moments from audio.
  - **Remove Silence**: Tighten up recordings by removing dead air.

  ### Compose
  - **Merge**: Combine images into a slideshow video with transitions.

  ### Convert
  - **Video**: MP4, WebM.
  - **Audio**: MP3, WAV.
  - **Image**: JPG, WebP.

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"A community node that enables workflow automation for media processing tasks using the Eranol FFmpeg API, supporting video, audio, and image manipulation.","capabilities":["Video trimming and watermarking","Video captioning and overlay","Video reframing and thumbnail generation","GIF generation from video segments","Progress bar addition to videos","Audio denoising and silence removal","Audio highlight extraction","Image-to-video composition with transitions","Batch format conversion (MP4, WebM, MP3, WAV, JPG, WebP)","Job management for long-running tasks"],"authentication":"API Key required","commonUseCases":["Automated video editing for social media content","Batch conversion of media files for different platforms","Automated thumbnail generation for video libraries","Audio cleanup for podcast or interview recordings","Creating GIFs from video clips"],"limitations":["Community node (not official n8n node)","Requires external API key from Eranol dashboard"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.code"]}


node_type: n8n-nodes-manychat.manyChat
package_name: n8n-nodes-manychat
display_name: ManyChat
description: Consume issues from the ManyChat API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: xal95
author_github_url: https://github.com/xAL95/
npm_package_name: n8n-nodes-manychat
npm_version: 0.2.1
community_fetched_at: 2026-07-14T14:40:33.660Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "page",
      "options": [
        {
          "name": "Page",
          "value": "page"
        },
        {
          "name": "Subscriber",
          "value": "subscriber"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getInfo",
      "options": [
        {
          "name": "Create Bot Field",
          "value": "createBotField",
          "action": "Create bot field",
          "routing": {
            "request": {
              "url": "/fb/page/createBotField",
              "method": "POST"
            }
          }
        },
        {
          "name": "Create Custom Field",
          "value": "createCustomField",
          "action": "Create custom field",
          "routing": {
            "request": {
              "url": "/fb/page/createCustomField",
              "method": "POST"
            }
          }
        },
        {
          "name": "Create Tag",
          "value": "createTag",
          "action": "Create tag",
          "routing": {
            "request": {
              "url": "/fb/page/createTag",
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Bot Fields",
          "value": "getBotFields",
          "action": "Get bot fields",
          "routing": {
            "request": {
              "url": "/fb/page/getBotFields",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Custom Fields",
          "value": "getCustomFields",
          "action": "Get custom fields",
          "routing": {
            "request": {
              "url": "/fb/page/getCustomFields",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Flows",
          "value": "getFlows",
          "action": "Get flows",
          "routing": {
            "request": {
              "url": "/fb/page/getFlows",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Growth Tools",
          "value": "getGrowthTools",
          "action": "Get growth tools",
          "routing": {
            "request": {
              "url": "/fb/page/getGrowthTools",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Info",
          "value": "getInfo",
          "action": "Get info",
          "routing": {
            "request": {
              "url": "/fb/page/getInfo",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Otn Topics",
          "value": "getOtnTopics",
          "action": "Get otn topics",
          "routing": {
            "request": {
              "url": "/fb/page/getOtnTopics",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Tags",
          "value": "getTags",
          "action": "Get tags",
          "routing": {
            "request": {
              "url": "/fb/page/getTags",
              "method": "GET"
            }
          }
        },
        {
          "name": "Remove Tag",
          "value": "removeTag",
          "action": "Remove tag",
          "routing": {
            "request": {
              "url": "={{ $parameter.tagIdentifierType === 'name'\n\t\t\t\t\t\t\t\t\t? '/fb/page/removeTagByName'\n\t\t\t\t\t\t\t\t\t: '/fb/page/removeTag' }}",
              "method": "POST"
            }
          },
          "description": "Removes specified tag from the page and the page's subscribers"
        },
        {
          "name": "Set Bot Field",
          "value": "setBotField",
          "action": "Set bot field",
          "routing": {
            "request": {
              "url": "={{ $parameter.identifierType === 'name'\n\t\t\t\t\t\t\t\t\t? '/fb/page/setBotFieldByName'\n\t\t\t\t\t\t\t\t\t: '/fb/page/setBotField' }}",
              "method": "POST"
            }
          }
        },
        {
          "name": "Set Bot Fields",
          "value": "setBotFields",
          "action": "Set bot fields",
          "routing": {
            "request": {
              "url": "/fb/page/setBotFields",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "page"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getInfo",
      "options": [
        {
          "name": "Add Tag To Subscriber",
          "value": "addTag",
          "action": "Add tag to subscriber",
          "routing": {
            "request": {
              "url": "={{ $parameter.tagIdentifierType === 'name'\n\t\t\t\t\t\t\t\t\t? '/fb/subscriber/addTagByName'\n\t\t\t\t\t\t\t\t\t: '/fb/subscriber/addTag' }}",
              "method": "POST"
            }
          },
          "description": "Add a tag to a subscriber (by tag ID or tag name)"
        },
        {
          "name": "Create A Unified Subscriber",
          "value": "createSubscriber",
          "action": "Create a unified subscriber",
          "routing": {
            "request": {
              "url": "/fb/subscriber/createSubscriber",
              "method": "POST"
            }
          }
        },
        {
          "name": "Find By Custom Field",
          "value": "findByCustomField",
          "action": "Find by custom field",
          "routing": {
            "request": {
              "url": "/fb/subscriber/findByCustomField",
              "method": "GET"
            }
          }
        },
        {
          "name": "Find By System Field",
          "value": "findBySystemField",
          "action": "Find by system field",
          "routing": {
            "request": {
              "url": "/fb/subscriber/findBySystemField",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Info",
          "value": "getInfo",
          "action": "Get info",
          "routing": {
            "request": {
              "url": "/fb/subscriber/getInfo",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Info By User Ref",
          "value": "getInfoByUserRef",
          "action": "Get info by user ref",
          "routing": {
            "request": {
              "url": "/fb/subscriber/getInfoByUserRef",
              "method": "GET"
            }
          }
        },
        {
          "name": "Remove Tag From Subscriber",
          "value": "removeTag",
          "action": "Remove tag from subscriber",
          "routing": {
            "request": {
              "url": "={{ $parameter.tagIdentifierType === 'name'\n\t\t\t\t\t\t\t\t\t? '/fb/subscriber/removeTagByName'\n\t\t\t\t\t\t\t\t\t: '/fb/subscriber/removeTag' }}",
              "method": "POST"
            }
          },
          "description": "Remove a tag from a subscriber (by tag ID or tag name)"
        },
        {
          "name": "Search Subscribers By Full Name",
          "value": "findByName",
          "action": "Search subscribers by full name",
          "routing": {
            "request": {
              "url": "/fb/subscriber/findByName",
              "method": "GET"
            }
          }
        },
        {
          "name": "Set Custom Field",
          "value": "setCustomField",
          "action": "Set custom field",
          "routing": {
            "request": {
              "url": "={{ $parameter.identifierType === 'name'\n\t\t\t\t\t\t\t\t\t? '/fb/subscriber/setCustomFieldByName'\n\t\t\t\t\t\t\t\t\t: '/fb/subscriber/setCustomField' }}",
              "method": "POST"
            }
          }
        },
        {
          "name": "Set Custom Fields",
          "value": "setCustomFields",
          "action": "Set custom fields",
          "routing": {
            "request": {
              "url": "/fb/subscriber/setCustomFields",
              "method": "POST"
            }
          }
        },
        {
          "name": "Update Subscriber",
          "value": "updateSubscriber",
          "action": "Update subscriber",
          "routing": {
            "request": {
              "url": "/fb/subscriber/updateSubscriber",
              "method": "POST"
            }
          }
        },
        {
          "name": "Verify By Signed Request",
          "value": "verifyBySignedRequest",
          "action": "Verify by signed request",
          "routing": {
            "request": {
              "url": "/fb/subscriber/verifyBySignedRequest",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "subscriber"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Bot Field",
      "value": "createBotField",
      "action": "Create bot field",
      "routing": {
        "request": {
          "url": "/fb/page/createBotField",
          "method": "POST"
        }
      },
      "resource": "page"
    },
    {
      "name": "Create Custom Field",
      "value": "createCustomField",
      "action": "Create custom field",
      "routing": {
        "request": {
          "url": "/fb/page/createCustomField",
          "method": "POST"
        }
      },
      "resource": "page"
    },
    {
      "name": "Create Tag",
      "value": "createTag",
      "action": "Create tag",
      "routing": {
        "request": {
          "url": "/fb/page/createTag",
          "method": "POST"
        }
      },
      "resource": "page"
    },
    {
      "name": "Get Bot Fields",
      "value": "getBotFields",
      "action": "Get bot fields",
      "routing": {
        "request": {
          "url": "/fb/page/getBotFields",
          "method": "GET"
        }
      },
      "resource": "page"
    },
    {
      "name": "Get Custom Fields",
      "value": "getCustomFields",
      "action": "Get custom fields",
      "routing": {
        "request": {
          "url": "/fb/page/getCustomFields",
          "method": "GET"
        }
      },
      "resource": "page"
    },
    {
      "name": "Get Flows",
      "value": "getFlows",
      "action": "Get flows",
      "routing": {
        "request": {
          "url": "/fb/page/getFlows",
          "method": "GET"
        }
      },
      "resource": "page"
    },
    {
      "name": "Get Growth Tools",
      "value": "getGrowthTools",
      "action": "Get growth tools",
      "routing": {
        "request": {
          "url": "/fb/page/getGrowthTools",
          "method": "GET"
        }
      },
      "resource": "page"
    },
    {
      "name": "Get Info",
      "value": "getInfo",
      "action": "Get info",
      "routing": {
        "request": {
          "url": "/fb/page/getInfo",
          "method": "GET"
        }
      },
      "resource": "page"
    },
    {
      "name": "Get Otn Topics",
      "value": "getOtnTopics",
      "action": "Get otn topics",
      "routing": {
        "request": {
          "url": "/fb/page/getOtnTopics",
          "method": "GET"
        }
      },
      "resource": "page"
    },
    {
      "name": "Get Tags",
      "value": "getTags",
      "action": "Get tags",
      "routing": {
        "request": {
          "url": "/fb/page/getTags",
          "method": "GET"
        }
      },
      "resource": "page"
    },
    {
      "name": "Remove Tag",
      "value": "removeTag",
      "action": "Remove tag",
      "routing": {
        "request": {
          "url": "={{ $parameter.tagIdentifierType === 'name'\n\t\t\t\t\t\t\t\t\t? '/fb/page/removeTagByName'\n\t\t\t\t\t\t\t\t\t: '/fb/page/removeTag' }}",
          "method": "POST"
        }
      },
      "description": "Removes specified tag from the page and the page's subscribers",
      "resource": "page"
    },
    {
      "name": "Set Bot Field",
      "value": "setBotField",
      "action": "Set bot field",
      "routing": {
        "request": {
          "url": "={{ $parameter.identifierType === 'name'\n\t\t\t\t\t\t\t\t\t? '/fb/page/setBotFieldByName'\n\t\t\t\t\t\t\t\t\t: '/fb/page/setBotField' }}",
          "method": "POST"
        }
      },
      "resource": "page"
    },
    {
      "name": "Set Bot Fields",
      "value": "setBotFields",
      "action": "Set bot fields",
      "routing": {
        "request": {
          "url": "/fb/page/setBotFields",
          "method": "POST"
        }
      },
      "resource": "page"
    },
    {
      "name": "Add Tag To Subscriber",
      "value": "addTag",
      "action": "Add tag to subscriber",
      "routing": {
        "request": {
          "url": "={{ $parameter.tagIdentifierType === 'name'\n\t\t\t\t\t\t\t\t\t? '/fb/subscriber/addTagByName'\n\t\t\t\t\t\t\t\t\t: '/fb/subscriber/addTag' }}",
          "method": "POST"
        }
      },
      "description": "Add a tag to a subscriber (by tag ID or tag name)",
      "resource": "subscriber"
    },
    {
      "name": "Create A Unified Subscriber",
      "value": "createSubscriber",
      "action": "Create a unified subscriber",
      "routing": {
        "request": {
          "url": "/fb/subscriber/createSubscriber",
          "method": "POST"
        }
      },
      "resource": "subscriber"
    },
    {
      "name": "Find By Custom Field",
      "value": "findByCustomField",
      "action": "Find by custom field",
      "routing": {
        "request": {
          "url": "/fb/subscriber/findByCustomField",
          "method": "GET"
        }
      },
      "resource": "subscriber"
    },
    {
      "name": "Find By System Field",
      "value": "findBySystemField",
      "action": "Find by system field",
      "routing": {
        "request": {
          "url": "/fb/subscriber/findBySystemField",
          "method": "GET"
        }
      },
      "resource": "subscriber"
    },
    {
      "name": "Get Info",
      "value": "getInfo",
      "action": "Get info",
      "routing": {
        "request": {
          "url": "/fb/subscriber/getInfo",
          "method": "GET"
        }
      },
      "resource": "subscriber"
    },
    {
      "name": "Get Info By User Ref",
      "value": "getInfoByUserRef",
      "action": "Get info by user ref",
      "routing": {
        "request": {
          "url": "/fb/subscriber/getInfoByUserRef",
          "method": "GET"
        }
      },
      "resource": "subscriber"
    },
    {
      "name": "Remove Tag From Subscriber",
      "value": "removeTag",
      "action": "Remove tag from subscriber",
      "routing": {
        "request": {
          "url": "={{ $parameter.tagIdentifierType === 'name'\n\t\t\t\t\t\t\t\t\t? '/fb/subscriber/removeTagByName'\n\t\t\t\t\t\t\t\t\t: '/fb/subscriber/removeTag' }}",
          "method": "POST"
        }
      },
      "description": "Remove a tag from a subscriber (by tag ID or tag name)",
      "resource": "subscriber"
    },
    {
      "name": "Search Subscribers By Full Name",
      "value": "findByName",
      "action": "Search subscribers by full name",
      "routing": {
        "request": {
          "url": "/fb/subscriber/findByName",
          "method": "GET"
        }
      },
      "resource": "subscriber"
    },
    {
      "name": "Set Custom Field",
      "value": "setCustomField",
      "action": "Set custom field",
      "routing": {
        "request": {
          "url": "={{ $parameter.identifierType === 'name'\n\t\t\t\t\t\t\t\t\t? '/fb/subscriber/setCustomFieldByName'\n\t\t\t\t\t\t\t\t\t: '/fb/subscriber/setCustomField' }}",
          "method": "POST"
        }
      },
      "resource": "subscriber"
    },
    {
      "name": "Set Custom Fields",
      "value": "setCustomFields",
      "action": "Set custom fields",
      "routing": {
        "request": {
          "url": "/fb/subscriber/setCustomFields",
          "method": "POST"
        }
      },
      "resource": "subscriber"
    },
    {
      "name": "Update Subscriber",
      "value": "updateSubscriber",
      "action": "Update subscriber",
      "routing": {
        "request": {
          "url": "/fb/subscriber/updateSubscriber",
          "method": "POST"
        }
      },
      "resource": "subscriber"
    },
    {
      "name": "Verify By Signed Request",
      "value": "verifyBySignedRequest",
      "action": "Verify by signed request",
      "routing": {
        "request": {
          "url": "/fb/subscriber/verifyBySignedRequest",
          "method": "POST"
        }
      },
      "resource": "subscriber"
    }
  ]

npm_readme:
  # n8n-nodes-manychat

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

  **ManyChat** is a messaging automation platform that allows you to build chatbots and manage subscribers for channels such as Facebook Messenger, Instagram, and WhatsApp.

  [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.

  After installation, the node will be available in the n8n editor under **Community Nodes**.

  ---

  ## Operations

  Currently, the node supports the following ManyChat API resources and operations:

  ### Page

  **Page Information**
  - Get Page Info

  **Tags**
  - Create Tag
  - Get Tags
  - Remove Tag (by ID)
  - Remove Tag (by Name)

  **Custom Fields**
  - Create Custom Field
  - Get Custom Fields

  **Bot Fields**
  - Get Bot Fields
  - Create Bot Field
  - Set Bot Field
  - Set Bot Field (by Name)
  - Set Multiple Bot Fields

  **Flows & Growth Tools**
  - Get Flows
  - Get Growth Tools

  **One-Time Notifications**
  - Get One-Time Notification Topics

  ---

  ### Subscriber

  **Subscriber Lookup**
  - Get Subscriber Info
  - Get Subscriber Info by User Reference
  - Find Subscriber by Name
  - Find Subscriber by Custom Field
  - Find Subscriber by System Field

  **Tags**
  - Add Tag to Subscriber
  - Add Tag to Subscriber (by Name)
  - Remove Tag from Subscriber
  - Remove Tag from Subscriber (by Name)

  **Subscriber Management**
  - Create Subscriber (Unified)
  - Update Subscriber
  - Verify Subscriber by Signed Request

  ---

  > Operation names in n8n are simplified for clarity and may differ slightly from the underlying ManyChat API endpoint names.

  ---

  ## Credentials

  This node requires authentication with the ManyChat API.

  ### Prerequisites
  - A ManyChat account
  - At least one connected page or channel (e.g. Facebook Messenger, Instagram)
  - A ManyChat API access token

  ### Authentication method
  - **API Token (Bearer Token)**

  ### Setup
  1. Log in to your ManyChat account.
  2. Navigate to **Settings → API**.
  3. Generate or copy your API token.
  4. In n8n, create new credentials for **ManyChat API**.
  5. Paste the API token into the credentials field and save.

  The node will use this token to authenticate all API requests.

  ---

  ## Compatibility

  - **Minimum n8n version:** 2.0.0
  - **Tested against:** n8n 2.x

  No known incompatibilities at this time.

  ---

  ## Usage

  This node can be used to automate and synchronize ManyChat data inside n8n workflows, for example:

  - Syncing ManyChat subscribers with a CRM or database
  - Managing subscriber tags and custom fields based on external events
  - Fetching page, flow, and bot field metadata for automation logic
  - Creating and updating subscribers programmatically

  If you are new to n8n, see the [Try it out](https://docs.n8n.io/try-it-out/) guide to get started with building workflows.

  ---

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [ManyChat API Swagger documentation](https://api.manychat.com/swagger)

  ---

  ## Version history

  ### 0.1.0
  - Initial release
  - Added **Page** and **Subscriber** resources
  - Support for tags, custom fields, bot fields, and subscriber management
  - Tested with n8n v2

  ### 0.2.0
  - Refactor: merge SetBotField variants and fix page actions
  - Merged SetBotField and SetBotFieldByName
  - Fixed "Remove Tag" page action
  - Fixed "Set Bot Field" page action
  - Added SetCustomField and SetCustomFields for Subscriber

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of ManyChat messaging platform operations by allowing users to interact with the ManyChat API for managing pages, subscribers, tags, and bot fields within n8n workflows.","capabilities":["Get Page Info","Manage Tags (Create, Get, Remove by ID/Name)","Manage Custom Fields (Create, Get)","Manage Bot Fields (Get, Create, Set, Set by Name, Set Multiple)","Get Flows and Growth Tools","Get One-Time Notification Topics","Get Subscriber Info (by various methods including name, custom fields, system fields)","Add/Remove Tags from Subscribers","Create and Update Subscribers","Verify Subscribers by Signed Request"],"authentication":"API Token (Bearer Token)","commonUseCases":["Syncing ManyChat subscribers with external CRMs or databases","Automating subscriber tagging and custom field management based on external events","Fetching page, flow, and bot field metadata for workflow logic","Programmatic creation and updating of subscribers"],"limitations":["Community node (not official n8n node)","Requires a ManyChat account with at least one connected page or channel","Operation names in n8n are simplified and may differ slightly from underlying ManyChat API endpoint names"],"relatedNodes":["n8n-nodes-core.httpRequest","n8n-nodes-core.set"]}


node_type: n8n-nodes-uploadtourl.uploadToUrl
package_name: n8n-nodes-uploadtourl
display_name: Upload to URL
description: Upload files for instant hosting and receive a shareable public URL. Delete anytime
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: jiteshdugar
author_github_url: https://github.com/Upload-to-URL/
npm_package_name: n8n-nodes-uploadtourl
npm_version: 2.0.8
community_fetched_at: 2026-07-14T14:40:33.661Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "fileActions",
      "options": [
        {
          "name": "File",
          "value": "fileActions"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Delete File",
          "value": "delete",
          "action": "Delete a File",
          "description": "Delete a file by file ID"
        },
        {
          "name": "Download File",
          "value": "download",
          "action": "Download a File",
          "description": "Download a file from a public URL"
        },
        {
          "name": "Retrieve File",
          "value": "retrieve",
          "action": "Retrieve a File",
          "description": "Retrieve file information by file ID"
        },
        {
          "name": "Upload File",
          "value": "upload",
          "action": "Upload a File",
          "description": "Upload a file (binary data or base64) and get a public URL"
        },
        {
          "name": "Upload File from URL",
          "value": "uploadFileFromUrl",
          "action": "Upload a File from URL",
          "description": "Fetch a file from a public URL and host it"
        },
        {
          "name": "Upload Multiple Files",
          "value": "uploadMultiple",
          "action": "Upload Multiple Files",
          "description": "Upload multiple binary files and get their public URLs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "fileActions"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Delete File",
      "value": "delete",
      "action": "Delete a File",
      "description": "Delete a file by file ID",
      "resource": "fileActions"
    },
    {
      "name": "Download File",
      "value": "download",
      "action": "Download a File",
      "description": "Download a file from a public URL",
      "resource": "fileActions"
    },
    {
      "name": "Retrieve File",
      "value": "retrieve",
      "action": "Retrieve a File",
      "description": "Retrieve file information by file ID",
      "resource": "fileActions"
    },
    {
      "name": "Upload File",
      "value": "upload",
      "action": "Upload a File",
      "description": "Upload a file (binary data or base64) and get a public URL",
      "resource": "fileActions"
    },
    {
      "name": "Upload File from URL",
      "value": "uploadFileFromUrl",
      "action": "Upload a File from URL",
      "description": "Fetch a file from a public URL and host it",
      "resource": "fileActions"
    },
    {
      "name": "Upload Multiple Files",
      "value": "uploadMultiple",
      "action": "Upload Multiple Files",
      "description": "Upload multiple binary files and get their public URLs",
      "resource": "fileActions"
    }
  ]

npm_readme:
  # n8n-nodes-uploadtourl

  [![Hero Banner](images/hero-banner.png)](https://uploadtourl.com)

  This is a verified [n8n](https://n8n.io/) node that lets you upload any file and get a public URL instantly using [Upload to URL](https://uploadtourl.com). Supports both binary data and base64 string inputs.

  This is the link to our n8n verified integration - [https://n8n.io/integrations/upload-to-url/](https://n8n.io/integrations/upload-to-url/)

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

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

  ## Setup

  The **Upload to URL** node is a verified n8n integration, which means it can be set up directly on both n8n cloud and self-hosted instances without needing to install it through the Community Nodes section.

  ### In n8n

  1. Open your n8n instance.
  2. Create or open a workflow.
  3. Click the **+** button to add a node.
  4. Search for **Upload to URL**.
  5. Select it to add it to your workflow.

  ## Operations

  ### File Actions

  The **Upload to URL** node provides the following operations under the **File Actions** resource:

  - **Upload File** — Upload a file (binary data or base64 string) from your workflow and receive a publicly accessible URL in response.
  - **Upload Multiple Files** — Upload multiple binary files at once using flexible selection modes (All, Specific Names, or Regex).
  - **Upload File from URL** — Fetch a file from a public URL and host it instantly on your server.
  - **Download File** — Download a file from any public URL directly into n8n binary storage.
  - **Retrieve File** — Retrieve details of a previously uploaded file using its file ID.
  - **Delete File** — Delete a previously uploaded file from the server using its file ID.

  #### Upload File Parameters

  | Parameter | Type | Default | Description |
  |-----------|------|---------|-------------|
  | **Input Type** | selection | `Binary Data` | Choose between "Binary Data" (from previous nodes) or "Base64 String" (direct base64 input) |
  | **Binary Property** | string | `data` | The name of the binary property containing the file to upload. Only shown when Input Type is "Binary Data". |
  | **Base64 Data** | string | - | Base64 encoded file data. Only shown when Input Type is "Base64 String". |
  | **Filename** | string | `file.bin` | Name of the file (e.g., document.pdf, image.jpg). Required for base64 input. |
  | **MIME Type** | selection | `auto` | Choose from common MIME types or select "Custom" to specify your own. Also supports "Auto-detect from filename" to automatically determine the MIME type from the file extension. |
  | **Custom MIME Type** | string | - | Custom MIME type (e.g., application/vnd.ms-excel). Only shown when MIME Type is set to "Custom". |
  | **Expiry Days** | number | - | Number of days after which the uploaded file will be automatically deleted from the server. Leave empty for no expiration. |

  #### Upload Multiple Files Parameters

  | Parameter | Type | Default | Description |
  |-----------|------|---------|-------------|
  | **Selection Mode** | selection | `All Binary Data` | Choose how to select files: "All Binary Data", "Specific Names", or "Regex Pattern" |
  | **Binary Property Names** | list | - | A list of specific binary property names to upload. Only shown in "Specific Names" mode. |
  | **Property Name Regex** | string | - | A regular expression to match binary properties (e.g., `^attachment_.*`). Only shown in "Regex Pattern" mode. |

  #### Upload File from URL / Download File Parameters

  | Parameter | Type | Default | Description |
  |-----------|------|---------|-------------|
  | **File URL** | string | - | The public URL of the file you want to download. |
  | **Put Output In Field** | string | `data` | The name of the binary property where the file should be stored. Only shown in "Download File" operation. |
  | **Expiry Days** | number | - | Number of days after which the uploaded file will be automatically deleted. Only shown in "Upload" operations. |

  #### Retrieve File / Delete File Parameters

  | Parameter | Type | Description |
  |-----------|------|-------------|
  | **File ID** | string | The ID of the file to retrieve or delete. This is returned in the response when a file is uploaded. |

  #### Output

  The node returns the JSON response from the Upload to URL API, which includes the public URL for the uploaded file.

  ### Supported Features

  ![Node Demo](images/node-demo.png)

  - **Multiple Input Types** — Supports both binary data from previous nodes and direct base64 string input.
  - **Smart Defaults** — Filename defaults to `file.bin` and MIME type defaults to auto-detection for seamless setup.
  - **File Expiry** — Set an expiry period (in days) for uploaded files so they are automatically deleted from the server after the specified time.
  - **Retrieve & Delete Files** — Retrieve details of or delete previously uploaded files using their file ID.
  - **Batch Processing** — Handles multiple input items; each item's file is uploaded individually.
  - **Multiple File Upload** — Upload multiple binary properties from a single item using Regex or Name matching.
  - **Instant Re-hosting** — Download a file from any public URL and host it instantly.
  - **Continue on Fail** — When enabled, the workflow continues even if an upload fails, returning the error message in the output instead of stopping execution.
  - **Usable as Sub-Node / Tool** — Can be used as a tool in AI agent workflows and sub-workflows.

  #### Supported File Types

  The node supports all file types including:
  - **Images**: JPEG, PNG, GIF, WebP, SVG, ICO
  - **Documents**: PDF, DOC, DOCX, TXT, CSV, XLS, XLSX
  - **Videos**: MP4, AVI, MOV, WMV, FLV, WebM
  - **Audio**: MP3, WAV, FLAC, AAC, OGG
  - **Archives**: ZIP, RAR, TAR, GZ
  - **Any custom file type**

  ## Credentials

  To use this node, you need an **Upload to URL API key**.

  ### Obtaining an API Key

  1. Visit [uploadtourl.com](https://uploadtourl.com)
  2. Create an account or sign in
  3. Navigate to your API settings to generate an API key

  ### Setting Up Credentials in n8n

  1. In n8n, go to **Credentials**
  2. Select **Add Credential**
  3. Search for **Upload to URL API**
  4. Enter your **API Key** in the provided field
  5. Select **Save**

  The credential is automatically verified against the Upload to URL API when saved.

  ## Usage

  ### Node Overview

  The **Upload to URL** node provides a clean interface for uploading files with support for both binary data and base64 string inputs.

  ![Node Details](images/node-details.png)

  ### Binary Data Upload (Existing)

  1. Add a node that produces binary data (e.g., **Read Binary File**, **HTTP Request**, or a **Webhook** trigger with file upload)
  2. Connect it to the **Upload to URL** node
  3. Set **Input Type** to "Binary Data"
  4. Configure the **Binary Property** name if your binary data uses a property name other than `data`
  5. Execute the workflow to upload the file and receive a public URL

  ### Base64 String Upload (New)

  1. Add a node that produces base64 data or use a **Set** node to define base64 content
  2. Connect it to the **Upload to URL** node
  3. Set **Input Type** to "Base64 String"
  4. Configure the following parameters:
     - **Base64 Data**: The base64 encoded string (with or without data URL prefix)
     - **Filename**: The desired filename (defaults to `file.bin` if not specified)
     - **MIME Type**: Choose from the dropdown (defaults to "Auto-detect from filename")
  5. Execute the workflow to upload the file and receive a public URL

  **Note**: With the default settings, you only need to provide the base64 data. The node will automatically use `file.bin` as the filename and detect the MIME type from the file extension if you change the filename to end with a proper extension (e.g., `image.jpg`).

  ### Uploading Multiple Files (New)

  The **Upload Multiple Files** operation is designed for workflows where a single item contains multiple attachments (e.g., from an Email or Form trigger).

  1. **Selection Mode: All Binary Data**
     - No extra configuration needed. Every binary property found in the item is uploaded.
  2. **Selection Mode: Specific Names**
     - Add the specific keys you want to upload (e.g., `invoice_pdf`, `receipt_png`).
  3. **Selection Mode: Regex Pattern**
     - Match properties dynamically, such as `^attachment_[0-9]+` to grab all email attachments.

  **Pro Feature**: The node automatically supports **Binary Arrays**. If a property contains an array of files (common in custom Code nodes), it will iterate and upload every file in that array.

  ### Uploading from URL (New)

  1. Select **Upload File from URL**.
  2. Paste the public link to any file (image, PDF, archive, etc.).
  3. The node fetches the file, extracts the filename and MIME type from the source headers, and hosts it instantly.

  ### Downloading Files (New)

  1. Select **Download File**.
  2. Paste the public link to any file.
  3. The node downloads the file and attaches it as a binary property (e.g., `data`) to your item, allowing subsequent nodes (like "Write Binary File") to process it.




  ### Base64 Input Examples

  #### Example 1: Direct Base64 Input
  ```
  [Set Node with base64 data] → [Upload to URL] → [HTTP Request with URL]
  ```

  **Set Node configuration:**
  - JSON mode: `{
    "base64Data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJ...",
    "fileName": "image.png",
    "mimeType": "image/png"
  }`

  **Upload to URL configuration:**
  - Input Type: "Base64 String"
  - Base64 Data: `{{ $json.base64Data }}`
  - Filename: `{{ $json.fileName }}`
  - MIME Type: `{{ $json.mimeType }}`

  #### Example 2: Data URL Input
  The node automatically handles data URLs like:
  ```
  data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ...
  ```

  Simply paste the entire data URL in the **Base64 Data** field, and the node will extract the base64 portion automatically.

  #### MIME Type Options

  The **MIME Type** dropdown provides several options:

  - **Auto-detect from filename**: Automatically determines the MIME type based on the file extension (e.g., `.jpg` → `image/jpeg`, `.pdf` → `application/pdf`)
  - **Predefined options**: Common MIME types for images, documents, videos, audio, and archives
  - **Custom**: Allows you to specify any MIME type (e.g., `application/vnd.ms-excel` for Excel files)

  **Supported Auto-detect Extensions**:
  - Images: `.jpg`, `.jpeg`, `.png`, `.gif`, `.webp`, `.svg`
  - Documents: `.pdf`, `.txt`, `.csv`, `.json`, `.xml`
  - Archives: `.zip`
  - Media: `.mp4`, `.mp3`
  - Unknown extensions default to `application/octet-stream`

  ### Example Workflow

  ```
  [Read Binary File] → [Upload to URL] → [Send Email with URL]
  ```

  1. **Read Binary File** reads a local file and outputs it as binary data
  2. **Upload to URL** uploads the file and returns a public URL
  3. **Send Email** uses the returned URL to share the file link

  ### Using with HTTP Request

  ```
  [HTTP Request (download file)] → [Upload to URL] → [Slack Message with URL]
  ```

  1. **HTTP Request** downloads a file from any source
  2. **Upload to URL** re-hosts the file and provides a permanent public URL
  3. **Slack** sends a message containing the file link

  ### Using in AI Agent Workflows

  The node is marked as **usable as a tool**, so it can be used within n8n's AI Agent node. This allows an AI agent to upload files and retrieve public URLs as part of its reasoning process.

  ## Development

  ### Prerequisites

  - [Node.js](https://nodejs.org/) v22 or higher
  - npm

  ### Setup

  ```bash
  git clone https://github.com/Upload-to-URL/n8n-nodes-uploadtourl.git
  cd n8n-nodes-uploadtourl
  npm install
  ```

  ### Available Scripts

  | Script | Description |
  |--------|-------------|
  | `npm run dev` | Start n8n with the node loaded and hot reload enabled |
  | `npm run build` | Compile TypeScript to JavaScript for production |
  | `npm run build:watch` | Build with watch mode (auto-rebuild on changes) |
  | `npm run lint` | Check code for errors and style issues |
  | `npm run lint:fix` | Auto-fix linting issues |
  | `npm run release` | Create a new release |

  ### Local Development

  ```bash
  npm run dev
  ```

  This starts n8n with your node available at [http://localhost:5678](http://localhost:5678) and automatically rebuilds when you make changes.

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Upload to URL Website](https://uploadtourl.com)
  - [n8n Community Forum](https://community.n8n.io/)

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Uploads files (binary data or base64 strings) to a public hosting service and returns a shareable URL, with optional file retrieval and deletion capabilities.","capabilities":["Upload files via binary data input","Upload files via base64 string input","Retrieve file details using file ID","Delete files using file ID","Set custom file expiry periods","Auto-detect MIME types from filenames","Support batch processing of multiple items","Continue workflow execution on upload failure"],"authentication":"API Key required (Upload to URL API Key)","commonUseCases":["Hosting temporary files in n8n workflows","Sharing documents or images with public links","Automated file delivery in agent workflows","Temporary file storage with auto-deletion"],"limitations":["Community node (fair-code licensed, may have fewer features than official nodes)","Requires manual API key setup in n8n credentials","File storage is external and dependent on Upload to URL service uptime","File retrieval and deletion require storing the file ID returned from upload"],"relatedNodes":["Read Binary File","Set","HTTP Request","Webhook"]}


node_type: n8n-nodes-vge.vgeAidr
package_name: n8n-nodes-vge
display_name: VGE AIDR
description: AI Detection & Response - LLM security gateway
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: tbartel74
author_github_url: https://github.com/Vigil-Guard/vge-n8n-nodes.git
npm_package_name: n8n-nodes-vge
npm_version: 1.0.3
community_fetched_at: 2026-07-14T14:40:33.664Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-vge

  ![n8n version](https://img.shields.io/badge/n8n-%3E%3D1.0.0-blue)
  ![Node.js](https://img.shields.io/badge/node-%3E%3D18.10-green)
  ![License](https://img.shields.io/badge/license-MIT-blue)

  n8n community node for **Vigil Guard Enterprise** - AI Detection & Response (AIDR) for LLM security.

  Protect your AI workflows from prompt injection attacks, PII leakage, harmful content, and policy violations with multi-language support.

  > **Note:** Vigil Guard Enterprise is a **self-hosted solution**. There is no public cloud API. You must deploy VGE on your own infrastructure before using this node.

  ## Overview

  The **VGE AIDR** node acts as a security gateway for LLM workflows, providing real-time protection for both inputs and outputs. Deploy it as a guard before your AI agent to filter malicious prompts, and after your AI agent to prevent sensitive data leakage and harmful content.

  ```
  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐
  │ Chat Trigger │───►│  VGE AIDR    │───►│  AI Agent    │───►│  VGE AIDR    │───►│   Response   │
  │              │    │ (Input Guard)│    │  (OpenAI)    │    │(Output Guard)│    │              │
  └──────────────┘    └──────────────┘    └──────────────┘    └──────────────┘    └──────────────┘
                             │                                       │
                             │       VGE Detection Pipeline:         │
                             │  • Prompt injection attacks           │
                             │  • Content moderation (18 categories) │
                             │  • PII detection & redaction          │
                             │  • Policy enforcement                 │
                             └───────────────────────────────────────┘
  ```

  ## Detection Capabilities

  ### Prompt Injection Detection
  Multi-layer detection using heuristics, semantic analysis, and LLM-based classification to identify and block prompt injection attacks, jailbreak attempts, and manipulation techniques.

  ### Content Moderation
  Real-time content moderation with 18 detection categories across 8 languages (EN, PL, FR, ES, IT, PT, TR, RU):

  | Category | Description |
  |----------|-------------|
  | Hate Speech | Content promoting hatred against protected groups |
  | Violence | Content depicting or promoting physical violence |
  | Sexual Content | Explicit or sexually suggestive material |
  | Self-Harm | Content promoting self-harm or suicide |
  | Toxicity | Hostile, aggressive, or inflammatory content |
  | Severe Toxicity | Extremely harmful or dangerous content |
  | Insult | Personal attacks and demeaning language |
  | Vulgar | Profane or obscene language |
  | Crime | Content promoting illegal activities |

  ### PII Detection & Redaction
  Automatic detection and redaction of Personal Identifiable Information:

  | PII Type | Examples |
  |----------|----------|
  | Email | jan.kowalski@firma.pl → `[EMAIL]` |
  | Phone | +48 123 456 789 → `[PHONE]` |
  | Credit Card | 4111-1111-1111-1111 → `[CREDIT_CARD]` |
  | National ID | PESEL, NIP, SSN → `[ID]` |
  | Names | Personal names → `[PERSON]` |
  | Addresses | Physical addresses → `[ADDRESS]` |

  ### Policy Enforcement
  Configurable rules engine for custom security policies with per-category actions (ALLOW, BLOCK, LOG).

  ## Features

  - **Dual Protection** - Guard both inputs (before LLM) and outputs (after LLM)
  - **Multi-Language Support** - Content moderation in 8 languages
  - **Automatic Text Processing** - Returns `guardedText` based on detection decision
  - **PII Redaction** - Automatic sanitization of sensitive data
  - **Fail-Safe Design** - Configurable fail-open behavior prevents workflow disruption
  - **Passthrough Fields** - Preserve session context and custom fields across nodes
  - **Full Response Details** - Optional access to all detection branch results

  ## Installation

  ### Community Nodes (Recommended)

  1. Open your n8n instance
  2. Navigate to **Settings** > **Community Nodes**
  3. Search for `n8n-nodes-vge`
  4. Click **Install**
  5. Restart n8n if prompted

  ### Manual Installation

  ```bash
  cd ~/.n8n/custom
  npm install n8n-nodes-vge
  ```

  Then restart n8n.

  ### Docker Development

  Mount the package as a custom node for local development:

  ```yaml
  # docker-compose.yml
  services:
    n8n:
      image: n8nio/n8n:latest
      environment:
        - N8N_CUSTOM_EXTENSIONS=/home/node/custom-nodes
      extra_hosts:
        - "api.vigilguard:host-gateway"
      volumes:
        - n8n_data:/home/node/.n8n
        - /path/to/VGE-n8n:/home/node/custom-nodes/n8n-nodes-vge:ro
  ```

  ## Configuration

  ### Step 1: Add VGE API Credentials

  1. Go to **Settings** > **Credentials**
  2. Click **Add Credential**
  3. Search for **VGE API**
  4. Enter your credentials:

  | Field | Description | Example |
  |-------|-------------|---------|
  | API Key | Your VGE API key | `vg_live_abc123...` or `vg_test_xyz789...` |
  | Base URL | Your VGE instance URL | `https://api.vigilguard.yourdomain.com` |
  | Skip SSL Verification | Whether to skip SSL verification (self-signed only) | `false` |

  ### Step 2: Add VGE AIDR Node

  Drag the **VGE AIDR** node into your workflow and configure the parameters:

  | Parameter | Description | Default |
  |-----------|-------------|---------|
  | Stream Direction | `Input (Before LLM)` or `Output (After LLM)` | Input |
  | Text | The text to analyze | `{{ $json.chatInput }}` |
  | Original Prompt | For output mode - helps detect context manipulation | - |
  | Passthrough Fields | Comma-separated fields to preserve | `sessionId,action` |

  ### Advanced Options

  | Option | Default | Description |
  |--------|---------|-------------|
  | Timeout | 5000ms | Request timeout in milliseconds |
  | Fail Open | true | On API error, continue with original text |
  | Include Full Response | false | Include all detection branch details |
  | Custom Metadata | `{}` | Additional metadata for logging/audit |

  ## TLS and Certificates (Self-Hosted)

  For self-hosted VGE, use a valid TLS certificate and keep SSL verification enabled.

  **Recommended approach:**
  - Issue a certificate for your VGE hostname (FQDN) using a trusted CA or your own internal CA.
  - Ensure the certificate includes the correct SAN (hostname or IP).
  - Install your CA certificate in the system trust store on the host and inside containers that call VGE.
  - For Node.js, you can also set `NODE_EXTRA_CA_CERTS` to point to your CA file inside the container.

  **Emergency option only:**
  The **Skip SSL Verification** credential setting disables certificate checks. Use it only as a temporary workaround when you cannot install a proper certificate. It increases MITM risk and should not be used in production.

  ## Output Data

  The node outputs a single item with detection results:

  ```json
  {
    "sessionId": "abc-123",
    "action": "chat",
    "guardedText": "The processed text based on decision",
    "vgDecision": "ALLOWED",
    "vgScore": 15,
    "vgThreatLevel": "LOW",
    "vgCategories": ["PROMPT_INJECTION", "TOXICITY"],
    "vgRequestId": "550e8400-e29b-41d4-a716-446655440000",
    "vgLatencyMs": 45
  }
  ```

  ### Understanding guardedText

  The `guardedText` field contains different content depending on the detection decision:

  | Decision | guardedText Contains | Use Case |
  |----------|---------------------|----------|
  | `ALLOWED` | Original text (unchanged) | Safe to process |
  | `SANITIZED` | Redacted text with PII removed | Safe after cleanup |
  | `BLOCKED` | Block message explaining rejection | Do not process |

  ### Additional Fields by Decision

  **ALLOWED:**
  - Standard fields only

  **SANITIZED:**
  - `vgOriginalText` - Original text before sanitization
  - `vgRedactedText` - Text with PII markers (e.g., `[EMAIL]`, `[PHONE]`)
  - `vgSanitizedText` - Alternative sanitized version

  **BLOCKED:**
  - `vgBlockMessage` - Human-readable block reason
  - `vgOriginalText` - Original blocked text (for logging)

  ## Example Workflows

  ### Complete Input + Output Guard

  Protect both user input and AI response:

  ```
  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐
  │ Chat Trigger │───>│  VGE AIDR    │───>│  AI Agent    │───>│  VGE AIDR    │───>│   Response   │
  │              │    │ (Input Mode) │    │  (OpenAI)    │    │(Output Mode) │    │              │
  └──────────────┘    └──────────────┘    └──────────────┘    └──────────────┘    └──────────────┘
  ```

  **Input Guard Configuration:**
  - Stream Direction: `Input (Before LLM)`
  - Text: `{{ $json.chatInput }}`

  **Output Guard Configuration:**
  - Stream Direction: `Output (After LLM)`
  - Text: `{{ $json.output }}`
  - Original Prompt: `{{ $json.chatInput }}`

  ### Decision-Based Routing

  Route workflow based on detection decision using an IF node:

  ```
                      ┌──────────────┐
                      │  VGE AIDR    │
                      └──────────────┘
                             │
                             v
                      ┌──────────────┐
                      │     IF       │
                      │ vgDecision   │
                      └──────────────┘
                        │    │    │
              ALLOWED   │    │    │  BLOCKED
                        v    │    v
                 ┌──────┐    │  ┌──────────┐
                 │Proceed│   │  │  Error   │
                 │to LLM │    │  │ Response │
                 └──────┘    │  └──────────┘
                             │
                       SANITIZED
                             v
                      ┌──────────────┐
                      │ Log Warning  │
                      │ Then Proceed │
                      └──────────────┘
  ```

  **IF Node Conditions:**
  - Branch 1 (ALLOWED): `{{ $json.vgDecision === "ALLOWED" }}`
  - Branch 2 (SANITIZED): `{{ $json.vgDecision === "SANITIZED" }}`
  - Branch 3 (BLOCKED): `{{ $json.vgDecision === "BLOCKED" }}`

  ## Error Handling

  By default, the node uses **fail-open** behavior to prevent workflow disruption:

  - On API timeout or errors, items pass through with original text
  - Error details are included in the output for logging
  - Set **Fail Open** to `false` to throw errors instead

  **Fail-open output example:**

  ```json
  {
    "guardedText": "original user text",
    "vgError": "Connection timeout",
    "vgFailOpen": true,
    "vgDecision": "ALLOWED"
  }
  ```

  ## Development

  ### Build from Source

  ```bash
  # Clone the repository
  git clone https://github.com/vigilguard/n8n-nodes-vge.git
  cd n8n-nodes-vge

  # Install dependencies
  npm install

  # Build TypeScript
  npm run build

  # Copy icons to dist
  npm run copy:icons

  # Run linter
  npm run lint
  ```

  ### Project Structure

  ```
  n8n-nodes-vge/
  ├── nodes/
  │   └── VgeAidr/
  │       ├── VgeAidr.node.ts    # Main node implementation
  │       └── vge.svg            # Node icon
  ├── credentials/
  │   ├── VgeApi.credentials.ts  # API credentials
  │   └── vge.svg                # Credential icon
  ├── index.ts
  ├── package.json
  └── tsconfig.json
  ```

  ## Requirements

  | Requirement | Version |
  |-------------|---------|
  | Node.js | >= 18.10 |
  | n8n | >= 1.0.0 |
  | Vigil Guard Enterprise | Self-hosted instance required |

  ## Support

  - [Report Issues](https://github.com/vigilguard/n8n-nodes-vge/issues)
  - [Vigil Guard Documentation](https://docs.vigilguard.ai)
  - [API Reference](https://docs.vigilguard.ai/api)

  ## License

  MIT License - see [LICENSE](LICENSE) for details.

  ## Links

  - [Vigil Guard](https://vigilguard.ai)
  - [Python SDK](https://github.com/Vigil-Guard/vge-python-sdk)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

ai_documentation_summary:
  {"purpose":"The VGE AIDR node acts as a security gateway for LLM workflows, providing real-time protection against prompt injection, harmful content, and PII leakage by analyzing both inputs and outputs.","capabilities":["Prompt injection detection using heuristics and semantic analysis","Content moderation across 18 categories in 8 languages","Automatic PII detection and redaction (email, phone, credit card, ID, names, addresses)","Policy enforcement with configurable rules (ALLOW, BLOCK, LOG)","Dual protection mode (input guard before LLM, output guard after LLM)","Fail-safe design with configurable fail-open behavior","Passthrough fields to preserve session context and custom data"],"authentication":"API Key required (VGE API Key) with Base URL configuration for self-hosted instance","commonUseCases":["Protecting AI agent inputs from malicious prompt injection and jailbreak attempts","Preventing PII leakage from AI agent outputs","Moderating content for hate speech, violence, toxicity, and policy violations","Enforcing custom security policies in enterprise LLM workflows"],"limitations":["Requires self-hosted VGE deployment; no public cloud API available","Requires manual installation or Docker configuration for self-hosted environments","Content moderation limited to 8 languages (EN, PL, FR, ES, IT, PT, TR, RU)","Requires n8n version >= 1.0.0 and Node.js >= 18.10"],"relatedNodes":["VGE API Credential node","AI Agent nodes (e.g., OpenAI)","Chat Trigger nodes"]}


node_type: n8n-nodes-autype.autype
package_name: n8n-nodes-autype
display_name: Autype
description: Interact with the Autype Developer API for document generation, PDF tools, and more
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: centerbit_co
author_github_url: https://github.com/centerbitco/
npm_package_name: n8n-nodes-autype
npm_version: 1.0.5
community_fetched_at: 2026-07-14T14:40:33.665Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "render",
      "options": [
        {
          "name": "Bulk Render",
          "value": "bulkRender"
        },
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "Document Tool",
          "value": "documentTools"
        },
        {
          "name": "File",
          "value": "file"
        },
        {
          "name": "Render",
          "value": "render"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "renderJson",
      "options": [
        {
          "name": "Download Output",
          "value": "download",
          "action": "Download render output",
          "description": "Download the rendered document file by job ID"
        },
        {
          "name": "Get Job Status",
          "value": "getStatus",
          "action": "Get render job status",
          "description": "Get the current status of a render job"
        },
        {
          "name": "List Jobs",
          "value": "list",
          "action": "List render jobs",
          "description": "List all render jobs for the organization"
        },
        {
          "name": "Render From JSON",
          "value": "renderJson",
          "action": "Render a document from JSON",
          "description": "Submit document JSON for rendering to PDF, DOCX, or ODT"
        },
        {
          "name": "Render From Markdown",
          "value": "renderMarkdown",
          "action": "Render a document from markdown",
          "description": "Submit Extended Markdown content for rendering"
        },
        {
          "name": "Render Persistent Document",
          "value": "renderDocument",
          "action": "Render a persistent document",
          "description": "Render a pre-existing document from your workspace by ID"
        },
        {
          "name": "Validate JSON",
          "value": "validateJson",
          "action": "Validate document JSON",
          "description": "Validate a document JSON without rendering (no credits charged)"
        },
        {
          "name": "Validate Markdown",
          "value": "validateMarkdown",
          "action": "Validate markdown content",
          "description": "Validate Extended Markdown content without rendering (no credits charged)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "render"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createJson",
      "options": [
        {
          "name": "Create From JSON",
          "value": "createJson",
          "action": "Create bulk render from JSON",
          "description": "Create a bulk render job with an array of variable sets"
        },
        {
          "name": "Create From File",
          "value": "createFile",
          "action": "Create bulk render from file",
          "description": "Create a bulk render job by uploading a CSV, Excel, or JSON file"
        },
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get bulk render status",
          "description": "Get the current status of a bulk render job"
        },
        {
          "name": "Download Output",
          "value": "download",
          "action": "Download bulk render output",
          "description": "Download the bulk render output as a ZIP file by job ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "bulkRender"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listDocuments",
      "options": [
        {
          "name": "Create Document",
          "value": "createDocument",
          "action": "Create a document",
          "description": "Create a new document in a project"
        },
        {
          "name": "Create Project",
          "value": "createProject",
          "action": "Create a project",
          "description": "Create a new project in the organization (always PUBLIC)"
        },
        {
          "name": "Get Document",
          "value": "getDocument",
          "action": "Get a document",
          "description": "Get a document by ID including its latest content"
        },
        {
          "name": "Get Document Variables",
          "value": "getVariables",
          "action": "Get document variables",
          "description": "Get the variable definitions for a document (useful for bulk rendering)"
        },
        {
          "name": "List Documents",
          "value": "listDocuments",
          "action": "List documents",
          "description": "List all documents for the organization"
        },
        {
          "name": "List Projects",
          "value": "listProjects",
          "action": "List projects",
          "description": "List all projects for the organization"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a file",
          "description": "Delete a Document Tools file from storage"
        },
        {
          "name": "Delete Temporary Image",
          "value": "deleteImage",
          "action": "Delete a temporary image",
          "description": "Delete a temporary rendering image before it expires. These images are for Render from JSON / Render from Markdown only (not for Document Tools)."
        },
        {
          "name": "Download",
          "value": "download",
          "action": "Download a file",
          "description": "Download a Document Tools file by ID (input or output files)"
        },
        {
          "name": "Get Details",
          "value": "get",
          "action": "Get file details",
          "description": "Get metadata for a file uploaded for Document Tools"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List files",
          "description": "List all non-expired files uploaded for Document Tools"
        },
        {
          "name": "List Temporary Images",
          "value": "listImages",
          "action": "List temporary images",
          "description": "List all non-expired temporary rendering images. These images are for Render from JSON / Render from Markdown only (not for Document Tools)."
        },
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload a file for document tools",
          "description": "Upload a file (PDF, DOCX, ODT, PNG, JPEG, max 50MB) for use with Document Tools operations. Files expire after 60 minutes."
        },
        {
          "name": "Upload Temporary Image",
          "value": "uploadImage",
          "action": "Upload a temporary rendering image",
          "description": "Upload a temporary image (JPEG, PNG, WebP, max 25MB) for use in Render from JSON or Render from Markdown. Expires after 24h. Not for Document Tools — use Upload instead."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "merge",
      "options": [
        {
          "name": "Add Watermark",
          "value": "watermark",
          "action": "Add watermark",
          "description": "Add a text watermark to all or specific pages of a PDF"
        },
        {
          "name": "Compress",
          "value": "compress",
          "action": "Compress PDF",
          "description": "Compress a PDF to reduce file size"
        },
        {
          "name": "Convert to Image",
          "value": "toImage",
          "action": "Convert PDF to image",
          "description": "Convert PDF pages to images (PNG or JPEG)"
        },
        {
          "name": "Convert to PDF",
          "value": "convertToPdf",
          "action": "Convert DOCX or ODT to PDF",
          "description": "Convert a DOCX or ODT file to PDF (or other formats). The input format is detected automatically from the uploaded file."
        },
        {
          "name": "Fill Form",
          "value": "fillForm",
          "action": "Fill PDF form",
          "description": "Fill form fields in a PDF with provided values"
        },
        {
          "name": "Get Form Fields",
          "value": "formFields",
          "action": "Get PDF form fields",
          "description": "Extract form field names, types, and current values from a PDF. Returns result directly."
        },
        {
          "name": "Get Job Status",
          "value": "getJobStatus",
          "action": "Get tool job status",
          "description": "Get the current status of a Document Tools job"
        },
        {
          "name": "Get Metadata",
          "value": "metadata",
          "action": "Get PDF metadata",
          "description": "Extract metadata from a PDF (page count, title, author, etc.). Returns result directly."
        },
        {
          "name": "Keep/Remove Pages",
          "value": "pages",
          "action": "Keep or remove PDF pages",
          "description": "Keep or remove specific pages from a PDF"
        },
        {
          "name": "List Jobs",
          "value": "listJobs",
          "action": "List tool jobs",
          "description": "List Document Tools jobs for the organization"
        },
        {
          "name": "Merge PDFs",
          "value": "merge",
          "action": "Merge PDF files",
          "description": "Merge 2–20 PDF files into a single PDF"
        },
        {
          "name": "Protect",
          "value": "protect",
          "action": "Protect PDF",
          "description": "Encrypt a PDF with password protection"
        },
        {
          "name": "Replace Placeholders",
          "value": "replacePlaceholders",
          "action": "Replace placeholders in DOCX/ODT",
          "description": "Replace placeholder tags in a DOCX or ODT document with provided values and convert to the desired output format"
        },
        {
          "name": "Rotate Pages",
          "value": "rotate",
          "action": "Rotate PDF pages",
          "description": "Rotate specific pages of a PDF by 90, 180, or 270 degrees"
        },
        {
          "name": "Split PDF",
          "value": "split",
          "action": "Split PDF",
          "description": "Split a PDF into multiple parts by page ranges"
        },
        {
          "name": "Unlock",
          "value": "unlock",
          "action": "Unlock PDF",
          "description": "Remove password protection from a PDF"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "documentTools"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Download Output",
      "value": "download",
      "action": "Download render output",
      "description": "Download the rendered document file by job ID",
      "resource": "render"
    },
    {
      "name": "Get Job Status",
      "value": "getStatus",
      "action": "Get render job status",
      "description": "Get the current status of a render job",
      "resource": "render"
    },
    {
      "name": "List Jobs",
      "value": "list",
      "action": "List render jobs",
      "description": "List all render jobs for the organization",
      "resource": "render"
    },
    {
      "name": "Render From JSON",
      "value": "renderJson",
      "action": "Render a document from JSON",
      "description": "Submit document JSON for rendering to PDF, DOCX, or ODT",
      "resource": "render"
    },
    {
      "name": "Render From Markdown",
      "value": "renderMarkdown",
      "action": "Render a document from markdown",
      "description": "Submit Extended Markdown content for rendering",
      "resource": "render"
    },
    {
      "name": "Render Persistent Document",
      "value": "renderDocument",
      "action": "Render a persistent document",
      "description": "Render a pre-existing document from your workspace by ID",
      "resource": "render"
    },
    {
      "name": "Validate JSON",
      "value": "validateJson",
      "action": "Validate document JSON",
      "description": "Validate a document JSON without rendering (no credits charged)",
      "resource": "render"
    },
    {
      "name": "Validate Markdown",
      "value": "validateMarkdown",
      "action": "Validate markdown content",
      "description": "Validate Extended Markdown content without rendering (no credits charged)",
      "resource": "render"
    },
    {
      "name": "Create From JSON",
      "value": "createJson",
      "action": "Create bulk render from JSON",
      "description": "Create a bulk render job with an array of variable sets",
      "resource": "bulkRender"
    },
    {
      "name": "Create From File",
      "value": "createFile",
      "action": "Create bulk render from file",
      "description": "Create a bulk render job by uploading a CSV, Excel, or JSON file",
      "resource": "bulkRender"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get bulk render status",
      "description": "Get the current status of a bulk render job",
      "resource": "bulkRender"
    },
    {
      "name": "Download Output",
      "value": "download",
      "action": "Download bulk render output",
      "description": "Download the bulk render output as a ZIP file by job ID",
      "resource": "bulkRender"
    },
    {
      "name": "Create Document",
      "value": "createDocument",
      "action": "Create a document",
      "description": "Create a new document in a project",
      "resource": "document"
    },
    {
      "name": "Create Project",
      "value": "createProject",
      "action": "Create a project",
      "description": "Create a new project in the organization (always PUBLIC)",
      "resource": "document"
    },
    {
      "name": "Get Document",
      "value": "getDocument",
      "action": "Get a document",
      "description": "Get a document by ID including its latest content",
      "resource": "document"
    },
    {
      "name": "Get Document Variables",
      "value": "getVariables",
      "action": "Get document variables",
      "description": "Get the variable definitions for a document (useful for bulk rendering)",
      "resource": "document"
    },
    {
      "name": "List Documents",
      "value": "listDocuments",
      "action": "List documents",
      "description": "List all documents for the organization",
      "resource": "document"
    },
    {
      "name": "List Projects",
      "value": "listProjects",
      "action": "List projects",
      "description": "List all projects for the organization",
      "resource": "document"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a file",
      "description": "Delete a Document Tools file from storage",
      "resource": "file"
    },
    {
      "name": "Delete Temporary Image",
      "value": "deleteImage",
      "action": "Delete a temporary image",
      "description": "Delete a temporary rendering image before it expires. These images are for Render from JSON / Render from Markdown only (not for Document Tools).",
      "resource": "file"
    },
    {
      "name": "Download",
      "value": "download",
      "action": "Download a file",
      "description": "Download a Document Tools file by ID (input or output files)",
      "resource": "file"
    },
    {
      "name": "Get Details",
      "value": "get",
      "action": "Get file details",
      "description": "Get metadata for a file uploaded for Document Tools",
      "resource": "file"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List files",
      "description": "List all non-expired files uploaded for Document Tools",
      "resource": "file"
    },
    {
      "name": "List Temporary Images",
      "value": "listImages",
      "action": "List temporary images",
      "description": "List all non-expired temporary rendering images. These images are for Render from JSON / Render from Markdown only (not for Document Tools).",
      "resource": "file"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload a file for document tools",
      "description": "Upload a file (PDF, DOCX, ODT, PNG, JPEG, max 50MB) for use with Document Tools operations. Files expire after 60 minutes.",
      "resource": "file"
    },
    {
      "name": "Upload Temporary Image",
      "value": "uploadImage",
      "action": "Upload a temporary rendering image",
      "description": "Upload a temporary image (JPEG, PNG, WebP, max 25MB) for use in Render from JSON or Render from Markdown. Expires after 24h. Not for Document Tools — use Upload instead.",
      "resource": "file"
    },
    {
      "name": "Add Watermark",
      "value": "watermark",
      "action": "Add watermark",
      "description": "Add a text watermark to all or specific pages of a PDF",
      "resource": "documentTools"
    },
    {
      "name": "Compress",
      "value": "compress",
      "action": "Compress PDF",
      "description": "Compress a PDF to reduce file size",
      "resource": "documentTools"
    },
    {
      "name": "Convert to Image",
      "value": "toImage",
      "action": "Convert PDF to image",
      "description": "Convert PDF pages to images (PNG or JPEG)",
      "resource": "documentTools"
    },
    {
      "name": "Convert to PDF",
      "value": "convertToPdf",
      "action": "Convert DOCX or ODT to PDF",
      "description": "Convert a DOCX or ODT file to PDF (or other formats). The input format is detected automatically from the uploaded file.",
      "resource": "documentTools"
    },
    {
      "name": "Fill Form",
      "value": "fillForm",
      "action": "Fill PDF form",
      "description": "Fill form fields in a PDF with provided values",
      "resource": "documentTools"
    },
    {
      "name": "Get Form Fields",
      "value": "formFields",
      "action": "Get PDF form fields",
      "description": "Extract form field names, types, and current values from a PDF. Returns result directly.",
      "resource": "documentTools"
    },
    {
      "name": "Get Job Status",
      "value": "getJobStatus",
      "action": "Get tool job status",
      "description": "Get the current status of a Document Tools job",
      "resource": "documentTools"
    },
    {
      "name": "Get Metadata",
      "value": "metadata",
      "action": "Get PDF metadata",
      "description": "Extract metadata from a PDF (page count, title, author, etc.). Returns result directly.",
      "resource": "documentTools"
    },
    {
      "name": "Keep/Remove Pages",
      "value": "pages",
      "action": "Keep or remove PDF pages",
      "description": "Keep or remove specific pages from a PDF",
      "resource": "documentTools"
    },
    {
      "name": "List Jobs",
      "value": "listJobs",
      "action": "List tool jobs",
      "description": "List Document Tools jobs for the organization",
      "resource": "documentTools"
    },
    {
      "name": "Merge PDFs",
      "value": "merge",
      "action": "Merge PDF files",
      "description": "Merge 2–20 PDF files into a single PDF",
      "resource": "documentTools"
    },
    {
      "name": "Protect",
      "value": "protect",
      "action": "Protect PDF",
      "description": "Encrypt a PDF with password protection",
      "resource": "documentTools"
    },
    {
      "name": "Replace Placeholders",
      "value": "replacePlaceholders",
      "action": "Replace placeholders in DOCX/ODT",
      "description": "Replace placeholder tags in a DOCX or ODT document with provided values and convert to the desired output format",
      "resource": "documentTools"
    },
    {
      "name": "Rotate Pages",
      "value": "rotate",
      "action": "Rotate PDF pages",
      "description": "Rotate specific pages of a PDF by 90, 180, or 270 degrees",
      "resource": "documentTools"
    },
    {
      "name": "Split PDF",
      "value": "split",
      "action": "Split PDF",
      "description": "Split a PDF into multiple parts by page ranges",
      "resource": "documentTools"
    },
    {
      "name": "Unlock",
      "value": "unlock",
      "action": "Unlock PDF",
      "description": "Remove password protection from a PDF",
      "resource": "documentTools"
    }
  ]

npm_readme:
  <div align="center">
    <img src="https://autype.com/logo.png" width="160" alt="Autype" />
    <h1>n8n-nodes-autype</h1>
    <p>Official n8n community node for the Autype Developer API</p>
    <p> <a href="https://docs.n8n.io/integrations/community-nodes/"><img src="https://img.shields.io/badge/n8n-community%20node-34D399?style=flat-square&logo=n8n&logoColor=white" alt="n8n community node" /></a></p>

    <p>
      <a href="https://autype.com"><img src="https://img.shields.io/badge/autype.com-7C3AED?style=flat-square&logoColor=white" alt="Website" /></a>
      <a href="https://app.autype.com"><img src="https://img.shields.io/badge/Dashboard-6D28D9?style=flat-square&logoColor=white" alt="Dashboard" /></a>
      <a href="https://docs.autype.com"><img src="https://img.shields.io/badge/Docs-5B21B6?style=flat-square&logoColor=white" alt="Documentation" /></a>
    </p>

    <p>
      <img src="https://img.shields.io/badge/PDF%20Rendering-✓-10B981?style=flat-square" alt="PDF Rendering" />
      <img src="https://img.shields.io/badge/DOCX%20%2F%20ODT-✓-10B981?style=flat-square" alt="DOCX / ODT" />
      <img src="https://img.shields.io/badge/Bulk%20Render-✓-10B981?style=flat-square" alt="Bulk Render" />
      <img src="https://img.shields.io/badge/PDF%20Tools-✓-10B981?style=flat-square" alt="PDF Tools" />
      <img src="https://img.shields.io/badge/AI%20Agent%20Tool-✓-10B981?style=flat-square" alt="AI Agent Tool" />
    </p>
  </div>

  ---

  ## Overview

  **Autype** is an automation-first document generation and editing platform — providing the **most comprehensive document processing API on the market**. You define documents as structured JSON or Extended Markdown, and Autype renders them to pixel-perfect PDFs, DOCX, or ODT files. Documents support variables, bulk rendering, conditional content, headers and footers, citations, mathematical formulas, charts, and more.

  Beyond document generation, Autype offers **complete document lifecycle management**: editing, conversion, bulk generation, templating, PDF form filling, and advanced PDF manipulation — all through a single, unified API.

  This n8n community node gives you full access to the [Autype Developer API](https://docs.autype.com/api-reference/introduction) — with **40+ operations** across 8 resources — directly from your n8n workflows. No code required.

  **What Autype can do:**
  - **Document generation** — Render any document from JSON config or Markdown, programmatically on demand
  - **Bulk rendering** — Generate hundreds of personalized documents at once from spreadsheet or database data
  - **PDF manipulation** — Merge, split, rotate, watermark, compress, protect, unlock, and convert PDFs
  - **Document conversion** — Convert between PDF, DOCX, and ODT formats
  - **Templating** — Replace placeholders in DOCX/ODT templates with dynamic data
  - **PDF forms** — Extract form fields and fill them programmatically
  - **AI integration** — The node is usable as an n8n AI tool out of the box

  > **Variable syntax:** n8n uses `{{...}}` for its own expressions. Use **`${varName}`** in your Autype document JSON instead — the API accepts both and converts automatically.

  ---

  ## Installation

  ### Via n8n GUI _(recommended)_

  1. Go to **Settings → Community Nodes**
  2. Enter `n8n-nodes-autype`
  3. Click **Install** and restart n8n

  ### Via CLI

  ```bash
  cd ~/.n8n
  npm install n8n-nodes-autype
  ```

  ---

  ## Credentials

  1. Sign up at [autype.com](https://autype.com) and create an organization
  2. Go to **Settings → API Keys** and create a new key — it starts with `ak_...`
  3. In n8n, open **Credentials → Add Credential**, search for **Autype API**, and paste your key

  ---

  ## Resources & Operations

  ### 📄 Render

  Render documents to PDF, DOCX, or ODT from JSON or Markdown.

  | Operation | Description |
  |-----------|-------------|
  | Render from JSON | Submit structured document JSON — renders to PDF, DOCX, or ODT |
  | Render from Markdown | Submit Extended Markdown — supports page size, margins, styles, variables |
  | Render Persistent Document | Render a saved document by ID, with optional variable overrides |
  | Validate JSON / Markdown | Validate without rendering — no credits charged |
  | List Render Jobs | Paginated list of all render jobs |

  ### 📦 Bulk Render

  Generate hundreds of personalized documents in a single job.

  | Operation | Description |
  |-----------|-------------|
  | Bulk Render from JSON | Pass an array of variable sets — one document per item |
  | Bulk Render from File | Upload a CSV, Excel, or JSON file — one document per row |

  ### 🗂️ Document

  Manage persistent documents, projects, and temporary render images.

  | Operation | Description |
  |-----------|-------------|
  | List / Get / Create Documents | Manage documents in your workspace |
  | Get Document Variables | Extract variable definitions from a document |
  | List / Create Projects | Organize documents into projects |

  ### 📁 File

  Manage files used by PDF tool and conversion operations.

  | Operation | Description |
  |-----------|-------------|
  | Upload / Download / Get / List / Delete | Manage tool files (PDF, DOCX, ODT, images — expire after 60 min) |
  | Upload / List / Delete Temporary Image | Manage render images (expire after 24 h) |

  ### 🔧 PDF Tools

  Full PDF manipulation suite — all operations poll automatically and return binary output.

  | Operation | Description |
  |-----------|-------------|
  | Merge | Combine 2–20 PDFs into one |
  | Split | Split by page ranges — output is a ZIP |
  | Rotate Pages | Rotate specific pages by 90°, 180°, or 270° |
  | Keep / Remove Pages | Select or discard pages by spec (e.g. `1`, `2-5`, `3-`) |
  | Watermark | Add a text watermark — configurable size, opacity, rotation, color |
  | Get Metadata | Extract page count, title, author, creation date |
  | Protect / Unlock | Add or remove password protection |
  | Compress | Reduce file size — low, medium, or high |
  | PDF to Image | Convert pages to PNG or JPEG (configurable DPI) |
  | Get Form Fields | Extract field names, types, and current values |
  | Fill Form | Fill text, checkbox, dropdown, and radio fields |

  ### 🔄 Document Tools

  Convert and process DOCX and ODT files.

  | Operation | Description |
  |-----------|-------------|
  | Convert DOCX to PDF | Convert a DOCX file to PDF |
  | Convert ODT to PDF | Convert an ODT file to PDF |
  | Replace Placeholders | Replace `{{tags}}` in DOCX/ODT with text or data |
  | List Tool Jobs | Paginated list of all tool jobs |

  ---

  ## Key Features

  - **⏳ Wait for Completion** — Async jobs poll automatically (every 2 s, up to 5 min). Enable **Download Output** to receive the result as binary data directly on the node output.
  - **📎 Binary data** — File uploads and downloads integrate with n8n's native binary data system.
  - **🔔 Webhooks** — Pass an optional webhook URL to any async operation for push notifications on completion.
  - **🤖 AI agent tool** — `usableAsTool: true` is set, so n8n AI agents can invoke Autype operations autonomously.
  - **🔡 Variable syntax** — Use `${varName}` in document JSON to avoid conflicts with n8n's `{{...}}` expression engine.

  ---

  ## Local Development

  ```bash
  # Install dependencies
  npm install

  # Build (outputs to dist/)
  npm run build

  # Watch mode
  npm run build:watch

  # Lint
  npm run lint
  npm run lint:fix

  # Deploy to local n8n (build + instruction to restart)
  npm run deploy:local
  ```

  ---

  ## Compatibility

  - **n8n** v1.x or later
  - **Node.js** 18.17 or later

  ---

  ## Links

  - [Autype](https://autype.com)
  - [Documentation](https://docs.autype.com)
  - [n8n Integration Guide](https://docs.autype.com/automation/integrations/n8n/overview)
  - [API Reference](https://docs.autype.com/api-reference/introduction)
  - [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Autype Developer API to generate, manipulate, and manage documents (PDF, DOCX, ODT) programmatically.","capabilities":["Render documents from JSON or Extended Markdown","Bulk rendering from data arrays or file uploads","PDF manipulation (merge, split, rotate, watermark, compress, protect)","Document format conversion (PDF, DOCX, ODT)","Template variable replacement in DOCX/ODT","PDF form field extraction and filling","Document lifecycle management (create, list, get, delete)","Project organization for documents","File management (upload, download, temporary image handling)","JSON and Markdown validation"],"authentication":"API Key required (starts with 'ak_...')","commonUseCases":["Automated document generation from structured data","Personalized bulk document creation from spreadsheets","PDF form automation and data entry","Document format conversion workflows","Dynamic template population for reports or invoices"],"limitations":["Community node (may require n8n restart after installation)","Variable syntax requires `${varName}` in Autype JSON (n8n uses `{{...}}`)","Temporary images expire after 24 hours","Tool files expire after 60 minutes","Some operations may incur credit charges (validation does not)"],"relatedNodes":["n8n-nodes-base.binary","n8n-nodes-base.httpRequest","n8n-nodes-base.csv","n8n-nodes-base.json"]}


node_type: @contaazul/n8n-nodes-contaazul.contaAzul
package_name: @contaazul/n8n-nodes-contaazul
display_name: Conta Azul API
description: Allows making requests to the Conta Azul API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: contaazul-admin
author_github_url: https://github.com/ContaAzul/n8n-nodes-contaazul.git
npm_package_name: @contaazul/n8n-nodes-contaazul
npm_version: 0.3.25
community_fetched_at: 2026-07-14T14:40:33.667Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "getAllServices",
      "options": [
        {
          "name": "Create Person",
          "value": "createPerson"
        },
        {
          "name": "Create Product",
          "value": "createProduct"
        },
        {
          "name": "Create Sale",
          "value": "createSale"
        },
        {
          "name": "Create Service",
          "value": "createService"
        },
        {
          "name": "Search Categories",
          "value": "getCategories"
        },
        {
          "name": "Search Cost Centers",
          "value": "getCostCenters"
        },
        {
          "name": "Search Expenses By Filter",
          "value": "getExpensesByFilter"
        },
        {
          "name": "Search Financial Accounts",
          "value": "getFinancialAccounts"
        },
        {
          "name": "Search Installment By ID",
          "value": "getInstallmentById"
        },
        {
          "name": "Search Person By ID",
          "value": "getPersonById"
        },
        {
          "name": "Search Persons By Filter",
          "value": "getPersonsByFilter"
        },
        {
          "name": "Search Product By ID",
          "value": "getProductById"
        },
        {
          "name": "Search Products By Filter",
          "value": "getProductsByFilter"
        },
        {
          "name": "Search Revenues By Filter",
          "value": "getRevenuesByFilter"
        },
        {
          "name": "Search Sale By ID",
          "value": "getSaleById"
        },
        {
          "name": "Search Sales By Filter",
          "value": "getSalesByFilter"
        },
        {
          "name": "Search Service By ID",
          "value": "getServiceById"
        },
        {
          "name": "Search Services By Filter",
          "value": "getAllServices"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Person",
      "value": "createPerson"
    },
    {
      "name": "Create Product",
      "value": "createProduct"
    },
    {
      "name": "Create Sale",
      "value": "createSale"
    },
    {
      "name": "Create Service",
      "value": "createService"
    },
    {
      "name": "Search Categories",
      "value": "getCategories"
    },
    {
      "name": "Search Cost Centers",
      "value": "getCostCenters"
    },
    {
      "name": "Search Expenses By Filter",
      "value": "getExpensesByFilter"
    },
    {
      "name": "Search Financial Accounts",
      "value": "getFinancialAccounts"
    },
    {
      "name": "Search Installment By ID",
      "value": "getInstallmentById"
    },
    {
      "name": "Search Person By ID",
      "value": "getPersonById"
    },
    {
      "name": "Search Persons By Filter",
      "value": "getPersonsByFilter"
    },
    {
      "name": "Search Product By ID",
      "value": "getProductById"
    },
    {
      "name": "Search Products By Filter",
      "value": "getProductsByFilter"
    },
    {
      "name": "Search Revenues By Filter",
      "value": "getRevenuesByFilter"
    },
    {
      "name": "Search Sale By ID",
      "value": "getSaleById"
    },
    {
      "name": "Search Sales By Filter",
      "value": "getSalesByFilter"
    },
    {
      "name": "Search Service By ID",
      "value": "getServiceById"
    },
    {
      "name": "Search Services By Filter",
      "value": "getAllServices"
    }
  ]

npm_readme:
  # n8n-nodes-contaazul

  This is an n8n community node that allows integration with the Conta Azul API in your workflows.

  Conta Azul is a business management platform that offers solutions for financial control, sales, products, services, and customer management. This node allows you to automate operations such as sales searches, product creation, customer management, and financial queries.

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

  [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

  ### Services

  - **Search service by filter**: Lists services with text search filters and pagination
  - **Search service by ID**: Gets details of a specific service
  - **Create service**: Creates a new service

  ### Sales

  - **Search sale by filter**: Lists sales with text search filters and pagination
  - **Search sale by ID**: Gets details of a specific sale
  - **Create sale**: Creates a new sale with items, customer, and payment method

  ### People - Customers/Suppliers

  - **Search people by filter**: Lists customer/supplier people with search filters
  - **Search person by ID**: Gets details of a specific person
  - **Create person**: Creates a new customer/supplier person

  ### Products

  - **Search products by filter**: Lists products with search filters
  - **Search product by id** : Get details of a specific product
  - **Create product**: Creates a new product

  ### Financial

  - **Search financial accounts**: Lists all financial accounts
  - **Search revenues by filter**: Lists revenues with filters
  - **Search expenses by filter**: Lists expenses with filters
  - **Search installment by ID**: Gets details of a specific installment
  - **Search categories**: Lists all available categories
  - **Search cost centers**: Lists all cost centers

  ## Credentials

  To use this node, you need a Conta Azul account and configure OAuth2 credentials.

  ### Prerequisites

  1. Have an active Conta Azul account
  2. Access the Conta Azul developer panel
  3. Create an application to get the Client ID and Client Secret

  ### Credential Configuration

  1. In n8n, go to **Settings** > **Credentials**
  2. Click **Add Credential**
  3. Select **Conta Azul OAuth2 API**
  4. Fill in the fields:
     - **Client ID**: Your Conta Azul Client ID
     - **Client Secret**: Your Conta Azul Client Secret
     - **Scope**: `openid profile aws.cognito.signin.user.admin` (default)
     - **Auth URL**: `https://auth.contaazul.com/oauth2/authorize` (default)
     - **Token URL**: `https://auth.contaazul.com/oauth2/token` (default)
  5. Click **Save** and authorize the application

  ## Compatibility

  - **Minimum n8n version**: 1.0.0
  - **Tested versions**: 1.0.0, 1.1.0, 1.2.0
  - **Node.js**: >=20.15

  ## Usage

  ### Example: Search Recent Sales

  1. Add the **Conta Azul** node to your workflow
  2. Configure credentials
  3. Select the **Search sale by filter** operation
  4. Configure search parameters (optional)
  5. Execute the workflow

  ### Example: Create a New Sale

  1. Add the **Conta Azul** node to your workflow
  2. Configure credentials
  3. Select the **Create sale** operation
  4. Fill in required data:
     - Customer ID
     - Payment method
     - Sale items
  5. Execute the workflow

  ### Example: Sync Products

  1. Use the **Conta Azul** node with **Search products by filter** operation
  2. Connect with other nodes to process data
  3. Use webhooks for automatic synchronization

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Conta Azul API Documentation](https://developers.contaazul.com/guide)
  - [Conta Azul Developer Portal](https://developers-portal.contaazul.com)
  - [Try n8n](https://docs.n8n.io/try-it-out/)

  ## Version History

  ### v0.3.2

  - Fixed n8n-workflow dependency configuration
  - Removed postinstall script
  - Removed resolutions and overrides
  - Updated to latest n8n-workflow version

  ### v0.3.1

  - Initial implementation of the node
  - Support for basic operations: search services, sales, people, products, categories, cost centers, and financial
  - Integration with Conta Azul OAuth2

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of financial and business operations by connecting to the Conta Azul API for managing sales, customers, products, and financial data.","capabilities":["Search services by filter or ID","Create new services","Search sales by filter or ID","Create new sales with items, customer, and payment method","Search customers/suppliers by filter or ID","Create new customer/supplier records","Search products by filter or ID","Create new products","Search financial accounts","Search revenues and expenses by filter"],"authentication":"OAuth2","commonUseCases":["Automating sales data retrieval and creation","Managing customer and supplier records","Synchronizing product catalogs","Tracking financial accounts, revenues, and expenses","Automating financial reporting workflows"],"limitations":["Requires an active Conta Azul account and developer panel access","Requires manual configuration of OAuth2 credentials (Client ID and Secret)","Minimum n8n version requirement is 1.0.0"],"relatedNodes":["HTTP Request","Webhook","Function Item"]}


node_type: @openhab/n8n-nodes-openhab.openHab
package_name: @openhab/n8n-nodes-openhab
display_name: openHAB
category: Community
development_style: declarative
version: 1
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: openhabfoundation
author_github_url: https://github.com/openhab/openhab-n8n.git
npm_package_name: @openhab/n8n-nodes-openhab
npm_version: 0.4.7
community_fetched_at: 2026-07-14T14:40:33.667Z
ai_summary_generated_at: 2026-03-25 22:51:43
description:
  Interact with openHAB through its REST API, including remote access via myopenHAB.org. Inline docs explain typical flows (send commands, query states, trigger rules, etc.).

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "item",
      "options": [
        {
          "name": "Item",
          "value": "item",
          "description": "Work with items: list, read state, send command, or update state. Great for toggling lights, reading sensors, or writing virtual switches."
        },
        {
          "name": "Thing",
          "value": "thing",
          "description": "Inspect things and their status."
        },
        {
          "name": "Rule",
          "value": "rule",
          "description": "List or trigger automation rules."
        },
        {
          "name": "System",
          "value": "system",
          "description": "Check system info for quick health checks."
        }
      ],
      "displayName": "Resource"
    }
  ]

npm_readme:
  # n8n openHAB Community Node

  <img align="right" width="220" src="./nodes/openHAB/openhab.svg" type="image/svg+xml"/>

  [![GitHub Actions Build Status](https://github.com/openhab/openhab-n8n/actions/workflows/ci-build.yml/badge.svg?branch=main)](https://github.com/openhab/openhab-n8n/actions/workflows/ci-build.yml)
  [![MIT](https://img.shields.io/badge/license-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

  Custom n8n node for interacting with the openHAB REST API, with optional myopenHAB cloud access.

  ## Features

  - Send commands or update state for items (lights, sensors, virtual switches, etc.).
  - Read item state, metadata, and list/filter items by tags.
  - Inspect things and their status.
  - List, trigger, enable/disable rules.
  - Fetch system info for quick health checks.
  - Trigger workflows from openHAB events.
  - Works against local openHAB or remotely through `myopenhab.org`.

  ## Requirements

  - openHAB with REST API enabled (default on openHAB 3+).
  - For local: openHAB API token (Settings → API Security → Create Token).
  - For remote via myopenHAB: myopenHAB account email + password. Optionally add an openHAB API token for admin-level endpoints.
  - n8n 1.0+ with custom nodes enabled.

  ## Installation

  1. Install from npm in n8n:
     - **n8n UI**: Settings -> Community Nodes -> Install and enter `@openhab/n8n-nodes-openhab`
     - **CLI (in your n8n deployment)**: `npm install @openhab/n8n-nodes-openhab`
  2. Restart n8n so it discovers the new node.

  ### Local development install

  1. Build the node:
     ```bash
     npm install
     npm run build
     ```
  2. Point n8n custom extensions to this project path with `N8N_CUSTOM_EXTENSIONS` (or copy `dist` into your custom nodes directory).
  3. Restart n8n.

  ## Usage

  ### openHAB node

  1. Add the **openHAB** node to a workflow.
  2. Set credentials:
     - **Local**: Base URL (e.g., `http://localhost:8080`) + API token.
     - **Cloud (myopenHAB)**: Choose “myopenHAB Account” in credentials and enter your myopenHAB login. If needed, set optional **openHAB API Token (optional)** to send `X-OPENHAB-TOKEN`.
  3. Choose a resource:
     - **Item**: list/get/state/command/update/metadata.
     - **Thing**: list/get/status.
     - **Rule**: list/run/enable/disable.
     - **System**: system info.
  4. Execute the node; outputs are JSON objects ready for downstream n8n steps.

  #### Usage examples

  1. Read a light state:
     - Resource: `Item`
     - Operation: `Get State`
     - Item Name: `LivingRoomLight`
  2. Turn a switch on:
     - Resource: `Item`
     - Operation: `Send Command`
     - Item Name: `KitchenSwitch`
     - Command: `ON`
  3. Run a rule:
     - Resource: `Rule`
     - Operation: `Run`
     - Rule UID: `evening_scene`

  ### openHAB Trigger node

  1. Add the **openHAB Trigger** node to a workflow to listen for openHAB events and start workflows when they arrive.
  2. Set credentials:
     - **Local**: Base URL (e.g., `http://localhost:8080`) + API token.
     - **Cloud (myopenHAB)**: Choose “myopenHAB Account” in credentials and enter your myopenHAB login and set **openHAB API Token (optional)** to send `X-OPENHAB-TOKEN`.
  3. Filter events by:
     - **Topic**: Comma-separated topic filters (supports `*` wildcard or RegEx and exclusions with `!`), e.g. `openhab/items/*/command,!openhab/items/MyItem/*` to listen for command to all Items except `MyItem`.
     - **Type**: Comma-separated event types to include, e.g. `ItemCommandEvent,ItemStateChangedEvent,ItemStateUpdatedEvent`.
     - **Source**: Comma-separated event sources to exclude, e.g. `org.openhab.ui=>org.openhab.core.io.rest,`. The node’s own source is always excluded to prevent loops.

  The trigger emits incoming events with the following properties:

  - `type`: event type
  - `topic`: event topic
  - `payload`: parsed JSON payload (if possible)
  - `source`: event source (if present)
  - `rawPayload`: raw payload string
  - `receivedAt`: ISO timestamp

  Example event:

  ```json
  {
     "type": "ItemCommandEvent", 
     "topic": "openhab/items/Kitchen_Light/command",
     "payload": {
        "type": "OnOff", 
        "value": "ON"
     },
     "source": "org.openhab.ui=>org.openhab.core.io.rest",
     "rawPayload": "{\"type\":\"OnOff\",\"value\":\"ON\"}",
     "receivedAt": "2026-04-20T19:12:18.056Z"
  }
  ```

  ### Notes

  - Authentication is applied through the credential type (used by `httpRequestWithAuthentication`), so each request automatically uses the selected auth mode.
  - In myopenHAB cloud mode, you can add an optional openHAB API token for endpoints that require elevated permissions.
  - Self-signed certificates are supported only for local openHAB HTTPS, not for myopenHAB cloud authentication.
  - When sending commands, use values your item accepts (e.g., `ON`, `OFF`, `22`, `50%`, `UP`, `DOWN`).

  ## Development

  - Lint: `npm run lint`
  - Test: `npm run test`
  - Build: `npm run build`
  - TypeScript config targets Node 18+.

  ## License

  MIT. See [LICENSE](LICENSE).

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation workflows to interact with openHAB systems via its REST API, supporting both local installations and remote access through myopenHAB cloud services.","capabilities":["Send commands to update item states (lights, sensors, virtual switches)","Read item state, metadata, and list/filter items by tags","Inspect things and their current status","List, trigger, enable, and disable automation rules","Fetch system information for health checks","Support for local openHAB instances and myopenHAB cloud","Authentication via API tokens or myopenHAB account credentials"],"authentication":"API token (local) or myopenHAB account credentials (cloud); optional openHAB API token for elevated permissions","commonUseCases":["Automate smart home device control (turn on/off lights, adjust thermostats)","Monitor sensor states and trigger actions based on thresholds","Execute automation rules remotely from n8n workflows","Perform system health checks on openHAB instances"],"limitations":["Self-signed certificates are only supported for local openHAB HTTPS, not for myopenHAB cloud","Requires openHAB with REST API enabled (default on openHAB 3+)","Requires n8n 1.0+ with custom nodes enabled"],"relatedNodes":["httpRequest","if","delay","trigger"]}


node_type: @oneai-eu/n8n-nodes-oneai.oneAi
package_name: @oneai-eu/n8n-nodes-oneai
display_name: OneAI
description: Interact with the OneAI API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: oneai-dev
author_github_url: https://github.com/oneai-eu/n8n-nodes-oneai.git
npm_package_name: @oneai-eu/n8n-nodes-oneai
npm_version: 0.1.8
community_fetched_at: 2026-07-14T14:40:33.668Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "project",
      "options": [
        {
          "name": "AI",
          "value": "ai"
        },
        {
          "name": "Artifact",
          "value": "artifact"
        },
        {
          "name": "Chat",
          "value": "chat"
        },
        {
          "name": "Miscellaneous",
          "value": "miscellaneous"
        },
        {
          "name": "Project",
          "value": "project"
        },
        {
          "name": "Reference",
          "value": "reference"
        },
        {
          "name": "Space",
          "value": "space"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an artifact",
          "description": "Create an artifact from a file"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an artifact",
          "description": "Delete an artifact from a space"
        },
        {
          "name": "Export PDF",
          "value": "exportPdf",
          "action": "Export artifact as PDF",
          "description": "Export an artifact as a PDF"
        },
        {
          "name": "Get Markdown",
          "value": "getMarkdown",
          "action": "Get artifact markdown",
          "description": "Get the markdown content of an artifact"
        },
        {
          "name": "List All",
          "value": "listAll",
          "action": "List all artifacts",
          "description": "List all artifacts with optional filtering"
        },
        {
          "name": "List by Space",
          "value": "listBySpace",
          "action": "List artifacts in space",
          "description": "List artifacts in a specific space"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "artifact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "checkAuth",
      "options": [
        {
          "name": "Check Authentication",
          "value": "checkAuth",
          "action": "Check authenticated user",
          "description": "Check the authenticated user and return their details"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "miscellaneous"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a chat",
          "description": "Create a new chat"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a chat",
          "description": "Delete a chat"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a chat",
          "description": "Get chat history"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all chats",
          "description": "List chats with optional filtering"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a chat",
          "description": "Update chat details (rename or move)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chat"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createResponse",
      "options": [
        {
          "name": "Create Response",
          "value": "createResponse",
          "action": "Create a response",
          "description": "Send a message to an AI model and get a response"
        },
        {
          "name": "List Available AI Models",
          "value": "listModels",
          "action": "List available AI models",
          "description": "List all available AI models"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a project",
          "description": "Create a new project"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a project",
          "description": "Delete a project"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a project",
          "description": "Get a project by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all projects",
          "description": "List all projects"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a project",
          "description": "Update a project"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listSpaces",
      "options": [
        {
          "name": "List Files",
          "value": "listFiles",
          "action": "List reference files",
          "description": "List files accessible for attaching as references"
        },
        {
          "name": "List Spaces",
          "value": "listSpaces",
          "action": "List reference spaces",
          "description": "List spaces accessible for attaching as references"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "reference"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Add Team",
          "value": "addTeam",
          "action": "Add team to space",
          "description": "Add a team to a space"
        },
        {
          "name": "Add User",
          "value": "addUser",
          "action": "Add user to space",
          "description": "Add a user to a space"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a space",
          "description": "Create a new space"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a space",
          "description": "Delete a space"
        },
        {
          "name": "Delete File",
          "value": "deleteFile",
          "action": "Delete file from space",
          "description": "Delete a file from a space"
        },
        {
          "name": "Download File",
          "value": "downloadFile",
          "action": "Download file from space",
          "description": "Download a file from a space"
        },
        {
          "name": "Embed Files",
          "value": "embedFiles",
          "action": "Embed files in space",
          "description": "Queue files/folders for embedding"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a space",
          "description": "Get a space by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all spaces",
          "description": "List all spaces"
        },
        {
          "name": "List Files",
          "value": "listFiles",
          "action": "List files in space",
          "description": "List files in a space"
        },
        {
          "name": "List Teams",
          "value": "listTeams",
          "action": "List teams in space",
          "description": "List teams assigned to a space"
        },
        {
          "name": "List Users",
          "value": "listUsers",
          "action": "List users in space",
          "description": "List users assigned to a space"
        },
        {
          "name": "Remove Team",
          "value": "removeTeam",
          "action": "Remove team from space",
          "description": "Remove a team from a space"
        },
        {
          "name": "Remove User",
          "value": "removeUser",
          "action": "Remove user from space",
          "description": "Remove a user from a space"
        },
        {
          "name": "Sync",
          "value": "sync",
          "action": "Sync a space",
          "description": "Synchronize a linked space"
        },
        {
          "name": "Transfer File",
          "value": "transferFile",
          "action": "Transfer file between spaces",
          "description": "Move or copy a file between spaces"
        },
        {
          "name": "Upload File",
          "value": "uploadFile",
          "action": "Upload file to space",
          "description": "Upload a file to a space"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "space"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create an artifact",
      "description": "Create an artifact from a file",
      "resource": "artifact"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an artifact",
      "description": "Delete an artifact from a space",
      "resource": "artifact"
    },
    {
      "name": "Export PDF",
      "value": "exportPdf",
      "action": "Export artifact as PDF",
      "description": "Export an artifact as a PDF",
      "resource": "artifact"
    },
    {
      "name": "Get Markdown",
      "value": "getMarkdown",
      "action": "Get artifact markdown",
      "description": "Get the markdown content of an artifact",
      "resource": "artifact"
    },
    {
      "name": "List All",
      "value": "listAll",
      "action": "List all artifacts",
      "description": "List all artifacts with optional filtering",
      "resource": "artifact"
    },
    {
      "name": "List by Space",
      "value": "listBySpace",
      "action": "List artifacts in space",
      "description": "List artifacts in a specific space",
      "resource": "artifact"
    },
    {
      "name": "Check Authentication",
      "value": "checkAuth",
      "action": "Check authenticated user",
      "description": "Check the authenticated user and return their details",
      "resource": "miscellaneous"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a chat",
      "description": "Create a new chat",
      "resource": "chat"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a chat",
      "description": "Delete a chat",
      "resource": "chat"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a chat",
      "description": "Get chat history",
      "resource": "chat"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all chats",
      "description": "List chats with optional filtering",
      "resource": "chat"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a chat",
      "description": "Update chat details (rename or move)",
      "resource": "chat"
    },
    {
      "name": "Create Response",
      "value": "createResponse",
      "action": "Create a response",
      "description": "Send a message to an AI model and get a response",
      "resource": "ai"
    },
    {
      "name": "List Available AI Models",
      "value": "listModels",
      "action": "List available AI models",
      "description": "List all available AI models",
      "resource": "ai"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a project",
      "description": "Create a new project",
      "resource": "project"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a project",
      "description": "Delete a project",
      "resource": "project"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a project",
      "description": "Get a project by ID",
      "resource": "project"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all projects",
      "description": "List all projects",
      "resource": "project"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a project",
      "description": "Update a project",
      "resource": "project"
    },
    {
      "name": "List Files",
      "value": "listFiles",
      "action": "List reference files",
      "description": "List files accessible for attaching as references",
      "resource": "reference"
    },
    {
      "name": "List Spaces",
      "value": "listSpaces",
      "action": "List reference spaces",
      "description": "List spaces accessible for attaching as references",
      "resource": "reference"
    },
    {
      "name": "Add Team",
      "value": "addTeam",
      "action": "Add team to space",
      "description": "Add a team to a space",
      "resource": "space"
    },
    {
      "name": "Add User",
      "value": "addUser",
      "action": "Add user to space",
      "description": "Add a user to a space",
      "resource": "space"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a space",
      "description": "Create a new space",
      "resource": "space"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a space",
      "description": "Delete a space",
      "resource": "space"
    },
    {
      "name": "Delete File",
      "value": "deleteFile",
      "action": "Delete file from space",
      "description": "Delete a file from a space",
      "resource": "space"
    },
    {
      "name": "Download File",
      "value": "downloadFile",
      "action": "Download file from space",
      "description": "Download a file from a space",
      "resource": "space"
    },
    {
      "name": "Embed Files",
      "value": "embedFiles",
      "action": "Embed files in space",
      "description": "Queue files/folders for embedding",
      "resource": "space"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a space",
      "description": "Get a space by ID",
      "resource": "space"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all spaces",
      "description": "List all spaces",
      "resource": "space"
    },
    {
      "name": "List Files",
      "value": "listFiles",
      "action": "List files in space",
      "description": "List files in a space",
      "resource": "space"
    },
    {
      "name": "List Teams",
      "value": "listTeams",
      "action": "List teams in space",
      "description": "List teams assigned to a space",
      "resource": "space"
    },
    {
      "name": "List Users",
      "value": "listUsers",
      "action": "List users in space",
      "description": "List users assigned to a space",
      "resource": "space"
    },
    {
      "name": "Remove Team",
      "value": "removeTeam",
      "action": "Remove team from space",
      "description": "Remove a team from a space",
      "resource": "space"
    },
    {
      "name": "Remove User",
      "value": "removeUser",
      "action": "Remove user from space",
      "description": "Remove a user from a space",
      "resource": "space"
    },
    {
      "name": "Sync",
      "value": "sync",
      "action": "Sync a space",
      "description": "Synchronize a linked space",
      "resource": "space"
    },
    {
      "name": "Transfer File",
      "value": "transferFile",
      "action": "Transfer file between spaces",
      "description": "Move or copy a file between spaces",
      "resource": "space"
    },
    {
      "name": "Upload File",
      "value": "uploadFile",
      "action": "Upload file to space",
      "description": "Upload a file to a space",
      "resource": "space"
    }
  ]

npm_readme:
  # n8n-nodes-oneai

  A community node for [n8n](https://n8n.io/) that integrates with the [OneAI](https://oneai.eu) platform — an AI hub providing access to multiple AI models and collaboration features.

  ## Installation

  ### In n8n (Community Node)

  1. Go to **Settings > Community Nodes**
  2. Select **Install a community node**
  3. Enter `@oneai-eu/n8n-nodes-oneai`
  4. Agree to the risks and click **Install**

  ### Manual / Development

  ```bash
  # Clone the repository
  git clone https://github.com/oneai-eu/n8n-nodes-oneai
  cd n8n-nodes-oneai

  # Install dependencies
  pnpm install

  # Build
  pnpm build
  ```

  ## Authentication

  This node uses **Bearer Token** authentication via an API key.

  To configure credentials in n8n:

  | Field       | Description                                          |
  | ----------- | ---------------------------------------------------- |
  | **OneAI URL** | Base URL of your OneAI instance (e.g. `https://hub.oneai.eu`) |
  | **API Key**   | Your API key, generated from your OneAI hub settings          |

  ## Supported Resources & Operations

  ### AI (2 operations)

  Send messages to AI models and manage model availability.

  | Operation                | Description                                        |
  | ------------------------ | -------------------------------------------------- |
  | Create Response          | Send a message to an AI model and get a response   |
  | List Available AI Models | List all available AI models                       |

  **Input modes:**
  - **Messages** — user-friendly role/content fields
  - **JSON** — full control for complex conversations, images, etc.

  **Advanced options:** Temperature, Reasoning Effort, Reasoning Summary, Tools (function calling), Chat Association (route through a OneAI chat for context)

  ### Space (17 operations)

  Manage workspaces with support for multiple storage providers (Local, OneDrive, SharePoint, Google Drive, GitHub).

  | Operation       | Description                              |
  | --------------- | ---------------------------------------- |
  | Add Team        | Add a team to a space                    |
  | Add User        | Add a user to a space                    |
  | Create          | Create a new space                       |
  | Delete          | Delete a space                           |
  | Delete File     | Delete a file from a space               |
  | Download File   | Download a file from a space             |
  | Embed Files     | Queue files/folders for embedding        |
  | Get             | Get a space by ID                        |
  | List            | List all spaces                          |
  | List Files      | List files in a space                    |
  | List Teams      | List teams assigned to a space           |
  | List Users      | List users assigned to a space           |
  | Remove Team     | Remove a team from a space               |
  | Remove User     | Remove a user from a space               |
  | Sync            | Synchronize a linked space               |
  | Transfer File   | Move or copy a file between spaces       |
  | Upload File     | Upload a file to a space                 |

  ### Chat (6 operations)

  Create and manage AI chat conversations.

  | Operation   | Description                                        |
  | ----------- | -------------------------------------------------- |
  | Create      | Create a new chat                                  |
  | Delete      | Delete a chat                                      |
  | Get         | Get chat history                                   |
  | List        | List chats with optional filtering                 |
  | Update      | Update chat details (rename, move, or set branch)  |

  ### Artifact (6 operations)

  Manage documents and files within spaces.

  | Operation      | Description                              |
  | -------------- | ---------------------------------------- |
  | Create         | Create an artifact from a file           |
  | Delete         | Delete an artifact from a space          |
  | Export PDF     | Export an artifact as a PDF              |
  | Get Markdown   | Get the markdown content of an artifact  |
  | List All       | List all artifacts with optional filtering |
  | List by Space  | List artifacts in a specific space       |

  ### Project (5 operations)

  Organize work into projects.

  | Operation | Description            |
  | --------- | ---------------------- |
  | Create    | Create a new project   |
  | Delete    | Delete a project       |
  | Get       | Get a project by ID    |
  | List      | List all projects      |
  | Update    | Update a project       |

  ### Reference (2 operations)

  Access references for attaching to conversations and artifacts.

  | Operation    | Description                                         |
  | ------------ | --------------------------------------------------- |
  | List Files   | List files accessible for attaching as references   |
  | List Spaces  | List spaces accessible for attaching as references  |

  ## Features

  - **Multi-model AI access** — query multiple AI models through a single node
  - **Streaming support** — handles Server-Sent Events for real-time AI responses
  - **Automatic pagination** — list operations transparently handle paginated API responses
  - **Cloud storage integration** — connect spaces to OneDrive, SharePoint, Google Drive, or GitHub
  - **Function calling** — pass tool definitions to AI models via JSON
  - **File management** — upload, download, transfer, and embed files across spaces

  ## Development

  ```bash
  # Build
  pnpm build

  # Watch mode (recompile on changes)
  pnpm dev

  # Lint & format
  pnpm lint
  pnpm format
  ```

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"A community n8n node that integrates with the OneAI platform to interact with multiple AI models, manage workspaces, and handle file operations.","capabilities":["Send messages to AI models and receive responses","List available AI models","Manage workspaces (spaces) with multiple storage providers","Upload, download, and transfer files between spaces","Create and manage AI chat conversations","Export artifacts as PDF or retrieve markdown content","Organize work into projects","Attach files and spaces as references to conversations","Support for Server-Sent Events (streaming)","Function calling (tools) for AI models"],"authentication":"API Key (Bearer Token) via OneAI URL and API Key fields","commonUseCases":["Integrating multiple AI models into a single workflow","Managing collaborative workspaces with cloud storage (OneDrive, SharePoint, Google Drive, GitHub)","Processing and organizing documents through AI-generated artifacts","Building chat assistants with context from external files"],"limitations":["Community node (requires manual installation via n8n settings)","Requires a OneAI hub instance and API key"],"relatedNodes":["n8n HTTP Request","n8n Code","n8n Function Item"]}


node_type: n8n-nodes-campaignkit.campaignKit
package_name: n8n-nodes-campaignkit
display_name: CampaignKit
description: Email validation and verification with CampaignKit
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: campaignkit
author_github_url: https://github.com/campaignkit-cc/
npm_package_name: n8n-nodes-campaignkit
npm_version: 1.0.3
community_fetched_at: 2026-07-14T14:40:33.669Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "validateEmail",
      "options": [
        {
          "name": "Validate Email",
          "value": "validateEmail",
          "action": "Validate a single email address",
          "description": "Validate a single email address"
        },
        {
          "name": "Validate Batch",
          "value": "validateBatch",
          "action": "Validate multiple email addresses",
          "description": "Validate multiple email addresses"
        },
        {
          "name": "Get Job Status",
          "value": "getJobStatus",
          "action": "Get validation job status",
          "description": "Get the status of a validation job"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Validate Email",
      "value": "validateEmail",
      "action": "Validate a single email address",
      "description": "Validate a single email address"
    },
    {
      "name": "Validate Batch",
      "value": "validateBatch",
      "action": "Validate multiple email addresses",
      "description": "Validate multiple email addresses"
    },
    {
      "name": "Get Job Status",
      "value": "getJobStatus",
      "action": "Get validation job status",
      "description": "Get the status of a validation job"
    }
  ]

npm_readme:
  # n8n-nodes-campaignkit

  This is an n8n community node for [CampaignKit Email Validation](https://campaignkit.cc). It lets you validate email addresses and receive notifications when validation jobs complete in your n8n workflows.

  [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.

  ### Community Node Installation

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

  ### Manual Installation

  If you're self-hosting n8n, you can install the node manually:

  ```bash
  npm install n8n-nodes-campaignkit
  ```

  For Docker-based installations, add the package to your n8n Docker image or install it in your running container.

  ## Operations

  ### CampaignKit Node

  The main CampaignKit node supports the following operations:

  #### Validate Email
  Validates a single email address and returns detailed verification results.

  **Input:**
  - `email` (string, required): The email address to validate

  **Output:**
  ```json
  {
    "email": "user@example.com",
    "is_valid": true,
    "is_risky": false,
    "is_invalid": false,
    "is_disposable": false,
    "is_role_email": false,
    "is_catchall": false,
    "is_blacklisted": false,
    "is_free_email": true,
    "is_mx_found": true,
    "is_smtp_valid": true,
    "score": 10,
    "classifier": "valid",
    "domain": "example.com",
    "mx_record": "mail.example.com",
    "smtp_provider": "Google",
    "free_email_provider": "Gmail",
    "did_you_mean": ""
  }
  ```

  #### Validate Batch
  Validates multiple email addresses as a batch job.

  **Input:**
  - `emails` (string, required): Email addresses to validate (one per line)
  - `label` (string, optional): Label for the validation job

  **Output:**
  ```json
  {
    "job_id": 12345,
    "email_count": 100,
    "status": "pending",
    "label": "My Email List",
    "created_at": "2025-01-15T10:00:00Z"
  }
  ```

  #### Get Job Status
  Retrieves the status and results of a validation job.

  **Input:**
  - `jobId` (number, required): The ID of the validation job

  **Output:**
  ```json
  {
    "job_id": 12345,
    "account_id": 456,
    "label": "My Email List",
    "state": "done",
    "email_count": 100,
    "valid_count": 85,
    "invalid_count": 10,
    "risky_count": 5,
    "deliverable_count": 85,
    "undeliverable_count": 15,
    "credits_used": 100,
    "progress": 100,
    "created_at": "2025-01-15T10:00:00Z",
    "started_at": "2025-01-15T10:00:05Z",
    "finished_at": "2025-01-15T10:05:00Z"
  }
  ```

  ### CampaignKit Trigger

  The CampaignKit Trigger node responds to events from CampaignKit.

  #### Job Completed
  Triggers when a validation job is completed.

  **Output:**
  ```json
  {
    "event": "validation.job.completed",
    "job_id": 12345,
    "account_id": 456,
    "label": "My Email List",
    "state": "done",
    "email_count": 100,
    "deliverable_count": 85,
    "undeliverable_count": 15,
    "risky_count": 5,
    "credits_used": 100,
    "created_at": "2025-01-15T10:00:00Z",
    "finished_at": "2025-01-15T10:05:00Z"
  }
  ```

  ## Credentials

  To use this node, you need a CampaignKit API key.

  ### Getting Your API Key

  1. Sign up for a [CampaignKit account](https://app.campaignkit.cc)
  2. Navigate to **Settings** > **API Keys**
  3. Create a new API key or copy an existing one

  ### Configuring Credentials in n8n

  1. In your n8n workflow, add a CampaignKit node
  2. Click on **Credentials** > **Create New**
  3. Select **CampaignKit API**
  4. Enter your API key
  5. (Optional) Modify the Base URL if using a custom instance
  6. Click **Save**

  The credential will be automatically tested by making a request to `/v1/account/me`.

  ## Example Workflows

  ### Example 1: Validate Single Email

  ```
  Manual Trigger → CampaignKit (Validate Email) → Filter (is_valid = true) → Send Email
  ```

  1. Trigger workflow manually or via webhook
  2. Use **CampaignKit** node with **Validate Email** operation
  3. Filter results to only include valid emails
  4. Send confirmation email for valid addresses

  ### Example 2: Batch Validation with Notification

  ```
  Schedule Trigger → HTTP Request (Get Emails) → CampaignKit (Validate Batch) → Wait → CampaignKit (Get Job Status) → Send Notification
  ```

  1. Schedule workflow to run daily
  2. Fetch email list from your database/API
  3. Start batch validation with CampaignKit
  4. Wait for job to complete (or use webhook trigger)
  5. Get final job results
  6. Send summary notification

  ### Example 3: Webhook-Based Batch Validation

  ```
  CampaignKit Trigger (Job Completed) → Filter (deliverable_count > 0) → HTTP Request (Update Database) → Slack Notification
  ```

  1. **CampaignKit Trigger** listens for job completion
  2. Filter to only process jobs with deliverable emails
  3. Update your database with results
  4. Send Slack notification with summary

  ## Understanding Email Validation Scores

  CampaignKit assigns each email a score from 0-10:

  - **10**: Valid - All checks passed, email is deliverable
  - **9**: Valid but unverified - Syntax and MX checks passed, but SMTP verification failed
  - **2**: Risky - Email exists but may be a spam trap or temporary
  - **0**: Invalid - Email will bounce

  ### Key Output Fields

  - `is_valid`: Email is deliverable (score 9-10)
  - `is_invalid`: Email will bounce (score 0)
  - `is_risky`: Email is suspicious (score 2)
  - `is_disposable`: Temporary/disposable email service
  - `is_role_email`: Generic role address (info@, support@, etc.)
  - `is_catchall`: Domain accepts all email addresses
  - `is_blacklisted`: Email is on CampaignKit's blacklist
  - `did_you_mean`: Suggested correction for typos

  ## API Rate Limits

  CampaignKit API has the following limits:

  - **Authenticated requests**: Based on your account plan
  - **Batch validation**: Uses credits based on email count
  - **Webhook delivery**: Up to 5 retry attempts with exponential backoff

  Monitor your credit usage via the `/v1/account/billing/balance` endpoint or in your CampaignKit dashboard.

  ## Troubleshooting

  ### Credential Test Fails

  - Verify your API key is correct
  - Check that your CampaignKit account is active
  - Ensure the Base URL is correct (default: `https://api.campaignkit.cc`)

  ### Webhook Not Receiving Events

  - Ensure your n8n instance is accessible from the internet
  - Check that the workflow is activated
  - Verify webhook was created successfully in CampaignKit dashboard
  - Check n8n execution logs for incoming webhook requests

  ### Batch Job Stuck in "Pending"

  - Large batches may take time to process
  - Use the **Get Job Status** operation to monitor progress
  - Jobs process at approximately 100-500 emails/minute depending on validation type

  ### "Insufficient Credits" Error

  - Check your account credit balance
  - Purchase additional credits in your CampaignKit dashboard
  - Contact support@campaignkit.cc for billing assistance

  ## Development

  ### Building the Node

  ```bash
  npm install
  npm run build
  ```

  ### Local Testing

  1. Build the node
  2. Link it to your n8n installation:
     ```bash
     npm link
     cd ~/.n8n/nodes
     npm link n8n-nodes-campaignkit
     ```
  3. Restart n8n

  ### Project Structure

  ```
  n8n-nodes-campaignkit/
  ├── credentials/
  │   └── CampaignKitApi.credentials.ts
  ├── nodes/
  │   └── CampaignKit/
  │       ├── CampaignKit.node.ts
  │       └── CampaignKitTrigger.node.ts
  ├── types/
  │   └── CampaignKit.types.ts
  ├── package.json
  ├── tsconfig.json
  └── README.md
  ```

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [CampaignKit API Documentation](https://campaignkit.cc/docs)
  - [CampaignKit Dashboard](https://app.campaignkit.cc)
  - [CampaignKit Support](mailto:support@campaignkit.cc)

  ## Compatibility

  - n8n version: 0.220.0 or higher
  - Node.js version: 18.x or higher

  ## License

  [MIT](LICENSE)

  ## Version History

  ### 0.1.0 (Initial Release)
  - ✅ Validate Email operation
  - ✅ Validate Batch operation
  - ✅ Get Job Status operation
  - ✅ Job Completed webhook trigger
  - ✅ API Key authentication
  - ✅ Comprehensive error handling

  ## Support

  For issues related to:
  - **This n8n node**: Open an issue on [GitHub](https://github.com/yourusername/CampaignKit/issues)
  - **CampaignKit API**: Contact support@campaignkit.cc
  - **n8n platform**: Visit [n8n community forum](https://community.n8n.io)

ai_documentation_summary:
  {"purpose":"Validates email addresses individually or in batches using CampaignKit's API and provides detailed verification results including deliverability scores and risk indicators.","capabilities":["Validate single email addresses","Validate multiple email addresses in batch jobs","Retrieve status and results of validation jobs","Provide detailed email verification metrics (MX, SMTP, blacklist, disposable, role-based)","Offer email typo suggestions","Support webhook triggers for job completion events"],"authentication":"API key required","commonUseCases":["Email list cleaning before sending campaigns","Automated email verification workflows with batch processing","Integrating with CRM or database updates upon validation completion","Filtering invalid or risky emails before outreach"],"limitations":["Batch validation requires credits based on email count","Webhook delivery limited to 5 retry attempts with exponential backoff","Rate limits vary by account plan"],"relatedNodes":["n8n-nodes-base.manualTrigger","n8n-nodes-base.httpRequest","n8n-nodes-base.filter","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.webhook"]}


node_type: n8n-nodes-campaignkit.campaignKitTrigger
package_name: n8n-nodes-campaignkit
display_name: CampaignKit Trigger
description: Trigger workflows when CampaignKit events occur
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: campaignkit
author_github_url: https://github.com/campaignkit-cc/
npm_package_name: n8n-nodes-campaignkit
npm_version: 1.0.3
community_fetched_at: 2026-07-14T14:40:33.670Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-campaignkit

  This is an n8n community node for [CampaignKit Email Validation](https://campaignkit.cc). It lets you validate email addresses and receive notifications when validation jobs complete in your n8n workflows.

  [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.

  ### Community Node Installation

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

  ### Manual Installation

  If you're self-hosting n8n, you can install the node manually:

  ```bash
  npm install n8n-nodes-campaignkit
  ```

  For Docker-based installations, add the package to your n8n Docker image or install it in your running container.

  ## Operations

  ### CampaignKit Node

  The main CampaignKit node supports the following operations:

  #### Validate Email
  Validates a single email address and returns detailed verification results.

  **Input:**
  - `email` (string, required): The email address to validate

  **Output:**
  ```json
  {
    "email": "user@example.com",
    "is_valid": true,
    "is_risky": false,
    "is_invalid": false,
    "is_disposable": false,
    "is_role_email": false,
    "is_catchall": false,
    "is_blacklisted": false,
    "is_free_email": true,
    "is_mx_found": true,
    "is_smtp_valid": true,
    "score": 10,
    "classifier": "valid",
    "domain": "example.com",
    "mx_record": "mail.example.com",
    "smtp_provider": "Google",
    "free_email_provider": "Gmail",
    "did_you_mean": ""
  }
  ```

  #### Validate Batch
  Validates multiple email addresses as a batch job.

  **Input:**
  - `emails` (string, required): Email addresses to validate (one per line)
  - `label` (string, optional): Label for the validation job

  **Output:**
  ```json
  {
    "job_id": 12345,
    "email_count": 100,
    "status": "pending",
    "label": "My Email List",
    "created_at": "2025-01-15T10:00:00Z"
  }
  ```

  #### Get Job Status
  Retrieves the status and results of a validation job.

  **Input:**
  - `jobId` (number, required): The ID of the validation job

  **Output:**
  ```json
  {
    "job_id": 12345,
    "account_id": 456,
    "label": "My Email List",
    "state": "done",
    "email_count": 100,
    "valid_count": 85,
    "invalid_count": 10,
    "risky_count": 5,
    "deliverable_count": 85,
    "undeliverable_count": 15,
    "credits_used": 100,
    "progress": 100,
    "created_at": "2025-01-15T10:00:00Z",
    "started_at": "2025-01-15T10:00:05Z",
    "finished_at": "2025-01-15T10:05:00Z"
  }
  ```

  ### CampaignKit Trigger

  The CampaignKit Trigger node responds to events from CampaignKit.

  #### Job Completed
  Triggers when a validation job is completed.

  **Output:**
  ```json
  {
    "event": "validation.job.completed",
    "job_id": 12345,
    "account_id": 456,
    "label": "My Email List",
    "state": "done",
    "email_count": 100,
    "deliverable_count": 85,
    "undeliverable_count": 15,
    "risky_count": 5,
    "credits_used": 100,
    "created_at": "2025-01-15T10:00:00Z",
    "finished_at": "2025-01-15T10:05:00Z"
  }
  ```

  ## Credentials

  To use this node, you need a CampaignKit API key.

  ### Getting Your API Key

  1. Sign up for a [CampaignKit account](https://app.campaignkit.cc)
  2. Navigate to **Settings** > **API Keys**
  3. Create a new API key or copy an existing one

  ### Configuring Credentials in n8n

  1. In your n8n workflow, add a CampaignKit node
  2. Click on **Credentials** > **Create New**
  3. Select **CampaignKit API**
  4. Enter your API key
  5. (Optional) Modify the Base URL if using a custom instance
  6. Click **Save**

  The credential will be automatically tested by making a request to `/v1/account/me`.

  ## Example Workflows

  ### Example 1: Validate Single Email

  ```
  Manual Trigger → CampaignKit (Validate Email) → Filter (is_valid = true) → Send Email
  ```

  1. Trigger workflow manually or via webhook
  2. Use **CampaignKit** node with **Validate Email** operation
  3. Filter results to only include valid emails
  4. Send confirmation email for valid addresses

  ### Example 2: Batch Validation with Notification

  ```
  Schedule Trigger → HTTP Request (Get Emails) → CampaignKit (Validate Batch) → Wait → CampaignKit (Get Job Status) → Send Notification
  ```

  1. Schedule workflow to run daily
  2. Fetch email list from your database/API
  3. Start batch validation with CampaignKit
  4. Wait for job to complete (or use webhook trigger)
  5. Get final job results
  6. Send summary notification

  ### Example 3: Webhook-Based Batch Validation

  ```
  CampaignKit Trigger (Job Completed) → Filter (deliverable_count > 0) → HTTP Request (Update Database) → Slack Notification
  ```

  1. **CampaignKit Trigger** listens for job completion
  2. Filter to only process jobs with deliverable emails
  3. Update your database with results
  4. Send Slack notification with summary

  ## Understanding Email Validation Scores

  CampaignKit assigns each email a score from 0-10:

  - **10**: Valid - All checks passed, email is deliverable
  - **9**: Valid but unverified - Syntax and MX checks passed, but SMTP verification failed
  - **2**: Risky - Email exists but may be a spam trap or temporary
  - **0**: Invalid - Email will bounce

  ### Key Output Fields

  - `is_valid`: Email is deliverable (score 9-10)
  - `is_invalid`: Email will bounce (score 0)
  - `is_risky`: Email is suspicious (score 2)
  - `is_disposable`: Temporary/disposable email service
  - `is_role_email`: Generic role address (info@, support@, etc.)
  - `is_catchall`: Domain accepts all email addresses
  - `is_blacklisted`: Email is on CampaignKit's blacklist
  - `did_you_mean`: Suggested correction for typos

  ## API Rate Limits

  CampaignKit API has the following limits:

  - **Authenticated requests**: Based on your account plan
  - **Batch validation**: Uses credits based on email count
  - **Webhook delivery**: Up to 5 retry attempts with exponential backoff

  Monitor your credit usage via the `/v1/account/billing/balance` endpoint or in your CampaignKit dashboard.

  ## Troubleshooting

  ### Credential Test Fails

  - Verify your API key is correct
  - Check that your CampaignKit account is active
  - Ensure the Base URL is correct (default: `https://api.campaignkit.cc`)

  ### Webhook Not Receiving Events

  - Ensure your n8n instance is accessible from the internet
  - Check that the workflow is activated
  - Verify webhook was created successfully in CampaignKit dashboard
  - Check n8n execution logs for incoming webhook requests

  ### Batch Job Stuck in "Pending"

  - Large batches may take time to process
  - Use the **Get Job Status** operation to monitor progress
  - Jobs process at approximately 100-500 emails/minute depending on validation type

  ### "Insufficient Credits" Error

  - Check your account credit balance
  - Purchase additional credits in your CampaignKit dashboard
  - Contact support@campaignkit.cc for billing assistance

  ## Development

  ### Building the Node

  ```bash
  npm install
  npm run build
  ```

  ### Local Testing

  1. Build the node
  2. Link it to your n8n installation:
     ```bash
     npm link
     cd ~/.n8n/nodes
     npm link n8n-nodes-campaignkit
     ```
  3. Restart n8n

  ### Project Structure

  ```
  n8n-nodes-campaignkit/
  ├── credentials/
  │   └── CampaignKitApi.credentials.ts
  ├── nodes/
  │   └── CampaignKit/
  │       ├── CampaignKit.node.ts
  │       └── CampaignKitTrigger.node.ts
  ├── types/
  │   └── CampaignKit.types.ts
  ├── package.json
  ├── tsconfig.json
  └── README.md
  ```

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [CampaignKit API Documentation](https://campaignkit.cc/docs)
  - [CampaignKit Dashboard](https://app.campaignkit.cc)
  - [CampaignKit Support](mailto:support@campaignkit.cc)

  ## Compatibility

  - n8n version: 0.220.0 or higher
  - Node.js version: 18.x or higher

  ## License

  [MIT](LICENSE)

  ## Version History

  ### 0.1.0 (Initial Release)
  - ✅ Validate Email operation
  - ✅ Validate Batch operation
  - ✅ Get Job Status operation
  - ✅ Job Completed webhook trigger
  - ✅ API Key authentication
  - ✅ Comprehensive error handling

  ## Support

  For issues related to:
  - **This n8n node**: Open an issue on [GitHub](https://github.com/yourusername/CampaignKit/issues)
  - **CampaignKit API**: Contact support@campaignkit.cc
  - **n8n platform**: Visit [n8n community forum](https://community.n8n.io)

ai_documentation_summary:
  {"purpose":"A community n8n node that validates email addresses individually or in batches and triggers workflows when CampaignKit validation jobs complete.","capabilities":["Validate single email addresses with detailed verification results","Run batch email validation jobs","Retrieve status and results of validation jobs","Trigger workflows on job completion events","Provide email scoring (0-10) and risk classification","Detect disposable, role-based, catchall, and blacklisted emails","Suggest email corrections for typos"],"authentication":"API key required (CampaignKit API key)","commonUseCases":["Email list cleaning before sending marketing campaigns","Automated bounce management for email lists","Real-time email validation via webhook triggers","Scheduled daily validation of contact databases"],"limitations":["Requires separate CampaignKit account and API key","Batch validation uses credits based on email count","Limited to CampaignKit's API rate limits and plan tiers","Webhook delivery has up to 5 retry attempts with exponential backoff"],"relatedNodes":["n8n-nodes-campaignkit.campaignKit","n8n-nodes-campaignkit.campaignKitTrigger","n8n-nodes-standard.manualTrigger","n8n-nodes-standard.httpRequest","n8n-nodes-standard.filter"]}


node_type: n8n-nodes-midiacode.midiacode
package_name: n8n-nodes-midiacode
display_name: Midiacode
description: Consume Midiacode API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: lgavinho
author_github_url: https://github.com/midiacode-labs/
npm_package_name: n8n-nodes-midiacode
npm_version: 0.1.0
community_fetched_at: 2026-07-14T14:40:33.671Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "content",
      "options": [
        {
          "name": "Content",
          "value": "content"
        },
        {
          "name": "Push Notification",
          "value": "pushNotification"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create content",
          "routing": {
            "request": {
              "url": "/public/content/",
              "method": "POST"
            }
          },
          "description": "Create a new content item"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get content",
          "routing": {
            "request": {
              "url": "=/public/content/{{$parameter.contentId}}/",
              "method": "GET"
            }
          },
          "description": "Get a specific content item"
        },
        {
          "name": "Get Link",
          "value": "getLink",
          "action": "Get content link",
          "routing": {
            "request": {
              "url": "=/public/content/{{$parameter.contentId}}/link/",
              "method": "GET"
            }
          },
          "description": "Get content link data"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish content",
          "routing": {
            "request": {
              "url": "/public/content/publish/",
              "method": "POST"
            }
          },
          "description": "Publish content"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search contents",
          "routing": {
            "request": {
              "url": "=/public/workspace/{{$parameter.workspaceId}}/content",
              "method": "GET"
            }
          },
          "description": "Search contents of a workspace"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update content",
          "routing": {
            "request": {
              "url": "=/public/content/{{$parameter.contentId}}/",
              "method": "PATCH"
            }
          },
          "description": "Update an existing content item"
        },
        {
          "name": "Update Link",
          "value": "updateLink",
          "action": "Update content link",
          "routing": {
            "request": {
              "url": "=/public/content/{{$parameter.contentId}}/link/",
              "method": "PATCH"
            }
          },
          "description": "Update content link data"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "content"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "action": "Send push notification",
          "routing": {
            "request": {
              "url": "/public/push-notification/",
              "method": "POST",
              "baseURL": "https://account.midiacode.pt"
            }
          },
          "description": "Send a push notification"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pushNotification"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create content",
      "routing": {
        "request": {
          "url": "/public/content/",
          "method": "POST"
        }
      },
      "description": "Create a new content item",
      "resource": "content"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get content",
      "routing": {
        "request": {
          "url": "=/public/content/{{$parameter.contentId}}/",
          "method": "GET"
        }
      },
      "description": "Get a specific content item",
      "resource": "content"
    },
    {
      "name": "Get Link",
      "value": "getLink",
      "action": "Get content link",
      "routing": {
        "request": {
          "url": "=/public/content/{{$parameter.contentId}}/link/",
          "method": "GET"
        }
      },
      "description": "Get content link data",
      "resource": "content"
    },
    {
      "name": "Publish",
      "value": "publish",
      "action": "Publish content",
      "routing": {
        "request": {
          "url": "/public/content/publish/",
          "method": "POST"
        }
      },
      "description": "Publish content",
      "resource": "content"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search contents",
      "routing": {
        "request": {
          "url": "=/public/workspace/{{$parameter.workspaceId}}/content",
          "method": "GET"
        }
      },
      "description": "Search contents of a workspace",
      "resource": "content"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update content",
      "routing": {
        "request": {
          "url": "=/public/content/{{$parameter.contentId}}/",
          "method": "PATCH"
        }
      },
      "description": "Update an existing content item",
      "resource": "content"
    },
    {
      "name": "Update Link",
      "value": "updateLink",
      "action": "Update content link",
      "routing": {
        "request": {
          "url": "=/public/content/{{$parameter.contentId}}/link/",
          "method": "PATCH"
        }
      },
      "description": "Update content link data",
      "resource": "content"
    },
    {
      "name": "Send",
      "value": "send",
      "action": "Send push notification",
      "routing": {
        "request": {
          "url": "/public/push-notification/",
          "method": "POST",
          "baseURL": "https://account.midiacode.pt"
        }
      },
      "description": "Send a push notification",
      "resource": "pushNotification"
    }
  ]

npm_readme:
  # n8n-nodes-midiacode

  This is an n8n community node. It lets you consume the Midiacode API in your n8n workflows.

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

  ## Installation

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

  ## Credentials

  You need to set up the `midiacodeApi` credential.

  1.  Obtain your API Key from the Midiacode platform.
  2.  In n8n, create a new credential for **Midiacode API**.
  3.  Enter your API Key.

  ## Operations

  ### Content

  *   **Search**: Search contents of a workspace.
  *   **Create**: Create a new content item.
  *   **Get**: Get a specific content item.
  *   **Update**: Update an existing content item.
  *   **Get Link**: Get content link data.
  *   **Update Link**: Update content link data.
  *   **Publish**: Publish content.

  ## Parameters

  ### Common Parameters

  *   **Workspace ID**: The ID of the workspace.
  *   **Content ID**: The ID of the content.

  ### Create Content

  *   **Title**: The title of the content.
  *   **Content Type Slug**: The type of content (e.g., `url`, `video`, `pdf`).
  *   **Priority**: Priority of the content (default: `1`).
  *   **GS1 QR Code Enabled**: Enable GS1 QR Code (default: `false`).
  *   **GS1 AI**: GS1 Application Identifier (default: `01`).
  *   **Product EAN13**: EAN13 product code.
  *   **Product Variant**: Product variant.

  ### Update Link

  *   **URL**: The URL for the content link.
  *   **Title**: Title for the link.
  *   **Description**: Description for the link.
  *   **Collectible**: Whether the content is collectible (default: `true`).
  *   **Embedded on App**: Whether the content is embedded on the mobile app (default: `false`).
  *   **Private**: Whether the content is private (default: `false`).
  *   **Recommended**: Whether the content is recommended (default: `false`).
  *   **Shareable**: Whether the content is shareable (default: `true`).
  *   **Skip Content Cover**: Skip content cover on web (default: `false`).
  *   **Version**: Content version (default: `1.0`).

  ### Publish Content

  *   **Status**: Status to publish (`Draft`, `Published`, `Archived`).
  *   **Notification**: Send notification (default: `true`).
  *   **Change Message**: Message describing the change.

  ## Compatibility

  Compatible with n8n@1.0.0 or later.

  ## Testing

  This package includes comprehensive unit tests to ensure all operations work correctly.

  ### Running Tests

  To run the test suite:

  ```bash
  npm test
  ```

  To run tests with coverage:

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

  ## Resources

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

ai_documentation_summary:
  {"purpose":"This n8n community node enables users to interact with the Midiacode API for managing digital content, including searching, creating, updating, and publishing content items.","capabilities":["Search contents within a workspace","Create new content items with various types (URL, video, PDF)","Retrieve specific content items","Update existing content items","Retrieve content link data","Update content link data","Publish content with configurable status and notifications","Support for GS1 QR Code and EAN13 product codes","Configure content visibility and sharing settings"],"authentication":"API Key required","commonUseCases":["Automating content management for digital catalogs","Integrating product information with e-commerce workflows","Managing digital asset links and metadata","Automating content publishing and status updates"],"limitations":["Community node (not official n8n node)","Requires manual API key setup in n8n credentials"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.webhook"]}


node_type: n8n-nodes-taskpano.taskPano
package_name: n8n-nodes-taskpano
display_name: TaskPano
description: Consume TaskPano API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: akinsoft
author_github_url: https://github.com/akinsoftdev/
npm_package_name: n8n-nodes-taskpano
npm_version: 0.2.1
community_fetched_at: 2026-07-14T14:40:33.675Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "task",
      "options": [
        {
          "name": "Project",
          "value": "project",
          "description": "Work with projects"
        },
        {
          "name": "Task",
          "value": "task",
          "description": "Work with tasks"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getParticipants",
      "options": [
        {
          "name": "Get Custom Fields",
          "value": "getCustomFields",
          "action": "Get custom fields of a project",
          "description": "Get all custom fields of a project"
        },
        {
          "name": "Get Participants",
          "value": "getParticipants",
          "action": "Get participants of a project",
          "description": "Get all participants of a project"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Add Assignee",
          "value": "addAssignee",
          "action": "Add an assignee",
          "description": "Add an assignee to a task"
        },
        {
          "name": "Add Checklist Item",
          "value": "addChecklistItem",
          "action": "Add a checklist item",
          "description": "Add a checklist item to a task"
        },
        {
          "name": "Add Comment",
          "value": "addComment",
          "action": "Add a comment",
          "description": "Add a comment to a task"
        },
        {
          "name": "Add Subscription",
          "value": "addSubscription",
          "action": "Add a subscription",
          "description": "Add a subscription to a task"
        },
        {
          "name": "Add Tag",
          "value": "addTag",
          "action": "Add a tag",
          "description": "Add a tag to a task"
        },
        {
          "name": "Create Subtask",
          "value": "createSubtask",
          "action": "Create a subtask",
          "description": "Create a new subtask"
        },
        {
          "name": "Create Task",
          "value": "create",
          "action": "Create a task",
          "description": "Create a new task"
        },
        {
          "name": "Delete Attachment",
          "value": "deleteAttachment",
          "action": "Delete an attachment",
          "description": "Delete an attachment from a task"
        },
        {
          "name": "Download Attachment",
          "value": "downloadAttachment",
          "action": "Download an attachment",
          "description": "Download an attachment from a task"
        },
        {
          "name": "Get Attachments",
          "value": "getAttachments",
          "action": "Get attachments",
          "description": "Get all attachments of a task"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get tasks",
          "description": "Get multiple tasks with filters"
        },
        {
          "name": "Get Task",
          "value": "get",
          "action": "Get a task",
          "description": "Get a task by ID"
        },
        {
          "name": "Move Task",
          "value": "move",
          "action": "Move a task",
          "description": "Move a task to a different list"
        },
        {
          "name": "Remove Assignee",
          "value": "removeAssignee",
          "action": "Remove an assignee",
          "description": "Remove an assignee from a task"
        },
        {
          "name": "Remove Subscription",
          "value": "removeSubscription",
          "action": "Remove a subscription",
          "description": "Remove a subscription from a task"
        },
        {
          "name": "Remove Tag",
          "value": "removeTag",
          "action": "Remove a tag",
          "description": "Remove a tag from a task"
        },
        {
          "name": "Update Checklist Item",
          "value": "updateChecklistItem",
          "action": "Update a checklist item",
          "description": "Update a checklist item subject"
        },
        {
          "name": "Update Checklist Item Status",
          "value": "updateChecklistItemStatus",
          "action": "Update a checklist item status",
          "description": "Update a checklist item status (completed/uncompleted)"
        },
        {
          "name": "Update Custom Field",
          "value": "updateCustomField",
          "action": "Update a custom field",
          "description": "Update a custom field value on a task"
        },
        {
          "name": "Update Task",
          "value": "update",
          "action": "Update a task",
          "description": "Update a task"
        },
        {
          "name": "Upload Attachment",
          "value": "uploadAttachment",
          "action": "Upload an attachment",
          "description": "Upload a file attachment to a task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Custom Fields",
      "value": "getCustomFields",
      "action": "Get custom fields of a project",
      "description": "Get all custom fields of a project",
      "resource": "project"
    },
    {
      "name": "Get Participants",
      "value": "getParticipants",
      "action": "Get participants of a project",
      "description": "Get all participants of a project",
      "resource": "project"
    },
    {
      "name": "Add Assignee",
      "value": "addAssignee",
      "action": "Add an assignee",
      "description": "Add an assignee to a task",
      "resource": "task"
    },
    {
      "name": "Add Checklist Item",
      "value": "addChecklistItem",
      "action": "Add a checklist item",
      "description": "Add a checklist item to a task",
      "resource": "task"
    },
    {
      "name": "Add Comment",
      "value": "addComment",
      "action": "Add a comment",
      "description": "Add a comment to a task",
      "resource": "task"
    },
    {
      "name": "Add Subscription",
      "value": "addSubscription",
      "action": "Add a subscription",
      "description": "Add a subscription to a task",
      "resource": "task"
    },
    {
      "name": "Add Tag",
      "value": "addTag",
      "action": "Add a tag",
      "description": "Add a tag to a task",
      "resource": "task"
    },
    {
      "name": "Create Subtask",
      "value": "createSubtask",
      "action": "Create a subtask",
      "description": "Create a new subtask",
      "resource": "task"
    },
    {
      "name": "Create Task",
      "value": "create",
      "action": "Create a task",
      "description": "Create a new task",
      "resource": "task"
    },
    {
      "name": "Delete Attachment",
      "value": "deleteAttachment",
      "action": "Delete an attachment",
      "description": "Delete an attachment from a task",
      "resource": "task"
    },
    {
      "name": "Download Attachment",
      "value": "downloadAttachment",
      "action": "Download an attachment",
      "description": "Download an attachment from a task",
      "resource": "task"
    },
    {
      "name": "Get Attachments",
      "value": "getAttachments",
      "action": "Get attachments",
      "description": "Get all attachments of a task",
      "resource": "task"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get tasks",
      "description": "Get multiple tasks with filters",
      "resource": "task"
    },
    {
      "name": "Get Task",
      "value": "get",
      "action": "Get a task",
      "description": "Get a task by ID",
      "resource": "task"
    },
    {
      "name": "Move Task",
      "value": "move",
      "action": "Move a task",
      "description": "Move a task to a different list",
      "resource": "task"
    },
    {
      "name": "Remove Assignee",
      "value": "removeAssignee",
      "action": "Remove an assignee",
      "description": "Remove an assignee from a task",
      "resource": "task"
    },
    {
      "name": "Remove Subscription",
      "value": "removeSubscription",
      "action": "Remove a subscription",
      "description": "Remove a subscription from a task",
      "resource": "task"
    },
    {
      "name": "Remove Tag",
      "value": "removeTag",
      "action": "Remove a tag",
      "description": "Remove a tag from a task",
      "resource": "task"
    },
    {
      "name": "Update Checklist Item",
      "value": "updateChecklistItem",
      "action": "Update a checklist item",
      "description": "Update a checklist item subject",
      "resource": "task"
    },
    {
      "name": "Update Checklist Item Status",
      "value": "updateChecklistItemStatus",
      "action": "Update a checklist item status",
      "description": "Update a checklist item status (completed/uncompleted)",
      "resource": "task"
    },
    {
      "name": "Update Custom Field",
      "value": "updateCustomField",
      "action": "Update a custom field",
      "description": "Update a custom field value on a task",
      "resource": "task"
    },
    {
      "name": "Update Task",
      "value": "update",
      "action": "Update a task",
      "description": "Update a task",
      "resource": "task"
    },
    {
      "name": "Upload Attachment",
      "value": "uploadAttachment",
      "action": "Upload an attachment",
      "description": "Upload a file attachment to a task",
      "resource": "task"
    }
  ]

npm_readme:
  # n8n-nodes-taskpano

  This is the official n8n node for [TaskPano](https://taskpano.com), developed and maintained by [AKINSOFT](https://akinsoft.com.tr). It lets you use TaskPano in your n8n workflows.

  TaskPano is a project management and task tracking application that helps teams organize, track, and manage their work efficiently.

  [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

  ### Task

  - **Add Assignee** - Add an assignee to a task
  - **Add Checklist Item** - Add a checklist item to a task
  - **Add Comment** - Add a comment to a task
  - **Add Subscription** - Add a subscription to a task
  - **Add Tag** - Add a tag to a task
  - **Create Subtask** - Create a new subtask
  - **Create Task** - Create a new task
  - **Delete Attachment** - Delete an attachment from a task
  - **Download Attachment** - Download an attachment from a task
  - **Get Attachments** - Get all attachments of a task
  - **Get Many** - Get multiple tasks with filters
  - **Get Task** - Get a task by ID
  - **Move Task** - Move a task to a different list
  - **Remove Assignee** - Remove an assignee from a task
  - **Remove Subscription** - Remove a subscription from a task
  - **Remove Tag** - Remove a tag from a task
  - **Update Checklist Item** - Update a checklist item subject
  - **Update Checklist Item Status** - Update a checklist item status
  - **Update Custom Field** - Update a custom field value on a task
  - **Update Task** - Update a task
  - **Upload Attachment** - Upload a file attachment to a task

  ### Project

  - **Get Custom Fields** - Get all custom fields of a project
  - **Get Participants** - Get all participants of a project

  ## Credentials

  To use this node, you need to authenticate with TaskPano using an API Key.

  ### Getting your API Key

  1. Log in to your TaskPano account at [app.taskpano.com](https://app.taskpano.com)
  2. Navigate to your account settings
  3. Generate a new API token
  4. Copy the token and use it in your n8n credentials

  ### Setting up credentials in n8n

  1. In n8n, go to **Credentials** > **New**
  2. Search for "TaskPano API"
  3. Enter your API Key
  4. Save the credentials

  ## Compatibility

  This node has been tested with n8n version 1.0 and above.

  **Minimum n8n version:** 1.0.0

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [TaskPano API documentation](https://app.taskpano.com/api/docs)
  - [TaskPano website](https://taskpano.com)

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n node enables automation of TaskPano project management tasks, allowing users to create, update, delete, and manage tasks, subtasks, attachments, and project details within n8n workflows.","capabilities":["Create and update tasks","Create and update subtasks","Add/remove assignees from tasks","Add/remove subscriptions from tasks","Add/remove tags from tasks","Add/update checklist items","Add comments to tasks","Upload and download file attachments","Move tasks between lists","Get tasks with filters"],"authentication":"API Key required","commonUseCases":["Automating task assignment and tracking","Integrating TaskPano project data with other automation tools","Synchronizing task updates across platforms","Managing project attachments and comments programmatically"],"limitations":["Requires manual API key generation in TaskPano account settings","Minimum n8n version requirement is 1.0.0"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.code"]}


node_type: n8n-nodes-oneform.oneformTrigger
package_name: n8n-nodes-oneform
display_name: Oneform Trigger
description: Triggers the workflow when a oneform form is submitted
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: damaso.jm
author_github_url: https://github.com/oneformhq/
npm_package_name: n8n-nodes-oneform
npm_version: 1.0.2
community_fetched_at: 2026-07-14T14:40:33.684Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n trigger for oneform submissions

  This is an n8n community node that lets you trigger n8n workflows when your **oneform** form receives a new submission.

  ## Installation

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

  ## Usage

  1. Generate an API key at: [https://app.oneform.one/settings/api_keys](https://app.oneform.one/settings/api_keys)
  2. Add the **oneform Trigger** to your workflow.
  3. Create a credential for the **oneform Trigger** using your API key.
  4. Choose the form you want to use to trigger workflows when a submission is received.


  ## Developers

  For instructions on testing this node on a local n8n instance for development purposes, see https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally/

ai_documentation_summary:
  {"purpose":"Triggers an n8n workflow automatically when a new submission is received from a Oneform form.","capabilities":["Monitors Oneform forms for new submissions","Activates workflows upon form submission events","Configurable form selection for triggering"],"authentication":"API key required","commonUseCases":["Automate responses to form submissions","Integrate form data into other workflows or services","Send notifications or emails based on form input"],"limitations":[],"relatedNodes":["n8n-nodes-oneform.oneformWebhook","n8n-nodes-oneform.oneformForm","n8n-nodes-oneform.oneformSubmit"]}


node_type: n8n-nodes-biron.biron
package_name: n8n-nodes-biron
display_name: Biron
description: Interact with Biron API, for reverse ETL and more
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: pharoz
author_github_url: https://github.com/Biron-BI/n8n-nodes.git
npm_package_name: n8n-nodes-biron
npm_version: 0.2.2
community_fetched_at: 2026-07-14T14:40:33.685Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "nexusQL",
      "options": [
        {
          "name": "Nexus",
          "value": "nexusQL",
          "displayName": "Nexus"
        },
        {
          "name": "Datalake",
          "value": "datalake",
          "displayName": "Datalake"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "queryNexusQL",
      "options": [
        {
          "name": "Query Nexus",
          "value": "queryNexusQL",
          "action": "Execute a nexusql query",
          "description": "Extract qualified data from Biron using NexusQL",
          "displayName": "Query Nexus"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "nexusQL"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "datalakeQuery",
      "options": [
        {
          "name": "Query",
          "value": "datalakeQuery",
          "action": "Execute a clickhouse query",
          "description": "Execute a Clickhouse query on your Biron-built datalake",
          "displayName": "Execute Clickhouse query"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "datalake"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Query Nexus",
      "value": "queryNexusQL",
      "action": "Execute a nexusql query",
      "description": "Extract qualified data from Biron using NexusQL",
      "displayName": "Query Nexus",
      "resource": "nexusQL"
    },
    {
      "name": "Query",
      "value": "datalakeQuery",
      "action": "Execute a clickhouse query",
      "description": "Execute a Clickhouse query on your Biron-built datalake",
      "displayName": "Execute Clickhouse query",
      "resource": "datalake"
    }
  ]

npm_readme:
  # n8n-nodes-biron

  This is an n8n community node. It lets you interact with the Biron platform in your n8n workflows.

  [Biron Data](https://birondata.com) is an all-in-one data platform.

  [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)  
  [Version history](#version-history) 

  ## Installation

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

  ## Operations

  * Extract metrics and dimensions data using Biron's query language, NexusQL. 
    * The easiest way to write it is to extract it from your existing charts
    * For advanced use cases, [here is the documentation](https://docs.biron-analytics.com/guides/nexus-ql-guide/)
  * Extract data from your data sources extracted by Biron, or from the data warehouse prepared by Biron, by querying the Clickhouse databases
    * [Query documentation](https://docs.biron-analytics.com/guides/connect-datawarehouse/)
    * The parameter node is communicated by Biron upon request

  ## Credentials

  Authenticate with the combo username / password provided when you created either a PAT or an API Key from Biron application. As a reminder:
  * A PAT (Personal Access Token) makes actions on behalf of yourself
  * An API Key makes action on behalf of your organization

  ## Compatibility

  Tested against n8n version 1.123.5

  ## Resources

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

  ## Version history

ai_documentation_summary:
  {"purpose":"A community node that enables interaction with the Biron data platform for reverse ETL, including querying metrics, dimensions, and Clickhouse databases.","capabilities":["Extract metrics and dimensions data using NexusQL","Query data from Biron's Clickhouse databases","Access data sources extracted by Biron","Retrieve data from Biron's prepared data warehouse"],"authentication":"Username and password (PAT or API Key)","commonUseCases":["Reverse ETL workflows","Data extraction from Biron platform","Querying analytics metrics and dimensions"],"limitations":["Community node (not official n8n node)","Requires Biron account with PAT or API Key"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.code"]}


node_type: n8n-nodes-sellerassistant.sellerAssistant
package_name: n8n-nodes-sellerassistant
display_name: Seller Assistant
description: Interact with Seller Assistant API for Amazon product data
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: sellerassistant
author_github_url: https://github.com/sellerassistant/n8n-nodes-seller-assistant.git
npm_package_name: n8n-nodes-sellerassistant
npm_version: 0.1.3
community_fetched_at: 2026-07-14T14:40:33.686Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "product",
      "options": [
        {
          "name": "Converter",
          "value": "converter"
        },
        {
          "name": "FBA Inbound Shipment",
          "value": "fba"
        },
        {
          "name": "Keepa",
          "value": "keepa"
        },
        {
          "name": "Listings Item",
          "value": "listing"
        },
        {
          "name": "Product",
          "value": "product"
        },
        {
          "name": "Restriction",
          "value": "restriction"
        },
        {
          "name": "Sales Estimation",
          "value": "sales"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "identifierToAsins",
      "options": [
        {
          "name": "ASIN to Identifiers",
          "value": "asinToIdentifiers",
          "action": "Get product identifiers by ASIN",
          "routing": {
            "request": {
              "url": "=/products/{{$parameter.asin}}/identifiers",
              "method": "GET"
            }
          },
          "description": "Get array of product identifiers (UPC, EAN, etc.) based on ASIN"
        },
        {
          "name": "Identifier to ASINs",
          "value": "identifierToAsins",
          "action": "Convert upc or ean to asi ns",
          "routing": {
            "request": {
              "url": "=/converters/identifier-to-asins",
              "method": "GET"
            }
          },
          "description": "Get array of product ASINs based on UPC or EAN identifier"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "converter"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listInboundPlans",
      "options": [
        {
          "name": "Get Inbound Plan",
          "value": "getInboundPlan",
          "action": "Get inbound plan",
          "routing": {
            "request": {
              "url": "=/fba/inboundPlans/{{$parameter.inboundPlanId}}",
              "method": "GET"
            }
          },
          "description": "Get detailed information about a specific FBA inbound plan"
        },
        {
          "name": "Get Shipment",
          "value": "getShipment",
          "action": "Get shipment",
          "routing": {
            "request": {
              "url": "=/fba/inboundPlans/{{$parameter.inboundPlanId}}/shipments/{{$parameter.shipmentId}}",
              "method": "GET"
            }
          },
          "description": "Get detailed information about a specific shipment"
        },
        {
          "name": "Get Shipment Fees",
          "value": "getShipmentFees",
          "action": "Get shipment fees",
          "routing": {
            "request": {
              "url": "=/fba/inboundPlans/{{$parameter.inboundPlanId}}/shipments/{{$parameter.shipmentId}}/fees",
              "method": "GET"
            }
          },
          "description": "Get transportation and placement fees for a specific shipment"
        },
        {
          "name": "List Inbound Plans",
          "value": "listInboundPlans",
          "action": "List inbound plans",
          "routing": {
            "request": {
              "url": "=/fba/inboundPlans",
              "method": "GET"
            }
          },
          "description": "Get a paginated list of FBA inbound plans"
        },
        {
          "name": "List Plan Boxes",
          "value": "listPlanBoxes",
          "action": "List plan boxes",
          "routing": {
            "request": {
              "url": "=/fba/inboundPlans/{{$parameter.inboundPlanId}}/boxes",
              "method": "GET"
            }
          },
          "description": "Get all boxes across all shipments for a specific FBA inbound plan"
        },
        {
          "name": "List Plan Shipments",
          "value": "listPlanShipments",
          "action": "List plan shipments",
          "routing": {
            "request": {
              "url": "=/fba/inboundPlans/{{$parameter.inboundPlanId}}/shipments",
              "method": "GET"
            }
          },
          "description": "Get all shipments for a specific FBA inbound plan"
        },
        {
          "name": "List Shipment Boxes",
          "value": "listShipmentBoxes",
          "action": "List shipment boxes",
          "routing": {
            "request": {
              "url": "=/fba/inboundPlans/{{$parameter.inboundPlanId}}/shipments/{{$parameter.shipmentId}}/boxes",
              "method": "GET"
            }
          },
          "description": "Get all boxes for a specific shipment"
        },
        {
          "name": "List Shipment Items",
          "value": "listShipmentItems",
          "action": "List shipment items",
          "routing": {
            "request": {
              "url": "=/fba/inboundPlans/{{$parameter.inboundPlanId}}/shipments/{{$parameter.shipmentId}}/items",
              "method": "GET"
            }
          },
          "description": "Get all items in a specific shipment"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "fba"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getProduct",
      "options": [
        {
          "name": "Get Product",
          "value": "getProduct",
          "action": "Get keepa product data",
          "routing": {
            "request": {
              "url": "=/keepa/product",
              "method": "GET"
            }
          },
          "description": "Get detailed product info from Keepa including price history and statistics"
        },
        {
          "name": "Product Finder",
          "value": "productFinder",
          "action": "Find products with filters",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/keepa/query",
              "method": "POST"
            }
          },
          "description": "Search for products matching specified criteria with aggregated KPIs and insights"
        },
        {
          "name": "Search Products",
          "value": "searchProducts",
          "action": "Search keepa products",
          "routing": {
            "request": {
              "url": "=/keepa/search",
              "method": "GET"
            }
          },
          "description": "Search for Amazon products using keywords, returning up to 100 results per search term"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "keepa"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getItem",
      "options": [
        {
          "name": "Create Or Update Listing From ASIN",
          "value": "createOrUpdateItem",
          "action": "Create or update listing from ASIN",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/listings/items/{{encodeURIComponent($parameter.sku)}}",
              "method": "PUT"
            }
          },
          "description": "Create or update a listing by copying product data from an existing ASIN"
        },
        {
          "name": "Delete Listings Item",
          "value": "deleteItem",
          "action": "Delete listings item",
          "routing": {
            "request": {
              "url": "=/listings/items/{{encodeURIComponent($parameter.sku)}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a listings item by seller SKU"
        },
        {
          "name": "Get Listings Item",
          "value": "getItem",
          "action": "Get listings item",
          "routing": {
            "request": {
              "url": "=/listings/items/{{encodeURIComponent($parameter.sku)}}",
              "method": "GET"
            }
          },
          "description": "Get a listings item by seller SKU"
        },
        {
          "name": "Search Listings Items",
          "value": "searchItems",
          "action": "Search listings items",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/listings/items",
              "method": "GET"
            }
          },
          "description": "Search for listings items by identifiers"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "listing"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Calculate Product Profit",
          "value": "calculateProfit",
          "action": "Calculate product profit by ASIN",
          "routing": {
            "request": {
              "url": "=/products/{{$parameter.asin}}/calculate",
              "method": "POST"
            }
          },
          "description": "Calculate product profit for FBA and FBM including ROI, margin, and break-even analysis"
        },
        {
          "name": "Get Product Info",
          "value": "get",
          "action": "Get product info by ASIN",
          "routing": {
            "request": {
              "url": "=/products/{{$parameter.asin}}",
              "method": "GET"
            }
          },
          "description": "Retrieve product information from Amazon by ASIN"
        },
        {
          "name": "Get Product Statistics",
          "value": "getStats",
          "action": "Get product statistics by ASIN",
          "routing": {
            "request": {
              "url": "=/products/{{$parameter.asin}}/stats",
              "method": "GET"
            }
          },
          "description": "Fetch detailed statistics for a product including monthly sales, prices, BSR, offers, reviews, and BSR drops count"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "product"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "check",
      "options": [
        {
          "name": "Check ASIN Restrictions",
          "value": "check",
          "action": "Check ASIN restrictions",
          "routing": {
            "request": {
              "url": "=/products/{{$parameter.asin}}/restriction-status",
              "method": "GET"
            }
          },
          "description": "Check if you are allowed to sell a product. Returns ALLOWED_TO_SELL, NOT_ELIGIBLE, or APPROVAL_REQUIRED."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "restriction"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "estimateByAsin",
      "options": [
        {
          "name": "Estimate by ASIN",
          "value": "estimateByAsin",
          "action": "Estimate sales by ASIN",
          "routing": {
            "request": {
              "url": "=/products/{{$parameter.asin}}/sales",
              "method": "GET"
            }
          },
          "description": "Estimate approximate monthly sales number for a product by ASIN"
        },
        {
          "name": "Estimate by BSR",
          "value": "estimateByBsr",
          "action": "Estimate sales by BSR and category",
          "routing": {
            "request": {
              "url": "=/estimate-sales",
              "method": "POST"
            }
          },
          "description": "Estimate approximate monthly sales number based on BSR and category"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sales"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "ASIN to Identifiers",
      "value": "asinToIdentifiers",
      "action": "Get product identifiers by ASIN",
      "routing": {
        "request": {
          "url": "=/products/{{$parameter.asin}}/identifiers",
          "method": "GET"
        }
      },
      "description": "Get array of product identifiers (UPC, EAN, etc.) based on ASIN",
      "resource": "converter"
    },
    {
      "name": "Identifier to ASINs",
      "value": "identifierToAsins",
      "action": "Convert upc or ean to asi ns",
      "routing": {
        "request": {
          "url": "=/converters/identifier-to-asins",
          "method": "GET"
        }
      },
      "description": "Get array of product ASINs based on UPC or EAN identifier",
      "resource": "converter"
    },
    {
      "name": "Get Inbound Plan",
      "value": "getInboundPlan",
      "action": "Get inbound plan",
      "routing": {
        "request": {
          "url": "=/fba/inboundPlans/{{$parameter.inboundPlanId}}",
          "method": "GET"
        }
      },
      "description": "Get detailed information about a specific FBA inbound plan",
      "resource": "fba"
    },
    {
      "name": "Get Shipment",
      "value": "getShipment",
      "action": "Get shipment",
      "routing": {
        "request": {
          "url": "=/fba/inboundPlans/{{$parameter.inboundPlanId}}/shipments/{{$parameter.shipmentId}}",
          "method": "GET"
        }
      },
      "description": "Get detailed information about a specific shipment",
      "resource": "fba"
    },
    {
      "name": "Get Shipment Fees",
      "value": "getShipmentFees",
      "action": "Get shipment fees",
      "routing": {
        "request": {
          "url": "=/fba/inboundPlans/{{$parameter.inboundPlanId}}/shipments/{{$parameter.shipmentId}}/fees",
          "method": "GET"
        }
      },
      "description": "Get transportation and placement fees for a specific shipment",
      "resource": "fba"
    },
    {
      "name": "List Inbound Plans",
      "value": "listInboundPlans",
      "action": "List inbound plans",
      "routing": {
        "request": {
          "url": "=/fba/inboundPlans",
          "method": "GET"
        }
      },
      "description": "Get a paginated list of FBA inbound plans",
      "resource": "fba"
    },
    {
      "name": "List Plan Boxes",
      "value": "listPlanBoxes",
      "action": "List plan boxes",
      "routing": {
        "request": {
          "url": "=/fba/inboundPlans/{{$parameter.inboundPlanId}}/boxes",
          "method": "GET"
        }
      },
      "description": "Get all boxes across all shipments for a specific FBA inbound plan",
      "resource": "fba"
    },
    {
      "name": "List Plan Shipments",
      "value": "listPlanShipments",
      "action": "List plan shipments",
      "routing": {
        "request": {
          "url": "=/fba/inboundPlans/{{$parameter.inboundPlanId}}/shipments",
          "method": "GET"
        }
      },
      "description": "Get all shipments for a specific FBA inbound plan",
      "resource": "fba"
    },
    {
      "name": "List Shipment Boxes",
      "value": "listShipmentBoxes",
      "action": "List shipment boxes",
      "routing": {
        "request": {
          "url": "=/fba/inboundPlans/{{$parameter.inboundPlanId}}/shipments/{{$parameter.shipmentId}}/boxes",
          "method": "GET"
        }
      },
      "description": "Get all boxes for a specific shipment",
      "resource": "fba"
    },
    {
      "name": "List Shipment Items",
      "value": "listShipmentItems",
      "action": "List shipment items",
      "routing": {
        "request": {
          "url": "=/fba/inboundPlans/{{$parameter.inboundPlanId}}/shipments/{{$parameter.shipmentId}}/items",
          "method": "GET"
        }
      },
      "description": "Get all items in a specific shipment",
      "resource": "fba"
    },
    {
      "name": "Get Product",
      "value": "getProduct",
      "action": "Get keepa product data",
      "routing": {
        "request": {
          "url": "=/keepa/product",
          "method": "GET"
        }
      },
      "description": "Get detailed product info from Keepa including price history and statistics",
      "resource": "keepa"
    },
    {
      "name": "Product Finder",
      "value": "productFinder",
      "action": "Find products with filters",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/keepa/query",
          "method": "POST"
        }
      },
      "description": "Search for products matching specified criteria with aggregated KPIs and insights",
      "resource": "keepa"
    },
    {
      "name": "Search Products",
      "value": "searchProducts",
      "action": "Search keepa products",
      "routing": {
        "request": {
          "url": "=/keepa/search",
          "method": "GET"
        }
      },
      "description": "Search for Amazon products using keywords, returning up to 100 results per search term",
      "resource": "keepa"
    },
    {
      "name": "Create Or Update Listing From ASIN",
      "value": "createOrUpdateItem",
      "action": "Create or update listing from ASIN",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/listings/items/{{encodeURIComponent($parameter.sku)}}",
          "method": "PUT"
        }
      },
      "description": "Create or update a listing by copying product data from an existing ASIN",
      "resource": "listing"
    },
    {
      "name": "Delete Listings Item",
      "value": "deleteItem",
      "action": "Delete listings item",
      "routing": {
        "request": {
          "url": "=/listings/items/{{encodeURIComponent($parameter.sku)}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a listings item by seller SKU",
      "resource": "listing"
    },
    {
      "name": "Get Listings Item",
      "value": "getItem",
      "action": "Get listings item",
      "routing": {
        "request": {
          "url": "=/listings/items/{{encodeURIComponent($parameter.sku)}}",
          "method": "GET"
        }
      },
      "description": "Get a listings item by seller SKU",
      "resource": "listing"
    },
    {
      "name": "Search Listings Items",
      "value": "searchItems",
      "action": "Search listings items",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/listings/items",
          "method": "GET"
        }
      },
      "description": "Search for listings items by identifiers",
      "resource": "listing"
    },
    {
      "name": "Calculate Product Profit",
      "value": "calculateProfit",
      "action": "Calculate product profit by ASIN",
      "routing": {
        "request": {
          "url": "=/products/{{$parameter.asin}}/calculate",
          "method": "POST"
        }
      },
      "description": "Calculate product profit for FBA and FBM including ROI, margin, and break-even analysis",
      "resource": "product"
    },
    {
      "name": "Get Product Info",
      "value": "get",
      "action": "Get product info by ASIN",
      "routing": {
        "request": {
          "url": "=/products/{{$parameter.asin}}",
          "method": "GET"
        }
      },
      "description": "Retrieve product information from Amazon by ASIN",
      "resource": "product"
    },
    {
      "name": "Get Product Statistics",
      "value": "getStats",
      "action": "Get product statistics by ASIN",
      "routing": {
        "request": {
          "url": "=/products/{{$parameter.asin}}/stats",
          "method": "GET"
        }
      },
      "description": "Fetch detailed statistics for a product including monthly sales, prices, BSR, offers, reviews, and BSR drops count",
      "resource": "product"
    },
    {
      "name": "Check ASIN Restrictions",
      "value": "check",
      "action": "Check ASIN restrictions",
      "routing": {
        "request": {
          "url": "=/products/{{$parameter.asin}}/restriction-status",
          "method": "GET"
        }
      },
      "description": "Check if you are allowed to sell a product. Returns ALLOWED_TO_SELL, NOT_ELIGIBLE, or APPROVAL_REQUIRED.",
      "resource": "restriction"
    },
    {
      "name": "Estimate by ASIN",
      "value": "estimateByAsin",
      "action": "Estimate sales by ASIN",
      "routing": {
        "request": {
          "url": "=/products/{{$parameter.asin}}/sales",
          "method": "GET"
        }
      },
      "description": "Estimate approximate monthly sales number for a product by ASIN",
      "resource": "sales"
    },
    {
      "name": "Estimate by BSR",
      "value": "estimateByBsr",
      "action": "Estimate sales by BSR and category",
      "routing": {
        "request": {
          "url": "=/estimate-sales",
          "method": "POST"
        }
      },
      "description": "Estimate approximate monthly sales number based on BSR and category",
      "resource": "sales"
    }
  ]

npm_readme:
  # n8n-nodes-sellerassistant

  This is an n8n community node. It lets you use [Seller Assistant](https://sellerassistant.app) in your n8n workflows.

  Seller Assistant is an Amazon product research tool that helps sellers analyze products, check restrictions, estimate sales, and calculate profitability.

  [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

  ### Converter

  - **ASIN to Identifiers** - Get array of product identifiers (UPC, EAN, etc.) based on ASIN
  - **Identifier to ASINs** - Get array of product ASINs based on UPC or EAN identifier

  ### FBA Inbound

  - **Get Inbound Plan** - Get detailed information about a specific FBA inbound plan
  - **Get Shipment** - Get detailed information about a specific shipment
  - **Get Shipment Fees** - Get transportation and placement fees for a specific shipment
  - **List Inbound Plans** - Get a paginated list of FBA inbound plans with filtering and sorting options
  - **List Plan Boxes** - Get all boxes across all shipments for a specific FBA inbound plan
  - **List Plan Shipments** - Get all shipments for a specific FBA inbound plan
  - **List Shipment Boxes** - Get all boxes for a specific shipment
  - **List Shipment Items** - Get all items in a specific shipment

  ### Keepa

  - **Get Product** - Get detailed product info from Keepa including price history, statistics, and marketplace offers
  - **Product Finder** - Search for products matching specified criteria with aggregated KPIs and insights
  - **Search Products** - Search for Amazon products using keywords, returning up to 100 results per search term

  ### Listings Items

  - **Search Listings Items** - Search for listings items by identifiers (SKU, ASIN, EAN, UPC, etc.) with filtering and pagination
  - **Get Listings Item** - Get a listings item by seller SKU with detailed information
  - **Create or Update Listing from ASIN** - Create or update a listing by copying product data from an existing ASIN
  - **Delete Listings Item** - Delete a listings item by seller SKU

  ### Product

  - **Calculate Product Profit** - Calculate product profit for FBA and FBM including ROI, margin, and break-even analysis
  - **Get Product Info** - Retrieve detailed product information from Amazon by ASIN
  - **Get Product Statistics** - Fetch detailed statistics for a product including monthly sales, prices, BSR, offers, reviews, and BSR drops count

  ### Restriction

  - **Check ASIN Restrictions** - Check if you are allowed to sell a product (returns ALLOWED_TO_SELL, NOT_ELIGIBLE, or APPROVAL_REQUIRED)

  ### Sales

  - **Estimate by ASIN** - Estimate approximate monthly sales number for a product by ASIN
  - **Estimate by BSR** - Estimate approximate monthly sales number based on BSR and category

  ## Credentials

  To use this node, you need a Seller Assistant API key:

  1. Sign up for a [Seller Assistant account](https://sellerassistant.app)
  2. Navigate to [Settings > API Keys](https://app.sellerassistant.app/settings/api-keys)
  3. Generate a new API key
  4. In n8n, create new credentials for "Seller Assistant API" and paste your API key

  ## Compatibility

  - Requires n8n version 1.0.0 or later
  - Tested with n8n versions 1.x

  ## Usage

  ### ASIN to Identifiers

  Use the "ASIN to Identifiers" operation to get product identifiers (UPC, EAN, etc.) from an ASIN:

  1. Add the Seller Assistant node to your workflow
  2. Select "Converter" as the resource
  3. Select "ASIN to Identifiers" as the operation
  4. Enter the ASIN of the product
  5. Select the Amazon marketplace domain
  6. Execute the node to get product identifiers

  **Note:** This operation requires an Amazon seller account integration. Connect your account at [Seller Assistant Integrations](https://app.sellerassistant.app/integrations/seller-central).

  The node returns an array of identifiers (UPC, EAN, etc.) for the product. Returns an empty array if no identifiers are found.

  ### Identifier to ASINs

  Use the "Identifier to ASINs" operation to convert a UPC or EAN to Amazon ASINs:

  1. Add the Seller Assistant node to your workflow
  2. Select "Converter" as the resource
  3. Select "Identifier to ASINs" as the operation
  4. Enter the UPC or EAN identifier
  5. Select the Amazon marketplace domain
  6. Execute the node to get matching ASINs

  **Note:** This operation requires an Amazon seller account integration. Connect your account at [Seller Assistant Integrations](https://app.sellerassistant.app/integrations/seller-central).

  The node returns an array of ASINs that match the provided UPC or EAN. Returns an empty array if no products are found.

  ### Get Inbound Plan

  Use the "Get Inbound Plan" operation to retrieve detailed information about a specific FBA inbound plan:

  1. Add the Seller Assistant node to your workflow
  2. Select "FBA Inbound" as the resource
  3. Select "Get Inbound Plan" as the operation
  4. Enter the Inbound Plan ID (Workflow ID)
  5. Select the Amazon marketplace domain
  6. Execute the node to get inbound plan details

  **Note:** This operation requires an Amazon seller account integration. Connect your account at [Seller Assistant Integrations](https://app.sellerassistant.app/integrations/seller-central).

  The node returns detailed inbound plan information including:
  - Plan ID, name, and status
  - Source address
  - Creation and last updated timestamps
  - Marketplace IDs
  - Packing options with status
  - Placement options with status
  - Shipments list with IDs and status

  ### Get Shipment

  Use the "Get Shipment" operation to retrieve detailed information about a specific shipment:

  1. Add the Seller Assistant node to your workflow
  2. Select "FBA Inbound" as the resource
  3. Select "Get Shipment" as the operation
  4. Enter the Inbound Plan ID (Workflow ID)
  5. Enter the Shipment ID (sh... or FBA... format)
  6. Select the Amazon marketplace domain
  7. Execute the node to get shipment details

  **Note:** This operation requires an Amazon seller account integration. Connect your account at [Seller Assistant Integrations](https://app.sellerassistant.app/integrations/seller-central).

  The node returns detailed shipment information including:
  - Shipment ID and status
  - Amazon reference ID
  - Source and destination addresses
  - Contact information
  - Tracking details (LTL and SPD)
  - Delivery window information
  - Freight information
  - Self-ship appointment details

  ### Get Shipment Fees

  Use the "Get Shipment Fees" operation to retrieve transportation and placement fees for a specific shipment:

  1. Add the Seller Assistant node to your workflow
  2. Select "FBA Inbound" as the resource
  3. Select "Get Shipment Fees" as the operation
  4. Enter the Inbound Plan ID (Workflow ID)
  5. Enter the Shipment ID (sh... or FBA... format)
  6. Select the Amazon marketplace domain
  7. Execute the node to get shipment fees

  **Note:** This operation requires an Amazon seller account integration. Connect your account at [Seller Assistant Integrations](https://app.sellerassistant.app/integrations/seller-central).

  The node returns fee information including:
  - Placement fees with discounts and status
  - Transportation options with carrier info, shipping mode, and quotes
  - Fee amounts and currency codes
  - Expiration dates for quotes

  ### List Inbound Plans

  Use the "List Inbound Plans" operation to retrieve a paginated list of FBA inbound plans:

  1. Add the Seller Assistant node to your workflow
  2. Select "FBA Inbound" as the resource
  3. Select "List Inbound Plans" as the operation
  4. Select the Amazon marketplace domain
  5. Optionally configure filtering options (status, sort by, sort order, page size)
  6. Execute the node to get inbound plans

  **Note:** This operation requires an Amazon seller account integration. Connect your account at [Seller Assistant Integrations](https://app.sellerassistant.app/integrations/seller-central).

  The node returns a list of inbound plans including:
  - Plan ID and name
  - Status (ACTIVE, VOIDED, SHIPPED)
  - Source address
  - Creation and last updated timestamps
  - Marketplace IDs
  - Pagination token for fetching additional pages

  ### List Plan Boxes

  Use the "List Plan Boxes" operation to retrieve all boxes across all shipments for a specific FBA inbound plan:

  1. Add the Seller Assistant node to your workflow
  2. Select "FBA Inbound" as the resource
  3. Select "List Plan Boxes" as the operation
  4. Enter the Inbound Plan ID (Workflow ID)
  5. Select the Amazon marketplace domain
  6. Optionally configure page size and pagination token
  7. Execute the node to get boxes

  **Note:** This operation requires an Amazon seller account integration. Connect your account at [Seller Assistant Integrations](https://app.sellerassistant.app/integrations/seller-central).

  The node returns box information including:
  - Box ID
  - Package ID
  - Destination address (fulfillment center code)
  - Dimensions (length, width, height, unit)
  - Weight and weight unit
  - Items in the box with quantities
  - Expiration dates (if applicable)
  - Pagination token for fetching additional pages

  ### List Plan Shipments

  Use the "List Plan Shipments" operation to retrieve all shipments for a specific FBA inbound plan:

  1. Add the Seller Assistant node to your workflow
  2. Select "FBA Inbound" as the resource
  3. Select "List Plan Shipments" as the operation
  4. Enter the Inbound Plan ID (Workflow ID)
  5. Select the Amazon marketplace domain
  6. Execute the node to get shipments

  **Note:** This operation requires an Amazon seller account integration. Connect your account at [Seller Assistant Integrations](https://app.sellerassistant.app/integrations/seller-central).

  The node returns shipment information including:
  - Shipment ID and status
  - Source and destination addresses
  - Contact information
  - Tracking details (LTL and SPD)
  - Delivery window information
  - Freight information
  - Self-ship appointment details

  ### List Shipment Boxes

  Use the "List Shipment Boxes" operation to retrieve all boxes for a specific shipment:

  1. Add the Seller Assistant node to your workflow
  2. Select "FBA Inbound" as the resource
  3. Select "List Shipment Boxes" as the operation
  4. Enter the Inbound Plan ID (Workflow ID)
  5. Enter the Shipment ID (sh... or FBA... format)
  6. Select the Amazon marketplace domain
  7. Optionally configure page size and pagination token
  8. Execute the node to get shipment boxes

  **Note:** This operation requires an Amazon seller account integration. Connect your account at [Seller Assistant Integrations](https://app.sellerassistant.app/integrations/seller-central).

  The node returns box information including:
  - Package ID and Box ID
  - Destination region (warehouse ID, country, state)
  - Dimensions (length, width, height, unit)
  - Weight and weight unit
  - Items in the box with quantities and prep instructions
  - Template name
  - Pagination token for fetching additional pages

  ### List Shipment Items

  Use the "List Shipment Items" operation to retrieve all items in a specific shipment:

  1. Add the Seller Assistant node to your workflow
  2. Select "FBA Inbound" as the resource
  3. Select "List Shipment Items" as the operation
  4. Enter the Inbound Plan ID (Workflow ID)
  5. Enter the Shipment ID (sh... or FBA... format)
  6. Select the Amazon marketplace domain
  7. Optionally configure page size and detailed mode
  8. Execute the node to get shipment items

  **Note:** This operation requires an Amazon seller account integration. Connect your account at [Seller Assistant Integrations](https://app.sellerassistant.app/integrations/seller-central).

  The node returns item information including:
  - ASIN and FNSKU
  - Merchant SKU (MSKU)
  - Quantity
  - Label owner (AMAZON, SELLER, NONE)
  - Prep instructions with fees
  - Expiration date (if applicable)
  - Manufacturing lot code (if applicable)

  ### Create or Update Listing from ASIN

  Use the "Create or Update Listing from ASIN" operation to create or update a listing by copying product data from an existing ASIN:

  1. Add the Seller Assistant node to your workflow
  2. Select "Listings Items" as the resource
  3. Select "Create or Update Listing from ASIN" as the operation
  4. Enter your unique SKU for the listing
  5. Enter the ASIN of the existing product (must not be a parent ASIN)
  6. Enter the selling price and currency
  7. Select the item condition (new, used, refurbished, collectible)
  8. Select the Amazon marketplace domain
  9. Optionally configure FBA settings, dangerous goods regulation, and attribute overrides
  10. Execute the node to create or update the listing

  **Note:** This operation requires an Amazon seller account integration. Connect your account at [Seller Assistant Integrations](https://app.sellerassistant.app/integrations/seller-central).

  The node returns submission information including:
  - SKU of the listing
  - Status (ACCEPTED, INVALID, or VALID for validation preview)
  - Submission ID
  - Any issues with severity levels (ERROR, WARNING, INFO)

  You can use the "Validation Mode" option to preview and check for errors before actual submission.

  ### Delete Listings Item

  Use the "Delete Listings Item" operation to delete a listings item by seller SKU:

  1. Add the Seller Assistant node to your workflow
  2. Select "Listings Items" as the resource
  3. Select "Delete Listings Item" as the operation
  4. Enter the seller SKU of the item to delete
  5. Select the Amazon marketplace domain
  6. Execute the node to delete the listing

  **Note:** This operation requires an Amazon seller account integration. Connect your account at [Seller Assistant Integrations](https://app.sellerassistant.app/integrations/seller-central).

  The node returns submission information including:
  - SKU of the deleted listing
  - Status (ACCEPTED, INVALID)
  - Submission ID
  - Any issues with severity levels (ERROR, WARNING, INFO)

  ### Get Listings Item

  Use the "Get Listings Item" operation to retrieve a listings item by seller SKU:

  1. Add the Seller Assistant node to your workflow
  2. Select "Listings Items" as the resource
  3. Select "Get Listings Item" as the operation
  4. Enter the seller SKU of the item
  5. Select the Amazon marketplace domain
  6. Optionally configure included data (summaries, attributes, issues, offers, etc.)
  7. Execute the node to get item details

  **Note:** This operation requires an Amazon seller account integration. Connect your account at [Seller Assistant Integrations](https://app.sellerassistant.app/integrations/seller-central).

  The node returns listing item information including:
  - SKU and ASIN
  - Product summaries (condition, status, FNSKU, item name, images)
  - Attributes (structured product data)
  - Issues with severity levels and enforcement actions
  - Offers and pricing data
  - Fulfillment availability
  - Procurement information
  - Relationships (variations, package hierarchy)
  - Product types

  ### Search Listings Items

  Use the "Search Listings Items" operation to search for listings items by identifiers:

  1. Add the Seller Assistant node to your workflow
  2. Select "Listings Items" as the resource
  3. Select "Search Listings Items" as the operation
  4. Enter comma-delimited identifiers (max 20)
  5. Select the identifier type (SKU, ASIN, EAN, UPC, etc.)
  6. Select the Amazon marketplace domain
  7. Optionally configure filtering options (included data, dates, status filters, sorting, pagination)
  8. Execute the node to search listings

  **Note:** This operation requires an Amazon seller account integration. Connect your account at [Seller Assistant Integrations](https://app.sellerassistant.app/integrations/seller-central).

  The node returns listing items including:
  - SKU and ASIN
  - Product summaries and attributes
  - Fulfillment availability
  - Issues with severity levels
  - Offers and procurement data
  - Relationships and variation info
  - Pagination token for fetching additional pages

  ### Get Keepa Product

  Use the "Get Product" operation to retrieve detailed Keepa data for an Amazon product:

  1. Add the Seller Assistant node to your workflow
  2. Select "Keepa" as the resource
  3. Select "Get Product" as the operation
  4. Choose lookup method (ASIN or UPC/EAN code)
  5. Enter the ASIN or UPC/EAN code
  6. Select the Amazon marketplace domain
  7. Configure optional parameters (stats, history, offers, etc.)
  8. Execute the node to get Keepa product data

  The node returns comprehensive Keepa data including:
  - Product details (title, brand, manufacturer, dimensions, etc.)
  - Price history for all price types (Amazon, new, used, Buy Box, etc.)
  - Sales rank history
  - Marketplace offers data (with offers parameter)
  - Buy Box information
  - Rating and review history

  ### Keepa Product Finder

  Use the "Product Finder" operation to search for products matching specified criteria:

  1. Add the Seller Assistant node to your workflow
  2. Select "Keepa" as the resource
  3. Select "Product Finder" as the operation
  4. Select the Amazon marketplace domain
  5. Enter filter criteria as JSON (see examples below)
  6. Configure optional parameters (page, perPage, sort, include search insights)
  7. Execute the node to find matching products

  The node accepts a JSON object with filter criteria. Common filter examples:

  ```json
  {
    "title": "board game",
    "current_SALES_gte": 1,
    "current_SALES_lte": 100000
  }
  ```

  ```json
  {
    "brand": ["CATAN", "Hasbro"],
    "monthlySold_gte": 100,
    "current_AMAZON_gte": 1000,
    "current_AMAZON_lte": 5000
  }
  ```

  ```json
  {
    "rootCategory": [165793011],
    "hasReviews": true,
    "current_RATING_gte": 40
  }
  ```

  Available filter categories:
  - **Text filters**: title, brand, manufacturer, model, color, size, edition, format
  - **Price filters**: current_AMAZON_gte/lte, current_NEW_gte/lte, current_BUY_BOX_SHIPPING_gte/lte
  - **Sales filters**: current_SALES_gte/lte, monthlySold_gte/lte
  - **Rating filters**: current_RATING_gte/lte, current_COUNT_REVIEWS_gte/lte
  - **Dimension filters**: packageHeight_gte/lte, packageWeight_gte/lte, itemWeight_gte/lte
  - **Buy Box filters**: buyBoxIsAmazon, buyBoxIsFBA, buyBoxStatsAmazon30_gte/lte
  - **Boolean filters**: hasReviews, isAdultProduct, isSNS, isEligibleForTradeIn

  See the [Seller Assistant API documentation](https://developer.sellerassistant.app) for the complete list of available filters.

  ### Search Keepa Products

  Use the "Search Products" operation to search for Amazon products using keywords:

  1. Add the Seller Assistant node to your workflow
  2. Select "Keepa" as the resource
  3. Select "Search Products" as the operation
  4. Enter the search term (e.g., "Catan")
  5. Select the Amazon marketplace domain
  6. Configure optional parameters (ASINs only, page, stats, history, etc.)
  7. Execute the node to search products

  The node returns up to 100 results per search term, with results ordered as on Amazon (excluding sponsored content). Each page provides up to 10 results, iterate through pages 0-9 for more results.

  Options include:
  - **ASINs Only** - Return only ASINs instead of full product objects
  - **Page** - Page number (0-9) for pagination
  - **Stats** - Include price statistics for last X days or a date range
  - **Update** - Force refresh if data is older than specified hours
  - **Include History** - Include historical data fields
  - **Include Rating** - Include rating and review count history

  ### Calculate Product Profit

  Use the "Calculate Product Profit" operation to calculate profit metrics for an Amazon product:

  1. Add the Seller Assistant node to your workflow
  2. Select "Product" as the resource
  3. Select "Calculate Product Profit" as the operation
  4. Enter the ASIN of the product
  5. Select the Amazon marketplace domain
  6. Enter the Cost of Goods (COG)
  7. Enter the FBA 3PL cost (Third Party Logistics for FBA)
  8. Enter the FBM 3PL cost (Third Party Logistics for FBM)
  9. Optionally enter an override price to use instead of the Amazon price
  10. Execute the node to calculate profit

  **Note:** This operation requires an Amazon seller account integration. Connect your account at [Seller Assistant Integrations](https://app.sellerassistant.app/integrations/seller-central).

  The node returns profit calculations including:
  - FBA and FBM profit breakdowns (price, COG, referral fee, FBA/FBM fees, storage fee, profit)
  - ROI and margin percentages
  - Break-even price analysis
  - ROI 10% and ROI 20% price targets
  - Estimated monthly sales and revenue

  ### Get Product Info

  Use the "Get Product Info" operation to retrieve detailed information about an Amazon product:

  1. Add the Seller Assistant node to your workflow
  2. Select "Product" as the resource
  3. Select "Get Product Info" as the operation
  4. Enter the ASIN (Amazon Standard Identification Number) of the product
  5. Execute the node to retrieve product data

  The node returns comprehensive product information including title, pricing, category, and more.

  ### Get Product Statistics

  Use the "Get Product Statistics" operation to retrieve detailed statistics for an Amazon product:

  1. Add the Seller Assistant node to your workflow
  2. Select "Product" as the resource
  3. Select "Get Product Statistics" as the operation
  4. Enter the ASIN of the product
  5. Select the Amazon marketplace domain
  6. Execute the node to retrieve product statistics

  The node returns statistics including:
  - Monthly sales estimates
  - Price metrics (Amazon price, marketplace new price, Buy Box price, FBM price, FBA price) with current and historical averages
  - Best Sellers Rank (BSR) with current and historical averages
  - Number of offers and reviews
  - BSR drops count (indicator of sales spikes)

  ### Check ASIN Restrictions

  Use the "Check ASIN Restrictions" operation to check if you are allowed to sell a product:

  1. Add the Seller Assistant node to your workflow
  2. Select "Restriction" as the resource
  3. Select "Check ASIN Restrictions" as the operation
  4. Enter the ASIN of the product
  5. Select the Amazon marketplace domain
  6. Execute the node to check restrictions

  **Note:** This operation requires an Amazon seller account integration. Connect your account at [Seller Assistant Integrations](https://app.sellerassistant.app/integrations/seller-central).

  The node returns one of the following statuses:
  - `ALLOWED_TO_SELL` - You can sell this product
  - `NOT_ELIGIBLE` - You are not eligible to sell this product
  - `APPROVAL_REQUIRED` - You need approval to sell this product

  ### Estimate Sales by ASIN

  Use the "Estimate by ASIN" operation to estimate monthly sales for a product:

  1. Add the Seller Assistant node to your workflow
  2. Select "Sales" as the resource
  3. Select "Estimate by ASIN" as the operation
  4. Enter the ASIN of the product
  5. Select the Amazon marketplace domain
  6. Execute the node to get sales estimate

  The node returns the estimated monthly sales number for the product.

  ### Estimate Sales by BSR

  Use the "Estimate by BSR" operation to estimate monthly sales based on BSR and category:

  1. Add the Seller Assistant node to your workflow
  2. Select "Sales" as the resource
  3. Select "Estimate by BSR" as the operation
  4. Enter the Best Seller Rank (BSR) number
  5. Enter the root category name (e.g., "Home & Kitchen")
  6. Select the Amazon marketplace domain
  7. Execute the node to get sales estimate

  The node returns the estimated monthly sales number based on the provided BSR and category.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Seller Assistant Website](https://sellerassistant.app)
  - [Seller Assistant API Documentation](https://developer.sellerassistant.app)

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Seller Assistant API to analyze Amazon products, manage FBA shipments, and calculate profitability for e-commerce sellers.","capabilities":["Convert ASIN to product identifiers (UPC, EAN)","Convert product identifiers (UPC, EAN) to ASINs","Retrieve and manage FBA inbound plans and shipments","Fetch product data and statistics from Keepa (price history, market offers)","Search and manage seller listings by SKU/ASIN","Calculate product profit margins and break-even analysis","Check product selling restrictions","Estimate monthly sales based on ASIN or BSR"],"authentication":"API key required (Seller Assistant API key)","commonUseCases":["Amazon product research and competitor analysis","FBA shipment planning and tracking","Product profitability calculation for e-commerce sellers","Inventory management via SKU/ASIN lookups"],"limitations":["Requires a paid Seller Assistant account and API key","Requires Amazon seller account integration for certain operations (ASIN conversion, FBA data)","Limited to Seller Assistant API capabilities","Product statistics and Keepa data depend on Keepa API availability"],"relatedNodes":["Amazon Product Research","FBA Shipment Manager","Keepa"]}


node_type: n8n-nodes-sendzen.sendZen
package_name: n8n-nodes-sendzen
display_name: SendZen for WhatsApp API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: sendzen-io
author_github_url: https://github.com/sendzen-io/
npm_package_name: n8n-nodes-sendzen
npm_version: 1.0.8
community_fetched_at: 2026-07-14T14:40:33.687Z
ai_summary_generated_at: 2026-03-25 22:51:43
description:
  Build WhatsApp chatbots & automations: send messages, media, and notifications via the WhatsApp Cloud API.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "sendMessage",
      "options": [
        {
          "name": "Send Message",
          "value": "sendMessage"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendSessionMessage",
      "options": [
        {
          "hint": "Use this option to reply to a user within an active conversation without using a template.",
          "name": "Send Session Message",
          "value": "sendSessionMessage",
          "action": "Send session message",
          "description": "Send a free-form message within an active 24-hour WhatsApp conversation window"
        },
        {
          "hint": "Use this option when replying outside the 24-hour session window or when a template is required by WhatsApp.",
          "name": "Send Template Message",
          "value": "sendTemplateMessage",
          "action": "Send template message",
          "description": "Send a pre-approved WhatsApp template message to a recipient"
        },
        {
          "hint": "Use this option to mark the incoming message as read.",
          "name": "Mark as Read",
          "value": "markAsRead",
          "action": "Mark as read",
          "description": "Mark the incoming message as read."
        },
        {
          "hint": "Use this option to show a typing indicator while the workflow continues.",
          "name": "Show Typing Indicator",
          "value": "showTyping",
          "action": "Show typing indicator",
          "description": "Display a typing indicator while the workflow continues."
        }
      ],
      "required": true,
      "description": "Choose how you want to interact with the recipient using SendZen.",
      "displayName": "Operation",
      "disabledOptions": {
        "show": {
          "resource": [
            "sendMessage"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "hint": "Use this option to reply to a user within an active conversation without using a template.",
      "name": "Send Session Message",
      "value": "sendSessionMessage",
      "action": "Send session message",
      "description": "Send a free-form message within an active 24-hour WhatsApp conversation window"
    },
    {
      "hint": "Use this option when replying outside the 24-hour session window or when a template is required by WhatsApp.",
      "name": "Send Template Message",
      "value": "sendTemplateMessage",
      "action": "Send template message",
      "description": "Send a pre-approved WhatsApp template message to a recipient"
    },
    {
      "hint": "Use this option to mark the incoming message as read.",
      "name": "Mark as Read",
      "value": "markAsRead",
      "action": "Mark as read",
      "description": "Mark the incoming message as read."
    },
    {
      "hint": "Use this option to show a typing indicator while the workflow continues.",
      "name": "Show Typing Indicator",
      "value": "showTyping",
      "action": "Show typing indicator",
      "description": "Display a typing indicator while the workflow continues."
    }
  ]

npm_readme:
  [![npm version](https://img.shields.io/npm/v/n8n-nodes-sendzen.svg?style=flat-square)](https://www.npmjs.com/package/n8n-nodes-sendzen)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](LICENSE.md)
  [![n8n](https://img.shields.io/badge/n8n-community-orange?style=flat-square)](https://n8n.io)

  # n8n-nodes-sendzen

  This is an n8n community node for integrating **SendZen** with your workflows.

  SendZen provides an API on top of the **official WhatsApp Cloud API**, so you can send messages (session + templates) and receive inbound WhatsApp messages via webhooks.

  - Website: https://www.sendzen.io
  - Docs: https://sendzen.io/docs

  ---

  ## Table of Contents

  - [Overview](#overview)
  - [Installation](#installation)
  - [Authentication](#authentication)
  - [Features](#features)
  - [How to Use the SendZen Action Node](#how-to-use-the-sendzen-action-node)
  - [How to Use the SendZen Trigger Node](#how-to-use-the-sendzen-trigger-node)
  - [Common Use Cases](#common-use-cases)
  - [Best Practices](#best-practices)
  - [Troubleshooting](#troubleshooting)
  - [Compatibility](#compatibility)
  - [Resources](#resources)
  - [Running Locally](#running-locally)
  - [Contributing](#contributing)
  - [Support](#support)
  - [License](#license)

  ---

  ## Overview

  SendZen helps developers and software platforms use WhatsApp reliably without dealing with all the Meta Cloud API complexity directly.

  With this n8n node, you can:

  - Send **session messages** (within 24-hour customer care window)
  - Send **template messages** (for business-initiated conversations)
  - Mark messages as read
  - Show typing indicator
  - Receive inbound messages via **webhook trigger**

  ---

  ## Screenshots

  ### Send Session Message

  ![SendZen Send Session Message Node in n8n](https://raw.githubusercontent.com/sendzen-io/n8n-nodes-sendzen/main/assets/Session_Message.png)

  ### Send Template Message

  ![SendZen Send Template Message Node in n8n](https://raw.githubusercontent.com/sendzen-io/n8n-nodes-sendzen/main/assets/Template_Message.png)

  ---

  ## Installation

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

  ---

  ## Authentication

  To use this node, you need a **SendZen API Key**.

  1. Sign up at https://www.sendzen.io
  2. Go to your dashboard and generate an API key (Dashboard → API Keys)
  3. Connect your WhatsApp Business Account (WABA) inside SendZen (required to send messages)

  > Note: Keep your API key secure and never commit it to code or share it publicly.

  ---

  ## Data & Security Notes

  - This node sends message content, recipient phone numbers, template names, and template variables to SendZen to deliver WhatsApp messages.
  - Store your SendZen API key only in **n8n Credentials**.
  - For inbound messages, enable **webhook signature verification** (recommended) to prevent spoofed requests.

  ---

  ## Features

  ### SendZen Action Node

  - **Send Session Message**
    - Send free-form text messages within the active 24-hour window
    - Supports URL previews and E.164 validation
  - **Send Template Message**
    - Send pre-approved templates to start conversations
    - Dynamic template + variable mapping (body, header, buttons)
    - Supports media headers (image, video, document, audio)
    - Supports CTA and quick reply buttons
  - **Mark as Read**
    - Mark inbound messages as read (useful for UX and analytics)
    - Auto-detects message identifiers when connected from the trigger
  - **Show Typing Indicator**
    - Show “Typing…” to make automations feel more natural

  ### SendZen Trigger Node

  - Receive inbound WhatsApp messages in real time via webhook
  - Outputs full message payload (text, media, location, contacts)
  - Simple webhook setup: copy URL from node → paste in SendZen dashboard

  ---

  ## How to Use the SendZen Action Node

  ### Prerequisites

  - A SendZen account
  - A connected WhatsApp Business Account (WABA) in SendZen
  - Access to n8n

  ### Setup Process

  1. **Create your SendZen API key**
     - Open SendZen dashboard
     - Go to **API Keys**
     - Copy the key and store it securely

  2. **Connect your WABA**
     - Complete the WABA connection flow in SendZen
     - Ensure at least one phone number is connected and active

  ### Integration Steps (n8n)

  1. Create a new workflow in n8n
  2. Add any trigger (Webhook, Schedule, CRM trigger, etc.)
  3. Add **SendZen** node
  4. In SendZen node:
     - Select **Credentials** → **Create New**
     - Choose **SendZen API**
     - Paste your API key
     - Save
  5. Choose an operation and fill required fields
  6. Click **Test Step**
  7. Save and activate your workflow

  ---

  ## How to Use the SendZen Trigger Node

  ### Prerequisites

  - A SendZen account
  - A connected WABA phone number
  - Access to n8n

  ### Webhook signature verification (HMAC-SHA256) — recommended

  SendZen signs every webhook payload using **HMAC-SHA256** and includes the signature in the `X-Hub-Signature-256` header in this format:

  - `X-Hub-Signature-256: sha256=<hex>`

  To enable signature verification in n8n:

  1. In the **SendZen dashboard** webhook settings, set a **Secret Key** (recommended).
  2. In n8n, create credentials:
     - Credentials type: **SendZen Webhook API**
     - Set **Secret Key** to the same value you configured in SendZen.
  3. In the **SendZen Trigger** node, select those **SendZen Webhook API** credentials.

  If credentials are set, the trigger will return **401** for missing/invalid signatures.

  Important: signature verification requires hashing the **raw request body**. Avoid any middleware/proxies that reformat/pretty-print the JSON payload. If you run n8n behind Cloudflare / nginx / API gateway, ensure it does not modify request body (no pretty-print, no re-encoding)

  ### Setup Process

  1. **Get your webhook URL from n8n**
     - Add **SendZen Trigger** node in your workflow
     - At the top of the node, find **Webhook URLs**
     - Copy the **Production URL**

  Tip: Use the **Test URL** while testing in the editor. After activating the workflow, set the **Production URL** in SendZen for live traffic.

  2. **Add webhook URL in SendZen**
     - Open SendZen dashboard webhook settings
     - Paste the Production URL
     - Save changes

  3. **Test and activate**
     - In n8n, click **Test Step**
     - Send a WhatsApp message to your connected number to verify the trigger fires
     - Save workflow and toggle **Active**

  ---

  ## Common Use Cases

  - **Lead capture + instant reply**: Trigger on inbound message, capture details, respond with next steps
  - **Order updates**: Trigger on order status change, send template message
  - **Appointment reminders**: Scheduled trigger, send template reminders
  - **Support automation**: Trigger on inbound support message, route based on keywords, reply
  - **Payment reminders**: Trigger from billing system, send WhatsApp template


    ### Example 1: New lead → WhatsApp template

    Trigger: CRM/New form submission → Send Template Message → Log result.

    ### Example 2: Inbound WhatsApp → Auto-reply + CRM

    SendZen Trigger → IF keyword contains "pricing" → Send Session Message → Create lead in CRM.

  ---

  ## Best Practices

  - Use **template messages** to start conversations (business-initiated).
  - Use **session messages** only within the active 24-hour window.
  - Keep API keys only inside **n8n Credentials**.
  - For production workflows, log failures and add retries (for example using IF + Wait + Retry patterns).
  - When using templates, prefer mapping variables explicitly so workflows remain readable.

  ---

  ## Troubleshooting

  - **401 / auth error**: Re-check API key and credential selected in the node
  - **No WABA accounts listed**: Confirm WABA is connected inside SendZen
  - **Trigger not firing**:
    - Ensure webhook URL is saved in SendZen
    - Confirm the URL is publicly reachable
    - Confirm workflow is active in n8n
  - **Template missing**: Ensure template exists and is approved in your WhatsApp Business Manager

  ---

  ## Compatibility

  - **n8n**: 1.0.0+ (tested on 1.89.2+)
  - **Node.js**: >= 18.10

  ---

  ## Resources

  - SendZen Documentation: https://sendzen.io/docs
  - WhatsApp Cloud API Reference: https://developers.facebook.com/docs/whatsapp
  - n8n Community Nodes: https://docs.n8n.io/integrations/community-nodes/

  ---

  ## Version history

  ### 1.0.1

  - **Robustness:** Added comprehensive Jest test suite for Triggers, Actions, and Template Builders.
  - **Optimization:** Reduced package size by excluding development files.

  ### 1.0.0

  - Initial release
  - Support for Session Messages, Templates, Mark as Read, Typing Indicators.
  - Webhook Trigger support.
  - Auto-discovery for WABA Accounts and Templates.

  ---

  ## Running Locally

  If you want to contribute or modify this node:

  1.  **Clone:** `git clone https://github.com/sendzen-io/n8n-nodes-sendzen.git`
  2.  **Install:** `pnpm install`
  3.  **Build:** `pnpm build`
  4.  **Test:** `pnpm test` (Runs the Jest test suite)
  5.  **Link:** Follow the [n8n custom node guide](https://docs.n8n.io/integrations/community-nodes/create/) to link `dist` to your local n8n instance.

  ---

  ## Contributing

  We welcome contributions! Please follow these steps:

  1.  Fork the repository.
  2.  Create a feature branch.
  3.  **Run Tests:** Ensure `pnpm test` passes.
  4.  Submit a Pull Request.

  ## Support

  - Email: [milan@sendzen.io](mailto:milan@sendzen.io)
  - Issues: use GitHub Issues in this repository

  ---

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n community node integrates with SendZen to send and receive WhatsApp messages via the WhatsApp Cloud API, enabling chatbot automation and customer care workflows.","capabilities":["Send session messages (free-form text within 24-hour window)","Send template messages with dynamic variables and media headers","Mark inbound messages as read","Show typing indicator for natural automation feel","Receive inbound WhatsApp messages via webhook trigger","Support URL previews and E.164 phone number validation","Support CTA and quick reply buttons in templates"],"authentication":"API key required (SendZen API Key stored in n8n Credentials)","commonUseCases":["Automated customer support responses","Order confirmation and shipping notifications","Appointment reminders and scheduling","Marketing campaigns and promotional messages","Two-factor authentication (2FA) codes"],"limitations":["Session messages are limited to the 24-hour customer care window","Template messages require pre-approval from WhatsApp","Webhook signature verification requires raw request body without middleware modification","Requires a connected WhatsApp Business Account (WABA) in SendZen","Inbound message handling requires webhook setup on SendZen dashboard"],"relatedNodes":["n8n-nodes-whatsapp","n8n-nodes-webhook","n8n-nodes-credentials"]}


node_type: n8n-nodes-sendzen.sendZenTrigger
package_name: n8n-nodes-sendzen
display_name: SendZen Trigger
description: Trigger when a WhatsApp incoming message is received via SendZen Services
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: sendzen-io
author_github_url: https://github.com/sendzen-io/
npm_package_name: n8n-nodes-sendzen
npm_version: 1.0.8
community_fetched_at: 2026-07-14T14:40:33.688Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  [![npm version](https://img.shields.io/npm/v/n8n-nodes-sendzen.svg?style=flat-square)](https://www.npmjs.com/package/n8n-nodes-sendzen)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](LICENSE.md)
  [![n8n](https://img.shields.io/badge/n8n-community-orange?style=flat-square)](https://n8n.io)

  # n8n-nodes-sendzen

  This is an n8n community node for integrating **SendZen** with your workflows.

  SendZen provides an API on top of the **official WhatsApp Cloud API**, so you can send messages (session + templates) and receive inbound WhatsApp messages via webhooks.

  - Website: https://www.sendzen.io
  - Docs: https://sendzen.io/docs

  ---

  ## Table of Contents

  - [Overview](#overview)
  - [Installation](#installation)
  - [Authentication](#authentication)
  - [Features](#features)
  - [How to Use the SendZen Action Node](#how-to-use-the-sendzen-action-node)
  - [How to Use the SendZen Trigger Node](#how-to-use-the-sendzen-trigger-node)
  - [Common Use Cases](#common-use-cases)
  - [Best Practices](#best-practices)
  - [Troubleshooting](#troubleshooting)
  - [Compatibility](#compatibility)
  - [Resources](#resources)
  - [Running Locally](#running-locally)
  - [Contributing](#contributing)
  - [Support](#support)
  - [License](#license)

  ---

  ## Overview

  SendZen helps developers and software platforms use WhatsApp reliably without dealing with all the Meta Cloud API complexity directly.

  With this n8n node, you can:

  - Send **session messages** (within 24-hour customer care window)
  - Send **template messages** (for business-initiated conversations)
  - Mark messages as read
  - Show typing indicator
  - Receive inbound messages via **webhook trigger**

  ---

  ## Screenshots

  ### Send Session Message

  ![SendZen Send Session Message Node in n8n](https://raw.githubusercontent.com/sendzen-io/n8n-nodes-sendzen/main/assets/Session_Message.png)

  ### Send Template Message

  ![SendZen Send Template Message Node in n8n](https://raw.githubusercontent.com/sendzen-io/n8n-nodes-sendzen/main/assets/Template_Message.png)

  ---

  ## Installation

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

  ---

  ## Authentication

  To use this node, you need a **SendZen API Key**.

  1. Sign up at https://www.sendzen.io
  2. Go to your dashboard and generate an API key (Dashboard → API Keys)
  3. Connect your WhatsApp Business Account (WABA) inside SendZen (required to send messages)

  > Note: Keep your API key secure and never commit it to code or share it publicly.

  ---

  ## Data & Security Notes

  - This node sends message content, recipient phone numbers, template names, and template variables to SendZen to deliver WhatsApp messages.
  - Store your SendZen API key only in **n8n Credentials**.
  - For inbound messages, enable **webhook signature verification** (recommended) to prevent spoofed requests.

  ---

  ## Features

  ### SendZen Action Node

  - **Send Session Message**
    - Send free-form text messages within the active 24-hour window
    - Supports URL previews and E.164 validation
  - **Send Template Message**
    - Send pre-approved templates to start conversations
    - Dynamic template + variable mapping (body, header, buttons)
    - Supports media headers (image, video, document, audio)
    - Supports CTA and quick reply buttons
  - **Mark as Read**
    - Mark inbound messages as read (useful for UX and analytics)
    - Auto-detects message identifiers when connected from the trigger
  - **Show Typing Indicator**
    - Show “Typing…” to make automations feel more natural

  ### SendZen Trigger Node

  - Receive inbound WhatsApp messages in real time via webhook
  - Outputs full message payload (text, media, location, contacts)
  - Simple webhook setup: copy URL from node → paste in SendZen dashboard

  ---

  ## How to Use the SendZen Action Node

  ### Prerequisites

  - A SendZen account
  - A connected WhatsApp Business Account (WABA) in SendZen
  - Access to n8n

  ### Setup Process

  1. **Create your SendZen API key**
     - Open SendZen dashboard
     - Go to **API Keys**
     - Copy the key and store it securely

  2. **Connect your WABA**
     - Complete the WABA connection flow in SendZen
     - Ensure at least one phone number is connected and active

  ### Integration Steps (n8n)

  1. Create a new workflow in n8n
  2. Add any trigger (Webhook, Schedule, CRM trigger, etc.)
  3. Add **SendZen** node
  4. In SendZen node:
     - Select **Credentials** → **Create New**
     - Choose **SendZen API**
     - Paste your API key
     - Save
  5. Choose an operation and fill required fields
  6. Click **Test Step**
  7. Save and activate your workflow

  ---

  ## How to Use the SendZen Trigger Node

  ### Prerequisites

  - A SendZen account
  - A connected WABA phone number
  - Access to n8n

  ### Webhook signature verification (HMAC-SHA256) — recommended

  SendZen signs every webhook payload using **HMAC-SHA256** and includes the signature in the `X-Hub-Signature-256` header in this format:

  - `X-Hub-Signature-256: sha256=<hex>`

  To enable signature verification in n8n:

  1. In the **SendZen dashboard** webhook settings, set a **Secret Key** (recommended).
  2. In n8n, create credentials:
     - Credentials type: **SendZen Webhook API**
     - Set **Secret Key** to the same value you configured in SendZen.
  3. In the **SendZen Trigger** node, select those **SendZen Webhook API** credentials.

  If credentials are set, the trigger will return **401** for missing/invalid signatures.

  Important: signature verification requires hashing the **raw request body**. Avoid any middleware/proxies that reformat/pretty-print the JSON payload. If you run n8n behind Cloudflare / nginx / API gateway, ensure it does not modify request body (no pretty-print, no re-encoding)

  ### Setup Process

  1. **Get your webhook URL from n8n**
     - Add **SendZen Trigger** node in your workflow
     - At the top of the node, find **Webhook URLs**
     - Copy the **Production URL**

  Tip: Use the **Test URL** while testing in the editor. After activating the workflow, set the **Production URL** in SendZen for live traffic.

  2. **Add webhook URL in SendZen**
     - Open SendZen dashboard webhook settings
     - Paste the Production URL
     - Save changes

  3. **Test and activate**
     - In n8n, click **Test Step**
     - Send a WhatsApp message to your connected number to verify the trigger fires
     - Save workflow and toggle **Active**

  ---

  ## Common Use Cases

  - **Lead capture + instant reply**: Trigger on inbound message, capture details, respond with next steps
  - **Order updates**: Trigger on order status change, send template message
  - **Appointment reminders**: Scheduled trigger, send template reminders
  - **Support automation**: Trigger on inbound support message, route based on keywords, reply
  - **Payment reminders**: Trigger from billing system, send WhatsApp template


    ### Example 1: New lead → WhatsApp template

    Trigger: CRM/New form submission → Send Template Message → Log result.

    ### Example 2: Inbound WhatsApp → Auto-reply + CRM

    SendZen Trigger → IF keyword contains "pricing" → Send Session Message → Create lead in CRM.

  ---

  ## Best Practices

  - Use **template messages** to start conversations (business-initiated).
  - Use **session messages** only within the active 24-hour window.
  - Keep API keys only inside **n8n Credentials**.
  - For production workflows, log failures and add retries (for example using IF + Wait + Retry patterns).
  - When using templates, prefer mapping variables explicitly so workflows remain readable.

  ---

  ## Troubleshooting

  - **401 / auth error**: Re-check API key and credential selected in the node
  - **No WABA accounts listed**: Confirm WABA is connected inside SendZen
  - **Trigger not firing**:
    - Ensure webhook URL is saved in SendZen
    - Confirm the URL is publicly reachable
    - Confirm workflow is active in n8n
  - **Template missing**: Ensure template exists and is approved in your WhatsApp Business Manager

  ---

  ## Compatibility

  - **n8n**: 1.0.0+ (tested on 1.89.2+)
  - **Node.js**: >= 18.10

  ---

  ## Resources

  - SendZen Documentation: https://sendzen.io/docs
  - WhatsApp Cloud API Reference: https://developers.facebook.com/docs/whatsapp
  - n8n Community Nodes: https://docs.n8n.io/integrations/community-nodes/

  ---

  ## Version history

  ### 1.0.1

  - **Robustness:** Added comprehensive Jest test suite for Triggers, Actions, and Template Builders.
  - **Optimization:** Reduced package size by excluding development files.

  ### 1.0.0

  - Initial release
  - Support for Session Messages, Templates, Mark as Read, Typing Indicators.
  - Webhook Trigger support.
  - Auto-discovery for WABA Accounts and Templates.

  ---

  ## Running Locally

  If you want to contribute or modify this node:

  1.  **Clone:** `git clone https://github.com/sendzen-io/n8n-nodes-sendzen.git`
  2.  **Install:** `pnpm install`
  3.  **Build:** `pnpm build`
  4.  **Test:** `pnpm test` (Runs the Jest test suite)
  5.  **Link:** Follow the [n8n custom node guide](https://docs.n8n.io/integrations/community-nodes/create/) to link `dist` to your local n8n instance.

  ---

  ## Contributing

  We welcome contributions! Please follow these steps:

  1.  Fork the repository.
  2.  Create a feature branch.
  3.  **Run Tests:** Ensure `pnpm test` passes.
  4.  Submit a Pull Request.

  ## Support

  - Email: [milan@sendzen.io](mailto:milan@sendzen.io)
  - Issues: use GitHub Issues in this repository

  ---

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n community node triggers workflows when an incoming WhatsApp message is received via SendZen Services, enabling real-time automation for customer interactions.","capabilities":["Receive inbound WhatsApp messages via webhook trigger","Output full message payload including text, media, location, and contacts","Support webhook signature verification (HMAC-SHA256) to prevent spoofed requests","Supports dynamic template variable mapping","Supports media headers (image, video, document, audio)","Supports CTA and quick reply buttons","Supports URL previews and E.164 validation"],"authentication":"API Key required (SendZen API Key stored in n8n Credentials)","commonUseCases":["Automated customer support responses","Order status notifications","Appointment reminders","Two-factor authentication (2FA) verification","Lead qualification workflows"],"limitations":["Session messages are limited to a 24-hour customer care window","Template messages require pre-approval in the WhatsApp Business API","Signature verification requires raw request body without modification by middleware/proxies","Does not support direct Meta Cloud API integration; relies on SendZen abstraction layer"],"relatedNodes":["Webhook Trigger","SendZen Action Node","n8n-nodes-sendzen.SendZenTemplateMessage","n8n-nodes-sendzen.SendZenSessionMessage"]}


node_type: @minotaur_sales/n8n-nodes-minotaur-sales.minotaur
package_name: @minotaur_sales/n8n-nodes-minotaur-sales
display_name: Minotaur API
description: Interact with the Minotaur API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: minotaurs_mike
author_github_url: https://github.com/MINOTAUR-LLC/n8n-nodes-minotaur-sales.git
npm_package_name: @minotaur_sales/n8n-nodes-minotaur-sales
npm_version: 0.2.5
community_fetched_at: 2026-07-14T14:40:33.689Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "contact",
      "options": [
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Company",
          "value": "company"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get List of Contacts",
          "value": "list",
          "routing": {
            "request": {
              "url": "=/api/ext/contacts/list",
              "method": "POST"
            }
          },
          "description": "Gets the list of all Contacts"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get List of Companies",
          "value": "list",
          "routing": {
            "request": {
              "url": "=/api/ext/company/list",
              "method": "POST"
            }
          },
          "description": "Gets the list of all Companies"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "company"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get List of Contacts",
      "value": "list",
      "routing": {
        "request": {
          "url": "=/api/ext/contacts/list",
          "method": "POST"
        }
      },
      "description": "Gets the list of all Contacts",
      "resource": "contact"
    },
    {
      "name": "Get List of Companies",
      "value": "list",
      "routing": {
        "request": {
          "url": "=/api/ext/company/list",
          "method": "POST"
        }
      },
      "description": "Gets the list of all Companies",
      "resource": "company"
    }
  ]

npm_readme:
  # n8n-nodes-minotaur-sales

  This is an n8n community node. It lets you use _app/service name_ in your n8n workflows.

  _App/service name_ is _one or two sentences describing the service this node integrates with_.

  [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

  _List the operations supported by your node._

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

  ## Compatibility

  _State the minimum n8n version, as well as which versions you test against. You can also include any known version incompatibility issues._

  ## Usage

  _This is an optional section. Use it to help users with any difficult or confusing aspects of the node._

  _By the time users are looking for community nodes, they probably already know n8n basics. But if you expect new users, you can link to the [Try it out](https://docs.n8n.io/try-it-out/) documentation to help them get started._

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * _Link to app/service documentation._

  ## Version history

  _This is another optional section. If your node has multiple versions, include a short description of available versions and what changed, as well as any compatibility impact._

ai_documentation_summary:
  {"purpose":"This n8n community node enables workflow automation by allowing interaction with the Minotaur API.","capabilities":["API request/response handling","Integration with Minotaur sales platform","Workflow automation via n8n"],"authentication":"Not specified in README","commonUseCases":["Automating sales data retrieval","Integrating Minotaur services into n8n workflows"],"limitations":["Authentication method not documented","No specific operation details provided","No usage examples or compatibility information available"],"relatedNodes":["n8n HTTP Request node","n8n Community Nodes"]}


node_type: @allscreenshots/n8n-nodes-allscreenshots.allscreenshots
package_name: @allscreenshots/n8n-nodes-allscreenshots
display_name: Allscreenshots
description: Capture and manage website screenshots with Allscreenshots API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: panilya
author_github_url: https://github.com/allscreenshots/n8n-nodes-allscreenshots.git
npm_package_name: @allscreenshots/n8n-nodes-allscreenshots
npm_version: 1.1.1
community_fetched_at: 2026-07-14T14:40:33.690Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "screenshot",
      "options": [
        {
          "name": "Screenshot",
          "value": "screenshot",
          "description": "Capture screenshots of webpages"
        },
        {
          "name": "Async Job",
          "value": "asyncJob",
          "description": "Manage asynchronous screenshot jobs"
        },
        {
          "name": "Bulk Screenshot",
          "value": "bulk",
          "description": "Capture multiple screenshots at once (up to 100 URLs)"
        },
        {
          "name": "Compose",
          "value": "compose",
          "description": "Combine multiple screenshots into one image"
        },
        {
          "name": "Usage",
          "value": "usage",
          "description": "Check API usage and quota"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "capture",
      "options": [
        {
          "name": "Capture",
          "value": "capture",
          "action": "Capture a screenshot",
          "description": "Take a screenshot of a webpage (synchronous)"
        },
        {
          "name": "Capture Async",
          "value": "captureAsync",
          "action": "Start async screenshot capture",
          "description": "Start an async screenshot capture job"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "screenshot"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getStatus",
      "options": [
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get job status",
          "description": "Get the status of an async screenshot job"
        },
        {
          "name": "Get Result",
          "value": "getResult",
          "action": "Get job result",
          "description": "Download the result of a completed job"
        },
        {
          "name": "Cancel",
          "value": "cancel",
          "action": "Cancel a job",
          "description": "Cancel a pending or running job"
        },
        {
          "name": "List All",
          "value": "list",
          "action": "List all jobs",
          "description": "List all screenshot jobs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "asyncJob"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create bulk screenshot job",
          "description": "Create a bulk screenshot job (up to 100 URLs)"
        },
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get bulk job status",
          "description": "Get the status of a bulk job"
        },
        {
          "name": "List All",
          "value": "list",
          "action": "List bulk jobs",
          "description": "List all bulk jobs"
        },
        {
          "name": "Cancel",
          "value": "cancel",
          "action": "Cancel bulk job",
          "description": "Cancel a bulk job"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "bulk"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create composed screenshot",
          "description": "Compose multiple screenshots into a single image"
        },
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get compose job status",
          "description": "Get the status of a compose job"
        },
        {
          "name": "List Jobs",
          "value": "list",
          "action": "List compose jobs",
          "description": "List all compose jobs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "compose"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getQuota",
      "options": [
        {
          "name": "Get Full Stats",
          "value": "getStats",
          "action": "Get usage statistics",
          "description": "Get complete usage statistics including history"
        },
        {
          "name": "Get Quota",
          "value": "getQuota",
          "action": "Get quota status",
          "description": "Get current quota status (screenshots and bandwidth)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "usage"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Capture",
      "value": "capture",
      "action": "Capture a screenshot",
      "description": "Take a screenshot of a webpage (synchronous)",
      "resource": "screenshot"
    },
    {
      "name": "Capture Async",
      "value": "captureAsync",
      "action": "Start async screenshot capture",
      "description": "Start an async screenshot capture job",
      "resource": "screenshot"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get job status",
      "description": "Get the status of an async screenshot job",
      "resource": "asyncJob"
    },
    {
      "name": "Get Result",
      "value": "getResult",
      "action": "Get job result",
      "description": "Download the result of a completed job",
      "resource": "asyncJob"
    },
    {
      "name": "Cancel",
      "value": "cancel",
      "action": "Cancel a job",
      "description": "Cancel a pending or running job",
      "resource": "asyncJob"
    },
    {
      "name": "List All",
      "value": "list",
      "action": "List all jobs",
      "description": "List all screenshot jobs",
      "resource": "asyncJob"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create bulk screenshot job",
      "description": "Create a bulk screenshot job (up to 100 URLs)",
      "resource": "bulk"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get bulk job status",
      "description": "Get the status of a bulk job",
      "resource": "bulk"
    },
    {
      "name": "List All",
      "value": "list",
      "action": "List bulk jobs",
      "description": "List all bulk jobs",
      "resource": "bulk"
    },
    {
      "name": "Cancel",
      "value": "cancel",
      "action": "Cancel bulk job",
      "description": "Cancel a bulk job",
      "resource": "bulk"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create composed screenshot",
      "description": "Compose multiple screenshots into a single image",
      "resource": "compose"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get compose job status",
      "description": "Get the status of a compose job",
      "resource": "compose"
    },
    {
      "name": "List Jobs",
      "value": "list",
      "action": "List compose jobs",
      "description": "List all compose jobs",
      "resource": "compose"
    },
    {
      "name": "Get Full Stats",
      "value": "getStats",
      "action": "Get usage statistics",
      "description": "Get complete usage statistics including history",
      "resource": "usage"
    },
    {
      "name": "Get Quota",
      "value": "getQuota",
      "action": "Get quota status",
      "description": "Get current quota status (screenshots and bandwidth)",
      "resource": "usage"
    }
  ]

npm_readme:
  # n8n-nodes-allscreenshots

  This is an n8n community node for [Allscreenshots](https://allscreenshots.com) - a powerful API for capturing and managing website screenshots at scale.

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

  ## Installation

  ### Community Nodes (Recommended)

  1. Go to **Settings > Community Nodes**
  2. Click **Install**
  3. Enter `@allscreenshots/n8n-nodes-allscreenshots`
  4. Click **Install**

  ### Manual Installation

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

  ## Authentication

  1. Sign up at [allscreenshots.com](https://allscreenshots.com)
  2. Go to **Dashboard > API Keys**
  3. Create a new API key
  4. In n8n, go to **Settings > Credentials > Add Credential**
  5. Search for "Allscreenshots API"
  6. Enter your API key

  ## Nodes

  This package includes two nodes:

  ### Allscreenshots

  The main node for capturing and managing screenshots.

  #### Resources

  | Resource | Description |
  |----------|-------------|
  | **Screenshot** | Capture screenshots synchronously or asynchronously |
  | **Async Job** | Manage async screenshot jobs (status, result, cancel) |
  | **Bulk Screenshot** | Capture up to 100 URLs in a single operation |
  | **Compose** | Combine multiple screenshots into one image |
  | **Usage** | Check API usage and quota status |

  ### Allscreenshots Trigger

  Webhook receiver node for notifications when jobs complete.

  Allscreenshots does not register webhooks via the API — instead, each request carries
  its own `webhookUrl`. To use this trigger:

  1. Add the **Allscreenshots Trigger** node and copy its **Production URL**.
  2. Paste that URL into the **Webhook URL** option of your Screenshot (async), Bulk,
     Compose, or Schedule request.
  3. (Optional) Set the same **Webhook Secret** on both the request and the trigger to
     verify the `X-Webhook-Signature` header.

  #### Supported Events

  - Screenshot Completed (`JOB_COMPLETED`)
  - Screenshot Failed (`JOB_FAILED`)
  - Bulk Completed (`BULK_COMPLETED`)
  - Schedule Executed (`SCHEDULE_EXECUTED`)
  - Schedule Failed (`SCHEDULE_FAILED`)

  ## Operations

  ### Screenshot

  | Operation | Description |
  |-----------|-------------|
  | **Capture** | Take a screenshot synchronously (returns image) |
  | **Capture Async** | Start an async capture job (returns job ID) |

  **Key Options:**
  - Device presets (iPhone, Pixel, Galaxy, iPad, Surface, social-media sizes)
  - Custom viewport (width, height, scale)
  - Output format (PNG, JPEG, WebP, PDF)
  - Response type (binary file, base64 JSON, or hosted URL)
  - Full page capture with tuning (native/stitch, freeze fixed, max height/sections)
  - Element selector
  - Wait options (delay, selector, network idle)
  - Page modifications (dark mode, custom CSS, hide elements)
  - Ad & cookie banner blocking, stealth mode
  - **Page actions** — click, type, press, hover, select, scroll, wait before capture
  - **Outputs** — produce screenshot, PDF, cleaned HTML, Markdown, or structured JSON
    extraction from a single capture
  - **Session cookies** — authenticate captures by injecting cookies

  ### Async Job

  | Operation | Description |
  |-----------|-------------|
  | **Get Status** | Check job completion status |
  | **Get Result** | Download the screenshot |
  | **Cancel** | Cancel a pending job |
  | **List All** | List all jobs with optional filters |

  ### Bulk Screenshot

  | Operation | Description |
  |-----------|-------------|
  | **Create** | Start a bulk job (up to 100 URLs) |
  | **Get Status** | Check bulk job progress |
  | **List All** | List all bulk jobs |
  | **Cancel** | Cancel a bulk job |

  Bulk **Create** supports full default options (device, viewport, format, wait, blocking,
  stealth, page actions, outputs) plus **per-URL overrides** matched by URL, and webhook
  notifications.

  ### Compose

  | Operation | Description |
  |-----------|-------------|
  | **Create** | Compose multiple screenshots into one |
  | **Get Status** | Check compose job status |
  | **List Jobs** | List all compose jobs |

  **Source modes:** multiple URLs, or a single URL captured across several **variants**
  (viewports/devices) for responsive comparisons.

  **Layout Options:**
  - Auto (intelligent layout selection)
  - Grid
  - Horizontal / Vertical
  - Masonry (Pinterest-style)
  - Mondrian (artistic layout)
  - Partitioning (space-filling)

  **Styling:** columns, spacing, padding, background, alignment, max width/height,
  thumbnail width, and per-screenshot labels.

  ### Usage

  | Operation | Description |
  |-----------|-------------|
  | **Get Full Stats** | Complete usage statistics with history |
  | **Get Quota** | Current quota status |

  ## Usage Examples

  ### Basic Screenshot

  1. Add an **Allscreenshots** node
  2. Select Resource: **Screenshot**
  3. Select Operation: **Capture**
  4. Enter the URL to capture
  5. Configure options as needed
  6. Execute

  ### Bulk Screenshots with Notifications

  1. Add an **Allscreenshots Trigger** node with Event **Bulk Completed**, and copy its
     Production URL.
  2. Add an **Allscreenshots** node
     - Resource: **Bulk Screenshot**
     - Operation: **Create**
     - Enter URLs (one per line)
     - Under **Webhook Options**, paste the trigger's Production URL into **Webhook URL**
  3. Connect the trigger node to your notification service (Slack, Email, etc.)

  The trigger fires when Allscreenshots POSTs the completion event to that URL.

  ### Compare Multiple Device Views

  1. Add an **Allscreenshots** node
     - Resource: **Compose**
     - Operation: **Create**
     - Enter the same URL multiple times
     - Layout: **Grid**
  2. Configure different device presets for each

  ## Device Presets

  The node includes the device presets supported by the API:

  **Mobile:**
  - iPhone SE, XR, 12, 12 Pro Max, 14, 14 Pro Max, 15, 15 Pro Max
  - Samsung Galaxy S21, S23
  - Google Pixel 5, 7, 7 Pro

  **Tablet:**
  - iPad, iPad Mini, iPad Pro 11", iPad Pro 12.9"
  - Galaxy Tab S7, Surface Pro 7

  **Desktop / Laptop:**
  - Desktop HD (1920×1080), Desktop Large (2560×1440), Desktop Retina
  - Laptop (1440×900), Laptop Retina

  **Social media:**
  - Facebook OG, Twitter Card, LinkedIn Post
  - Instagram Square / Portrait / Story

  ## Development

  For local development, testing, and publishing instructions, see [CONTRIBUTING.md](CONTRIBUTING.md).

  ## Resources

  - [Allscreenshots Website](https://allscreenshots.com)
  - [API Documentation](https://docs.allscreenshots.com)
  - [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Captures and manages website screenshots at scale using the Allscreenshots API, supporting synchronous/asynchronous captures, bulk operations, and image composition.","capabilities":["Capture screenshots synchronously","Start asynchronous screenshot jobs","Capture up to 100 URLs in a single bulk operation","Combine multiple screenshots into one image using various layouts (Auto, Grid, Masonry, Mondrian)","Check job status and download results","Cancel pending jobs","List all jobs with optional filters","Check API usage and quota status","Support device presets (iPhone, Galaxy, iPad, MacBook, Desktop)","Custom viewport settings (width, height, scale)"],"authentication":"API key required","commonUseCases":["Website screenshot monitoring","Product page visual inventory","Bulk screenshot generation for marketing","Cross-device comparison workflows","Screenshot composition for galleries"],"limitations":["Bulk operations limited to 100 URLs per job","Async jobs require separate trigger node for completion events","No mention of rate limiting beyond quota checks"],"relatedNodes":["Allscreenshots Trigger","Manual Trigger","Schedule Trigger","Slack Webhook","Email Webhook"]}


node_type: @allscreenshots/n8n-nodes-allscreenshots.allscreenshotsTrigger
package_name: @allscreenshots/n8n-nodes-allscreenshots
display_name: Allscreenshots Trigger
description: Receive webhook notifications from Allscreenshots when jobs complete
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: panilya
author_github_url: https://github.com/allscreenshots/n8n-nodes-allscreenshots.git
npm_package_name: @allscreenshots/n8n-nodes-allscreenshots
npm_version: 1.1.1
community_fetched_at: 2026-07-14T14:40:33.691Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-allscreenshots

  This is an n8n community node for [Allscreenshots](https://allscreenshots.com) - a powerful API for capturing and managing website screenshots at scale.

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

  ## Installation

  ### Community Nodes (Recommended)

  1. Go to **Settings > Community Nodes**
  2. Click **Install**
  3. Enter `@allscreenshots/n8n-nodes-allscreenshots`
  4. Click **Install**

  ### Manual Installation

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

  ## Authentication

  1. Sign up at [allscreenshots.com](https://allscreenshots.com)
  2. Go to **Dashboard > API Keys**
  3. Create a new API key
  4. In n8n, go to **Settings > Credentials > Add Credential**
  5. Search for "Allscreenshots API"
  6. Enter your API key

  ## Nodes

  This package includes two nodes:

  ### Allscreenshots

  The main node for capturing and managing screenshots.

  #### Resources

  | Resource | Description |
  |----------|-------------|
  | **Screenshot** | Capture screenshots synchronously or asynchronously |
  | **Async Job** | Manage async screenshot jobs (status, result, cancel) |
  | **Bulk Screenshot** | Capture up to 100 URLs in a single operation |
  | **Compose** | Combine multiple screenshots into one image |
  | **Usage** | Check API usage and quota status |

  ### Allscreenshots Trigger

  Webhook receiver node for notifications when jobs complete.

  Allscreenshots does not register webhooks via the API — instead, each request carries
  its own `webhookUrl`. To use this trigger:

  1. Add the **Allscreenshots Trigger** node and copy its **Production URL**.
  2. Paste that URL into the **Webhook URL** option of your Screenshot (async), Bulk,
     Compose, or Schedule request.
  3. (Optional) Set the same **Webhook Secret** on both the request and the trigger to
     verify the `X-Webhook-Signature` header.

  #### Supported Events

  - Screenshot Completed (`JOB_COMPLETED`)
  - Screenshot Failed (`JOB_FAILED`)
  - Bulk Completed (`BULK_COMPLETED`)
  - Schedule Executed (`SCHEDULE_EXECUTED`)
  - Schedule Failed (`SCHEDULE_FAILED`)

  ## Operations

  ### Screenshot

  | Operation | Description |
  |-----------|-------------|
  | **Capture** | Take a screenshot synchronously (returns image) |
  | **Capture Async** | Start an async capture job (returns job ID) |

  **Key Options:**
  - Device presets (iPhone, Pixel, Galaxy, iPad, Surface, social-media sizes)
  - Custom viewport (width, height, scale)
  - Output format (PNG, JPEG, WebP, PDF)
  - Response type (binary file, base64 JSON, or hosted URL)
  - Full page capture with tuning (native/stitch, freeze fixed, max height/sections)
  - Element selector
  - Wait options (delay, selector, network idle)
  - Page modifications (dark mode, custom CSS, hide elements)
  - Ad & cookie banner blocking, stealth mode
  - **Page actions** — click, type, press, hover, select, scroll, wait before capture
  - **Outputs** — produce screenshot, PDF, cleaned HTML, Markdown, or structured JSON
    extraction from a single capture
  - **Session cookies** — authenticate captures by injecting cookies

  ### Async Job

  | Operation | Description |
  |-----------|-------------|
  | **Get Status** | Check job completion status |
  | **Get Result** | Download the screenshot |
  | **Cancel** | Cancel a pending job |
  | **List All** | List all jobs with optional filters |

  ### Bulk Screenshot

  | Operation | Description |
  |-----------|-------------|
  | **Create** | Start a bulk job (up to 100 URLs) |
  | **Get Status** | Check bulk job progress |
  | **List All** | List all bulk jobs |
  | **Cancel** | Cancel a bulk job |

  Bulk **Create** supports full default options (device, viewport, format, wait, blocking,
  stealth, page actions, outputs) plus **per-URL overrides** matched by URL, and webhook
  notifications.

  ### Compose

  | Operation | Description |
  |-----------|-------------|
  | **Create** | Compose multiple screenshots into one |
  | **Get Status** | Check compose job status |
  | **List Jobs** | List all compose jobs |

  **Source modes:** multiple URLs, or a single URL captured across several **variants**
  (viewports/devices) for responsive comparisons.

  **Layout Options:**
  - Auto (intelligent layout selection)
  - Grid
  - Horizontal / Vertical
  - Masonry (Pinterest-style)
  - Mondrian (artistic layout)
  - Partitioning (space-filling)

  **Styling:** columns, spacing, padding, background, alignment, max width/height,
  thumbnail width, and per-screenshot labels.

  ### Usage

  | Operation | Description |
  |-----------|-------------|
  | **Get Full Stats** | Complete usage statistics with history |
  | **Get Quota** | Current quota status |

  ## Usage Examples

  ### Basic Screenshot

  1. Add an **Allscreenshots** node
  2. Select Resource: **Screenshot**
  3. Select Operation: **Capture**
  4. Enter the URL to capture
  5. Configure options as needed
  6. Execute

  ### Bulk Screenshots with Notifications

  1. Add an **Allscreenshots Trigger** node with Event **Bulk Completed**, and copy its
     Production URL.
  2. Add an **Allscreenshots** node
     - Resource: **Bulk Screenshot**
     - Operation: **Create**
     - Enter URLs (one per line)
     - Under **Webhook Options**, paste the trigger's Production URL into **Webhook URL**
  3. Connect the trigger node to your notification service (Slack, Email, etc.)

  The trigger fires when Allscreenshots POSTs the completion event to that URL.

  ### Compare Multiple Device Views

  1. Add an **Allscreenshots** node
     - Resource: **Compose**
     - Operation: **Create**
     - Enter the same URL multiple times
     - Layout: **Grid**
  2. Configure different device presets for each

  ## Device Presets

  The node includes the device presets supported by the API:

  **Mobile:**
  - iPhone SE, XR, 12, 12 Pro Max, 14, 14 Pro Max, 15, 15 Pro Max
  - Samsung Galaxy S21, S23
  - Google Pixel 5, 7, 7 Pro

  **Tablet:**
  - iPad, iPad Mini, iPad Pro 11", iPad Pro 12.9"
  - Galaxy Tab S7, Surface Pro 7

  **Desktop / Laptop:**
  - Desktop HD (1920×1080), Desktop Large (2560×1440), Desktop Retina
  - Laptop (1440×900), Laptop Retina

  **Social media:**
  - Facebook OG, Twitter Card, LinkedIn Post
  - Instagram Square / Portrait / Story

  ## Development

  For local development, testing, and publishing instructions, see [CONTRIBUTING.md](CONTRIBUTING.md).

  ## Resources

  - [Allscreenshots Website](https://allscreenshots.com)
  - [API Documentation](https://docs.allscreenshots.com)
  - [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"The Allscreenshots Trigger node receives webhook notifications from Allscreenshots when specific screenshot-related events occur, enabling automated workflows based on capture status.","capabilities":["Receives webhook notifications for Screenshot Completed events","Receives webhook notifications for Screenshot Failed events","Receives webhook notifications for Bulk Job Completed events","Receives webhook notifications for Compose Completed events","Triggers downstream actions when screenshot jobs finish or fail"],"authentication":"API key required (configured via n8n Credentials with 'Allscreenshots API' type)","commonUseCases":["Automated notification when a website screenshot is successfully captured","Alerting on failed screenshot captures for error monitoring","Triggering Slack/Email notifications upon bulk screenshot job completion","Automated social media posting when compose jobs finish"],"limitations":["Only supports webhook-based triggering; no direct screenshot capture functionality","Limited to predefined event types (Completed, Failed, Bulk Job, Compose)"],"relatedNodes":["Allscreenshots","Manual Trigger","Schedule Trigger","Slack","Email"]}


