# nodes

node_type: n8n-nodes-gleanclient.gleanClient
package_name: n8n-nodes-gleanclient
display_name: Glean
description: Retrieve results from the Glean index for the given query and filters
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: djuang1
author_github_url: https://github.com/djuang1/
npm_package_name: n8n-nodes-gleanclient
npm_version: 0.2.0
community_fetched_at: 2026-03-25T21:19:40.754Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "searchGlean",
      "options": [
        {
          "name": "Search Glean",
          "value": "searchGlean"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "post",
      "options": [
        {
          "name": "Search Glean",
          "value": "post",
          "action": "Search",
          "routing": {
            "request": {
              "url": "/rest/api/v1/search",
              "body": {
                "query": "={{$parameter[\"query\"]}}",
                "pageSize": 10,
                "trackingToken": "1"
              },
              "method": "POST"
            }
          },
          "description": "Retrieve results from the index for the given query"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "searchGlean"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"post","name":"Search Glean","description":"Retrieve results from the index for the given query","resource":"searchGlean"}]

npm_readme:
  # n8n-nodes-gleanclient

  This is an n8n community node. It lets you use the [Glean Client API](https://developers.glean.com/api/client-api/search/search) in your n8n workflows.

  The Glean Work AI platform lets you embed enterprise search, chat, and agent capabilities into your applications while honoring source‑system permissions by default.

  [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

  This node allows you to run the search endpoint against your Glean instance.

  ## Credentials

  A Glean account and an API token with the Search scope is required. 

  ## Compatibility

  Tested locally against n8n 1.105.4

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Glean Developers - Client API Reference - Search](https://developers.glean.com/api/client-api/search/search)

  ## Version history

  * August 8, 2025 - 0.1.2 - First.
  * August 8, 2025 - 0.1.3 - Fixed AI Agent tool usage.
  * August 9, 2025 - 0.1.4 - Updated names and added credential test.
  * August 9, 2025 - 0.1.5 - Fixed query body to pass the correct value.

ai_documentation_summary:
  {"purpose":"Retrieves search results from a Glean index using the Glean Client API within n8n workflows.","capabilities":["Execute search queries against Glean instances","Apply filters to search results","Retrieve enterprise search data","Support AI Agent tool usage"],"authentication":"API token required with Search scope","commonUseCases":["Enterprise search integration","Embedding search capabilities into applications","Querying Glean-indexed documents"],"limitations":["Requires a Glean account with appropriate API token","Search scope permission is mandatory"],"relatedNodes":["n8n-nodes-gleanclient.gleanClient"]}


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

updated_at: 2026-03-25 21:19:40
author_name: geocapture
author_github_url: https://github.com/geocapture/n8n-nodes-geocapture.git
npm_package_name: @geocapture/n8n-nodes-geocapture
npm_version: 0.1.5
community_fetched_at: 2026-03-25T21:19:40.754Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "project",
      "options": [
        {
          "name": "Project",
          "value": "project"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new project",
          "description": "Create a new project"
        },
        {
          "name": "Create or Update",
          "value": "upsert",
          "action": "Create or update a project",
          "description": "Create a new project, or update the current one if it already exists (upsert)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"create","name":"Create","description":"Create a new project","resource":"project"},{"operation":"upsert","name":"Create or Update","description":"Create a new project, or update the current one if it already exists (upsert)","resource":"project"}]

npm_readme:
  # @geocapture/n8n-nodes-geocapture

  This node lets you use the geoCapture API in your n8n workflows.

  ## Installation

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

  ## Operations

  - Projects
    - Create a new project
    - Create or Update a project
    - Watch for Project Events (Create, Update, Delete)

  ## Credentials

  You can use the geoCapture API Token to use this node.

  1. Go to the [API Settings](https://app.geocapture.net/apis) to create a new API Token.
  2. Add a Service to the API Token.
  3. Search for the "n8n" Service and click "Add"
  4. Save the API Token.
  5. Copy the API Token.

  ## Compatibility

  Compatible with n8n@1.60.0 or later

ai_documentation_summary:
  {"purpose":"This n8n node enables interaction with the geoCapture API to manage projects and monitor project events within automated workflows.","capabilities":["Create a new project","Update an existing project","Watch for project events (Create, Update, Delete)","Retrieve project data via API"],"authentication":"API Token required (configured via n8n credentials with geoCapture API Token)","commonUseCases":["Automating project lifecycle management","Monitoring project status changes in real-time","Integrating geoCapture services into n8n workflows"],"limitations":["Requires n8n version 1.60.0 or later","Requires manual setup of API Token and service configuration in geoCapture dashboard"],"relatedNodes":[]}


node_type: @seclore/n8n-nodes-seclore.secloreProtect
package_name: @seclore/n8n-nodes-seclore
display_name: Seclore
description: Protect files using Seclore DRM
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: seclore_admin
author_github_url: https://github.com/seclore-tech/n8n-nodes-seclore.git
npm_package_name: @seclore/n8n-nodes-seclore
npm_version: 1.0.8
community_fetched_at: 2026-03-25T21:19:40.755Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "drmProtection",
      "options": [
        {
          "name": "DRM Protection",
          "value": "drmProtection",
          "description": "DRM file protection operations"
        },
        {
          "name": "DRM Unprotection",
          "value": "drmUnprotection",
          "description": "DRM file unprotection operations"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "protectWithHotFolder",
      "options": [
        {
          "name": "Protect Using Policy",
          "value": "protectWithHotFolder",
          "action": "Protect file using policy",
          "description": "Protect a file using HotFolder ID configuration"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "drmProtection"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "unprotect",
      "options": [
        {
          "name": "Unprotect",
          "value": "unprotect",
          "action": "Unprotect file",
          "description": "Unprotect a protected file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "drmUnprotection"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"protectWithHotFolder","name":"Protect Using Policy","description":"Protect a file using HotFolder ID configuration","resource":"drmProtection"},{"operation":"unprotect","name":"Unprotect","description":"Unprotect a protected file","resource":"drmUnprotection"}]

npm_readme:
  # n8n-nodes-seclore

  This is an n8n community node. It lets you use Seclore DRM Server in your n8n workflows.

  [Seclore](https://www.seclore.com) is a leading data-centric security platform that provides enterprise-grade Digital Rights Management (DRM) capabilities to protect sensitive files and documents throughout their lifecycle.

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

  Use `n8n-nodes-seclore` as the package name.

  ## Operations

  This node supports the following operations with Seclore DRM Server:

  ### DRM Protection
  #### Protect using Policy
  - **Description**: Protects files using Seclore's HotFolder ID configuration and policy-based protection
  - **Required Parameters**:
    - **HotFolder ID**: The ID of the HotFolder configuration to use for protection
    - **Input Binary Property**: Name of the binary property containing the file to protect (default: 'data')
  - **Output**: Protected file with DRM protection applied according to the specified policy


  ### DRM Unprotection
  #### Unprotect
  - **Description**: Removes DRM protection from Seclore-protected files
  - **Required Parameters**:
    - **Input Binary Property**: Name of the binary property containing the protected file (default: 'data')
  - **Output**: Unprotected original file content


  ## Credentials

  To use this node, you need to authenticate with your Seclore DRM Server. The following credentials are required:

  ### Prerequisites
  - Access to a Seclore DRM Server instance
  - Valid tenant credentials (Tenant ID and Tenant Secret)
  - Appropriate permissions for file protection/unprotection operations

  ### Authentication Setup
  1. **Base URL**: The base URL of your Seclore DRM Server (e.g., `https://api.seclore.com`)
  2. **Tenant ID**: Your unique Seclore tenant identifier
  3. **Tenant Secret**: Your tenant's secret key for API authentication

  ### Configuration Steps
  1. In n8n, go to **Credentials** → **Create New**
  2. Search for "Seclore API" and select it
  3. Fill in your Seclore DRM Server details:
     - **Base URL**: Enter your Seclore DRM Server base URL
     - **Tenant ID**: Provide your unique tenant identifier
     - **Tenant Secret**: Enter your tenant's secret key (will be masked for security)
  4. Test the connection to ensure credentials are valid (tests against `/seclore/drm/1.0/auth/login` endpoint)
  5. Save the credentials for use in your workflows

  ## Compatibility

  - **Minimum n8n version**: 1.0.0
  - **Tested with n8n versions**: 1.0.0+
  - **Node.js version**: 18.x or higher
  - **Seclore API version**: Compatible with Seclore DRM API v1.0

  ## Usage

  ### Basic Workflow Examples

  #### Protecting Files with Policy
  1. Use a trigger node to receive files (HTTP Request, File Trigger, etc.)
  2. Add the **Seclore** node to your workflow
  3. Configure the node:
     - **Resource**: Select "DRM Protection"
     - **Operation**: Select "Protect using Policy"
     - **HotFolder ID**: Enter your HotFolder configuration ID
     - **Input Binary Property**: Specify the binary property name (default: 'data')
  4. Configure your Seclore API credentials
  5. The node will return the protected file with DRM encryption applied according to your policy

  #### Unprotecting Files
  1. Receive protected Seclore files in your workflow
  2. Add the **Seclore** node to your workflow
  3. Configure the node:
     - **Resource**: Select "DRM Unprotection"
     - **Operation**: Select "Unprotect"
     - **Input Binary Property**: Specify the binary property containing the protected file (default: 'data')
  4. Configure your Seclore API credentials
  5. The node will return the original unprotected file content

  ### Important Notes
  - Ensure your Seclore DRM Server is accessible from your n8n instance
  - File operations may take time depending on file size and server performance
  - Always handle errors appropriately in your workflows
  - Protected files can only be unprotected by authorized users with proper credentials
  - HotFolder ID must be configured in your Seclore Policy Server before using protection operations
  - The node supports binary data processing for both input and output files

  ### Error Handling
  The node includes comprehensive error handling and logging:
  - Connection failures to Seclore server
  - Authentication errors
  - File processing errors
  - Automatic cleanup of temporary files

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Seclore Official Documentation](https://docs.seclore.com/)
  * [Seclore Support](https://support.seclore.com/)

  ## License

  Refer the [LICENSE.md](LICENSE.md) file for details.

  ## Support

  For issues related to this n8n node:
  - Create an issue in this repository
  - Contact: support@seclore.com

  For Seclore platform support:
  - Visit [Seclore Support Portal](https://support.seclore.com/)
  - Check [Seclore Documentation](https://docs.seclore.com/)

ai_documentation_summary:
  {"purpose":"This n8n community node enables protection and unprotection of files using Seclore DRM Server, allowing secure handling of sensitive documents within automated workflows.","capabilities":["Protect files using Seclore DRM with policy-based HotFolder configuration","Unprotect files to retrieve original content from Seclore-protected files","Process binary data for input and output files","Authenticate with Seclore DRM Server via Base URL, Tenant ID, and Tenant Secret","Handle errors including connection failures, authentication errors, and file processing issues"],"authentication":"API key required (Tenant ID and Tenant Secret)","commonUseCases":["Securing sensitive documents in automated workflows","Protecting files before distribution or storage","Removing DRM restrictions from previously protected files","Integrating with file-based triggers or HTTP requests for secure file handling"],"limitations":["Requires access to a Seclore DRM Server instance","HotFolder ID must be pre-configured in the Seclore Policy Server","Protected files can only be unprotected by authorized users with proper credentials","File operations may experience latency based on file size and server performance","Requires n8n version 1.0.0+ and Node.js 18.x or higher"],"relatedNodes":["HTTP Request","File Trigger","Binary File"]}


node_type: n8n-nodes-supadata.supadata
package_name: n8n-nodes-supadata
display_name: Supadata
description: Access Supadata API to fetch video metadata, transcripts, and web data from multiple platforms
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: rafalzawadzki
author_github_url: https://github.com/supadata-ai/
npm_package_name: n8n-nodes-supadata
npm_version: 0.5.1
community_fetched_at: 2026-03-25T21:19:40.756Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "media",
      "options": [
        {
          "name": "Media",
          "value": "media"
        },
        {
          "name": "YouTube",
          "value": "youtube"
        },
        {
          "name": "Web",
          "value": "webScrape"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMetadata",
      "options": [
        {
          "name": "Extract Structured Data",
          "value": "extractData",
          "action": "Extract structured data from a video",
          "description": "Extract structured data from a video using AI"
        },
        {
          "name": "Get Metadata",
          "value": "getMetadata",
          "action": "Get metadata",
          "description": "Get metadata of a video from multiple platforms (YouTube, TikTok, Instagram, Twitter)"
        },
        {
          "name": "Get Transcript",
          "value": "getTranscript",
          "action": "Get transcript",
          "description": "Get the transcript of a video from multiple platforms (YouTube, TikTok, etc.)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "media"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getChannel",
      "options": [
        {
          "name": "Get Channel",
          "value": "getChannel",
          "action": "Get channel details",
          "description": "Get details of a YouTube channel"
        },
        {
          "name": "Get Channel Videos",
          "value": "getChannelVideos",
          "action": "Get channel videos",
          "description": "Get videos of a YouTube channel"
        },
        {
          "name": "Get Playlist",
          "value": "getPlaylist",
          "action": "Get playlist details",
          "description": "Get details of a YouTube playlist"
        },
        {
          "name": "Get Playlist Videos",
          "value": "getPlaylistVideos",
          "action": "Get playlist videos",
          "description": "Get videos of a YouTube playlist"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "youtube"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scrapeUrl",
      "options": [
        {
          "name": "Scrape URL",
          "value": "scrapeUrl",
          "action": "Scrape data from a URL",
          "description": "Scrape data from a URL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webScrape"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"extractData","name":"Extract Structured Data","description":"Extract structured data from a video using AI","resource":"media"},{"operation":"getMetadata","name":"Get Metadata","description":"Get metadata of a video from multiple platforms (YouTube, TikTok, Instagram, Twitter)","resource":"media"},{"operation":"getTranscript","name":"Get Transcript","description":"Get the transcript of a video from multiple platforms (YouTube, TikTok, etc.)","resource":"media"},{"operation":"getChannel","name":"Get Channel","description":"Get details of a YouTube channel","resource":"youtube"},{"operation":"getChannelVideos","name":"Get Channel Videos","description":"Get videos of a YouTube channel","resource":"youtube"},{"operation":"getPlaylist","name":"Get Playlist","description":"Get details of a YouTube playlist","resource":"youtube"},{"operation":"getPlaylistVideos","name":"Get Playlist Videos","description":"Get videos of a YouTube playlist","resource":"youtube"},{"operation":"scrapeUrl","name":"Scrape URL","description":"Scrape data from a URL","resource":"webScrape"}]

npm_readme:
  # n8n-nodes-supadata

  This is an n8n community node that allows you to integrate Supadata into your n8n workflows.

  Supadata is a service that provides tools for extracting and analyzing data from YouTube videos, channels, and web pages. With this node, you can easily retrieve video details, transcripts, channel information, and scrape web content directly within your n8n workflows.

  Supadata Website: [https://supadata.ai](https://supadata.ai)

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

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials) <!-- delete if no auth needed -->  
  [Usage](#usage) <!-- delete if not using this section -->  
  [Resources](#resources)

  ## Installation

  Community Node Installation

  - Go to Settings > Community Nodes
  - Select Install
  - Enter n8n-nodes-supadata in the input field
  - Click Install

  Manual Installation

  - To install this node manually

  ```bash
  npm install n8n-nodes-supadata
  ```

  ## Operations

  - Get Video Metadata: Retrieve details about a YouTube video.
  - Get Transcript: Fetch the transcript of a YouTube video.
  - Get Channel Metadata: Retrieve information about a YouTube channel.
  - Get Channel Videos: Fetch a list of videos from a specific YouTube channel.
  - Get Playlist Metadata: Retrieve information about a YouTube playlist.
  - Get Playlist Videos: Fetch a list of videos from a specific YouTube playlist.
  - Get URL Content: Extract data from a web page.

  ## Credentials

  To use this node, you need to authenticate with Supadata using an API key. Follow these steps:

  - Sign up for an account with Supadata and obtain your API key.
  - Add the API key to the Supadata node in n8n credentials.

  ## Usage

  1. Create a new workflow in n8n.
  2. Add a Supadata node to your workflow.
  3. Authenticate using your Supadata API key via n8n’s credentials interface.
  4. Select the action you want to perform, and enter the required fields.
  5. Execute the node.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Supadata API Documentation](https://docs.supadata.ai)

  ## License

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

ai_documentation_summary:
  {"purpose":"This n8n community node integrates with the Supadata API to extract and analyze data from YouTube videos, channels, playlists, and web pages within automation workflows.","capabilities":["Retrieve YouTube video metadata","Fetch YouTube video transcripts","Retrieve YouTube channel metadata","Fetch video lists from YouTube channels","Retrieve YouTube playlist metadata","Fetch video lists from YouTube playlists","Scrape and extract data from web pages"],"authentication":"API key required","commonUseCases":["Automating YouTube content analysis and research","Extracting video transcripts for content processing","Monitoring channel or playlist activity","Web scraping for data aggregation"],"limitations":[],"relatedNodes":["n8n-nodes-youtube","n8n-nodes-web","n8n-nodes-http-request"]}


node_type: n8n-nodes-groner.groner
package_name: n8n-nodes-groner
display_name: Groner
description: Integrate with Groner CRM to manage deals, contacts, tasks, and more
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: ronaldoasevedo
author_github_url: https://github.com/gronerbr/
npm_package_name: n8n-nodes-groner
npm_version: 0.1.35
community_fetched_at: 2026-03-25T21:19:40.756Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "contact",
      "options": [
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Deal",
          "value": "deal"
        },
        {
          "name": "Note",
          "value": "note"
        },
        {
          "name": "Tag",
          "value": "tag"
        },
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "WhatsApp",
          "value": "whatsapp"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new deal",
          "description": "Create a new deal in Groner"
        },
        {
          "name": "Edit by Property",
          "value": "editByProperty",
          "action": "Edit deal by property",
          "description": "Edit deal by specific property"
        },
        {
          "name": "Get Quote",
          "value": "getQuote",
          "action": "Get deal quote",
          "description": "Get quote information for a deal"
        },
        {
          "name": "Move",
          "value": "move",
          "action": "Move a deal",
          "description": "Move a deal to a different stage"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search for deals",
          "description": "Search deals with filters"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "deal"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "editByProperty",
      "options": [
        {
          "name": "Edit by Property",
          "value": "editByProperty",
          "action": "Edit contact by property",
          "description": "Edit contact by specific property"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a task",
          "description": "Create a new task"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search tasks",
          "description": "Search for tasks"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "add",
      "options": [
        {
          "name": "Add",
          "value": "add",
          "action": "Add a note",
          "description": "Add a note to a deal"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "note"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "add",
      "options": [
        {
          "name": "Add",
          "value": "add",
          "action": "Add tags",
          "description": "Add tags to a deal"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tag"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "action": "Send whats app message",
          "description": "Send a WhatsApp message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "whatsapp"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"create","name":"Create","description":"Create a new deal in Groner","resource":"deal"},{"operation":"editByProperty","name":"Edit by Property","description":"Edit deal by specific property","resource":"deal"},{"operation":"getQuote","name":"Get Quote","description":"Get quote information for a deal","resource":"deal"},{"operation":"move","name":"Move","description":"Move a deal to a different stage","resource":"deal"},{"operation":"search","name":"Search","description":"Search deals with filters","resource":"deal"},{"operation":"editByProperty","name":"Edit by Property","description":"Edit contact by specific property","resource":"contact"},{"operation":"create","name":"Create","description":"Create a new task","resource":"task"},{"operation":"search","name":"Search","description":"Search for tasks","resource":"task"},{"operation":"add","name":"Add","description":"Add a note to a deal","resource":"note"},{"operation":"add","name":"Add","description":"Add tags to a deal","resource":"tag"},{"operation":"send","name":"Send","description":"Send a WhatsApp message","resource":"whatsapp"}]

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

  # n8n-nodes-groner

  This repository contains custom nodes for integrating n8n with the Groner API (Solar CRM). The Groner node provides comprehensive functionality to manage leads, projects, tasks, and communications within the Groner CRM system.

  ---

  ## 🚀 Main Node

  - **Groner**: Primary node for integration with the Groner API, covering all major CRM operations including lead management, project tracking, task creation, and WhatsApp messaging.

  ## 📋 Available Resources and Operations

  ### 🔗 Available Resources

  | Resource | Description |
  |----------|-------------|
  | **Contact** | Contact/lead management |
  | **Deal** | Deal/project management |
  | **Note** | Note/occurrence addition |
  | **Tag** | Tag management |
  | **Task** | Task creation and search |
  | **WhatsApp** | WhatsApp message sending |

  ### 📊 Operations by Resource

  #### **Deal (Deal/Project)**
  | Operation | Description | HTTP Method |
  |-----------|-------------|-------------|
  | **Create** | Creates a new deal (lead/project) in Groner | POST |
  | **Search** | Searches deals with advanced filters and pagination | GET |
  | **Edit by Property** | Edits specific properties of a deal | PUT |
  | **Get Quote** | Gets quotes for a specific deal | GET |
  | **Move** | Moves a deal to a different stage | POST |

  #### **Contact (Contact)**
  | Operation | Description | HTTP Method |
  |-----------|-------------|-------------|
  | **Edit** | Edits contact information | PUT |
  | **Edit by Property** | Edits specific properties of a contact | PUT |

  #### **Task (Task)**
  | Operation | Description | HTTP Method |
  |-----------|-------------|-------------|
  | **Create** | Creates a new task | POST |
  | **Search** | Searches tasks with filters | GET |

  #### **Note (Note)**
  | Operation | Description | HTTP Method |
  |-----------|-------------|-------------|
  | **Add** | Adds a note/occurrence to a deal | POST |

  #### **Tag (Tag)**
  | Operation | Description | HTTP Method |
  |-----------|-------------|-------------|
  | **Add** | Adds tags to a deal | POST |

  #### **WhatsApp**
  | Operation | Description | HTTP Method |
  |-----------|-------------|-------------|
  | **Send** | Sends WhatsApp message | POST |

  ---

  ## 🔧 Prerequisites

  Before installing and using this package, ensure you have the following installed on your development machine:

  ### Required Software
  - **[Git](https://git-scm.com/downloads)** - Version control system
  - **[Node.js](https://nodejs.org/)** - Version 18.10 or higher
  - **[pnpm](https://pnpm.io/)** - Package manager (Version 9.1 or higher)

  ### n8n Installation
  Install n8n globally using pnpm:
  ```bash
  pnpm install n8n -g
  ```

  ### System Requirements
  - **Node.js**: >=18.10
  - **pnpm**: >=9.1
  - **n8n-workflow**: Compatible version

  ---

  ## 📦 Installation

  ### 1. Clone the Repository
  ```bash
  git clone https://github.com/gronerbr/n8n-nodes-groner.git
  cd n8n-nodes-groner
  ```

  ### 2. Install Dependencies
  ```bash
  pnpm install
  ```

  ### 3. Build the Project
  ```bash
  pnpm build
  ```
  This command will:
  - Compile TypeScript files
  - Copy custom icons to the distribution folder
  - Prepare the package for use

  ### 4. Development Mode (Optional)
  For development with automatic recompilation:
  ```bash
  pnpm dev
  ```

  ---

  ## 🔐 Credentials Configuration

  ### Setting Up Groner API Credentials

  1. **Access n8n Credentials**: In your n8n instance, navigate to Settings → Credentials
  2. **Add New Credential**: Click "Add Credential" and select **Groner API**
  3. **Configure Credentials**:
     - **Tenant**: Your Groner subdomain (e.g., `mycompany`)
     - **API Key**: Your Groner API authentication key

  ### Credential Details

  | Field | Type | Required | Description | Example |
  |-------|------|----------|-------------|---------|
  | **Tenant** | String | Yes | Your Groner subdomain identifier | `mycompany` |
  | **API Key** | Password | Yes | Your Groner API authentication token | `groner_api_key_123...` |

  ### API Endpoint Structure
  The node automatically constructs API endpoints using your tenant:
  ```
  https://{tenant}.api.groner.app/api/{endpoint}
  ```

  ---

  ## 🎯 How to Use the Groner Node

  ### Basic Workflow Setup

  1. **Add the Node**: Drag and drop the **Groner** node into your n8n workflow
  2. **Select Resource**: Choose the desired resource (Deal, Contact, Task, etc.)
  3. **Select Operation**: Choose the desired operation from the "Operation" dropdown
  4. **Configure Parameters**: Fill in required and optional fields based on the selected operation
  5. **Execute**: Run the workflow to process the operation

  ### Output Format
  - **Success**: Returns API response data as JSON
  - **Search Operations**: Each returned item becomes an individual n8n item
  - **Error Handling**: Errors are displayed in the node execution panel

  ---

  ## 📖 Detailed Operation Guide

  ### 1. Create Deal

  Creates a new lead or project in Groner with comprehensive tracking capabilities.

  #### Required Fields
  - **Name** (`nome`): Full name of the contact
  - **Email** (`email`): Contact email address
  - **Phone** (`telefone`): Contact phone number
  - **Origin Name or ID** (`codOrigem`): Lead origin (loadOptions)

  #### Optional Fields
  - **Account Value** (`valorConta`): Estimated project value
  - **City** (`cidade`): Contact's city
  - **Document** (`documento`): CPF or CNPJ number
  - **Person Type** (`tipoPessoa`): PF (Individual) or PJ (Company)
  - **State** (`uf`): Brazilian state abbreviation
  - **Responsible Name or ID** (`responsavelId`): Responsible salesperson (loadOptions)
  - **Responsible Email** (`emailResponsavel`): Salesperson email
  - **Note** (`nota`): Initial notes about the lead
  - **Campaign** (`campanha`): Marketing campaign identifier
  - **Advertisement** (`anuncio`): Ad campaign reference
  - **Ad Set** (`conjuntoAnuncios`): Ad group identifier
  - **Lead Tracking Code** (`codigoLeadTracking`): Tracking code for analytics
  - **Trade Name** (`nomeFantasia`): Company trade name (for PJ)
  - **Segment** (`segmento`): Business segment classification
  - **Deal Type Name or ID** (`tipoProjetoId`): Type of solar project (loadOptions)
  - **URL** (`url`): Custom endpoint URL (optional)

  #### Example Usage
  ```json
  {
    "nome": "John Doe",
    "email": "john.doe@example.com",
    "telefone": "+5511999999999",
    "codOrigem": "1",
    "cidade": "São Paulo",
    "documento": "123.456.789-00",
    "tipoPessoa": "F",
    "valorConta": 25000,
    "nota": "Interested in residential solar installation"
  }
  ```

  ### 2. Search Deals

  Searches for existing deals with advanced filtering and pagination.

  #### Filter Parameters
  - **Page Size** (`pageSize`): Items per page (default: 20)
  - **Search** (`query`): Text search across deal data
  - **Criterio** (`criterio`): Search criteria
  - **Filters**:
    - **Deal Type ID** (`dealTypeId`): Filter by project type (loadOptions)
    - **Stage ID** (`stageId`): Filter by sales pipeline stage (loadOptions)
    - **Status ID** (`statusId`): Filter by status (loadOptions)
    - **Responsible Seller ID** (`responsibleSellerId`): Filter by responsible seller (loadOptions)
    - **Responsible Technician ID** (`responsibleTechnicianId`): Filter by responsible technician (loadOptions)
    - **Pre Seller ID** (`preSellerId`): Filter by pre-seller (loadOptions)
  - **Additional Fields**:
    - **Lead ID** (`leadId`): Filter by specific lead
    - **Stores IDs** (`storesIds`): Filter by store locations (multiOptions)
    - **Tags IDs** (`tagsIds`): Filter by specific tags (multiOptions)
    - **Origins IDs** (`originsIds`): Filter by origins (multiOptions)
    - **Status History IDs** (`statusHistoryIds`, `nStatusHistoryIds`): Filter by status history (multiOptions)
    - **Order By** (`orderBy`): Sort criteria
    - **Initial Qualification** (`initialQualification`): Initial qualification (0-10)
    - **Final Qualification** (`finalQualification`): Final qualification (0-10)
    - **Indicator** (`indicator`): Performance indicator
    - **Contact Owner ID** (`contactOwnerId`): Filter by contact owner
    - **Campaign** (`campaign`): Filter by campaign
    - **Advertisement** (`advertisement`): Filter by advertisement
    - **Ad Set** (`adSet`): Filter by ad set
  - **Location**:
    - **City** (`city`): Filter by city
    - **State** (`state`): Filter by state
  - **Financial**:
    - **Initial Power** (`initialPower`): Initial power in kW
    - **Final Power** (`finalPower`): Final power in kW
    - **Initial Value** (`initialValue`): Initial project value
    - **Final Value** (`finalValue`): Final project value
    - **Initial Consumption** (`initialConsumption`): Initial consumption in kWh
    - **Final Consumption** (`finalConsumption`): Final consumption in kWh
  - **Dates**:
    - **Start Date** (`startDate`): Start date
    - **End Date** (`endDate`): End date
    - **Initial Closing Forecast Date** (`initialClosingForecastDate`): Initial closing forecast date
    - **Final Closing Forecast Date** (`finalClosingForecastDate`): Final closing forecast date
    - **Initial Proposal Date** (`initialProposalDate`): Initial proposal date
    - **Final Proposal Date** (`finalProposalDate`): Final proposal date
    - **Initial Sale Date** (`initialSaleDate`): Initial sale date
    - **Final Sale Date** (`finalSaleDate`): Final sale date
    - **Initial Loss Date** (`initialLossDate`): Initial loss date
    - **Final Loss Date** (`finalLossDate`): Final loss date

  #### Example Usage
  ```json
  {
    "pageSize": 50,
    "query": "solar installation",
    "filters": {
      "stageId": "1",
      "statusId": "2"
    },
    "financial": {
      "initialValue": 10000,
      "finalValue": 50000
    }
  }
  ```

  ### 3. Add Tags

  Adds organizational labels to existing deals.

  #### Required Fields
  - **Deal ID** (`dealId`): Deal ID
  - **Tag IDs** (`tagIds`): Array of tag IDs

  #### Example Usage
  ```json
  {
    "dealId": "12345",
    "tagIds": ["1", "2", "3"]
  }
  ```

  ### 4. Add Note

  Adds notes or occurrences to track deal interactions.

  #### Required Fields
  - **Deal ID** (`dealId`): Deal ID
  - **Occurrence** (`ocorrencia`): Note content

  #### Optional Fields
  - **Mentions** (`marcacoes`): Optional user mentions

  #### Example Usage
  ```json
  {
    "dealId": "12345",
    "ocorrencia": "Customer requested quote for 10kW system",
    "marcacoes": "@sales_team"
  }
  ```

  ### 5. Create Task

  Creates tasks linked to deals with assignment capabilities.

  #### Required Fields
  - **Title** (`titulo`): Task title
  - **Type ID** (`tipoId`): Task type identifier (loadOptions)
  - **Status ID** (`statusId`): Task status (loadOptions)
  - **Project ID** (`projetoId`): Associated deal ID
  - **Users IDs** (`usuariosIds`): Assigned user IDs (multiOptions)

  #### Optional Fields
  - **Description** (`descricao`): Task description
  - **Start Date** (`dataInicial`): Task start date (YYYY-MM-DD)
  - **Delivery Date** (`dataEntrega`): Task delivery date (YYYY-MM-DD)

  #### Example Usage
  ```json
  {
    "titulo": "Follow up call",
    "descricao": "Call customer to discuss proposal",
    "tipoId": "1",
    "statusId": "1",
    "projetoId": 12345,
    "usuariosIds": ["user1", "user2"],
    "dataInicial": "2024-01-15",
    "dataEntrega": "2024-01-20"
  }
  ```

  ### 6. Search Tasks

  Searches for tasks with comprehensive filtering options.

  #### Filter Parameters
  - **Page Size** (`pageSize`): Items per page (default: 20)
  - **Search** (`query`): Text search
  - **Additional Fields**:
    - **Lead ID** (`leadId`): Filter by associated lead
    - **Project ID** (`projetoId`): Filter by associated project
    - **Type ID** (`tipoId`): Filter by task type (loadOptions)
    - **Status ID** (`statusId`): Filter by task status (loadOptions)
    - **User ID** (`usuarioId`): Filter by assigned user (loadOptions)
    - **Stores IDs** (`lojasIds`): Filter by store locations (multiOptions)
    - **Order By** (`ordenarPor`): Sort criteria
    - **Start Date** (`dataInicial`): Filter by start date (YYYY-MM-DD)
    - **End Date** (`dataFinal`): Filter by end date (YYYY-MM-DD)
    - **Page Number** (`pageNumber`): Page number

  #### Example Usage
  ```json
  {
    "projetoId": 12345,
    "statusId": "1",
    "pageSize": 20,
    "ordenarPor": "dataCriacao"
  }
  ```

  ### 7. Edit Contact by Property

  Updates specific properties of existing contacts.

  #### Required Fields
  - **Contact ID** (`contactId`): Contact/Lead ID (number)
  - **Property** (`propriedade`): Property name to update (loadOptions)
  - **Value** (`valor`): New property value

  #### Example Usage
  ```json
  {
    "contactId": 12345,
    "propriedade": "email",
    "valor": "new.email@example.com"
  }
  ```

  ### 8. Edit Deal by Property

  Updates specific properties of existing deals.

  #### Required Fields
  - **Deal ID** (`dealId`): Deal ID (number)
  - **Property** (`propriedade`): Property name to update (loadOptions)
  - **Value** (`valor`): New property value

  #### Example Usage
  ```json
  {
    "dealId": 12345,
    "propriedade": "valorConta",
    "valor": "30000"
  }
  ```

  ### 9. Send WhatsApp Message

  Sends WhatsApp messages through Groner's integrated messaging system.

  #### Required Fields
  - **Message** (`mensagem`): Message content

  #### Optional Fields
  - **Lead ID** (`leadId`): Target lead ID (number)
  - **Phone** (`celular`): Direct phone number
  - **Image URL** (`urlImagem`): Image attachment URL
  - **Audio URL** (`urlAudio`): Audio attachment URL
  - **Video URL** (`urlVideo`): Video attachment URL
  - **Document URL** (`urlDocumento`): Document attachment URL
  - **Send to Pre-Seller** (`preVendedor`): Whether to send to Pre-Seller (boolean)
  - **Send to Seller** (`vendedor`): Whether to send to Seller (boolean)
  - **Send to Technician** (`tecnico`): Whether to send to Technician (boolean)
  - **Send to Lead** (`lead`): Whether to send to Lead (boolean)

  #### Example Usage
  ```json
  {
    "leadId": 12345,
    "mensagem": "Hello! Here's your solar installation quote.",
    "urlImagem": "https://example.com/quote.pdf",
    "vendedor": true
  }
  ```

  ### 10. Move Deal

  Changes the status/stage of a deal in the sales pipeline.

  #### Required Fields
  - **Deal ID** (`dealId`): Deal ID
  - **Status ID** (`statusId`): New status identifier (loadOptions)

  #### Optional Fields
  - **Validate Status Available** (`validaStatusDisponivel`): Whether to validate if the status is available (boolean)

  #### Example Usage
  ```json
  {
    "dealId": "12345",
    "statusId": "2",
    "validaStatusDisponivel": true
  }
  ```

  ### 11. Get Deal Quote

  Retrieves quotes associated with a specific deal.

  #### Required Fields
  - **Project ID** (`projetoId`): Deal/Project ID

  #### Example Usage
  ```json
  {
    "projetoId": "12345"
  }
  ```

  ---

  ## 🔄 Workflow Examples

  ### Example 1: Process Deals with Content.List

  This example shows how to use Content.List to process multiple deals:

  ```
  [Groner: Search Deals] → [Content.List] → [Groner: Edit Deal] → [Result]
  ```

  **Content.List Configuration:**
  ```
  Input Data: {{ $json.data }}
  Output Field Name: deal
  ```

  **Edit Deal Configuration:**
  ```
  Resource: Deal
  Operation: Edit by Property
  Deal ID: {{ $json.deal.id }}
  Property: valorConta
  Value: {{ $json.deal.valorConta * 1.1 }}
  ```

  ### Example 2: Complete Follow-up Workflow

  ```
  [Groner: Search Deals] → [IF] → [Groner: Add Note] → [Groner: Send WhatsApp]
  ```

  **IF Condition:**
  ```
  {{ $json.status === "Em Negociação" }}
  ```

  ---

  ## 🔧 Development Scripts

  | Script | Description |
  |--------|-------------|
  | `pnpm build` | Compiles TypeScript and copies icons |
  | `pnpm dev` | Runs TypeScript compiler in watch mode |
  | `pnpm lint` | Checks for linting issues |
  | `pnpm lintfix` | Automatically fixes linting issues |
  | `pnpm format` | Formats code using Prettier |
  | `pnpm prepublishOnly` | Builds and lints before publishing |

  ---

  ## 📁 Project Structure

  ```
  n8n-nodes-groner/
  ├── credentials/
  │   └── GronerApi.credentials.ts    # API authentication
  ├── nodes/
  │   └── Groner/
  │       ├── loadOptions/            # Dynamic options
  │       │   ├── getStatuses.ts      # Status options
  │       │   ├── getOrigins.ts       # Origin options
  │       │   ├── getResponsibles.ts  # Responsible user options
  │       │   ├── getDealTypes.ts     # Deal type options
  │       │   ├── getTags.ts          # Tag options
  │       │   ├── getStores.ts        # Store options
  │       │   ├── getEtapas.ts        # Stage options
  │       │   ├── getTaskTypes.ts     # Task type options
  │       │   ├── getTaskStatuses.ts  # Task status options
  │       │   ├── getContactProperties.ts # Contact property options
  │       │   └── getDealProperties.ts    # Deal property options
  │       ├── Groner.node.ts          # Main node file
  │       └── logogroner.svg          # Custom icon
  ├── package.json                    # Project configuration
  ├── tsconfig.json                   # TypeScript configuration
  └── gulpfile.js                     # Build configuration
  ```

  ---

  ## ⚠️ Important Notes

  ### API Response Handling
  - **Search Operations**: Each item returned by the API becomes an individual n8n item for easy processing
  - **Error Handling**: API errors are displayed in the node execution panel with detailed error messages
  - **Authentication**: Uses Bearer token authentication with your API key

  ### Load Options
  The node provides dynamic loading of options for various fields:
  - **Statuses**: Available deal statuses
  - **Origins**: Lead origin sources
  - **Responsibles**: Available users/responsible persons
  - **Deal Types**: Types of projects/deals
  - **Tags**: Available tags/labels
  - **Stores**: Store locations
  - **Etapas**: Sales pipeline stages
  - **Task Types**: Types of tasks
  - **Task Statuses**: Task status options
  - **Contact Properties**: Available contact properties
  - **Deal Properties**: Available deal properties

  ### Custom Icon
  - The node displays the Groner logo if the `logogroner.svg` file is present in the node directory
  - The icon is automatically copied during the build process

  ### Data Validation
  - Empty fields are automatically removed from API requests
  - Required fields are validated before sending requests
  - Date formats should follow YYYY-MM-DD standard
  - Arrays are automatically converted to comma-separated strings for API compatibility

  ### Rate Limiting
  - Be aware of Groner API rate limits
  - Implement appropriate delays between requests in high-volume workflows

  ---

  ## 🤝 Contributing

  We welcome contributions! Here's how you can help:

  ### Reporting Issues
  - Use the GitHub issue tracker
  - Provide detailed error messages and steps to reproduce
  - Include your n8n version and node configuration

  ### Submitting Pull Requests
  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run `pnpm lint` and `pnpm build`
  5. Submit a pull request with detailed description

  ### Development Guidelines
  - Follow TypeScript best practices
  - Maintain consistent code formatting
  - Add appropriate error handling
  - Include field validation where necessary

  ---

  ## 📄 License

  This project is licensed under the [MIT License](LICENSE.md).

  ---

  ## 📞 Support

  For support and questions:
  - **Email**: contato@gronercrm.com.br
  - **GitHub Issues**: [Create an issue](https://github.com/gronerbr/n8n-nodes-groner/issues)
  - **Documentation**: This README and inline code comments

  ---

  ## 🌐 Language Versions

  - **[English Version](README.md)** (Current)
  - **[Portuguese Version](README_PT.md)**

  ---

  ## 🔄 Version History

  - **v0.1.18**: Current version with comprehensive CRM operations and updated field structure
  - **v0.1.17**: Added WhatsApp messaging capabilities
  - **v0.1.16**: Enhanced search and filtering options
  - **v0.1.15**: Improved error handling and validation
  - **v0.1.14**: Initial release with basic operations

  For detailed changelog, see the [GitHub releases](https://github.com/gronerbr/n8n-nodes-groner/releases).

ai_documentation_summary:
  {"purpose":"Integrates n8n with the Groner CRM API to manage leads, deals, contacts, tasks, notes, tags, and send WhatsApp messages.","capabilities":["Create deals/leads","Search deals with advanced filters and pagination","Edit deal properties","Get quotes for deals","Move deals to different stages","Manage contacts (edit contact info)","Create and search tasks","Add notes/occurrences to deals","Manage tags on deals","Send WhatsApp messages"],"authentication":"API Key required (Tenant subdomain and API Key)","commonUseCases":["Automating lead capture and deal creation from web forms","Syncing contact information between external systems and Groner CRM","Automating task assignment and follow-ups","Sending automated WhatsApp notifications to clients","Tracking and managing sales pipelines"],"limitations":["Requires manual installation of custom n8n package (git clone, pnpm build)","Requires specific Node.js version (>=18.10) and pnpm version (>=9.1)","README truncated, so some optional fields and detailed operation parameters may be incomplete in documentation"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.whatsapp","n8n-nodes-base.credential"]}


node_type: n8n-nodes-featherless.featherless
package_name: n8n-nodes-featherless
display_name: Featherless
description: Interact with Featherless API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs: "={{[\"main\"]}}"
updated_at: 2026-03-25 21:19:40
author_name: darinverheijke
author_github_url: https://github.com/featherlessai/
npm_package_name: n8n-nodes-featherless
npm_version: 0.1.6
community_fetched_at: 2026-03-25T21:19:40.757Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "chat",
      "options": [
        {
          "name": "Chat",
          "value": "chat",
          "action": "Send a chat message",
          "description": "Send a chat message"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Chat",
      "value": "chat",
      "action": "Send a chat message",
      "description": "Send a chat message"
    }
  ]

npm_readme:
  # n8n-nodes-featherless

  This is an n8n community node for Featherless API integration. It allows you to interact with various AI models through the Featherless AI platform directly from your n8n workflows.

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

  [Featherless](https://featherless.ai/) is a platform that provides access to over 10,000+ open-weight models through a unified API.

  ## Features

  - Interact with multiple AI models through a single node
  - Send chat messages to AI models
  - Customize model parameters such as temperature, max tokens, frequency penalty, and presence penalty
  - View truncated model descriptions in the model selector
  - Easy integration with n8n workflows

  ## Installation

  ### Community Node (Recommended)

  To install this node as a community node in n8n, follow these steps:

  1. Open your n8n instance
  2. Go to "Settings" > "Community Nodes"
  3. Select "Install"
  4. Enter `n8n-nodes-featherless` in the "Enter npm package name" field
  5. Agree to the risks of using community nodes (if prompted)
  6. Click "Install"

  After installation, the node will be available in the "Featherless" category in the node palette.

  ### Manual Installation (Advanced)

  If you prefer manual installation or are using a custom n8n setup:

  1. Open your n8n installation directory
  2. Navigate to the `nodes` subdirectory
  3. Run the following command:
     ```
     npm install n8n-nodes-featherless
     ```
  4. Restart your n8n instance

  **Note:** If you're using Docker or a server deployment, you may need to rebuild your container or restart your server for the changes to take effect.

  ### Troubleshooting

  If you encounter issues with the node not updating to new versions correctly or not displaying changes inside n8n, try the following:

  1. Clear your browser cache
  2. Restart your n8n instance
  3. If using Docker, rebuild and restart your container:
     ```
     docker-compose down
     docker-compose build
     docker-compose up -d
     ```
  4. For server deployments, restart the n8n service:
     ```
     sudo systemctl restart n8n
     ```

  ## Usage

  1. Add the Featherless node to your workflow
  2. Configure the Featherless API credentials (see Configuration section)
  3. Select the desired operation (currently only 'Chat' is available)
  4. Enter the model ID you want to use (click "View Available Models" button to see options)
  5. (Optional) Provide a system prompt to set the behavior of the AI
  6. Enter your message
  7. Adjust additional parameters as needed (temperature, max tokens, etc.)
  8. Execute the node to receive the AI's response

  ## Model Selection

  Enter the model ID directly in the "Model Name or ID" field. Use the "View Available Models" button next to the input field to open the [Featherless Models page](https://featherless.ai/models) in a new tab, where you can browse and copy the model IDs of available models.

  ## Configuration

  ### Featherless API Credentials

  To use this node, you need to set up Featherless API credentials:

  1. Sign up for an account at [Featherless](https://featherless.ai/)
  2. Generate an API key in your Featherless dashboard
  3. In n8n, create a new credential of type 'Featherless API'
  4. Enter your API key

  ### Node Parameters

  - **Operation**: Currently, only 'Chat' is available
  - **Model**: Enter the model ID you want to use (e.g., "meta-llama/Meta-Llama-3.1-8B-Instruct")
  - **System Prompt**: (Optional) Set the behavior or role of the AI assistant
  - **Message**: The user's input message to the AI
  - **Temperature**: Controls the randomness of the AI's output (0.0 to 1.0)
  - **Additional Fields**: 
    - **Frequency Penalty**: Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far.
    - **Max Tokens**: The maximum number of tokens to generate in the chat completion.
    - **Presence Penalty**: Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far.
    - **Top P**: An alternative to sampling with temperature, called nucleus sampling. Top_p of 0.1 means only the tokens comprising the top 10% probability mass are considered.

  ## Examples

  ### Basic Chat Workflow

  1. Add a "Manual" trigger node
  2. Connect an Featherless node
  3. Configure the Featherless node:
     - Operation: Chat
     - Model: Enter a model ID (e.g., "deepseek-ai/DeepSeek-V3-0324")
     - Message: "Hello, can you explain what n8n is?"
  4. Execute the workflow
  5. The Featherless node will return the AI's response explaining n8n

  ### Dynamic System Prompt

  1. Start with a "Manual" trigger node
  2. Add a "Set" node to define a variable for the system prompt
  3. Connect a Featherless node
  4. Configure the Featherless node:
     - Operation: Chat
     - Model: Enter a model ID (use the "View Available Models" button to see options)
     - System Prompt: {{$node["Set"].json["systemPrompt"]}}
     - Message: "What's your primary function?"
  5. Execute the workflow
  6. The AI will respond based on the system prompt set in the "Set" node

  ## Support

  If you encounter any issues or have questions about this node, please [open an issue](https://github.com/darinverheijke/n8n-nodes-featherless/issues) on the GitHub repository.

  ## Contributing

  Contributions to improve this node are welcome. Please follow these steps:

  1. Fork the repository
  2. Create a new branch for your feature
  3. Commit your changes
  4. Push to the branch
  5. Create a new Pull Request

  ## License

  This project is licensed under the [MIT License](LICENSE.md).

  ## About n8n
  n8n is a free and open [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation tool. It can be self-hosted, easily extended, and used to automate workflows across various services and applications. n8n enables you to connect anything to everything.

  ## About Featherless
  Featherless AI is a serverless AI inference platform that offers access to over 10,000+ open-source models. Our goal is to make all AI models available for serverless inference. We provide inference via API to a continually expanding library of open-weight models.

  ## Changelog

  For a full list of changes, please refer to the [CHANGELOG.md](CHANGELOG.md) file.

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with Featherless AI's API to send chat messages to over 10,000+ open-weight models.","capabilities":["Send chat messages to AI models","Select from multiple open-weight models via API","Customize generation parameters (temperature, max tokens, frequency penalty, presence penalty, top p)","Set system prompts to define AI behavior","View available models through integrated browser interface"],"authentication":"API key required (Featherless API credentials)","commonUseCases":["Integrating open-weight LLMs into n8n workflows","Building chatbot applications with customizable models","Automating text generation tasks with dynamic system prompts"],"limitations":["Currently supports only 'Chat' operation type","Community node requires manual installation or community node setup","Model selection requires manual ID entry or browser lookup"],"relatedNodes":["Manual Trigger","Set","Code","HTTP Request"]}


node_type: n8n-nodes-wati.watiTrigger
package_name: n8n-nodes-wati
display_name: Wati
description: Trigger workflows on WhatsApp events via Wati — incoming messages, delivery updates, and more.
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: nick-wati
author_github_url: https://github.com/nick-wati/
npm_package_name: n8n-nodes-wati
npm_version: 0.3.2
community_fetched_at: 2026-03-25T21:19:40.758Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-wati

  This is an [n8n](https://n8n.io/) community node for [Wati](https://www.wati.io/) (WhatsApp Team Inbox). It lets you automate WhatsApp messaging workflows using the Wati API.

  [Wati](https://www.wati.io/) is a WhatsApp Business API solution that enables businesses to communicate with customers at scale through WhatsApp.

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

  1. Go to **Settings → Community Nodes** in your n8n instance.
  2. Click **Install a community node**.
  3. Enter `n8n-nodes-wati` and click **Install**.

  ## Credentials

  You need a Wati account to use this node. To set up credentials:

  1. Log in to your [Wati Dashboard](https://app.wati.io/).
  2. Go to **API Docs** to find your **API Endpoint URL** and **Access Token**.
  3. In n8n, create a new **Wati API** credential and enter these values.

  ## Supported Operations

  ### Wati Node

  #### Message
  - **Send Text Message** — Send a text message to an active WhatsApp conversation (within 24h window)
  - **Send Button Message** — Send a message with interactive buttons
  - **Send List Message** — Send a message with a selectable list
  - **Get Messages** — Retrieve messages for a conversation by conversation ID
  - **Get Media** — Download a media file (image, video, document, audio, etc.) by message ID

  #### Template Message
  - **Send Template Message** — Send a template message (works outside the 24h window)
  - **Get Templates** — Get a list of available message templates

  #### Contact
  - **Get Contacts** — Get a list of contacts
  - **Get Contact Detail** — Get details of a specific contact by phone number
  - **Add Contact** — Add a new contact

  ### Wati Trigger

  - **Webhook Trigger** — Receive incoming messages and status updates via webhook

  ## Resources

  - [Sign up for Wati](https://auth.wati.io/register/?utm_source=n8n&utm_medium=referral&utm_campaign=n8n)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Automates WhatsApp messaging workflows by triggering on incoming events and enabling sending of various message types via the Wati API.","capabilities":["Send text messages (within 24h window)","Send button messages","Send list messages","Send template messages (outside 24h window)","Retrieve conversation messages","Download media files","Get available message templates","Manage contacts (add, retrieve details)","Webhook trigger for incoming messages and status updates"],"authentication":"API key required (Access Token and API Endpoint URL from Wati Dashboard)","commonUseCases":["Automated customer support responses on WhatsApp","Order status notifications via WhatsApp","Two-factor authentication verification messages","Marketing campaigns using interactive buttons or templates","Automated media delivery (images, documents)"],"limitations":["Text messages can only be sent within a 24-hour window of the conversation creation","Template messages are required for sending outside the 24-hour window"],"relatedNodes":["n8n-nodes-whatsapp.whatsappTrigger","n8n-nodes-whatsapp.whatsappSendTextMessage","n8n-nodes-whatsapp.whatsappSendTemplateMessage"]}


node_type: n8n-nodes-greip.greip
package_name: n8n-nodes-greip
display_name: Greip
description: Get fraud prevention, threat intelligence, and risk scoring data from Greip.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: greip
author_github_url: https://github.com/Greipio/
npm_package_name: n8n-nodes-greip
npm_version: 1.0.7
community_fetched_at: 2026-03-25T21:19:40.758Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "dataLookup",
      "options": [
        {
          "name": "Data Lookup",
          "value": "dataLookup"
        },
        {
          "name": "Risk Scoring",
          "value": "riskScoring"
        }
      ],
      "displayName": "Resources",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "ipLookup",
      "options": [
        {
          "name": "ASN Lookup",
          "value": "asnLookup",
          "action": "ASN Lookup",
          "description": "Lookup Autonomous System Number (ASN) data"
        },
        {
          "name": "BIN Lookup",
          "value": "binLookup",
          "action": "BIN Lookup",
          "description": "Retrieve comprehensive information associated with a debit or credit card"
        },
        {
          "name": "Country Lookup",
          "value": "countryLookup",
          "action": "Country lookup",
          "description": "Retrieve detailed information about a given country"
        },
        {
          "name": "Domain Lookup",
          "value": "domainLookup",
          "action": "Domain lookup",
          "description": "Lookup any domain name and retrieve associated data and risk evaluation metrics"
        },
        {
          "name": "IBAN Lookup",
          "value": "ibanLookup",
          "action": "IBAN Lookup",
          "description": "Validate a given IBAN and obtain essential information about the issuing country"
        },
        {
          "name": "IP Lookup",
          "value": "ipLookup",
          "action": "IP Lookup",
          "description": "Retrieve comprehensive information about a given IP address"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dataLookup"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "ipThreats",
      "options": [
        {
          "name": "Email Scoring",
          "value": "emailScoring",
          "action": "Email scoring",
          "description": "Score any email address and retrieve its risk evaluation metrics"
        },
        {
          "name": "IP Scoring",
          "value": "ipThreats",
          "action": "IP Scoring",
          "description": "Get threat intelligence and risk scoring for an IP address"
        },
        {
          "name": "Payment Fraud Detection",
          "value": "paymentFraudDetection",
          "action": "Payment fraud detection",
          "description": "Detect and score payment fraud risk for a transaction",
          "displayOptions": {
            "show": {
              "resource": [
                "riskScoring"
              ]
            }
          }
        },
        {
          "name": "Phone Scoring",
          "value": "phoneScoring",
          "action": "Phone number scoring",
          "description": "Score any phone number and retrieve its risk evaluation metrics"
        },
        {
          "name": "Profanity Detection",
          "value": "profanityDetection",
          "action": "Profanity detection",
          "description": "Detect offensive or inappropriate language in a given text"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "riskScoring"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"asnLookup","name":"ASN Lookup","description":"Lookup Autonomous System Number (ASN) data","resource":"dataLookup"},{"operation":"binLookup","name":"BIN Lookup","description":"Retrieve comprehensive information associated with a debit or credit card","resource":"dataLookup"},{"operation":"countryLookup","name":"Country Lookup","description":"Retrieve detailed information about a given country","resource":"dataLookup"},{"operation":"domainLookup","name":"Domain Lookup","description":"Lookup any domain name and retrieve associated data and risk evaluation metrics","resource":"dataLookup"},{"operation":"ibanLookup","name":"IBAN Lookup","description":"Validate a given IBAN and obtain essential information about the issuing country","resource":"dataLookup"},{"operation":"ipLookup","name":"IP Lookup","description":"Retrieve comprehensive information about a given IP address","resource":"dataLookup"},{"operation":"emailScoring","name":"Email Scoring","description":"Score any email address and retrieve its risk evaluation metrics","resource":"riskScoring"},{"operation":"ipThreats","name":"IP Scoring","description":"Get threat intelligence and risk scoring for an IP address","resource":"riskScoring"},{"operation":"paymentFraudDetection","name":"Payment Fraud Detection","description":"Detect and score payment fraud risk for a transaction","resource":"riskScoring"},{"operation":"phoneScoring","name":"Phone Scoring","description":"Score any phone number and retrieve its risk evaluation metrics","resource":"riskScoring"},{"operation":"profanityDetection","name":"Profanity Detection","description":"Detect offensive or inappropriate language in a given text","resource":"riskScoring"}]

npm_readme:
  # n8n Nodes - Greip Integration

  This is an n8n community node that integrates with the Greip API, allowing users to interact with Greip's services directly from n8n workflows.

  [Greip](https://greip.io) is a platform that provides various services for fraud detection, proxy detection, content moderation, and more.

  ## Table of contents

  ## Installation (self-hosted)

  To install the Greip community node directly from the n8n Editor UI:

  1. Open your n8n instance.
  2. Go to Settings > Community Nodes
  3. Select Install.
  4. Enter the npm package name: n8n-nodes-greip to install the latest version.
  5. Agree to the risks of using community nodes and select Install.
  6. The node is now available to use in your workflows.

  ## Installation (n8n Cloud)

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

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

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

  ## Operations

  This node supports a wide range of Greip operations, organized by resource type:

  ### Data Lookup

  - ASN Lookup: Retrieve Autonomous System Number information and prefixes by AS number.
  - BIN Lookup: Get Bank Identification Number details.
  - IP Lookup: Retrieve information about an IP address, including location, ASN, security threats, and more.
  - Country Lookup: Get details about a country using its ISO code.
  - Domain Lookup: Fetch information about a domain, including its registration details and associated threats.
  - IBAN Lookup: Retrieve International Bank Account Number information.

  ### Risk Scoring

  - Email Scoring: Assess the risk associated with an email address.
  - IP Scoring: Evaluate the risk level of an IP address.
  - Phone Scoring: Determine the risk score of a phone number.
  - Payment Fraud Detection: Analyze payment details for potential fraud.
  - Profanity Detection: Check text for offensive language and profanity.

  ## AI Tools

  All Greip node operations can be combined with n8n's AI tools to create powerful workflows. For example, you can use AI to generate personalized marketing messages and then use the Greip Email Scoring operation to ensure the email addresses are valid and low-risk.

  ## Credentials

  To use the Greip node, you need to set up your Greip API credentials in n8n:

  1. Go to Settings > Credentials in n8n.
  2. Click on New Credential and select Greip API from the list.
  3. Enter your Greip API Key, which you can obtain from your Greip account dashboard.
  4. Save the credentials.

  ## Compatibility

  This node has been tested with n8n version `1.112.3`.

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Greip API Documentation](https://docs.greip.io/knowledge-base/integrations/n8n)

  ## Troubleshooting

  ### Common issues

  1. Authentication errors
     - Ensure that your Greip API Key is correct and has the necessary permissions.
     - Check for any typos or formatting issues in the API Key.
  2. Resource Not Found
     - Verify that the resource you are trying to access exists and that you have the correct identifiers.
     - Ensure you have access to the resource based on your Greip account plan.
  3. Operation failures
     - Double-check the parameters you are passing to the operation.
     - Verify resource limits (memory, timeout)

  ### Getting help

  If you encounter any issues or need assistance with the Greip node, consider the following options:

  1. Check our [N8N integration guide](https://docs.greip.io/knowledge-base/integrations/n8n)
  2. Review the [n8n Community Nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  3. Open an issue in the [GitHub repository](https://github.com/Greipio/n8n-nodes-greip)

ai_documentation_summary:
  {"purpose":"This n8n community node integrates with the Greip API to perform fraud detection, threat intelligence checks, and risk scoring on various data types.","capabilities":["ASN Lookup","BIN Lookup","IP Lookup","Country Lookup","Domain Lookup","IBAN Lookup","Email Scoring","IP Scoring","Phone Scoring","Payment Fraud Detection"],"authentication":"API Key required","commonUseCases":["Fraud prevention workflows","Threat intelligence gathering","Risk scoring for emails, IPs, and phone numbers","Content moderation using profanity detection"],"limitations":["Community node (requires installation in n8n Editor UI or n8n Cloud)","Requires active Greip API account and subscription","Resource access depends on Greip account plan permissions"],"relatedNodes":["n8n-nodes-core.httpRequest","n8n-nodes-core.code"]}


node_type: n8n-nodes-zohoteaminbox.zohoTeamInbox
package_name: n8n-nodes-zohoteaminbox
display_name: Zoho TeamInbox
description: Consume Zoho TeamInbox API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: zohomail
author_github_url: https://github.com/zohomail/zoho_teaminbox_n8n.git
npm_package_name: n8n-nodes-zohoteaminbox
npm_version: 1.0.4
community_fetched_at: 2026-03-25T21:19:40.759Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Message",
          "value": "message"
        },
        {
          "name": "Contact",
          "value": "contact"
        }
      ],
      "required": true,
      "displayName": "Resource"
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendemail",
      "options": [
        {
          "name": "Send Email",
          "value": "sendemail",
          "action": "Send Email",
          "description": "Create and send a new email."
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createcontact",
      "options": [
        {
          "name": "Create Contact",
          "value": "createcontact",
          "action": "Create Contact",
          "description": "Creates a new contact"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"sendemail","name":"Send Email","description":"Create and send a new email.","resource":"message"},{"operation":"createcontact","name":"Create Contact","description":"Creates a new contact","resource":"contact"}]

npm_readme:
  ![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)
  # Zoho TeamInbox integration with n8n
  Zoho TeamInbox is a multichannel shared inbox platform that enables teams to manage conversations from business WhatsApp, Telegram, Facebook, Instagram DMs, and emails—all in one shared space that enhance collaboration and transparency.
  With n8n’s integration, you can align Zoho TeamInbox with your business processes by custom-designing workflows using triggers and actions to automate your operations.
  To learn more about n8n
  [n8n homepage](https://n8n.io/).
  To learn more about Zoho TeamInbox
  [Zoho Calendar homepage]( https://www.zoho.com/teaminbox/ )
  In case of any technical queries 
  [Contact sales]( https://www.zoho.com/teaminbox/contact.html )
  ## Pre-requisites
  - n8n admin login account (https://app.n8n.cloud/login)
  - TeamInbox account
  - Verified domain added to TeamInbox
  ## Installation 
  You can install the nodes for n8n via [npm]( https://www.npmjs.com/ ) with the package name as "n8n-nodes-zohoteaminbox".
  - To install :
    - Log in to your n8n account.
    - Navigate to more options->Settings->Community nodes->Install.
    - Enter the package name (n8n-nodes-zohoteaminbox)
    - The node will be installed successfully.

  ## Configuration 
  Follow the steps below to integrate Zoho TeamInbox from n8n.
  - Log in to your n8n account.
  - Select Create Credential -> Add Credential dialog box -> Enter Zoho TeamInbox OAuth2 API -> Click Continue.
  - Copy the Authorized Redirection URL from the connection page.
  - Access the [Zoho Developer Console](https://api-console.zoho.com/) to create a new Client ID and Client Secret to establish the connection between n8n and Zoho TeamInbox.
  - Click on Get Started if you have no existing Client. If you have an existing client, click on Add Client in the top-right corner. Select Server-based Applications in the Client Type window.
  - Provide the appropriate Client Name and your domain in the Homepage URL along with the Authorized Redirect URL copied from the Connection page.
  - Click Create to generate the Client ID and Client Secret.
  - Enter the Client ID and Client secret in the Connection Page and click Connect my account.
  - Now, the connection between n8n and Zoho TeamInbox is established, and the next step is to create your workflow.
  - Click Create Workflow -> Add first step -> search and select Zoho TeamInbox on the right pane.
  - Build your desired workflow with the list of actions (Send an email or Create contact).
  - Once the workflow is created, you can test it by selecting the Test Workflow option.
  ## Troubleshooting 
  Write to us in case of any queries
  [Contact support]( support@zohoteaminbox.com )

  ### Description
  This page explains the integration of Zoho TeamInbox with n8n. n8n is a powerful, open-source workflow automation software that allows you to connect with different apps and automate tasks with ease.

  For more information on Zoho TeamInbox: https://www.zoho.com/teaminbox/
    
  ### Required :
  - Zoho TeamInbox account and n8n admin account.
  - Module installation and configuration
  - Information on how the integration between Zoho TeamInbox and n8n can be made is found in this Readme file.
  - For further queries, visit :  https://www.zoho.com/teaminbox/contact.html  

ai_documentation_summary:
  {"purpose":"This n8n node enables automation of Zoho TeamInbox workflows by consuming the Zoho TeamInbox API to manage multichannel conversations from platforms like WhatsApp, Telegram, Facebook, Instagram DMs, and email.","capabilities":["Trigger on new messages from multiple channels","Send emails via TeamInbox","Create contacts in TeamInbox","Align TeamInbox with business processes through custom workflows"],"authentication":"OAuth2 API","commonUseCases":["Automating responses to customer inquiries across social media and messaging apps","Centralizing team collaboration on shared conversations","Integrating TeamInbox data into other business workflows"],"limitations":["Requires a verified domain added to the TeamInbox account","Requires manual setup of Client ID and Client Secret in Zoho Developer Console before OAuth2 flow"],"relatedNodes":["Zoho Calendar","Generic Email nodes","Contact Management nodes"]}


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

updated_at: 2026-03-25 21:19:40
author_name: lucianholt
author_github_url: https://github.com/anny-co/anny-n8n.git
npm_package_name: n8n-nodes-anny
npm_version: 1.1.2
community_fetched_at: 2026-03-25T21:19:40.759Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "booking",
      "options": [
        {
          "name": "Availability",
          "value": "availability"
        },
        {
          "name": "Booking",
          "value": "booking"
        },
        {
          "name": "Customer",
          "value": "customer"
        },
        {
          "name": "Invoice",
          "value": "invoice"
        },
        {
          "name": "Order",
          "value": "order"
        },
        {
          "name": "Plan Subscription",
          "value": "planSubscription"
        },
        {
          "name": "Resource",
          "value": "resource"
        },
        {
          "name": "Service",
          "value": "service"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getUpcomingIntervals",
      "options": [
        {
          "name": "Get End Times",
          "value": "getEndTimes",
          "action": "Get end times",
          "description": "Get all interval end dates for a start datetime"
        },
        {
          "name": "Get Start Times",
          "value": "getStartTimes",
          "action": "Get start times",
          "description": "Get all interval start dates for a given date"
        },
        {
          "name": "Get Upcoming Intervals",
          "value": "getUpcomingIntervals",
          "action": "Get upcoming intervals",
          "description": "Get a list of upcoming available intervals"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "availability"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Cancel",
          "value": "cancel",
          "action": "Cancel booking",
          "description": "Cancel an existing booking"
        },
        {
          "name": "Check In",
          "value": "checkIn",
          "action": "Check in booking",
          "description": "Check in a customer for their booking"
        },
        {
          "name": "Check Out",
          "value": "checkOut",
          "action": "Check out booking",
          "description": "Check out a customer from their booking"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get booking",
          "description": "Get a single booking by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many bookings",
          "description": "Get multiple bookings"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "booking"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create customer",
          "description": "Create a new customer"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete customer",
          "description": "Delete an existing customer"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get customer",
          "description": "Get a single customer by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many customers",
          "description": "Get multiple customers"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update customer",
          "description": "Update an existing customer"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "customer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get order",
          "description": "Get a single order by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many orders",
          "description": "Get multiple orders"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "order"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get invoice",
          "description": "Get a single invoice by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many invoices",
          "description": "Get multiple invoices"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "invoice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get service",
          "description": "Get a single service by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many services",
          "description": "Get multiple services"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "service"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get resource",
          "description": "Get a single resource by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many resources",
          "description": "Get multiple resources"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "resource"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get plan subscription",
          "description": "Get a single plan subscription by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many plan subscriptions",
          "description": "Get multiple plan subscriptions"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "planSubscription"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"getEndTimes","name":"Get End Times","description":"Get all interval end dates for a start datetime","resource":"availability"},{"operation":"getStartTimes","name":"Get Start Times","description":"Get all interval start dates for a given date","resource":"availability"},{"operation":"getUpcomingIntervals","name":"Get Upcoming Intervals","description":"Get a list of upcoming available intervals","resource":"availability"},{"operation":"cancel","name":"Cancel","description":"Cancel an existing booking","resource":"booking"},{"operation":"checkIn","name":"Check In","description":"Check in a customer for their booking","resource":"booking"},{"operation":"checkOut","name":"Check Out","description":"Check out a customer from their booking","resource":"booking"},{"operation":"get","name":"Get","description":"Get a single booking by ID","resource":"booking"},{"operation":"getAll","name":"Get Many","description":"Get multiple bookings","resource":"booking"},{"operation":"create","name":"Create","description":"Create a new customer","resource":"customer"},{"operation":"delete","name":"Delete","description":"Delete an existing customer","resource":"customer"},{"operation":"get","name":"Get","description":"Get a single customer by ID","resource":"customer"},{"operation":"getAll","name":"Get Many","description":"Get multiple customers","resource":"customer"},{"operation":"update","name":"Update","description":"Update an existing customer","resource":"customer"},{"operation":"get","name":"Get","description":"Get a single order by ID","resource":"order"},{"operation":"getAll","name":"Get Many","description":"Get multiple orders","resource":"order"},{"operation":"get","name":"Get","description":"Get a single invoice by ID","resource":"invoice"},{"operation":"getAll","name":"Get Many","description":"Get multiple invoices","resource":"invoice"},{"operation":"get","name":"Get","description":"Get a single service by ID","resource":"service"},{"operation":"getAll","name":"Get Many","description":"Get multiple services","resource":"service"},{"operation":"get","name":"Get","description":"Get a single resource by ID","resource":"resource"},{"operation":"getAll","name":"Get Many","description":"Get multiple resources","resource":"resource"},{"operation":"get","name":"Get","description":"Get a single plan subscription by ID","resource":"planSubscription"},{"operation":"getAll","name":"Get Many","description":"Get multiple plan subscriptions","resource":"planSubscription"}]

npm_readme:
  # n8n-nodes-anny

  This is an n8n community node for the [anny](https://anny.co) booking platform. It lets you manage bookings, customers, orders, invoices, resources, and services, plus react to anny webhooks inside n8n.

  anny offers scheduling, payments, and resource management for online booking flows.

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

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

  ## Installation

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

  ## Operations

  - Bookings: get, list (with filters), cancel, check-in, check-out
  - Customers: create, get, list (with filters), update, delete
  - Orders, invoices, plan subscriptions, services, resources: get and list with filters and includes
  - Availability: get upcoming intervals for a resource/service combination
  - API Call: run arbitrary requests against `/api/*` with custom method, params, headers, and body
  - Triggers: webhooks for bookings (created/started/ended/updated/checked-in/checked-out/cancelled/deleted), customers (created/updated/deleted), orders (created/updated/deleted), invoices (created/updated/deleted)

  ## Credentials

  - Uses OAuth2 with preconfigured scopes; only pick your region (anny.co, anny.eu, staging, or local) and complete the OAuth flow.
  - The credential tests by fetching your user profile from the selected region.

  ## Compatibility

  - Built with nodes API v1 via `@n8n/node-cli` 0.13.0 (`n8n-workflow` 1.113.0).
  - Tested locally with n8n 1.x; use a current n8n release for best results.

  ## Usage

  - Add the **anny OAuth2 API** credential first; choose the right region and finish the OAuth consent.
  - Use **anny Booking** to create or manage bookings; include related data via the `include` field when needed.
  - Use the trigger nodes to subscribe to anny webhooks automatically; they create and clean up webhook subscriptions for the selected events.
  - For unsupported endpoints, use **anny API Call** to hit any `/api/v1/*` path with custom parameters.

  ## Resources

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

  ## Version history

  - 0.1.0: Initial release of the anny node pack (bookings, customers, orders, invoices, plan subscriptions, resources, services, triggers, and generic API call).

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the anny booking platform to manage bookings, customers, orders, invoices, and resources, while also handling webhooks for automated event responses.","capabilities":["Get and list bookings with filters","Cancel bookings","Check-in and check-out bookings","Create, retrieve, update, and delete customers","Manage orders, invoices, subscriptions, services, and resources","Retrieve availability for resource/service combinations","Execute arbitrary API calls to /api/* endpoints","Subscribe to webhooks for bookings, customers, orders, and invoices"],"authentication":"OAuth2 with preconfigured scopes; requires selecting a region (anny.co, anny.eu, staging, or local) and completing the OAuth flow","commonUseCases":["Automating booking confirmations and reminders","Syncing customer data between systems","Processing order and invoice updates","Monitoring booking status changes via webhooks"],"limitations":["Requires a current n8n release (tested with n8n 1.x)","Uses nodes API v1 via @n8n/node-cli 0.13.0","Generic API Call node required for unsupported endpoints"],"relatedNodes":["n8n-nodes-base.webhook","n8n-nodes-base.httpRequest","n8n-nodes-base.oauth2"]}


node_type: n8n-nodes-hedy.hedy
package_name: n8n-nodes-hedy
display_name: Hedy
description: Interact with Hedy API to retrieve meeting intelligence data
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  {
  "type": "main"
  }
  ]

updated_at: 2026-03-25 21:19:40
author_name: julian-hedy
author_github_url: https://github.com/HedyAI/
npm_package_name: n8n-nodes-hedy
npm_version: 1.2.1
community_fetched_at: 2026-03-25T21:19:40.760Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "session",
      "options": [
        {
          "name": "Context",
          "value": "context",
          "description": "Session context operations for AI instructions"
        },
        {
          "name": "Highlight",
          "value": "highlight",
          "description": "Meeting highlight operations"
        },
        {
          "name": "Session",
          "value": "session",
          "description": "Meeting session operations"
        },
        {
          "name": "Todo",
          "value": "todo",
          "description": "Todo item operations"
        },
        {
          "name": "Topic",
          "value": "topic",
          "description": "Topic operations for organizing sessions"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a session context",
          "description": "Create a new session context"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a session context",
          "description": "Delete a session context"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a session context",
          "description": "Get a specific session context by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many session contexts",
          "description": "Get all session contexts"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a session context",
          "description": "Update a session context"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "context"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a session",
          "description": "Get a specific session by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many sessions",
          "description": "Get multiple sessions"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "session"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a highlight",
          "description": "Get a specific highlight by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many highlights",
          "description": "Get multiple highlights"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "highlight"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many todos",
          "description": "Get all todos"
        },
        {
          "name": "Get by Session",
          "value": "getBySession",
          "action": "Get todos by session",
          "description": "Get todos for a specific session"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "todo"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a topic",
          "description": "Get a specific topic by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many topics",
          "description": "Get all topics"
        },
        {
          "name": "Get Topic Sessions",
          "value": "getSessions",
          "action": "Get sessions by topic",
          "description": "Get all sessions for a specific topic"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "topic"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"create","name":"Create","description":"Create a new session context","resource":"context"},{"operation":"delete","name":"Delete","description":"Delete a session context","resource":"context"},{"operation":"get","name":"Get","description":"Get a specific session context by ID","resource":"context"},{"operation":"getAll","name":"Get Many","description":"Get all session contexts","resource":"context"},{"operation":"update","name":"Update","description":"Update a session context","resource":"context"},{"operation":"get","name":"Get","description":"Get a specific session by ID","resource":"session"},{"operation":"getAll","name":"Get Many","description":"Get multiple sessions","resource":"session"},{"operation":"get","name":"Get","description":"Get a specific highlight by ID","resource":"highlight"},{"operation":"getAll","name":"Get Many","description":"Get multiple highlights","resource":"highlight"},{"operation":"getAll","name":"Get Many","description":"Get all todos","resource":"todo"},{"operation":"getBySession","name":"Get by Session","description":"Get todos for a specific session","resource":"todo"},{"operation":"get","name":"Get","description":"Get a specific topic by ID","resource":"topic"},{"operation":"getAll","name":"Get Many","description":"Get all topics","resource":"topic"},{"operation":"getSessions","name":"Get Topic Sessions","description":"Get all sessions for a specific topic","resource":"topic"}]

npm_readme:
  # n8n-nodes-hedy

  [![npm version](https://badge.fury.io/js/n8n-nodes-hedy.svg)](https://www.npmjs.com/package/n8n-nodes-hedy)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
  [![n8n Community Node](https://img.shields.io/badge/n8n-Community%20Node-orange)](https://n8n.io)

  This is an n8n community node that lets you integrate [Hedy](https://hedy.bot) - your AI-powered meeting intelligence assistant - into your n8n workflows.

  Hedy helps you be the brightest person in the room by providing real-time transcription, meeting summaries, action items, and intelligent insights from your meetings.

  [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. Search for `n8n-nodes-hedy`
  3. Click **Install**

  ### Manual Installation

  ```bash
  # Navigate to your n8n custom nodes folder
  cd ~/.n8n/custom

  # Install the package
  npm install n8n-nodes-hedy
  ```

  ### Docker Installation

  Add the following to your docker-compose.yml:

  ```yaml
  n8n:
    image: n8nio/n8n
    environment:
      - N8N_CUSTOM_EXTENSIONS=n8n-nodes-hedy
  ```

  ## 🔑 Authentication

  1. Get your API key from [Hedy Dashboard](https://app.hedy.bot):
     - Navigate to Settings → API
     - Click "Generate New Key"
     - Copy the key (starts with `hedy_live_`)

  2. In n8n:
     - Go to Credentials
     - Create new "Hedy API" credential
     - Paste your API key
     - Click "Save"

  ## 📦 Nodes Included

  ### Hedy Trigger
  Receives real-time webhook notifications when events occur in Hedy:

  - **Session Created** - When a new meeting session starts
  - **Session Ended** - When a meeting session completes
  - **Highlight Created** - When a highlight is created during a meeting
  - **Todo Exported** - When a todo item is exported

  ### Hedy
  Performs actions and retrieves data from Hedy:

  - **Sessions**
    - Get Session - Retrieve detailed session information
    - Get Many Sessions - List multiple sessions with pagination
    
  - **Highlights**
    - Get Highlight - Retrieve specific highlight details
    - Get Many Highlights - List multiple highlights
    
  - **Todos**
    - Get Many Todos - List all todo items
    - Get Todos by Session - Get todos for a specific session

  ## 🎯 Example Workflows

  ### 1. Meeting Summary to Slack
  Send meeting summaries to Slack when sessions end:

  ```
  [Hedy Trigger: Session Ended]
      → [Hedy: Get Session Details]
      → [Slack: Send Message]
  ```

  ### 2. Highlight Collection to Notion
  Save important highlights to a Notion database:

  ```
  [Hedy Trigger: Highlight Created]
      → [Hedy: Get Highlight Details]
      → [Notion: Create Database Entry]
  ```

  ### 3. Todo Export to Project Management
  Export todos to your project management tool:

  ```
  [Hedy Trigger: Todo Exported]
      → [Jira/Trello/Asana: Create Task]
  ```

  ### 4. Daily Meeting Report
  Generate daily meeting reports:

  ```
  [Schedule Trigger: Daily at 5 PM]
      → [Hedy: Get Many Sessions (today)]
      → [Transform: Format Report]
      → [Email: Send Report]
  ```

  ## 📊 Data Structures

  ### Session Object
  ```json
  {
    "id": "sess_abc123",
    "title": "Team Standup",
    "startTime": "2024-01-10T10:00:00Z",
    "endTime": "2024-01-10T10:30:00Z",
    "duration": 1800,
    "transcript": "Full transcript...",
    "cleaned_transcript": "AI-cleaned transcript...",
    "cleaned_at": "2024-01-10T11:00:00Z",
    "conversations": [...],
    "meeting_minutes": "Meeting notes...",
    "recap": "Summary...",
    "user_todos": [...],
    "topic": {...}
  }
  ```

  > **Note:** `cleaned_transcript` and `cleaned_at` are `null` when the transcript has not yet been cleaned.

  ### Highlight Object
  ```json
  {
    "id": "high_xyz789",
    "sessionId": "sess_abc123",
    "timestamp": "2024-01-10T10:15:00Z",
    "title": "Key Decision",
    "rawQuote": "Original quote...",
    "cleanedQuote": "Cleaned quote...",
    "mainIdea": "Core concept...",
    "aiInsights": "Analysis..."
  }
  ```

  ### Todo Object
  ```json
  {
    "id": "todo_123",
    "sessionId": "sess_abc123",
    "text": "Follow up with marketing team",
    "dueDate": "2024-01-15",
    "completed": false,
    "topic": {...}
  }
  ```

  ## ⚙️ Configuration

  ### Webhook Limits
  - Maximum of 10 webhooks per Hedy account
  - Webhooks must use HTTPS URLs
  - Each webhook receives a unique signing secret for security

  ### Pagination
  - Default page size: 50 items
  - Maximum page size: 100 items
  - Supports cursor-based pagination for large datasets

  ### Rate Limiting
  The API follows standard rate limiting practices. If you encounter rate limit errors, implement exponential backoff in your workflows.

  ## 🔒 Security

  ### Webhook Signature Verification
  All webhooks include an `X-Hedy-Signature` header for verification:

  1. The signature is an HMAC SHA-256 hash of the request body
  2. Each webhook has a unique signing secret
  3. Signature verification is enabled by default (recommended)

  ### API Key Security
  - Never share your API key publicly
  - Rotate keys regularly (every 90 days recommended)
  - Use n8n's built-in credential encryption
  - Keys can be revoked instantly from the Hedy dashboard

  ## 🐛 Troubleshooting

  ### Common Issues

  **Webhook Registration Fails**
  - Ensure your n8n instance uses HTTPS
  - Check you haven't exceeded the 10 webhook limit
  - Verify your API key has the necessary permissions

  **No Data Returned**
  - Verify the resource ID exists
  - Check your API key is valid
  - Ensure you have access to the requested resource

  **Signature Verification Fails**
  - Don't modify webhook payloads
  - Ensure signature verification is using the correct secret
  - Check for clock skew between servers

  ## 📚 Resources

  - [Hedy Website](https://hedy.bot)
  - [Hedy API Documentation](https://api.hedy.bot/docs)
  - [n8n Documentation](https://docs.n8n.io)
  - [n8n Community Forum](https://community.n8n.io)

  ## 💬 Support

  - **Hedy Support**: support@hedy.bot
  - **API Issues**: api@hedy.bot
  - **n8n Node Issues**: [GitHub Issues](https://github.com/HedyAI/n8n-nodes-hedy/issues)

  ## 🤝 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/AmazingFeature`)
  3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
  4. Push to the branch (`git push origin feature/AmazingFeature`)
  5. Open a Pull Request

  ## 📄 License

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

  ## 🙏 Acknowledgments

  - Thanks to the n8n team for their excellent workflow automation platform
  - Thanks to the Hedy team for providing comprehensive API documentation
  - Thanks to all contributors and users of this node

  ## 📈 Version History

  See [CHANGELOG.md](CHANGELOG.md) for a list of changes in each version.

  ---

  Made with ❤️ by the Hedy team

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with Hedy, an AI-powered meeting intelligence assistant, to retrieve meeting data such as transcripts, summaries, action items, and highlights.","capabilities":["Webhook Trigger for real-time event notifications (Session Created, Session Ended, Highlight Created, Todo Exported)","Retrieve single session details","List multiple sessions with pagination","Retrieve single highlight details","List multiple highlights with pagination","List all todo items","Retrieve todos for a specific session"],"authentication":"API key required (Hedy Dashboard API key)","commonUseCases":["Automated meeting summary delivery to Slack or email","Storing meeting highlights in Notion or other databases","Exporting meeting action items to project management tools (Jira, Trello, Asana)","Generating daily meeting reports"],"limitations":["Maximum of 10 webhooks per Hedy account","Webhooks must use HTTPS URLs","Webhook signature verification is enabled by default and requires correct secret configuration","API follows standard rate limiting practices","Webhook registration fails if n8n instance does not use HTTPS"],"relatedNodes":["Webhook Trigger","Slack","Notion","Jira","Trello"]}


node_type: @custom-js/n8n-nodes-pdf-toolkit-v2.pdfToolkit
package_name: @custom-js/n8n-nodes-pdf-toolkit-v2
display_name: CustomJS (PDF & File Toolkit)
description: All-in-one toolkit for PDF, HTML, JSON, and file conversions.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: henriklippke
author_github_url: https://github.com/customjs/n8n-nodes-pdf-toolkit-v2.git
npm_package_name: @custom-js/n8n-nodes-pdf-toolkit-v2
npm_version: 0.8.0
community_fetched_at: 2026-03-25T21:19:40.761Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "convert",
      "options": [
        {
          "name": "Convert",
          "value": "convert"
        },
        {
          "name": "PDF",
          "value": "pdf"
        },
        {
          "name": "Web",
          "value": "web"
        },
        {
          "name": "Data",
          "value": "data"
        },
        {
          "name": "HTML Hosting",
          "value": "page"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "pdfToPng",
      "options": [
        {
          "name": "PDF to PNG",
          "value": "pdfToPng",
          "action": "Convert PDF to PNG"
        },
        {
          "name": "PDF to Text",
          "value": "pdfToText",
          "action": "Convert PDF to Text"
        },
        {
          "name": "HTML to DOCX",
          "value": "htmlToDocx",
          "action": "Convert HTML to DOCX"
        },
        {
          "name": "HTML to PDF",
          "value": "htmlToPdf",
          "action": "Convert HTML to PDF"
        },
        {
          "name": "JSON to TOON",
          "value": "jsonToToon",
          "action": "Convert JSON to TOON"
        },
        {
          "name": "TOON to JSON",
          "value": "toonToJson",
          "action": "Convert TOON to JSON"
        },
        {
          "name": "Markdown to HTML",
          "value": "markdownToHtml",
          "action": "Convert Markdown to HTML"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "convert"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "compress",
      "options": [
        {
          "name": "Compress",
          "value": "compress",
          "action": "Compress PDF"
        },
        {
          "name": "Merge",
          "value": "merge",
          "action": "Merge PDFs"
        },
        {
          "name": "Extract Pages",
          "value": "extractPages",
          "action": "Extract Pages from PDF"
        },
        {
          "name": "Get Form Fields",
          "value": "getFormFields",
          "action": "Get PDF Form Fields"
        },
        {
          "name": "Fill Form",
          "value": "fillForm",
          "action": "Fill PDF Form"
        },
        {
          "name": "Generate Invoice",
          "value": "generateInvoice",
          "action": "Generate Invoice PDF"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdf"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scrape",
      "options": [
        {
          "name": "Scrape",
          "value": "scrape",
          "action": "Scrape Website"
        },
        {
          "name": "Screenshot",
          "value": "screenshot",
          "action": "Take Screenshot"
        },
        {
          "name": "SSL Check",
          "value": "sslCheck",
          "action": "Check SSL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "web"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "jsonSelect",
      "options": [
        {
          "name": "JSON Select",
          "value": "jsonSelect",
          "action": "Select JSON Data"
        },
        {
          "name": "Regex",
          "value": "regex",
          "action": "Regex Tool"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "data"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Get HTML Pages",
          "value": "getAll",
          "action": "Get HTML Pages"
        },
        {
          "name": "Host HTML Page",
          "value": "upload",
          "action": "Upload new HTML Page"
        },
        {
          "name": "Update HTML Page",
          "value": "update",
          "action": "Update existing HTML Page"
        },
        {
          "name": "Upsert HTML Page",
          "value": "upsert",
          "action": "Upsert HTML Page"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "page"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"pdfToPng","name":"PDF to PNG","resource":"convert"},{"operation":"pdfToText","name":"PDF to Text","resource":"convert"},{"operation":"htmlToDocx","name":"HTML to DOCX","resource":"convert"},{"operation":"htmlToPdf","name":"HTML to PDF","resource":"convert"},{"operation":"jsonToToon","name":"JSON to TOON","resource":"convert"},{"operation":"toonToJson","name":"TOON to JSON","resource":"convert"},{"operation":"markdownToHtml","name":"Markdown to HTML","resource":"convert"},{"operation":"compress","name":"Compress","resource":"pdf"},{"operation":"merge","name":"Merge","resource":"pdf"},{"operation":"extractPages","name":"Extract Pages","resource":"pdf"},{"operation":"getFormFields","name":"Get Form Fields","resource":"pdf"},{"operation":"fillForm","name":"Fill Form","resource":"pdf"},{"operation":"generateInvoice","name":"Generate Invoice","resource":"pdf"},{"operation":"scrape","name":"Scrape","resource":"web"},{"operation":"screenshot","name":"Screenshot","resource":"web"},{"operation":"sslCheck","name":"SSL Check","resource":"web"},{"operation":"jsonSelect","name":"JSON Select","resource":"data"},{"operation":"regex","name":"Regex","resource":"data"},{"operation":"getAll","name":"Get HTML Pages","resource":"page"},{"operation":"upload","name":"Host HTML Page","resource":"page"},{"operation":"update","name":"Update HTML Page","resource":"page"},{"operation":"upsert","name":"Upsert HTML Page","resource":"page"}]

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

  # @custom-js/n8n-nodes-pdf-toolkit-v2

  This is an n8n community node. It lets interact with official API of [customJS API](https://www.customjs.space/)

  This package contains nodes to help you generate PDF from HTML, merge multiple PDF files, take a screenshot of specific website using URL, convert PDF to PNG, convert PDF to Text and extract pages from PDF.

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

  - [Installation](#installation)
  - [Credentials](#credentials)
  - [Usage](#usage)
  - [Resources](#resources)

  ## Installation

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

  Use the package at [here](https://www.npmjs.com/package/@custom-js/n8n-nodes-pdf-toolkit).

  ## Credentials

  Add your Api Key and store securely


  ## Usage

  ### "HTML to PDF" node

  - Add the HTML to PDF node to your workflow
  - Configure your CustomJS API credentials
  - Input your HTML content
  - Execute the workflow to generate PDF

  ### "Merge PDFs" node

  - Add the Merge PDFs node to your workflow
  - Configure your CustomJS API credentials
  - Input PDF files as an array with the same field name to merge.
  - If total size of files exceeds 6MB, pass it as an array of URL seperated by comma.
  - Execute the workflow to get merged PDF file.

  ### "Website Screenshot" node

  - Add the Website Screenshot node to your workflow
  - Configure your CustomJS API credentials
  - Input your URL of website to take screenshot
  - Execute the workflow to take a screenshot of that website

  ### "Compress PDF" node

  - Add the Compress PDF node to your workflow
  - Configure your CustomJS API credentials
  - Input Binary PDF file for compression to compress
  - If size of the binary file exceeds 6MB, pass it as URL.
  - Execute the workflow to get a compression of PDF file.

  ### "PDF To PNG" node

  - Add the PDF To PNG node to your workflow
  - Configure your CustomJS API credentials
  - Input Binary PDF file for conversion
  - If size of the binary file exceeds 6MB, pass it as URL.
  - Execute the workflow to get converted PNG file.

  ### "PDF To Text" node

  - Add the PDF To Text node to your workflow
  - Configure your CustomJS API credentials
  - Input Binary PDF file for conversion
  - If size of the binary file exceeds 6MB, pass it as URL.
  - Execute the workflow to get converted Text file.

  ### "Extract Pages From PDF" node

  - Add the Extract Pages From PDF node to your workflow
  - Configure your CustomJS API credentials
  - Input Binary PDF file for conversion
  - If size of the binary file exceeds 6MB, pass it as URL.
  - Execute the workflow to get converted Pages from PDF file.

  ### "SSL Checker" node

  - Add the **SSL Checker** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input the domain you want to check (e.g., `example.com`).
  - Execute the workflow to get information about the SSL certificate, including the expiration date.

  ### "Scraper" node

  - Add the **Scraper** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input the website URL you want to scrape (must start with `https://`).
  - Optionally, define user actions (click, type, wait) to interact with page elements using selectors.
  - Choose the return type:  
    - **Raw HTML**: Get the HTML content of the page.  
    - **Screenshot (PNG)**: Get a screenshot of the page.
  - Enable or disable debug mode to control error handling for missing elements.
  - Execute the workflow to scrape the website and receive the desired output.

  ### "Markdown to HTML" node

  - Add the **Markdown to HTML** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input the Markdown content you want to convert to HTML.
  - Execute the workflow to get the converted HTML content.

  ### "HTML to Docx (Word)" node

  - Add the **HTML to Docx (Word)** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input the HTML content you want to convert to Docx (Word).
  - Execute the workflow to get the converted Docx (Word) file.


  ### "PDF Form Fill" node

  - Add the **PDF Form Fill** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input the PDF file you want to fill out.
  - Define the form fields and their values.
  - Execute the workflow to get the filled-out PDF file.

  ### "Get PDF Form Field Names" node

  - Add the **Get PDF Form Field Names** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input the PDF file you want to get form field names from.
  - Execute the workflow to get the form field names.

  ### "Invoice Generator" node

  - Add the **Invoice Generator** node to your workflow.
  - Configure your CustomJS API credentials.
  - Select a PDF template.
  - Fill in the issuer, payment, recipient, and billing information.
  - Add items to the invoice.
  - Execute the workflow to generate the PDF invoice.

  ### "JSON to TOON" node

  - Add the **JSON to TOON** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input your JSON data.
  - Execute the workflow to convert JSON to TOON format.
  - TOON format can reduce AI tokenization by 40% to 60% when working with language models.

  ### "TOON to JSON" node

  - Add the **TOON to JSON** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input your TOON data.
  - Execute the workflow to convert TOON to JSON format.

  ### Host HTML Page node

  - Add the **Host HTML Page** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input your HTML content.
  - Execute the workflow to host the HTML page.
  - You can then access the hosted page via the provided URL.

ai_documentation_summary:
  {"purpose":"This n8n community node acts as an all-in-one toolkit for PDF manipulation, file conversions, website interactions, and document generation using the CustomJS API.","capabilities":["Convert HTML to PDF","Merge multiple PDF files","Take website screenshots","Convert PDF to PNG","Convert PDF to text","Extract pages from PDF","Compress PDF files","Check SSL certificate status","Scrape websites with optional user actions","Convert Markdown to HTML"],"authentication":"API Key required (CustomJS API credentials)","commonUseCases":["Automated document generation for invoices","Converting web content to PDF or image formats","Extracting text from scanned documents","Automating website scraping and data collection","Filling out digital forms programmatically"],"limitations":["Large files (exceeding 6MB) must be passed as URLs instead of binary files for most operations","Requires valid CustomJS API credentials","Community node status may indicate less official support compared to core n8n nodes"],"relatedNodes":["HTTP Request","Binary File","Code","Webhook"]}


node_type: n8n-nodes-jsonpost.jsonPostTrigger
package_name: n8n-nodes-jsonpost
display_name: CrispForms Trigger
description: Starts the workflow when a form is submitted to CrispForms
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: ubergeekady
author_github_url: https://github.com/ubergeekady/
npm_package_name: n8n-nodes-jsonpost
npm_version: 0.1.6
community_fetched_at: 2026-03-25T21:19:40.762Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-jsonpost

  A custom n8n node for integrating with JSONPost.com webhooks. This node allows you to easily create, manage, and receive webhooks from JSONPost endpoints in your n8n workflows.

  ## Features

  - **Easy Webhook Management**: Create and delete webhooks for JSONPost endpoints
  - **Real-time Data Reception**: Receive webhook data in real-time within your n8n workflows
  - **Secure Authentication**: Uses API key authentication for secure access to JSONPost services
  - **Event Filtering**: Subscribe to specific event types from your JSONPost endpoints
  - **Automatic Cleanup**: Properly handles webhook cleanup when workflows are deactivated

  ## Installation

  ### From npm (Recommended)

  ```bash
  npm install n8n-nodes-jsonpost
  ```

  ### n8n Community Nodes

  You can also install this node directly through n8n's community nodes feature:

  1. Go to **Settings** > **Community Nodes**
  2. Click **Install a community node**
  3. Enter `n8n-nodes-jsonpost`
  4. Click **Install**

  ## Quick Start

  ### 1. Set up Credentials

  1. In n8n, go to **Credentials** and create a new **JSONPost API** credential
  2. Enter your JSONPost API key (get it from your JSONPost dashboard)
  3. Test the connection to ensure it's working properly

  ### 2. Add the Node

  1. Add the **JSONPost Trigger** node to your workflow
  2. Select your JSONPost API credential
  3. Enter your **Endpoint ID** (from your JSONPost dashboard)
  4. Choose the **Event Type** you want to listen for (POST, GET, PUT, DELETE)

  ### 3. Activate and Test

  1. Activate the workflow
  2. The node will automatically create a webhook subscription with JSONPost
  3. Send data to your JSONPost endpoint to trigger your workflow

  ## Usage

  ### Accessing Webhook Data

  The JSONPost Trigger node outputs the complete webhook payload. You can access this data in subsequent nodes using:

  - `{{ $json.body }}` - The request body
  - `{{ $json.headers }}` - Request headers  
  - `{{ $json.query }}` - Query parameters
  - `{{ $json.method }}` - HTTP method used
  - `{{ $json.timestamp }}` - When the request was received

  ### Example Workflow

  1. **JSONPost Trigger** - Receives webhook data
  2. **Set Node** - Extract specific fields from the payload
  3. **HTTP Request** - Send processed data to another service
  4. **Email Node** - Send notification about the received data

  ## Configuration Options

  ### JSONPost Trigger Node

  - **Credential**: Your JSONPost API credential
  - **Endpoint ID**: The ID of your JSONPost endpoint (found in your JSONPost dashboard)
  - **Event Type**: The HTTP method to listen for:
    - `POST` - Listen for POST requests (default)
    - `GET` - Listen for GET requests
    - `PUT` - Listen for PUT requests
    - `DELETE` - Listen for DELETE requests

  ## Support

  - **Issues & Bug Reports**: [GitHub Issues](https://github.com/yourusername/n8n-nodes-jsonpost/issues)
  - **Feature Requests**: [GitHub Issues](https://github.com/yourusername/n8n-nodes-jsonpost/issues)
  - **General n8n Questions**: [n8n Community Forum](https://community.n8n.io/)
  - **JSONPost API Questions**: [JSONPost.com](https://jsonpost.com)

  ## Documentation

  - **User Guide**: This README
  - **Developer Documentation**: See [DEVELOPER.md](./DEVELOPER.md) for technical details, development setup, and contribution guidelines
  - **Changelog**: See [CHANGELOG.md](./CHANGELOG.md) for version history

  ## License

  This project is licensed under the MIT License. See the LICENSE file for details.

  ---

  **Note**: This is a community-maintained node and is not officially supported by n8n or JSONPost. Use at your own discretion and always test thoroughly in your environment before production use.

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows when a form is submitted to a JSONPost.com webhook endpoint by receiving real-time webhook data.","capabilities":["Create and delete JSONPost webhooks","Receive webhook data in real-time","Filter events by HTTP method (POST, GET, PUT, DELETE)","Access webhook payload data including body, headers, query parameters, HTTP method, and timestamp","Automatic cleanup of webhook subscriptions when workflows are deactivated"],"authentication":"API key required (JSONPost API key)","commonUseCases":["Triggering workflows upon form submissions","Receiving data from third-party services via JSONPost endpoints","Automating tasks based on incoming HTTP requests"],"limitations":["Community-maintained node not officially supported by n8n or JSONPost","Requires manual setup of JSONPost API credentials and Endpoint ID","Users must test thoroughly in their environment before production use"],"relatedNodes":["n8n-nodes-jsonpost.jsonPost","n8n-nodes-http.request","n8n-nodes-set","n8n-nodes-email.sendEmail"]}


node_type: n8n-nodes-docuprox.docuProx
package_name: n8n-nodes-docuprox
display_name: DocuProx
description: Process documents using DocuProx API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: docuprox
author_github_url: https://github.com/docuprox/n8n-docuprox.git
npm_package_name: n8n-nodes-docuprox
npm_version: 1.0.8
community_fetched_at: 2026-03-25T21:19:40.762Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "document",
      "options": [
        {
          "name": "Document",
          "value": "document",
          "description": "Real-time document processing"
        },
        {
          "name": "Job",
          "value": "job",
          "description": "Background job submission and management"
        }
      ],
      "required": true,
      "displayName": "Resource"
    },
    {
      "name": "operation",
      "type": "options",
      "default": "process",
      "options": [
        {
          "name": "Process",
          "value": "process",
          "action": "Process a document",
          "description": "Process a document in real-time with a template"
        },
        {
          "name": "Process Agent",
          "value": "process_agent",
          "action": "Process with agent",
          "description": "Process a document using AI agent with custom instructions and extraction prompts"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "processJob",
      "options": [
        {
          "name": "Submit Job",
          "value": "processJob",
          "action": "Submit a job",
          "description": "Submit a batch job with a template ID and ZIP file"
        },
        {
          "name": "Get Job Status",
          "value": "jobStatus",
          "action": "Get job status",
          "description": "Get the status of a submitted job"
        },
        {
          "name": "Get Job Results",
          "value": "jobResults",
          "action": "Get job results",
          "description": "Retrieve the results of a completed job"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "job"
          ]
        }
      }
    }
  ]

operations:
  [{"operation":"process","name":"Process","description":"Process a document in real-time with a template","resource":"document"},{"operation":"process_agent","name":"Process Agent","description":"Process a document using AI agent with custom instructions and extraction prompts","resource":"document"},{"operation":"processJob","name":"Submit Job","description":"Submit a batch job with a template ID and ZIP file","resource":"job"},{"operation":"jobStatus","name":"Get Job Status","description":"Get the status of a submitted job","resource":"job"},{"operation":"jobResults","name":"Get Job Results","description":"Retrieve the results of a completed job","resource":"job"}]

npm_readme:
  # n8n-nodes-docuprox

  An n8n custom node for integrating with the DocuProx API to process documents using AI-powered document processing templates.

  ## Description

  This n8n node allows you to process documents by providing a template ID and an image (either as a binary file upload or base64 encoded string). The node communicates with the DocuProx API to extract structured data from documents based on predefined templates.

  ## Installation

  1. Clone or download this repository
  2. Navigate to the project directory
  3. Install dependencies:
     ```bash
     npm install
     ```
  4. Build the project:
     ```bash
     npm run build
     ```
  5. Copy the `dist` folder to your n8n custom nodes directory
  6. Restart n8n

  ## Usage

  1. Add the "DocuProx" node to your n8n workflow
  2. Configure your DocuProx API credentials (see Configuration section)
  3. Set the Template ID for the document processing template you want to use
  4. Choose your image source:
     - **Upload Image File**: Provide the binary property name containing the image file
     - **Base64 String**: Directly input the base64 encoded image data
  5. Execute the workflow

  The node will return the processed document data from the DocuProx API.

  ## Configuration

  ### Credentials Setup

  Before using the node, you need to set up your DocuProx API credentials:

  1. Go to your n8n instance
  2. Navigate to Settings > Credentials
  3. Create a new credential of type "DocuProx API"
  4. Enter your DocuProx API key
  5. Save the credential

  ### Node Properties

  - **Template ID** (required): The ID of the template to use for document processing
  - **Image Source** (required):
    - Upload Image File: Upload an image file from binary data
    - Base64 String: Provide image as Base64 encoded string
  - **Binary Property Name** (required when using Upload): Name of the binary property containing the image file
  - **Base64 Image** (required when using Base64): The base64 encoded image data

  ## API Reference

  ### Input
  - Template ID: String
  - Image: Binary file or Base64 string

  ### Output
  - Success status
  - Template ID used
  - API response data
  - Timestamp

  ### Error Handling
  The node includes comprehensive error handling and will return error details if the API call fails. You can configure the node to continue on failure or stop the workflow.

  ## Development

  ### Prerequisites
  - Node.js
  - npm
  - n8n instance

  ### Scripts
  - `npm run build`: Build the TypeScript code and copy assets
  - `npm run dev`: Watch mode for development

  ## Release and npm publish

  Publishing is automated through GitHub Actions with npm provenance.

  1. Add an npm automation token as `NPM_TOKEN` in the GitHub repository secrets
  2. Bump `version` in `package.json`
  3. Create and push a tag matching that version in `vX.Y.Z` format (for example `v1.0.8`)
  4. The `Publish to npm` workflow will build and run `npm publish --provenance`

  ### Project Structure
  ```
  ├── credentials/
  │   └── DocuProxApi.credentials.ts    # API credentials definition
  ├── nodes/
  │   └── DocuProx/
  │       ├── DocuProx.node.ts          # Main node implementation
  │       └── douprox-logo.svg          # Node icon
  ├── dist/                             # Built files
  ├── package.json
  ├── tsconfig.json
  └── README.md
  ```

  ## License

  This project is licensed under the MIT License - see the LICENSE file for details.

ai_documentation_summary:
  {"purpose":"Processes documents using the DocuProx API by applying AI-powered document processing templates to extract structured data from uploaded images.","capabilities":["Process documents using predefined DocuProx templates","Accept image input as binary file uploads","Accept image input as Base64 encoded strings","Extract structured data from documents","Return processed document data with success status and API response","Handle API errors with configurable workflow continuation"],"authentication":"API key required (via n8n Credentials system)","commonUseCases":["Extracting text and data from invoices","Processing ID documents for verification","Analyzing receipts or forms","Automating document data entry into databases"],"limitations":["Requires a valid DocuProx API key and template ID","Input must be provided as an image file or Base64 string","Dependent on DocuProx API availability and template support"],"relatedNodes":["n8n-nodes-base.credential","n8n-nodes-base.binaryData","n8n-nodes-base.httpRequest"]}


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

updated_at: 2026-03-25 21:19:40
author_name: anthonybrebion
author_github_url: https://github.com/abrebion/
npm_package_name: n8n-nodes-realm
npm_version: 0.1.3
community_fetched_at: 2026-03-25T21:19:40.763Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "chat",
      "options": [
        {
          "name": "Chat",
          "value": "chat"
        },
        {
          "name": "Assistant",
          "value": "assistant"
        },
        {
          "name": "Connector",
          "value": "connector"
        },
        {
          "name": "Document",
          "value": "document"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get chats",
          "routing": {
            "request": {
              "url": "=/chats",
              "method": "GET"
            }
          },
          "description": "Get many chat conversations"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a chat",
          "routing": {
            "request": {
              "url": "=/chats/{{$parameter.chatId}}",
              "method": "GET"
            }
          },
          "description": "Get a single chat conversation"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a chat",
          "routing": {
            "request": {
              "url": "=/chats/{{$parameter.chatId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a chat"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Start a chat",
          "routing": {
            "request": {
              "url": "={{$parameter[\"additionalFields\"]?.streamResponse ? \"/chats-streaming\" : \"/chats\"}}",
              "method": "POST"
            }
          },
          "description": "Start a new chat or continue an existing one"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chat"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get assistants",
          "routing": {
            "request": {
              "url": "/assistants",
              "method": "GET"
            }
          },
          "description": "Get assistants"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "assistant"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get connectors",
          "routing": {
            "request": {
              "url": "/connectors",
              "method": "GET"
            }
          },
          "description": "Get connectors"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "connector"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create or Update",
          "value": "createOrUpdate",
          "action": "Create or update documents",
          "routing": {
            "request": {
              "url": "=/documents/{{$parameter.connectorId}}",
              "method": "POST"
            }
          },
          "description": "Create or update documents for a connector"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a document",
          "routing": {
            "request": {
              "url": "=/documents/{{$parameter.connectorId}}/{{$parameter.documentId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a document"
        },
        {
          "name": "Delete Old Documents",
          "value": "deleteOldDocuments",
          "action": "Delete documents older than a specified timestamp",
          "routing": {
            "request": {
              "qs": {
                "older_than": "={{$parameter.olderThan + \"Z\"}}"
              },
              "url": "=/documents/{{$parameter.connectorId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete documents older than a specified timestamp"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a document",
          "routing": {
            "request": {
              "qs": {
                "fields": "={{$parameter.fieldsToInclude}}"
              },
              "url": "=/documents/{{$parameter.connectorId}}/{{$parameter.documentId}}",
              "method": "GET",
              "arrayFormat": "repeat"
            }
          },
          "description": "Get a single document"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get documents",
          "routing": {
            "request": {
              "qs": {
                "fields": "={{$parameter.fieldsToInclude}}"
              },
              "url": "=/documents/{{$parameter.connectorId}}/",
              "method": "GET",
              "arrayFormat": "repeat"
            }
          },
          "description": "Get documents for a connector"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"getAll","name":"Get Many","description":"Get many chat conversations","resource":"chat"},{"operation":"get","name":"Get","description":"Get a single chat conversation","resource":"chat"},{"operation":"delete","name":"Delete","description":"Delete a chat","resource":"chat"},{"operation":"create","name":"Create","description":"Start a new chat or continue an existing one","resource":"chat"},{"operation":"getAll","name":"Get Many","description":"Get assistants","resource":"assistant"},{"operation":"getAll","name":"Get Many","description":"Get connectors","resource":"connector"},{"operation":"createOrUpdate","name":"Create or Update","description":"Create or update documents for a connector","resource":"document"},{"operation":"delete","name":"Delete","description":"Delete a document","resource":"document"},{"operation":"deleteOldDocuments","name":"Delete Old Documents","description":"Delete documents older than a specified timestamp","resource":"document"},{"operation":"get","name":"Get","description":"Get a single document","resource":"document"},{"operation":"getAll","name":"Get Many","description":"Get documents for a connector","resource":"document"}]

npm_readme:
  # n8n-nodes-realm

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

  Realm is an AI-powered enterprise search engine that unifies your knowledge bases (Google Drive, Slack, Jira, Confluence, Salesforce, Gong, etc.) and makes them accessible to custom AI assistants.

  With the Realm API, you can programmatically add, edit, and delete documents for custom connectors (non-native knowledge data sources) and interact with Realm assistants.

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

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

  ## 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/operations:

  * Create or continue a chat conversation
  * Get a single chat conversation
  * Get many chat conversations
  * Delete a chat conversation
  * Get all asssistants
  * Get all connectors
  * Create or update documents in a connector
  * Get all documents from a connector
  * Get a specific document from a connector
  * Delete a specific document from a connector
  * Delete documents from a connector older than a specified timestamp

  ## Credentials

  * From the Realm app, create an API key and give it access to assistants.
  * In n8n, create a new Realm credential. Enter your API base url (e.g. https://your-account.withrealm.com/api/external/alpha) and the API key you've just created.

  ## Usage

  In your Workflow, find the Realm node and use as you need. I accept comments and suggestions in Issues repository on GitHub.

  ## Compatibility

  Tested against n8n version 1.117.3+

  ## Resources

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

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Realm API to manage AI-powered enterprise search, including chat conversations and document operations across various knowledge bases.","capabilities":["Create or continue a chat conversation","Retrieve single, multiple, or specific chat conversations","Delete chat conversations","List all available assistants","List all available connectors","Create or update documents in custom connectors","Retrieve all documents from a connector","Retrieve a specific document from a connector","Delete specific documents from a connector","Delete documents older than a specified timestamp"],"authentication":"API key required","commonUseCases":["Integrating custom data sources into an AI knowledge base","Managing chat history and conversations programmatically","Automating document indexing and retrieval from external systems","Cleaning up old documents from connectors"],"limitations":["Requires manual setup of Realm API key and base URL in n8n credentials","Limited to operations supported by the Realm API (no custom logic beyond API calls)","Community node status may imply less official support or updates"],"relatedNodes":["n8n-nodes-http.request","n8n-nodes-github","n8n-nodes-slack","n8n-nodes-gdrive"]}


node_type: n8n-nodes-straico-official.straicoOfficial
package_name: n8n-nodes-straico-official
display_name: Straico Official
description: Get data from Straico API
category: Community
development_style: declarative
version: 1,2
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: straico
author_github_url: https://github.com/SaroM0/
npm_package_name: n8n-nodes-straico-official
npm_version: 5.0.4
community_fetched_at: 2026-03-25T21:19:40.764Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "prompt",
      "options": [
        {
          "name": "Agent",
          "value": "agent"
        },
        {
          "name": "Chat",
          "value": "chat"
        },
        {
          "name": "File",
          "value": "file"
        },
        {
          "name": "Image",
          "value": "image"
        },
        {
          "name": "Model",
          "value": "models"
        },
        {
          "name": "Prompt",
          "value": "prompt"
        },
        {
          "name": "RAG",
          "value": "rag"
        },
        {
          "name": "TTS",
          "value": "tts"
        },
        {
          "name": "User",
          "value": "user"
        },
        {
          "name": "Video",
          "value": "video"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get Info",
          "value": "get",
          "action": "Get user information",
          "routing": {
            "request": {
              "url": "/v0/user",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get all models information v1",
          "routing": {
            "request": {
              "url": "/v1/models",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get All Models v2",
          "value": "getAllModelsInfo",
          "action": "Get all models information v2"
        },
        {
          "name": "Get Specific Model v2",
          "value": "getSpecificModel",
          "action": "Get specific model information v2"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "models"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "completion",
      "options": [
        {
          "name": "Completion",
          "value": "completion",
          "action": "Create a completion",
          "routing": {
            "request": {
              "url": "/v1/prompt/completion",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "prompt"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "completionV2",
      "options": [
        {
          "name": "Completion V2",
          "value": "completionV2",
          "action": "Create a chat completion",
          "routing": {
            "request": {
              "url": "/v2/chat/completions",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chat"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate Image",
          "value": "generate",
          "action": "Generate an image v0",
          "routing": {
            "request": {
              "url": "/v0/image/generation",
              "method": "POST"
            }
          }
        },
        {
          "name": "Generate Image V1",
          "value": "generateV1",
          "action": "Generate an image v1",
          "routing": {
            "request": {
              "url": "/v1/image/generation",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate Video",
          "value": "generate",
          "action": "Generate a video from image",
          "routing": {
            "request": {
              "url": "/v1/image/tovideo",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "video"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Convert text to speech",
          "routing": {
            "request": {
              "url": "/v1/tts/create",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Add RAG",
          "value": "addRag",
          "action": "Add RAG to agent"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new agent"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete agent"
        },
        {
          "name": "Get Details",
          "value": "get",
          "action": "Get agent details"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all agents"
        },
        {
          "name": "Prompt Completion",
          "value": "promptCompletion",
          "action": "Send a prompt to agent"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update agent details"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "agent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload a file",
          "routing": {
            "request": {
              "url": "/v0/file/upload",
              "body": {
                "file": "={{ $parameter[\"file\"] }}"
              },
              "json": false,
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new RAG"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a RAG"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get RAG by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all ra gs"
        },
        {
          "name": "Prompt Completion",
          "value": "promptCompletion",
          "action": "Send a prompt to a RAG"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a RAG with files"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "rag"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"get","name":"Get Info","resource":"user"},{"operation":"getAll","name":"Get Many","resource":"models"},{"operation":"getAllModelsInfo","name":"Get All Models v2","resource":"models"},{"operation":"getSpecificModel","name":"Get Specific Model v2","resource":"models"},{"operation":"completion","name":"Completion","resource":"prompt"},{"operation":"completionV2","name":"Completion V2","resource":"chat"},{"operation":"generate","name":"Generate Image","resource":"image"},{"operation":"generateV1","name":"Generate Image V1","resource":"image"},{"operation":"generate","name":"Generate Video","resource":"video"},{"operation":"create","name":"Create","resource":"tts"},{"operation":"addRag","name":"Add RAG","resource":"agent"},{"operation":"create","name":"Create","resource":"agent"},{"operation":"delete","name":"Delete","resource":"agent"},{"operation":"get","name":"Get Details","resource":"agent"},{"operation":"list","name":"List","resource":"agent"},{"operation":"promptCompletion","name":"Prompt Completion","resource":"agent"},{"operation":"update","name":"Update","resource":"agent"},{"operation":"upload","name":"Upload","resource":"file"},{"operation":"create","name":"Create","resource":"rag"},{"operation":"delete","name":"Delete","resource":"rag"},{"operation":"get","name":"Get","resource":"rag"},{"operation":"list","name":"List","resource":"rag"},{"operation":"promptCompletion","name":"Prompt Completion","resource":"rag"},{"operation":"update","name":"Update","resource":"rag"}]

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

  # n8n-nodes-straico-official

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

  **Straico** is an AI-powered platform that provides advanced prompt completion, image generation, agent management, and Retrieval-Augmented Generation (RAG) capabilities via a RESTful API.

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

  - [Installation](#installation)  
    - [Self-Hosted Installation](#self-hosted-installation)
    - [Cloud Installation](#cloud-installation)
  - [Operations](#operations)  
  - [Credentials](#credentials)  
  - [Compatibility](#compatibility)  
  - [Usage](#usage)  
    - [Example Workflow](#example-workflow)  
  - [Resources](#resources)  
  - [Version History](#version-history)

  ---

  ## Installation

  ### Cloud Installation

  > **Note**: Limited to n8n instance owners

  Only the n8n instance owner can install and manage verified community nodes. The instance owner is the person who sets up and manages user management. All members of an n8n instance can use already installed community nodes in their workflows.

  Admin accounts can also uninstall any community node, verified or unverified. This helps them remove problematic nodes that may affect the instance's health and functionality.

  #### Install a Community Node

  To install this verified community node:

  1. Go to the Canvas and open the nodes panel (either by selecting '+' or pressing Tab)
  2. Search for "Straico". You will see it in the "More from the community" section at the bottom of the nodes panel
  3. Select the node to view detailed information about supported actions
  4. Click "Install". This will install the node for your instance and enable all members to use it

  #### Enable Installation of Verified Community Nodes

  Some users may not want to show verified community nodes in the nodes panel of their instances. On n8n cloud, instance owners can toggle this in the Cloud Admin Panel.

  #### Uninstall a Community Node

  To uninstall the community node:

  1. Go to Settings > Community nodes
  2. On the node you want to uninstall, select Options (three dots menu)
  3. Select "Uninstall package"
  4. Confirm uninstallation in the modal

  ### Self-Hosted Installation

  For self-hosted n8n instances:

  1. Install the community node package:

     ```bash
     npm install n8n-nodes-straico-official
     ```

  2. Restart your n8n instance to load the new node

  3. In n8n, go to **Settings/Community Nodes** and enable **n8n-nodes-straico-official** if it isn't already

  ---

  ## Operations

  The Straico node supports the following **resources** and **operations**:

  - **User**
    - **Get Info**: Retrieve account details for the authenticated user.
  - **Models**
    - **Get All**: List all available chat and image models.
  - **Prompt**
    - **Completion**: Generate text completions using either specified models or the smart LLM selector.
  - **Image**
    - **Generate Image**: Create images with customizable parameters (model, size, variations, etc.).
  - **Agent**
    - **Create**, **Get Details**, **List**, **Add RAG**, **Update**, **Delete**, **Prompt Completion**.
  - **File**
    - **Upload**: Upload binary files for RAG or prompt operations.
  - **RAG**
    - **Create**, **List**, **Get**, **Update**, **Delete**, **Prompt Completion**.

  ---

  ## Credentials

  To authenticate requests, you need a **Straico API Key**:

  1. Sign up or log in at [Straico](https://straico.com/) and copy your API key from the dashboard.
  2. In n8n, go to **Credentials/New Credential/Straico API**.
  3. Paste your API key and save.

  All node operations will automatically use this credential.

  ---

  ## Compatibility

  - **Minimum n8n version**: `1.0.0`  
  - **Tested with**: n8n `1.x` and Straico API `v1`  
  - **Known issues**: None at this time. If you encounter any, please open an issue in the [GitHub repo](https://github.com/your-org/n8n-nodes-straico-official).

  ---

  ## Usage

  1. **Add Straico Official** node to your workflow.
  2. **Select Resource** and **Operation**.
  3. **Configure Parameters** according to the selected operation.
  4. **Connect** to other nodes as needed.

  ### Example Workflow

  Below is a simple example to generate a text completion and then an image:

  ```json
  [
    {
      "nodes": [
        {
          "parameters": {
            "resource": "prompt",
            "operation": "completion",
            "models": ["gpt-4"],
            "message": "Write a short poem about autumn.",
            "additionalFields": {
              "temperature": 0.8,
              "max_tokens": 100
            }
          },
          "name": "Straico Prompt",
          "type": "n8n-nodes-straico-official.StraicoOfficial",
          "typeVersion": 1,
          "position": [250, 300]
        },
        {
          "parameters": {
            "resource": "image",
            "operation": "generate",
            "model": "openai/dall-e-3",
            "description": "A serene autumn forest with falling leaves",
            "size": "landscape",
            "variations": 1,
            "enhance": true,
            "customEnhancer": "Make it more vibrant and warm"
          },
          "name": "Straico Image",
          "type": "n8n-nodes-straico-official.StraicoOfficial",
          "typeVersion": 1,
          "position": [450, 300]
        }
      ],
      "connections": {
        "Straico Prompt": {
          "main": [
            [
              {
                "node": "Straico Image",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    }
  ]
  ```

  ---

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)  
  - [Straico API Documentation](https://documenter.getpostman.com/view/5900072/2s9YyzddrR)  
  - [n8n Forum](https://community.n8n.io/) – for community support  

  ---

  ## Version History

  - **2.0.0** (2025-06-25)  
    - Initial public release  
    - Supports User, Models, Prompt, Image, Agent, File, and RAG operations  
  - **2.1.0** (pending)  
    - Planned: Add webhook support and batch RAG uploads

  ---

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation workflows by integrating with the Straico API, which provides AI-powered text completion, image generation, agent management, and Retrieval-Augmented Generation (RAG) capabilities.","capabilities":["Retrieve user account information","List available chat and image models","Generate text completions with custom models or smart LLM selector","Generate images with customizable parameters (model, size, variations, enhancers)","Manage AI agents (create, list, get details, update, delete)","Add RAG data to agents","Upload binary files for RAG or prompt operations","Create, list, get, update, and delete RAG collections","Perform prompt completion on agents and RAG collections"],"authentication":"API key required (Straico API Key)","commonUseCases":["Automated content generation using AI text models","Workflow automation with AI-powered image creation","Building RAG-based knowledge retrieval systems","Managing and configuring AI agents for specific tasks"],"limitations":["Limited to n8n instance owners for cloud installation","Self-hosted installation requires manual npm package installation","Requires valid Straico API key for all operations"],"relatedNodes":["HTTP Request","Code","Wait Until"]}


node_type: n8n-nodes-infranodus.infranodus
package_name: n8n-nodes-infranodus
display_name: InfraNodus Graph RAG
description: Build knowledge graphs, get AI advice, and extract content gaps with the InfraNodus API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: aerodynamika
author_github_url: https://github.com/infranodus/
npm_package_name: n8n-nodes-infranodus
npm_version: 0.1.8
community_fetched_at: 2026-03-25T21:19:40.765Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "aiAdviceForGraph",
      "options": [
        {
          "name": "AI Advice From Graph",
          "value": "aiAdviceForGraph"
        },
        {
          "name": "Knowledge Graph",
          "value": "knowledgeGraphs"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getGraph",
      "options": [
        {
          "name": "Create / Update a Graph From Text",
          "value": "createGraph",
          "action": "Create / update a graph from text",
          "routing": {
            "request": {
              "url": "/graphAndStatements",
              "method": "POST"
            }
          },
          "description": "Create a new knowledge graph or update an existing one from text and return it & stats"
        },
        {
          "name": "Get an Existing Graph",
          "value": "getGraph",
          "action": "Get an existing infranodus graph",
          "routing": {
            "request": {
              "url": "/graphAndStatements",
              "method": "POST"
            }
          },
          "description": "Get an existing graph of a user from InfraNodus"
        },
        {
          "name": "Generate Content Gaps and Topics",
          "value": "generateGraphStats",
          "action": "Generate content gaps and topics",
          "routing": {
            "request": {
              "url": "/graphAndStatements",
              "method": "POST"
            }
          },
          "description": "Generate content gaps and topics from a text or existing graph"
        },
        {
          "name": "Generate RAG Augmentation Prompt",
          "value": "generateGraphSummary",
          "action": "Generate RAG augmentation prompt",
          "routing": {
            "request": {
              "url": "/graphAndStatements",
              "method": "POST"
            }
          },
          "description": "Generate RAG augmentation prompt from a text or existing graph"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "knowledgeGraphs"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "promptGraph",
      "options": [
        {
          "name": "Query an Expert (Existing Graph)",
          "value": "promptGraph",
          "action": "Get a response from knowledge base",
          "routing": {
            "request": {
              "url": "/graphAndAdvice",
              "method": "POST"
            }
          },
          "description": "Get an AI advice from an existing knowledge base or ontology"
        },
        {
          "name": "Retrieve Statements with GraphRAG",
          "value": "retrieveStatementsFromGraph",
          "action": "Retrieve statements from a graph",
          "routing": {
            "request": {
              "url": "/graphAndAdvice",
              "method": "POST"
            }
          },
          "description": "Retrieve relevant statements from an existing graph using GraphRAG"
        },
        {
          "name": "Generate Research Questions",
          "value": "questionGraph",
          "action": "Generate research questions",
          "routing": {
            "request": {
              "url": "/graphAndAdvice",
              "method": "POST"
            }
          },
          "description": "Generate research questions based on the content gaps in a graph"
        },
        {
          "name": "Generate a Topical Summary",
          "value": "summarizeGraph",
          "action": "Generate topical summary",
          "routing": {
            "request": {
              "url": "/graphAndAdvice",
              "method": "POST"
            }
          },
          "description": "Generate a topical summary of a knowledge graph"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "aiAdviceForGraph"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"createGraph","name":"Create / Update a Graph From Text","description":"Create a new knowledge graph or update an existing one from text and return it & stats","resource":"knowledgeGraphs"},{"operation":"getGraph","name":"Get an Existing Graph","description":"Get an existing graph of a user from InfraNodus","resource":"knowledgeGraphs"},{"operation":"generateGraphStats","name":"Generate Content Gaps and Topics","description":"Generate content gaps and topics from a text or existing graph","resource":"knowledgeGraphs"},{"operation":"generateGraphSummary","name":"Generate RAG Augmentation Prompt","description":"Generate RAG augmentation prompt from a text or existing graph","resource":"knowledgeGraphs"},{"operation":"promptGraph","name":"Query an Expert (Existing Graph)","description":"Get an AI advice from an existing knowledge base or ontology","resource":"aiAdviceForGraph"},{"operation":"retrieveStatementsFromGraph","name":"Retrieve Statements with GraphRAG","description":"Retrieve relevant statements from an existing graph using GraphRAG","resource":"aiAdviceForGraph"},{"operation":"questionGraph","name":"Generate Research Questions","description":"Generate research questions based on the content gaps in a graph","resource":"aiAdviceForGraph"},{"operation":"summarizeGraph","name":"Generate a Topical Summary","description":"Generate a topical summary of a knowledge graph","resource":"aiAdviceForGraph"}]

npm_readme:
  # n8n-nodes-infranodus

  This is an n8n community node from [InfraNodus](https://infranodus.com). It lets you use [InfraNodus GraphRAG API](https://infranodus.com/docs/graph-rag-knowledge-graph) in your n8n workflows.

  You can create and use knowledge graphs as experts in your LLM workflows (no OpenAI keys required). InfraNodus can provide information about the main topics and content gaps in any text, so you can use it in your marketing and research workflows.

  ![InfraNodus graph](https://infranodus.com/images/front/infranodus-overview.jpg)

  Video demo: [https://www.youtube.com/watch?v=kS0QTUvcH6E](https://www.youtube.com/watch?v=kS0QTUvcH6E)

  You can also use the knowledge graphs to augment and improve your RAG flows with graph-based AI advice about the structure of the knowledge and better quality retrieval without the need to set up complex vector store infrastructures.

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

  ### For automatic installation

  1. Open the nodes panel at the top right of your n8n editor (+ button)
  2. Search for "InfraNodus"
  3. Click on the "Install" button

  ### For manual installation:

  You can install this node manually if you're running a local version of n8n.

  0. Install the local version of n8n

  If you don't have n8n installed yet, you can install it using

  - [n8n Docker installer](https://docs.n8n.io/hosting/installation/npm/) (in this case you'll need Docker installed)

  ```bash
  docker volume create n8n_data

  docker run -it --rm \
   --name n8n \
   -p 5678:5678 \
   -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
   -e N8N_RUNNERS_ENABLED=true \
   -v n8n_data:/home/node/.n8n \
   docker.n8n.io/n8nio/n8n
  ```

  - through the command line in your terminal using the [n8n NPX installer](https://docs.n8n.io/hosting/installation/npm/) — for temporarily launching n8n without installing it (in this case, you'll need node version 20 or 22 installed).

  ```bash
  npx n8n
  ```

  - through `npm` [n8n node package](https://docs.n8n.io/hosting/installation/npm/) manager (in this case you install it globally and can launch it from your termainal)

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

  In all cases, your configuration settings will be saved even if you quit at this folder, where you can also install the InfraNodus node:

  ```bash
  cd ~/.n8n
  ```

  1. Launch the local version of n8n

  - If it's installed globally:

  ```bash
  n8n start
  ```

  - If it's installed through Docker:

  Start the Docker n8n instsance:

  ```bash
  docker run -it --rm \
   --name n8n \
   -p 5678:5678 \
   -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
   -e N8N_RUNNERS_ENABLED=true \
   -v n8n_data:/home/node/.n8n \
   docker.n8n.io/n8nio/n8n
  ```

  Then access the Docker shell (terminal entry into your Docker n8n instance):

  ```bash
  docker exec -it n8n sh
  ```

  1. Install the node

  Change to the nodes folder:

  ```bash
  cd ~/.n8n/nodes
  ```

  If it doesn't exist, create it first:

  ```bash
  mkdir -p ~/.n8n/nodes
  ```

  2. Install the node into this folder:

  ```bash
  npm install n8n-nodes-infranodus
  ```

  3. Then restart n8n

  ## Local Node Development

  If you're using the node on your local machine, you can link your local InfraNodus n8n node to your local n8n instance.

  Then you can modify the resources and requests using the [InfraNodus API](https://infranodus.com/api). You can also add new custom tools.

  If you have InfraNodus running locally, you can replace the `baseUrl` with your local InfraNodus instance address (default is `https://infranodus.com/api/v1`).

  In order to start local development, you need to link your local InfraNodus n8n node to your local n8n instance, so every time you change the code in the InfraNodus n8n node, it updates in n8n as well.

  0. Create a copy of this repository on your local machine

  1. Go to this node's folder on your local machine and install dependencies

  ```bash
  npm install
  ```

  2. Make the necessary changes and build the node

  ```bash
  npm build
  ```

  3. Make sure you're in the InfraNodus node's folder and run:

  ```bash
  npm link
  ```

  3. Then go to the locally installed `n8n/nodes` folder, usually at

  ```bash
  cd ~/.n8n/nodes
  ```

  4. Link the local InfraNodus n8n node package to the n8n instance:

  ```bash
  npm link n8n-nodes-infranodus
  ```

  This will make your local n8n instance refer not to the generally available npm package but to the local infranodus n8n node instance you linked to.

  5. Then run the n8n instance locally using the

  ```bash
  n8n start
  ```

  ### To Update the Local Node in n8n

  To have the updates reflected in n8n, you need to:

  1. Run the build command in the node's folder

  ```bash
  npm run build
  ```

  2. Restart n8n:

  ```bash
  n8n start
  ```

  ## Operations

  The node supports the following operations:

  - Create a knowledge graph
  - Get a knowledge graph
  - Generate a question based on the content gaps in a knowledge graph
  - Prompt a knowledge graph expert

  ## Credentials

  The node requires an API token from InfraNodus. You can get it from [your InfraNodus account](https://infranodus.com/api-access).

  We use Bearer authentication in case you want to build your own node using InfraNodus.

  ## Compatibility

  The node is compatible with n8n v0.225.0 and above.

  ## Usage

  To learn more about using InfraNodus with n8n, see our tutorials and videos on the Nodus Labs support portal: [https://support.noduslabs.com/hc/en-us/search?utf8=%E2%9C%93&query=n8n](https://support.noduslabs.com/hc/en-us/search?utf8=%E2%9C%93&query=n8n)

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Nodus Labs support portal](https://support.noduslabs.com/hc/en-us/search?utf8=%E2%9C%93&query=n8n)
  - [InfraNodus API endpoints](https://support.noduslabs.com/hc/en-us/articles/13605983537692-InfraNodus-API-Access-Points)
  - [Video demo of how the InfraNodus n8n node works](http://youtube.com/watch?v=vkvRWto3TnQ)

  ## Version history

  v 0.1.8 (2025-12-09)

  - better naming convention for create / update graph

  v 0.1.7 (2025-12-03)

  - bug fixes
  - improve installation instructions

  v 0.1.5 (2025-12-03)

  - Add new GraphRAG / vector search retrieval endpoint
  - Add support for latest AI models
  - Add local development instructions to the README file

  v 0.1.4 (2025-10-25)

  - Fix bugs with duplicate tool definitions

  v 0.1.3 (2025-09-17)

  - Fix bugs and incorrect tool settings

  v 0.1.0 (2025-09-11)

  - Initial release

ai_documentation_summary:
  {"purpose":"This n8n community node integrates the InfraNodus GraphRAG API to build knowledge graphs, extract content gaps, and provide AI-driven advice for marketing and research workflows without requiring OpenAI keys.","capabilities":["Create a knowledge graph from text content","Retrieve an existing knowledge graph","Generate questions based on content gaps in a knowledge graph","Prompt a knowledge graph expert for AI advice","Augment RAG flows with graph-based structural insights"],"authentication":"API token (Bearer authentication)","commonUseCases":["Marketing content gap analysis","Research workflow enhancement","RAG flow augmentation with graph-based AI advice","Building knowledge graphs as LLM experts"],"limitations":["Requires an API token from InfraNodus account","Requires n8n v0.225.0 or above"],"relatedNodes":["InfraNodus API","RAG nodes","Knowledge graph nodes"]}


node_type: @zerobounce/n8n-nodes-zerobounce.zeroBounce
package_name: @zerobounce/n8n-nodes-zerobounce
display_name: ZeroBounce
description: Validate and verify emails using the ZeroBounce API.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: pja-zerobounce
author_github_url: https://github.com/zerobounce/n8n-nodes-zerobounce.git
npm_package_name: @zerobounce/n8n-nodes-zerobounce
npm_version: 1.1.2
community_fetched_at: 2026-03-25T21:19:40.765Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "validation",
      "options": [
        {
          "name": "Account",
          "value": "account",
          "description": "Retrieve details from your ZeroBounce account"
        },
        {
          "name": "Validation",
          "value": "validation",
          "description": "Email validation"
        },
        {
          "name": "A.I. Scoring",
          "value": "scoring",
          "description": "Email scoring"
        },
        {
          "name": "Email Finder",
          "value": "emailFinder",
          "description": "Email Finder allows you to search for new business email addresses using our proprietary technologies"
        },
        {
          "name": "Domain Search",
          "value": "domainSearch",
          "description": "Domain Search allows you to search for new business email formats using our proprietary technologies"
        },
        {
          "name": "Activity Data",
          "value": "activityData",
          "description": "Activity Data allows you to gather insights into your subscribers’ overall email engagement"
        }
      ],
      "required": true,
      "description": "Choose the ZeroBounce API you wish to use",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getCredits",
      "options": [
        {
          "name": "Credits Balance",
          "value": "getCredits",
          "action": "Get credits balance",
          "description": "Tells you how many credits you have left on your account"
        },
        {
          "name": "API Usage",
          "value": "getApiUsage",
          "action": "Get API usage",
          "description": "Retrieves a summary of your API usage"
        },
        {
          "name": "List Filters",
          "value": "listFilters",
          "action": "List filters",
          "description": "Lists all the existing filter rules"
        },
        {
          "name": "Add Filter",
          "value": "addFilter",
          "action": "Add a filter",
          "description": "Adds or updates a filter rule"
        },
        {
          "name": "Delete Filter",
          "value": "deleteFilter",
          "action": "Delete a filter",
          "description": "Deletes a filter rule"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "validate",
      "options": [
        {
          "name": "Validate Email",
          "value": "validate",
          "action": "Validate an email",
          "description": "Validate a single email address (real-time)"
        },
        {
          "name": "Validate Batch",
          "value": "batchValidate",
          "action": "Validate an email batch",
          "description": "Validates batches of up to 200 email addresses at a time. It is rate limited to 5 uses per minute, if you exceed the rate limit, you will be blocked for 10 minutes. If you're looking to do single email validations, please use our single email validator endpoint."
        },
        {
          "name": "Bulk Validate Send File",
          "value": "sendFile",
          "action": "Send validation file",
          "description": "Send a file to ZeroBounce for bulk validation"
        },
        {
          "name": "Bulk Validate Get File",
          "value": "getFile",
          "action": "Get validation results file",
          "description": "Get the results file for a submitted validation file"
        },
        {
          "name": "Bulk Validate File Status",
          "value": "fileStatus",
          "action": "Get validation file status",
          "description": "Get the status of a file submitted for validation"
        },
        {
          "name": "Bulk Validate Delete File",
          "value": "deleteFile",
          "action": "Delete validation file",
          "description": "Delete a previously submitted validation file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "validation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "score",
      "options": [
        {
          "name": "Score Email",
          "value": "score",
          "action": "Score an email",
          "description": "Score a single email address (real-time)"
        },
        {
          "name": "Bulk Scoring Send File",
          "value": "scoringSendFile",
          "action": "Send scoring file",
          "description": "Send a file to ZeroBounce for bulk scoring"
        },
        {
          "name": "Bulk Scoring Get File",
          "value": "scoringGetFile",
          "action": "Get scoring results file",
          "description": "Get the results file for a submitted scoring file"
        },
        {
          "name": "Bulk Scoring File Status",
          "value": "scoringFileStatus",
          "action": "Get scoring file status",
          "description": "Get the status of a file submitted for scoring"
        },
        {
          "name": "Bulk Scoring Delete File",
          "value": "scoringDeleteFile",
          "action": "Delete scoring file",
          "description": "Delete a previously submitted scoring file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "scoring"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "find",
      "options": [
        {
          "name": "Find Email Address",
          "value": "find",
          "action": "Find email address",
          "description": "Uses a person’s first and last name and a domain or company name to test a variety of patterns and combinations in real time until it identifies a valid business email. It does not use or process customer data at any point to aid in this search. Privacy and Security Note – Email Finder API searches are performed in real time and do not use stored or processed customer data. Customer privacy and security are and will always remain our top priority."
        },
        {
          "name": "Bulk Email Finder Send File",
          "value": "emailFinderSendFile",
          "action": "Send email finder file",
          "description": "Send a file to ZeroBounce for bulk email finding"
        },
        {
          "name": "Bulk Email Finder Get File",
          "value": "emailFinderGetFile",
          "action": "Get email finder results file",
          "description": "Get the results file for a submitted email finder file"
        },
        {
          "name": "Bulk Email Finder File Status",
          "value": "emailFinderFileStatus",
          "action": "Get email finder file status",
          "description": "Get the status of a submitted email finder file"
        },
        {
          "name": "Bulk Email Finder Delete File",
          "value": "emailFinderDeleteFile",
          "action": "Delete email finder file",
          "description": "Delete a previously submitted email finder file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "emailFinder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search Domain",
          "value": "search",
          "action": "Search domain",
          "description": "Domain search is functionally similar to email address inquiry but instead attempts to detect possible patterns a specific company uses. You can use detected patterns to help you approximate the correct email for a specific person you’re attempting to contact at a business. Privacy and security note – Domain Search API searches are performed in real time and do not use stored or processed customer data. Customer privacy and security are and will always remain our top priority."
        },
        {
          "name": "Bulk Domain Search Send File",
          "value": "domainSearchSendFile",
          "action": "Send domain search file",
          "description": "Send a file to ZeroBounce for bulk domain searching"
        },
        {
          "name": "Bulk Domain Search Get File",
          "value": "domainSearchGetFile",
          "action": "Get domain search results file",
          "description": "Get the results file for a submitted domain search file"
        },
        {
          "name": "Bulk Domain Search File Status",
          "value": "domainSearchFileStatus",
          "action": "Get domain search file status",
          "description": "Get the status of a submitted domain search file"
        },
        {
          "name": "Bulk Domain Search Delete File",
          "value": "domainSearchDeleteFile",
          "action": "Delete domain search file",
          "description": "Delete a previously submitted domain search file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "domainSearch"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getActivityData",
      "options": [
        {
          "name": "Activity Data",
          "value": "getActivityData",
          "action": "Get activity data",
          "description": "Our Activity Data feature allows you to gather insights into your subscribers’ overall email engagement. The tool returns if the email inbox has been active in the past 30, 60, 90, 180, 365, or 365+ days. This indicates a potentially outdated contact, not recommended for cold emailing. Thus, you can improve your targeting and personalization and run more successful email campaigns."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "activityData"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"getCredits","name":"Credits Balance","description":"Tells you how many credits you have left on your account","resource":"account"},{"operation":"getApiUsage","name":"API Usage","description":"Retrieves a summary of your API usage","resource":"account"},{"operation":"listFilters","name":"List Filters","description":"Lists all the existing filter rules","resource":"account"},{"operation":"addFilter","name":"Add Filter","description":"Adds or updates a filter rule","resource":"account"},{"operation":"deleteFilter","name":"Delete Filter","description":"Deletes a filter rule","resource":"account"},{"operation":"validate","name":"Validate Email","description":"Validate a single email address (real-time)","resource":"validation"},{"operation":"batchValidate","name":"Validate Batch","description":"Validates batches of up to 200 email addresses at a time. It is rate limited to 5 uses per minute, if you exceed the rate limit, you will be blocked for 10 minutes. If you're looking to do single email validations, please use our single email validator endpoint.","resource":"validation"},{"operation":"sendFile","name":"Bulk Validate Send File","description":"Send a file to ZeroBounce for bulk validation","resource":"validation"},{"operation":"getFile","name":"Bulk Validate Get File","description":"Get the results file for a submitted validation file","resource":"validation"},{"operation":"fileStatus","name":"Bulk Validate File Status","description":"Get the status of a file submitted for validation","resource":"validation"},{"operation":"deleteFile","name":"Bulk Validate Delete File","description":"Delete a previously submitted validation file","resource":"validation"},{"operation":"score","name":"Score Email","description":"Score a single email address (real-time)","resource":"scoring"},{"operation":"scoringSendFile","name":"Bulk Scoring Send File","description":"Send a file to ZeroBounce for bulk scoring","resource":"scoring"},{"operation":"scoringGetFile","name":"Bulk Scoring Get File","description":"Get the results file for a submitted scoring file","resource":"scoring"},{"operation":"scoringFileStatus","name":"Bulk Scoring File Status","description":"Get the status of a file submitted for scoring","resource":"scoring"},{"operation":"scoringDeleteFile","name":"Bulk Scoring Delete File","description":"Delete a previously submitted scoring file","resource":"scoring"},{"operation":"find","name":"Find Email Address","description":"Uses a person’s first and last name and a domain or company name to test a variety of patterns and combinations in real time until it identifies a valid business email. It does not use or process customer data at any point to aid in this search. Privacy and Security Note – Email Finder API searches are performed in real time and do not use stored or processed customer data. Customer privacy and security are and will always remain our top priority.","resource":"emailFinder"},{"operation":"emailFinderSendFile","name":"Bulk Email Finder Send File","description":"Send a file to ZeroBounce for bulk email finding","resource":"emailFinder"},{"operation":"emailFinderGetFile","name":"Bulk Email Finder Get File","description":"Get the results file for a submitted email finder file","resource":"emailFinder"},{"operation":"emailFinderFileStatus","name":"Bulk Email Finder File Status","description":"Get the status of a submitted email finder file","resource":"emailFinder"},{"operation":"emailFinderDeleteFile","name":"Bulk Email Finder Delete File","description":"Delete a previously submitted email finder file","resource":"emailFinder"},{"operation":"search","name":"Search Domain","description":"Domain search is functionally similar to email address inquiry but instead attempts to detect possible patterns a specific company uses. You can use detected patterns to help you approximate the correct email for a specific person you’re attempting to contact at a business. Privacy and security note – Domain Search API searches are performed in real time and do not use stored or processed customer data. Customer privacy and security are and will always remain our top priority.","resource":"domainSearch"},{"operation":"domainSearchSendFile","name":"Bulk Domain Search Send File","description":"Send a file to ZeroBounce for bulk domain searching","resource":"domainSearch"},{"operation":"domainSearchGetFile","name":"Bulk Domain Search Get File","description":"Get the results file for a submitted domain search file","resource":"domainSearch"},{"operation":"domainSearchFileStatus","name":"Bulk Domain Search File Status","description":"Get the status of a submitted domain search file","resource":"domainSearch"},{"operation":"domainSearchDeleteFile","name":"Bulk Domain Search Delete File","description":"Delete a previously submitted domain search file","resource":"domainSearch"},{"operation":"getActivityData","name":"Activity Data","description":"Our Activity Data feature allows you to gather insights into your subscribers’ overall email engagement. The tool returns if the email inbox has been active in the past 30, 60, 90, 180, 365, or 365+ days. This indicates a potentially outdated contact, not recommended for cold emailing. Thus, you can improve your targeting and personalization and run more successful email campaigns.","resource":"activityData"}]

npm_readme:
  ![ZeroBounce Logo](https://raw.githubusercontent.com/zerobounce/n8n-nodes-zerobounce/main/icons/zb-logo-purple.svg)

  # n8n-nodes-zerobounce

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

  **This is the [Official ZeroBounce](https://n8n.io/integrations/zerobounce) n8n community node for use in your n8n
  workflows.**

  * [Key Features](#key-features)
  * [About](#about)
  * [Installation](#installation)
  * [Operations](#operations)
      * [Validation](#-validation)
      * [A.I. Scoring](#-ai-scoring)
      * [Email Finder](#-email-finder)
      * [Domain Search](#-domain-search)
      * [Activity Data](#-activity-data)
      * [Account](#-account)
  * [Credentials](#credentials)
  * [Usage](#usage)
      * [Workflow Testing](#-workflow-testing)
      * [Single Email Validation](#-single-email-validation)
      * [Bulk File Webhook Integration](#-bulk-file-webhook-integration-wait-node)
  * [Support](#support)
  * [Compatibility](#compatibility)
  * [Resources](#resources)

  ## 💡Key Features

  - 🛡️ **Validation:** Detect invalid, abuse, and spam trap addresses before they impact your sender reputation.
  - 🎯 **A.I. Scoring:** Go beyond validation with AI-driven deliverability scores, great for catch-all addresses.
  - 🔍 **Lead Discovery:** Integrated Email Finder and Domain Search tools to build and verify your outreach lists.
  - 📊 **Usage Analytics:** Monitor API usage and credit balances to ensure uninterrupted and efficient service.

  ---

  ## About

  Validate and score email addresses with the official **ZeroBounce** node to improve email deliverability and protect
  your domain reputation.

  ### About ZeroBounce

  **[ZeroBounce](https://www.zerobounce.net)** is an award-winning email verification and deliverability platform designed
  to help businesses maintain high-quality email lists and improve their inbox placement.

  Trusted by over 500,000 clients—including major brands like Samsung, Coca-Cola, and LinkedIn; we specialize in
  identifying risky email addresses to reduce bounce rates and increase engagement.

  #### Core Services & Features

  - **Email Validation:** Offers 99.6% accurate real-time and bulk email verification to identify invalid, disposable,
    abuse, and spam trap addresses.
  - **A.I. Email Scoring:** Uses artificial intelligence to analyze "catch-all" or valid addresses and assign a score (
    1–10) based on the likelihood of reaching a real person.
  - **Email Activity Data:** Provides insights into a subscriber’s recent behavior (opens, clicks, unsubscribes) to help
    with list segmentation.
  - **Deliverability Tools:** Includes DMARC monitoring, 24/7 blacklist monitoring, inbox placement testing, and email
    server testing.
  - **Email Finder & Warmup:** A B2B search tool to find professional contacts and an automated service to build or repair
    a domain’s sender reputation.

  #### Security & Performance

  ZeroBounce maintains high standards for security and reliability, featuring:

  - **Compliance:** The platform is SOC 2 Type 2 and ISO-27001 certified, and fully compliant with GDPR, HIPAA, and CCPA.
  - **Reliability:** Guarantees 99.99% API reliability with one of the industry's lowest "unknown" result rates (averaging
    1.69% in 2024).
  - **24/7 Support:** Provides round-the-clock live chat and email support with an average response time of under 20
    seconds for chat.

  ---

  ## Installation

  The ZeroBounce node can be found in the n8n nodes list.

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

  ---

  ## Operations

  ### 🛡️ Validation

  | Operation         | Description                                                  |
  |:------------------|:-------------------------------------------------------------|
  | Validate Email    | Check a single email for validity, sub-status, and metadata. |
  | Validate Batch    | Validate up to 200 email addresses in a single request.      |
  | Bulk: Send File   | Upload a CSV or TXT file for large-scale list cleaning.      |
  | Bulk: Get File    | Download the processed results of a bulk validation job.     |
  | Bulk: File Status | Monitor the real-time progress of a file being validated.    |
  | Bulk: Delete File | Permanently remove a processed file from ZeroBounce servers. |

  ### 🤖 A.I. Scoring

  | Operation         | Description                                                 |
  |:------------------|:------------------------------------------------------------|
  | Score Email       | Get an AI-driven quality score (1-10) for a single email.   |
  | Bulk: Send File   | Upload a file to score multiple "catch-all" or valid leads. |
  | Bulk: Get File    | Download the AI scoring results for your uploaded file.     |
  | Bulk: File Status | Check the percentage completion of an AI scoring job.       |
  | Bulk: Delete File | Delete an AI scoring file once processing is finished.      |

  ### 🔍 Email Finder

  | Operation          | Description                                                               |
  |:-------------------|:--------------------------------------------------------------------------|
  | Find Email Address | Discover professional emails using a person's name and domain or company. |
  | Bulk: Send File    | Upload a list of names and domains to find emails at scale.               |
  | Bulk: Get File     | Retrieve the results of a bulk email finder operation.                    |
  | Bulk: File Status  | Track the status of a bulk email finding request.                         |
  | Bulk: Delete File  | Remove a bulk email finder file from your dashboard.                      |

  ### 🌐 Domain Search

  | Operation         | Description                                                   |
  |:------------------|:--------------------------------------------------------------|
  | Domain Search     | Find email address formats associated with a specific domain. |
  | Bulk: Send File   | Submit a file of domains to perform a bulk search.            |
  | Bulk: Get File    | Download the results of a bulk domain search.                 |
  | Bulk: File Status | Monitor the progress of a bulk domain search job.             |
  | Bulk: Delete File | Clean up your domain search history by deleting files.        |

  ## 📊 Activity Data

  | Operation         | Description                                                   |
  |:------------------|:--------------------------------------------------------------|
  | Get Activity Data | Retrieve metadata regarding a user's recent email engagement. |

  ### 💳 Account

  | Operation       | Description                                                    |
  |:----------------|:---------------------------------------------------------------|
  | Credits Balance | Check the remaining credits in your ZeroBounce account.        |
  | API Usage       | Get a breakdown of your API usage over a specific time period. |
  | List Filters    | View all active allow/block filters.                           |
  | Add Filter      | Add a filter to your allow/block lists.                        |
  | Delete Filter   | Remove a filter from your allow/block lists.                   |

  ---

  ## Credentials

  You need a ZeroBounce API Key to use this node. Follow the steps below to generate one for free.

  ### 🔑 API Key

  1. Open your ZeroBounce API dashboard [ZeroBounce API](https://www.zerobounce.net/members/API).
  2. Click 'Create a new API Key'.
  3. Enter a descriptive name for your key in the API Key Name field, like 'n8n integration'.
  4. Set the key to active and optionally configure the IP address(es) it can be used from.
  5. Toggle the API Keys' visibility and copy the value shown.

  For more information, see [API Keys Management](https://www.zerobounce.net/docs/api-dashboard/#API_keys_management)

  ---

  ## Usage

  ### 🧪 Workflow Testing

  Use [API Sandbox Mode](https://www.zerobounce.net/docs/email-validation-api-quickstart/#sandbox_mode__v2__)
  data to test workflows without using your ZeroBounce credits.

  ---

  ### 🛡 Single Email Validation

  The Validate Email operation allows you to verify a single email address in real-time.
  This is ideal for cleaning leads from signup forms, chat interfaces, or individual CRM entries.

  #### 🛠️ Step-by-Step Setup

  1. **Add the Node:** Add the **ZeroBounce** node to your n8n canvas and select the **Validate** operation.
  2. **Enter Email:** In the Email field, provide the address you wish to check.
     Use an expression to pull data from a previous node (e.g., `{{ $json.email }}` or
     `{{ $('Shopify customer created').item.json.email }}`).
  3. **Add Options:** Use the `Add option` button to add optional fields
  4. **Execute:** Run the node to receive the validation results.

  #### ⚙️ Parameters

  While only the email address is required, you can refine your results using the following optional parameters found in
  the node's settings:

  | Parameter             | Optional | Description                                                                                                                                                                                                                                                                                |
  |:----------------------|:---------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
  | Email                 |          | The email address you want to validate                                                                                                                                                                                                                                                     |
  | IP Address            | ✔️       | Provide the user's IP address (IPv4) to gain location metadata (Country, City, Zip) and check if the IP is associated with known proxy/VPN usage.                                                                                                                                          |
  | Include Activity Data | ✔️       | Provides metadata about the user's recent engagement, such as the last time they opened, clicked, or forwarded an email (e.g., within 30, 90, or 180 days).                                                                                                                                |
  | Verify+               | ✔️       | Read before enabling: [Verify+](https://www.zerobounce.net/docs/email-list-validation/verify-plus#Verify_Plus). Significantly reduces "Catch-all" results. It uses proprietary technology to provide a definitive valid or invalid status for many domains that normally return catch-all. |
  | Timeout (Seconds)     | ✔️       | Adjust the maximum time (in seconds) the node should wait for a response from the API. Default is typically sufficient for most workflows. When a request exceeds this timeout, the API will return unknown / greylisted.                                                                  |

  #### 📊 Understanding the Response

  A successful execution returns a JSON object with the following key fields:

  - **Status:** The core result (e.g., `valid`, `invalid`, `catch-all`, `spamtrap`, `abuse`, `do_not_mail`, `unknown`).
  - **Sub Status:** Detailed reasoning for the status (e.g., `mailbox_not_found`, `global_suppression`, `possible_trap`).
  - **Account / Domain:** Parsed components of the email address.
  - **Did You Mean:** A suggestion if the API detects a common typo (e.g., `john@gnail.com` suggests `john@gmail.com`).
  - **Flags:** Boolean flags for `free_email`, `disposable`, and `role_based` accounts.
  - **Metadata:** Information such as the domain's MX records, SMTP provider, and (if IP was provided) geographic data.

  ##### ✨ Example Response:

  ```json
  {
    "address": "support@zerobounce.net",
    "status": "do_not_mail",
    "sub_status": "role_based_catch_all",
    "free_email": false,
    "did_you_mean": null,
    "account": "support",
    "domain": "zerobounce.net",
    "domain_age_days": "3286",
    "smtp_provider": "g-suite",
    "mx_found": "true",
    "mx_record": "aspmx.l.google.com",
    "firstname": null,
    "lastname": null,
    "gender": null,
    "country": "United States",
    "region": "Florida",
    "city": "Boca Raton",
    "zipcode": "33428",
    "processed_at": "2026-01-23 14:50:00.159"
  }
  ```

  #### 💡 Pro Tip: Logic Routing

  After this node, use a Switch or If node to route your workflow:

  - **If Status = `valid`:** Route to your "Valid" path, e.g. create a CRM contact
  - **If Status = `catch-all`:** Route to the AI Scoring node for further vetting
  - **If Status = `invalid` (or fallback):** Route to "Rejected" path, e.g. add entry to a table for manual review

  As used in
  this [Example Template: Single Validation Lead Vetting](https://n8n.io/workflows/12601-vet-new-shopify-leads-with-zerobounce-and-sync-qualified-contacts-to-hubspot/)

  ---

  ### 🛡 Batch Email Validation

  The Batch Validate Email operation allows you to verify up to 200 email addresses in real-time.
  This is ideal for processing small lists of leads retrieved from a database, an API, or a previous n8n node without the
  overhead of file uploads.

  This request is rate limited,
  see [Batch Email Validation API Documentation](https://www.zerobounce.net/docs/email-validation-api-quickstart/v2-batch-validate-emails).

  #### 🛠️ Step-by-Step Setup

  1. **Add the Node:** Add the **ZeroBounce** node to your n8n canvas and select the **Validate Batch** operation.
  2. **Combine Items:** Enabled by default,
      - **Enabled (default):** Combines multiple input items into a single request.
      - **Disabled:** Handles each input item as a batch request. The data should already be batched.
  3. **Split Items:**
      - **Enabled (default):** Splits the response into individual items for individual processing.
      - **Disabled:** The response is returned as-is with an array of results and an array of errors.
  4. **Enter Data:** Data is intelligently extracted from one of the three **Item Input Types** (scanning for email and
     IP address fields, e.g. `email`, `email_address`, `ip`, `ip_address` etc.):
      - **Field Assignment:** Drag and drop fields from previous node outputs to map a field, object or array from input
        items which already contain the email/IP fields.
          - **Object/Field:** Use with 'Combine Items' enabled, an email from each item will be combined into an
            array in a single batch request.
          - **Array:** The values will be extracted from this array and sent in the batch request.If 'Combine Items'
            is enabled, arrays will be joined)
      - **JSON Input:** Freeform JSON to be used as the input. Useful when you already have JSON in the correct format.
          - **Expected format:** ```{ "data": [ {"email_address": "valid@example.com", "ip_address": "99.110.204.1" } ] }```
      - **Mapped:** Map individual email/IP fields from input items
          - With 'Combine Items' enabled the values from each input item will be combined into a single array in the batch
            request.
  5. **Add Options:** Use the `Add option` button to add optional fields
  6. **Execute:** Run the node to receive the validation results.

  #### ⚙️ Parameters

  While only the input data containing email addresses is required, you can refine your results using the following
  optional parameters found in
  the node's settings:

  | Parameter                  | Optional | Description                                                                                                                                                                                                                                                                                |
  |:---------------------------|:---------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
  | Item Input: Email(s)       |          | The email address(es) you want to validate. This can be a field, object or array from your input items, optionally combined to create a single batch request.                                                                                                                              |
  | Item Input: IP Address(es) | ✔️       | Pair an email address with an IP address (IPv4) to gain location metadata (Country, City, Zip) and check if the IP is associated with known proxy/VPN usage.                                                                                                                               |
  | Include Activity Data      | ✔️       | Provides metadata about the user's recent engagement, such as the last time they opened, clicked, or forwarded an email (e.g., within 30, 90, or 180 days).                                                                                                                                |
  | Verify+                    | ✔️       | Read before enabling: [Verify+](https://www.zerobounce.net/docs/email-list-validation/verify-plus#Verify_Plus). Significantly reduces "Catch-all" results. It uses proprietary technology to provide a definitive valid or invalid status for many domains that normally return catch-all. |
  | Timeout (Seconds)          | ✔️       | Adjust the maximum time (3 - 60 seconds) the node should wait for a response from the API. Default is typically sufficient for most workflows. When a request exceeds this timeout, the API will return unknown / greylisted.                                                              |

  #### 📊 Understanding the Response

  A successful execution returns a JSON object with the following fields:

  - **Split Items Enabled (default):**
      - An output item per email containing validation results.
        See [Example Validation Response](#-example-response)
  - **Split Items Disabled:**
      - `email_batch`: An array of validation results.
        See [Example Validation Response](#-example-response)
      - `errors`: An array of errors

  #### 💡 Pro Tip: Handling Large Lists (> 200 items)

  If your workflow needs to validate more than 200 emails at once, you should implement a Looping & Merging pattern:

  - **Split into Batches:** Use the **Loop** node to chunk your data into batches of 200.
  - **Loop:** Connect the 'loop' output of the **Loop** node to the **Validate Email Batch** node.
  - **Validate:** Connect the **Validate Email Batch** node output to the **Loop** node input.
  - **Results:** Connect the 'done' output of the **Loop** node to the rest of your workflow.

  #### ⚡ Optional enhancement: Merge Validation Results

  - **Merge Results:** After the loop, you can use a **Merge** node to join the validation results with your original
    items using the email address as the unique identifier.
      - This enriches your original data with the new validation results for easier handling in the rest of your workflow.
      - Connect the output of the node before the loop to 'Input 1' of your **Merge** node.
      - Connect the 'done' output of the **Loop** node to 'Input 2' of your **Merge** node.
      - Configure the **Merge** node to 'Combine By: Matching Fields' and choose `email_address` for Input 1 and `address`
        for Input 2.

  ---

  ### ⏳ Bulk File Webhook Integration (Wait Node)

  See our
  [Example Template: Bulk Validation](https://n8n.io/workflows/11538-bulk-email-validation-and-ai-scoring-with-zerobounce/)

  To efficiently handle bulk files without manual polling:

  1. Add a [Wait node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/#on-webhook-call)
     to your workflow.
  2. Set it to 'On Webhook Call' with the HTTP Method set to 'POST'.
  3. Optional: Add a webhook suffix with the options dropdown e.g. `zerobounce`.
  4. In the **Send File** node, set the `Return URL` field to the auto-generated webhook URL e.g.
     `{{$execution.resumeUrl}}` or `{{$execution.resumeUrl}}/zerobounce`
  5. The workflow will pause and automatically resume when ZeroBounce sends the completion notification.
  6. Optional: The status of webhook calls can be viewed
     here [API Callback Status](https://www.zerobounce.net/members/API/status)

  #### ⚡ Optional enhancement: Add Timeout and Status Checks

  Adding a wait timeout and manual status check can prevent delayed or abandoned executions when there is an issue with a
  callback, e.g. network connectivity issues.

  1. Add a timeout to the **Wait** node (e.g. 5 minutes) using the `Limit Wait Time` field and `Limit Type` set to
     `After Time Interval`
  2. Add a **File Status** node to check on the processing status of the file
  3. Add a **Switch** node with 3 branches checking `{{ $json.file_status }}`:
      1. **`Complete`:** Completed, get the processed file
      2. **`Processing`:** In progress, loop back into your wait node
      3. **`Failed` (or fallback):** The file failed to process, exit and review the reason it failed

  ---

  ## Support

  If you encounter an issue with this node, please [Contact Us](https://www.zerobounce.net/contact-us/).

  ---

  ## Compatibility

  Compatible with n8n@1.60.0 or later

  ---

  ## Resources

  * [ZeroBounce Website](https://zerobounce.net)
  * [ZeroBounce API Developer Documentation](https://www.zerobounce.net/docs)
  * [ZeroBounce API Dashboard](https://www.zerobounce.net/members/API)
  * [ZeroBounce API Callback Status](https://www.zerobounce.net/members/API/status)
  * [Example Template: Bulk Validation](https://n8n.io/workflows/11538-bulk-email-validation-and-ai-scoring-with-zerobounce/)
  * [Example Template: Single Validation](https://n8n.io/workflows/11498-validate-and-score-email-addresses-with-zerobounce-ai/)
  * [Example Template: Single Validation Lead Vetting](https://n8n.io/workflows/12601-vet-new-shopify-leads-with-zerobounce-and-sync-qualified-contacts-to-hubspot/)
  * [Example Template: Validate & score leads with ZeroBounce AI before sending Gmail emails](https://n8n.io/workflows/11902-validate-and-score-leads-with-zerobounce-ai-before-sending-gmail-emails/)
  * [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/#community-nodes)

ai_documentation_summary:
  {"purpose":"Validates and verifies email addresses using the ZeroBounce API to improve deliverability and protect sender reputation, supporting single and bulk operations.","capabilities":["Single email validation","Batch email validation (up to 200)","Bulk file upload validation","AI-driven email scoring (1-10)","Bulk AI scoring","Email finder for professional contacts","Domain search","Activity data retrieval (opens, clicks, unsubscribes)","File status monitoring","Bulk file deletion"],"authentication":"API key required","commonUseCases":["Cleaning email lists before sending campaigns","Improving email deliverability scores","Identifying invalid, disposable, or spam trap addresses","Finding professional email addresses for outreach","Monitoring API usage and credit balances"],"limitations":["Batch validation is limited to 200 emails per request","Bulk operations require file upload/download workflow steps","AI scoring results are based on likelihood of reaching a real person"],"relatedNodes":["Wait Node","Function Node","Code Node","HTTP Request Node"]}


node_type: @reka-ai/n8n-nodes-reka.rekaVision
package_name: @reka-ai/n8n-nodes-reka
display_name: Reka Vision
description: Get data from Reka AI APIs
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: frank-reka
author_github_url: https://github.com/reka-ai/n8n-nodes-reka.git
npm_package_name: @reka-ai/n8n-nodes-reka
npm_version: 0.5.0
community_fetched_at: 2026-03-25T21:19:40.766Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "clip",
      "options": [
        {
          "name": "Clip",
          "value": "clip"
        },
        {
          "name": "Video Management",
          "value": "videoManagement"
        },
        {
          "name": "Image Management",
          "value": "imageManagement"
        },
        {
          "name": "Question & Answer",
          "value": "QA"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createClip",
      "options": [
        {
          "name": "CREATE CLIP",
          "value": "createClip",
          "action": "Create a clip",
          "routing": {
            "request": {
              "url": "/creator/reels",
              "method": "POST"
            }
          },
          "description": "Create a new clip job on Reka side"
        },
        {
          "name": "GET JOB STATUS",
          "value": "getJobtatus",
          "action": "Get clip status",
          "routing": {
            "request": {
              "method": "GET"
            }
          },
          "description": "Get the status of a clip job on Reka side"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "clip"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listVideos",
      "options": [
        {
          "name": "DELETE VIDEO",
          "value": "deleteVideo",
          "action": "Delete video",
          "routing": {
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete video from your Reka account library"
        },
        {
          "name": "GET VIDEO",
          "value": "getVideo",
          "action": "Get video",
          "routing": {
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a video details from your Reka account library"
        },
        {
          "name": "LIST VIDEOS",
          "value": "listVideos",
          "action": "List videos",
          "routing": {
            "request": {
              "url": "/videos",
              "method": "GET"
            }
          },
          "description": "List videos in your Reka account library"
        },
        {
          "name": "UPLOAD VIDEO FILE",
          "value": "uploadVideoFile",
          "action": "Upload video file",
          "routing": {
            "request": {
              "url": "/videos/upload",
              "method": "POST"
            }
          },
          "description": "Upload a video to your Reka account library using a file as source"
        },
        {
          "name": "UPLOAD VIDEO FROM URL",
          "value": "uploadVideoFromUrl",
          "action": "Upload video by URL",
          "routing": {
            "request": {
              "url": "/videos/upload",
              "method": "POST"
            }
          },
          "description": "Upload a video to your Reka account library using a URL as source"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "videoManagement"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listImages",
      "options": [
        {
          "name": "DELETE IMAGE",
          "value": "deleteImage",
          "action": "Delete image",
          "routing": {
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete image from your Reka account library"
        },
        {
          "name": "GET IMAGE",
          "value": "getImage",
          "action": "Get image",
          "routing": {
            "request": {
              "method": "GET"
            }
          },
          "description": "Get an image details from your Reka account library"
        },
        {
          "name": "LIST IMAGES",
          "value": "listImages",
          "action": "List images",
          "routing": {
            "request": {
              "url": "/images",
              "method": "GET"
            }
          },
          "description": "List images in your Reka account library"
        },
        {
          "name": "UPLOAD IMAGE FILE",
          "value": "uploadImageFile",
          "action": "Upload image file",
          "routing": {
            "request": {
              "url": "/images/upload",
              "method": "POST"
            }
          },
          "description": "Upload an image to your Reka account library using a file as source"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "imageManagement"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "askVideoQuestion",
      "options": [
        {
          "name": "ASK QUESTION ABOUT IMAGE",
          "value": "askImageQuestion",
          "action": "Ask question about image",
          "routing": {
            "request": {
              "method": "POST",
              "baseURL": "https://api.reka.ai/v1/chat"
            }
          },
          "description": "Ask a questions about a specific image"
        },
        {
          "name": "ASK QUESTION ABOUT VIDEO",
          "value": "askVideoQuestion",
          "action": "Ask question about video",
          "routing": {
            "request": {
              "url": "/qa/chat",
              "method": "POST"
            }
          },
          "description": "Ask a questions about a specific video"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "QA"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"createClip","name":"CREATE CLIP","description":"Create a new clip job on Reka side","resource":"clip"},{"operation":"getJobtatus","name":"GET JOB STATUS","description":"Get the status of a clip job on Reka side","resource":"clip"},{"operation":"deleteVideo","name":"DELETE VIDEO","description":"Delete video from your Reka account library","resource":"videoManagement"},{"operation":"getVideo","name":"GET VIDEO","description":"Get a video details from your Reka account library","resource":"videoManagement"},{"operation":"listVideos","name":"LIST VIDEOS","description":"List videos in your Reka account library","resource":"videoManagement"},{"operation":"uploadVideoFile","name":"UPLOAD VIDEO FILE","description":"Upload a video to your Reka account library using a file as source","resource":"videoManagement"},{"operation":"uploadVideoFromUrl","name":"UPLOAD VIDEO FROM URL","description":"Upload a video to your Reka account library using a URL as source","resource":"videoManagement"},{"operation":"deleteImage","name":"DELETE IMAGE","description":"Delete image from your Reka account library","resource":"imageManagement"},{"operation":"getImage","name":"GET IMAGE","description":"Get an image details from your Reka account library","resource":"imageManagement"},{"operation":"listImages","name":"LIST IMAGES","description":"List images in your Reka account library","resource":"imageManagement"},{"operation":"uploadImageFile","name":"UPLOAD IMAGE FILE","description":"Upload an image to your Reka account library using a file as source","resource":"imageManagement"},{"operation":"askImageQuestion","name":"ASK QUESTION ABOUT IMAGE","description":"Ask a questions about a specific image","resource":"QA"},{"operation":"askVideoQuestion","name":"ASK QUESTION ABOUT VIDEO","description":"Ask a questions about a specific video","resource":"QA"}]

npm_readme:
  # n8n-nodes-reka

  [![version](https://img.shields.io/npm/v/n8n-nodes-text-manipulation.svg)](https://www.npmjs.org/package/n8n-nodes-text-manipulation)

  Official Reka community node that provides various capability with AI Vision. (soon Research, Speech, and Text)

  ## Operations

  ### Video Clipping

  - Automatically clip a video from a URL

  ### Vision

  - Question and Answer (Q&A) from video

  - Question and Answer (Q&A) from image

  ### Speech

  - soon

  ### Research

  - soon

  ## Credentials

  Theses nodes requires an API Key from Reka, You can generate one by going to your [Dashboard](https://link.reka.ai/free).

  ## Installation

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

  ## Usage

  We are working on a more detailed documentation, meanwhile have a look to this [blog post](https://www.frankysnotes.com/2025/12/building-ai-powered-youtube-clipper.html) or [video](https://www.youtube.com/watch?v=6YV6K94m_FA) to learn How to Automate Clipping Using Reka's community node.

  ### Clip

  From a existing video (ex: YouTube) generate a vertical or horizontal clip using AI. Specific your instructions in a prompt (ex: Create an engaging short video highlighting the best moments) and voila! Optionally you can add burned captions, specify the minimum and maximum duration of your clip. Once ready you will get your video clip with a suggestion of title, description and tags.

  ### Q&A

  Ask any question about a image or a video and get the response quickly. 

  Example: 

  - Describe this image
  - Summarize this video
  - What's the color of the car in this photo


  ## Resources

  - **[n8n Node Documentation](https://docs.n8n.io/integrations/creating-nodes/)** - Complete guide to building nodes
  - **[n8n Community Forum](https://community.n8n.io/)** - Get help and share your nodes
  - **[Reka Community Discord](https://link.reka.ai/discord)** - Get help and share your workflows
  - **[Reka API Documentaion](https://docs.reka.ai)** - Get help and share your workflows

  ## 🤝 Contributions

  If you find a bug or would like to add a feature, please read our [Code of Conduct](CODE_OF_CONDUCT.md) and the [Contributing Guide](CONTRIBUTING.md).

  Feel free to open an issue or submit a feedback PR and improvements are welcome.

  ## License

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

ai_documentation_summary:
  {"purpose":"An n8n community node that enables AI-powered video clipping and visual question answering using Reka AI APIs.","capabilities":["Automatically clip videos from URLs","Generate vertical or horizontal video clips from existing videos","Add burned captions to video clips","Specify minimum and maximum clip duration","Generate suggested titles, descriptions, and tags for clips","Perform Q&A on images","Perform Q&A on videos","Summarize images and videos"],"authentication":"API Key required","commonUseCases":["Automating YouTube video clipping for social media","Creating engaging short-form video content from long videos","Analyzing and extracting information from images","Summarizing video content for quick insights"],"limitations":["Speech and Research capabilities are not yet available (marked as 'soon')","Detailed usage documentation is still in progress"],"relatedNodes":["n8n HTTP Request","n8n Code Node","n8n Video Processing nodes"]}


node_type: n8n-nodes-omnara.omnara
package_name: n8n-nodes-omnara
display_name: Omnara
description: Send messages to users via Omnara - a web and mobile platform for human-AI communication
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: ksarangmath
author_github_url: https://github.com/omnara-ai/omnara.git
npm_package_name: n8n-nodes-omnara
npm_version: 0.1.7
community_fetched_at: 2026-03-25T21:19:40.767Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Message",
          "value": "message",
          "description": "Send messages to Omnara agents"
        },
        {
          "name": "Session",
          "value": "session",
          "description": "Manage agent sessions"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "action": "Send message",
          "description": "Send a non-blocking message to the user (for status updates, progress reports, or sharing your thought process). Use this when you want to inform the user but do not need their response to continue"
        },
        {
          "name": "Send and Wait",
          "value": "sendAndWait",
          "action": "Send message and wait for response",
          "description": "Send a message and wait for the user's response (for questions, approvals, or conversations). Use this when you need the user's input to proceed with your task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "end",
      "options": [
        {
          "name": "End",
          "value": "end",
          "action": "End agent session",
          "description": "End an agent session"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "session"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"send","name":"Send","description":"Send a non-blocking message to the user (for status updates, progress reports, or sharing your thought process). Use this when you want to inform the user but do not need their response to continue","resource":"message"},{"operation":"sendAndWait","name":"Send and Wait","description":"Send a message and wait for the user's response (for questions, approvals, or conversations). Use this when you need the user's input to proceed with your task","resource":"message"},{"operation":"end","name":"End","description":"End an agent session","resource":"session"}]

npm_readme:
  # n8n-nodes-omnara

  The best human-in-the-loop node for n8n, built for seamless human-agent interaction. Perfect for approval workflows and real-time agent conversations.

  [Omnara](https://omnara.com) lets you monitor and guide AI agents without the noise. View your agent's full thought process through our web and mobile apps with smart notifications - only get alerted when your input is needed. Need urgent responses? Enable email and SMS notifications with zero setup. Stay in control while automation runs.

  ## Installation

  ### Community Node (Recommended)

  ```bash
  npm install n8n-nodes-omnara
  ```

  Or in n8n, go to **Settings** > **Community Nodes** and search for `n8n-nodes-omnara`.

  ### Manual Installation

  1. Clone or download this repository
  2. In the repository folder, run:
     ```bash
     npm install
     npm run build
     ```
  3. Copy the `dist` folder to your n8n custom nodes folder
  4. Restart n8n

  ### Development Installation

  For development and testing:

  ```bash
  # Install dependencies
  npm install

  # Build the node
  npm run build

  # For development with auto-rebuild
  npm run dev

  # Link to n8n for testing
  npm link
  # In your n8n installation:
  npm link n8n-nodes-omnara
  ```

  ## Getting Started

  ### 1. Get Your API Key

  1. Go to [Omnara Dashboard](https://omnara.com/dashboard)
  2. Click on your email in the bottom left corner
  3. Click "API Keys"
  4. Create a new API key and copy it

  ### 2. Add Omnara Credentials in n8n

  1. In n8n, go to Credentials → Add Credential → Omnara API
  2. Paste your API key
  3. Leave the API URL as default (unless you have a custom deployment)
  4. Save the credentials

  ### 3. Important: Agent Instance ID and Agent Type

  **Every Omnara node in your workflow needs:**
  - **Agent Instance ID**: A unique UUID for each workflow run (same across all nodes in one run)
  - **Agent Type**: The name of your agent on the Omnara dashboard (same across all nodes)

  ⚠️ **Critical**: Use the SAME agent instance ID and agent type across ALL Omnara nodes in a single workflow run!

  ## Workflow Setup

  ### Option A: Trigger with Webhook (Recommended)

  This lets you start workflows from the Omnara dashboard.

  **Step 1: Set up n8n Webhook**
  1. Add a **Webhook** node as your trigger
  2. Set it to **POST** method
  3. Copy the webhook URL (looks like: `https://your-n8n.com/webhook/xxx`)

  **Step 2: Configure Omnara Dashboard**
  1. Go to [Omnara Dashboard](https://omnara.com/dashboard)
  2. Click the **+ New Instance** button (top left)
  3. Paste your webhook URL
  4. Create your agent type
  5. Send a message to trigger your workflow

  **Step 3: Use Webhook Data in Omnara Nodes**
  The webhook provides these values - use them in ALL your Omnara nodes:
  - **Agent Instance ID**: `{{ $('Webhook').item.json.body.agent_instance_id }}`
  - **Agent Type**: `{{ $('Webhook').item.json.body.agent_type }}`

  The webhook also provides:
  - **Prompt**: `{{ $('Webhook').item.json.body.prompt }}` - This is the message you entered in Omnara dashboard. Use it as input for your workflow if needed.

  ### Option B: Trigger Without Webhook

  For workflows triggered by other events (cron, manual, other apps).

  **Requirements:**
  1. Generate a unique UUID for Agent Instance ID (use Expression: `{{ $uuid() }}`)
  2. Choose an agent type name (e.g., "customer_support", "code_reviewer")
  3. Store these in Set node variables
  4. Use the SAME values across all Omnara nodes in the workflow

  **Example Setup:**
  ```
  Trigger → Set Node (store UUID & agent type) → Your Workflow → Omnara Nodes
  ```

  In Set node:
  - `agent_instance_id`: `{{ $uuid() }}`
  - `agent_type`: "your_agent_name"

  Then reference in all Omnara nodes:
  - **Agent Instance ID**: `{{ $('Set').item.json.agent_instance_id }}`
  - **Agent Type**: `{{ $('Set').item.json.agent_type }}`

  ## Operations

  ### Message Resource

  #### Send Message (Non-blocking)
  Send status updates and progress reports to users without waiting for a response. Perfect for AI agents to share their thought process, progress updates, or informational messages while continuing to work.

  **Parameters:**
  - **Agent Instance ID**: The ID of the agent instance (creates new if doesn't exist)
  - **Agent Type**: Type of agent (e.g., 'claude_code', 'cursor')
  - **Message**: Status update or informational message (workflow continues immediately)
  - **Additional Options**:
    - Send Email/SMS/Push: Notification preferences

  #### Send and Wait (Blocking)
  Send a question or request and WAIT for the user's response. Essential for AI agents that need human input, approvals, or answers to continue their task. The workflow pauses until the user responds via the Omnara web/mobile app.

  **Parameters:**
  - **Agent Instance ID**: The ID of the agent instance
  - **Agent Type**: Type of agent (e.g., 'claude_code', 'cursor')
  - **Message**: Question or request that requires user response (workflow pauses until answered)
  - **Wait Options**:
    - Timeout: How long to wait (default 24 hours)
    - **Sync Mode (For AI Agents)**: Enable synchronous polling mode for AI Agent compatibility
      - Sync Timeout: Max wait time in sync mode (default 2 hours, max 48 hours)
      - Poll Interval: How often to check for responses (default 5 seconds)
  - **Additional Options**: Same as Send Message

  **How it works:**

  *Normal Mode (for regular workflows):*
  1. Sends message to Omnara with `requires_user_input: true`
  2. Generates a webhook URL and stores it with the message
  3. Pauses workflow execution
  4. When user responds in Omnara dashboard, workflow resumes with the response

  *Sync Mode (for AI Agent tools):*
  1. Sends message to Omnara
  2. Polls for responses every 5 seconds
  3. Returns immediately when response received
  4. Works within AI Agent execution context (avoids async/await issues)

  ### Session Resource

  #### End Session
  End an agent session and mark it as completed.

  **Parameters:**
  - **Agent Instance ID**: The ID of the agent instance session to end

  ## Usage Examples

  ### Basic Message Send
  ```javascript
  // Send a status update to your agent
  {
    "resource": "message",
    "operation": "send",
    "agentInstanceId": "agent-123",
    "content": "Build completed successfully"
  }
  ```

  ### Approval Workflow (Regular)
  ```javascript
  // Ask for approval and wait for response
  {
    "resource": "message",
    "operation": "sendAndWait",
    "agentInstanceId": "agent-456",
    "agentType": "claude_code",
    "message": "Deploy to production? Please approve or decline.",
    "options": {
      "sendEmail": true,
      "sendPush": true
    }
  }
  ```

  ### AI Agent Tool Usage (Sync Mode)
  ```javascript
  // Use sync mode when calling from AI Agent tools
  {
    "resource": "message",
    "operation": "sendAndWait",
    "agentInstanceId": "agent-789",
    "agentType": "claude_code",
    "message": "What changes should I make to the database schema?",
    "options": {
      "syncMode": true,
      "syncTimeout": 600,  // Wait up to 10 minutes
      "pollInterval": 5,   // Check every 5 seconds
      "sendEmail": true,
      "sendPush": true
    }
  }
  ```

  ### End Session
  ```javascript
  // Mark agent session as completed
  {
    "resource": "session",
    "operation": "end",
    "agentInstanceId": "agent-789"
  }
  ```

  ## Agent Tool Support

  This node is configured with `usableAsTool: true`, making it available as a tool for AI agents in n8n. 

  **Important**: When using Send and Wait as an AI Agent tool, you MUST enable **Sync Mode** in the options. This solves the async/await limitations of AI Agents in n8n.

  AI Agents can:
  - Send status updates
  - Ask for human input and wait for responses (using Sync Mode)
  - Manage agent sessions

  ### Why Sync Mode?
  Regular Send and Wait uses `putExecutionToWait()` which doesn't work properly in AI Agent context due to n8n's architecture. Sync Mode polls for responses synchronously, allowing AI Agents to wait for human responses without timing out or returning prematurely.

  ## Webhook Integration

  The Send and Wait operation uses n8n's built-in webhook functionality:
  - Webhook URLs are automatically generated by n8n
  - Omnara stores the webhook URL and triggers it when users respond
  - Workflows resume with the user's response data
  - Supports timeout configuration (max 7 days)

  ## Error Handling

  The node includes comprehensive error handling:
  - Authentication failures
  - Invalid agent instance IDs
  - Timeout handling for wait operations
  - Network errors and API issues

  All operations support the "Continue On Fail" option in n8n.

  ## Development

  ### Building
  ```bash
  npm run build
  ```

  ### Linting
  ```bash
  npm run lint
  npm run lint:fix
  ```

  ### Code Formatting
  ```bash
  npm run format
  ```

  ## Resources

  - [Omnara GitHub](https://github.com/omnara-ai/omnara)
  - [n8n Documentation](https://docs.n8n.io)
  - [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  MIT

  ## Support & Feedback

  Our mission is to make Omnara the best platform for human-in-the-loop workflows and human-AI collaboration. We're actively improving and would love your input!

  - **Issues & feature requests**: [GitHub Issues](https://github.com/omnara-ai/omnara/issues) or contact@omnara.com
  - **Questions & support**: contact@omnara.com

  Share your ideas on how we can make human-AI interaction better!

ai_documentation_summary:
  {"purpose":"This n8n node enables human-in-the-loop workflows by allowing AI agents to send messages to users via the Omnara platform for approvals, feedback, or status updates.","capabilities":["Send non-blocking status updates and progress reports","Send blocking messages requiring user response with wait functionality","Support for email, SMS, and push notifications","Synchronous polling mode for AI Agent compatibility","Session management (start and end)","Webhook-triggered workflows from Omnara dashboard"],"authentication":"API Key required (configured via n8n Credentials)","commonUseCases":["Human approval workflows","AI agent feedback collection","Real-time human-agent interaction","Progress reporting to users","Customer support agent monitoring"],"limitations":["Requires consistent Agent Instance ID and Agent Type across all nodes in a single workflow run","Blocking mode pauses workflow execution until user responds","Requires manual UUID generation for non-webhook triggered workflows","Sync mode has configurable timeout limits (max 48 hours)"],"relatedNodes":["Webhook","Set","Credentials","Expression"]}


node_type: @basalt-ai/n8n-nodes-basalt.basalt
package_name: @basalt-ai/n8n-nodes-basalt
display_name: Basalt
description: Interact with Basalt API to manage prompts, monitoring, and datasets
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: will-m
author_github_url: https://github.com/basalt-ai/n8n-nodes.git
npm_package_name: @basalt-ai/n8n-nodes-basalt
npm_version: 0.4.0
community_fetched_at: 2026-03-25T21:19:40.768Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "prompt",
      "options": [
        {
          "name": "Prompt",
          "value": "prompt"
        },
        {
          "name": "Monitoring",
          "value": "monitoring"
        },
        {
          "name": "Dataset",
          "value": "dataset"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a prompt",
          "routing": {
            "request": {
              "url": "=/prompts/{{$parameter.slug}}",
              "method": "GET"
            }
          },
          "description": "Get a prompt by slug"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List prompts",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "prompts"
                  }
                }
              ]
            },
            "request": {
              "url": "/prompts",
              "method": "GET"
            }
          },
          "description": "List all prompts in the workspace"
        },
        {
          "name": "Describe",
          "value": "describe",
          "action": "Describe a prompt",
          "routing": {
            "request": {
              "url": "=/prompts/{{$parameter.slug}}/describe",
              "method": "GET"
            }
          },
          "description": "Describe a prompt by slug"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish a prompt",
          "routing": {
            "request": {
              "url": "=/prompts/{{$parameter.slug}}/publish",
              "method": "POST"
            }
          },
          "description": "Publish a prompt version with a tag"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "prompt"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "log",
      "options": [
        {
          "name": "Create Experiment",
          "value": "createExperiment",
          "action": "Create an experiment",
          "routing": {
            "request": {
              "url": "/monitor/experiments",
              "method": "POST"
            }
          },
          "description": "Create a new experiment"
        },
        {
          "name": "Log Trace",
          "value": "logTrace",
          "action": "Log trace",
          "routing": {
            "request": {
              "url": "/monitor/trace",
              "method": "POST"
            }
          },
          "description": "Create a trace to monitor a full execution"
        },
        {
          "name": "Log Output",
          "value": "log",
          "action": "Log prompt output",
          "routing": {
            "request": {
              "url": "/monitor/log",
              "method": "POST"
            }
          },
          "description": "Monitor a prompt output"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "monitoring"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a dataset",
          "routing": {
            "request": {
              "url": "=/datasets/{{$parameter.slug}}",
              "method": "GET"
            }
          },
          "description": "Get a dataset by slug"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List datasets",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "datasets"
                  }
                }
              ]
            },
            "request": {
              "url": "/datasets",
              "method": "GET"
            }
          },
          "description": "List all datasets in the workspace"
        },
        {
          "name": "Create Item",
          "value": "createItem",
          "action": "Create dataset item",
          "routing": {
            "request": {
              "url": "=/datasets/{{$parameter.slug}}/items",
              "method": "POST"
            }
          },
          "description": "Create a new item in a dataset"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dataset"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"get","name":"Get","description":"Get a prompt by slug","resource":"prompt"},{"operation":"list","name":"List","description":"List all prompts in the workspace","resource":"prompt"},{"operation":"describe","name":"Describe","description":"Describe a prompt by slug","resource":"prompt"},{"operation":"publish","name":"Publish","description":"Publish a prompt version with a tag","resource":"prompt"},{"operation":"createExperiment","name":"Create Experiment","description":"Create a new experiment","resource":"monitoring"},{"operation":"logTrace","name":"Log Trace","description":"Create a trace to monitor a full execution","resource":"monitoring"},{"operation":"log","name":"Log Output","description":"Monitor a prompt output","resource":"monitoring"},{"operation":"get","name":"Get","description":"Get a dataset by slug","resource":"dataset"},{"operation":"list","name":"List","description":"List all datasets in the workspace","resource":"dataset"},{"operation":"createItem","name":"Create Item","description":"Create a new item in a dataset","resource":"dataset"}]

npm_readme:
  # Basalt n8n nodes

  n8n community node for the Basalt API - Manage prompts, monitoring, and datasets through n8n workflows.

  ## Features

  This n8n node allows you to:

  ### Prompts
  - **Get** - Retrieve a specific prompt by slug
  - **Get Many** - List all prompts in your workspace
  - **Describe** - Get detailed information about a prompt including its variables
  - **Publish** - Publish a prompt version with a specific tag

  ### Monitoring
  - **Create Experiment** - Create a new experiment for testing prompt variations
  - **Log Output** - Monitor individual prompt outputs with detailed metrics

  ### Datasets
  - **Get** - Retrieve a specific dataset by slug
  - **Get Many** - List all datasets in your workspace
  - **Create Item** - Add a new row to a dataset

  ## Installation

  ### Community Nodes (n8n Cloud & Desktop)

  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `@basalt-ai/n8n-nodes-basalt` in the **Enter npm package name** field
  4. Agree to the risks and click **Install**

  ### Manual Installation (Self-Hosted)

  Navigate to your n8n root directory and run:

  ```bash
  npm install @basalt-ai/n8n-nodes-basalt
  ```

  Then restart your n8n instance.

  ## Credentials

  To use this node, you'll need:

  1. **API Key**: Your Basalt API key (available in your Basalt dashboard)
  2. **API URL**: The base URL for the Basalt API (defaults to `https://api.getbasalt.ai`)

  ### Setting up Credentials

  1. In n8n, go to **Credentials** and click **Add credential**
  2. Search for **Basalt API**
  3. Enter your API key and API URL
  4. Save the credential

  ## Usage Examples

  ### Example 1: Get a Prompt and Use it in a Workflow

  ```
  1. Basalt Node (Get Prompt)
     - Resource: Prompt
     - Operation: Get
     - Slug: my-prompt-slug
     - Version: 1.0.0

  2. HTTP Request Node
     - Use the prompt text from previous step
     - Make API call with the prompt configuration
  ```

  ### Example 2: Log Prompt Outputs for Monitoring

  ```
  1. Your LLM Node
     - Execute your AI workflow

  2. Basalt Node (Log Output)
     - Resource: Monitoring
     - Operation: Log Output
     - Prompt Slug: {{ $json.promptSlug }}
     - Output: {{ $json.llmResponse }}
     - Input Tokens: {{ $json.usage.inputTokens }}
     - Output Tokens: {{ $json.usage.outputTokens }}
  ```

  ### Example 3: Create Experiment

  ```
  1. Basalt Node (Create Experiment)
     - Resource: Monitoring
     - Operation: Create Experiment
     - Feature Slug: my-feature
     - Name: A/B Test - Version 1.0 vs 2.0
  ```

  ### Example 4: Add Items to a Dataset

  ```
  1. Webhook Trigger
     - Receives new data

  2. Basalt Node (Create Dataset Item)
     - Resource: Dataset
     - Operation: Create Item
     - Slug: training-data
     - Values: { "input": "...", "output": "..." }
     - Ideal Output: "Expected response"
  ```

  ## API Operations

  All operations support the full Basalt API specification. For detailed API documentation, visit [https://docs.getbasalt.ai](https://docs.getbasalt.ai)

  ## Resources

  - [Basalt Documentation](https://docs.getbasalt.ai)
  - [Basalt API Reference](https://api.getbasalt.ai)
  - [n8n Community](https://community.n8n.io)

  ## Development

  ### Building the Node

  ```bash
  npm run build
  ```

  ### Testing Locally

  1. Build the node:
     ```bash
     npm run build
     ```

  2. Link the package:
     ```bash
     npm link
     ```

  3. Link to your n8n installation:
     ```bash
     cd ~/.n8n/nodes
     npm link @basalt-ai/n8n-nodes-basalt
     ```

  4. Restart n8n

  ## License

  MIT

  ## Support

  For issues and questions:
  - GitHub Issues: [basalt-ai/basalt](https://github.com/basalt-ai/basalt/issues)
  - Email: support@getbasalt.ai

ai_documentation_summary:
  {"purpose":"A n8n community node that enables interaction with the Basalt API to manage prompts, monitor LLM outputs, and handle datasets within automated workflows.","capabilities":["Retrieve specific prompts by slug","List all prompts in a workspace","Get detailed prompt information including variables","Publish prompt versions with tags","Create experiments for testing prompt variations","Log individual prompt outputs with metrics","Retrieve datasets by slug","List all datasets in a workspace","Add new rows to datasets"],"authentication":"API Key and API URL","commonUseCases":["Retrieving and using prompts in LLM workflows","Monitoring and logging LLM output performance","Running A/B tests with prompt experiments","Training datasets with input-output pairs"],"limitations":[],"relatedNodes":["HTTP Request","LLM","Webhook Trigger"]}


node_type: @asyncai/n8n-nodes-asyncai.asyncAi
package_name: @asyncai/n8n-nodes-asyncai
display_name: Async
description: Interact with Async API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: ashotbagh
author_github_url: https://github.com/AsyncOrg/asyncai-n8n.git
npm_package_name: @asyncai/n8n-nodes-asyncai
npm_version: 0.1.4
community_fetched_at: 2026-03-25T21:19:40.768Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "voice",
      "options": [
        {
          "name": "Voice",
          "value": "voice"
        },
        {
          "name": "Speech",
          "value": "speech"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a voice",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "setKeyValue",
                  "enabled": "={{$parameter[\"simplify\"]}}",
                  "properties": {
                    "name": "={{$responseItem.name}}",
                    "labels": "={{$responseItem.labels}}",
                    "category": "={{$responseItem.category}}",
                    "voice_id": "={{$responseItem.voice_id}}",
                    "description": "={{$responseItem.description}}",
                    "preview_url": "={{$responseItem.preview_url}}"
                  }
                }
              ]
            },
            "request": {
              "url": "={{\"/voices/\"  + $parameter[\"voice\"] }}",
              "method": "GET"
            }
          },
          "description": "Returns metadata about a specific voice"
        },
        {
          "name": "Create Clone",
          "value": "createClone",
          "action": "Create a voice clone",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/voices/clone",
              "method": "POST",
              "headers": {
                "Content-Type": "multipart/form-data"
              },
              "returnFullResponse": true
            }
          },
          "description": "Create a voice clone from audio files"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a voice",
          "routing": {
            "request": {
              "url": "={{\"/voices/\" + $parameter[\"voice\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a specific voice"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "voice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "textToSpeech",
      "options": [
        {
          "name": "Text to Speech",
          "value": "textToSpeech",
          "action": "Convert text to speech",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "={{\"/text_to_speech\"}}",
              "method": "POST",
              "headers": {
                "content-type": "application/json"
              },
              "encoding": "arraybuffer",
              "returnFullResponse": true
            }
          },
          "description": "Converts text into speech and returns audio"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "speech"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"get","name":"Get","description":"Returns metadata about a specific voice","resource":"voice"},{"operation":"createClone","name":"Create Clone","description":"Create a voice clone from audio files","resource":"voice"},{"operation":"delete","name":"Delete","description":"Delete a specific voice","resource":"voice"},{"operation":"textToSpeech","name":"Text to Speech","description":"Converts text into speech and returns audio","resource":"speech"}]

npm_readme:
  # @asyncai/n8n-nodes-asyncai

  This is the official AsyncAI n8n community node.

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

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

  ## Installation

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

  ## Operations

  ### Speech
  - Text to Speech

  ### Voice
  - Get
  - Create Clone
  - Delete

  ## Credentials

  This node requires an API Key from AsyncAI, You can generate one by going to your [Account](https://app.async.ai/auth).


  ## Resources

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

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the AsyncAI API for speech generation and voice cloning services.","capabilities":["Text to Speech conversion","Retrieve voice clones","Create new voice clones","Delete existing voice clones"],"authentication":"API Key required (generated from AsyncAI account)","commonUseCases":["Automated voiceovers for content creation","Voice cloning for personalized audio responses","Batch text-to-speech processing in workflows"],"limitations":[],"relatedNodes":["HTTP Request","Code"]}


node_type: @coginiti/n8n-nodes-coginiti.coginiti
package_name: @coginiti/n8n-nodes-coginiti
display_name: Coginiti
description: Interact with Coginiti API (Catalog, Execute, Identity Management)
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: dimabreeze
author_github_url: https://github.com/coginiti-dev/n8n-nodes-coginiti.git
npm_package_name: @coginiti/n8n-nodes-coginiti
npm_version: 1.2.0
community_fetched_at: 2026-03-25T21:19:40.769Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "execute",
      "options": [
        {
          "name": "Catalog",
          "value": "catalog",
          "description": "Browse and manage catalog items"
        },
        {
          "name": "Execute",
          "value": "execute",
          "description": "Execute scripts, blocks, and tests"
        },
        {
          "name": "Group",
          "value": "group",
          "description": "Manage groups"
        },
        {
          "name": "User",
          "value": "user",
          "description": "Manage users"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listAssets",
      "options": [
        {
          "name": "Create Asset",
          "value": "createAsset",
          "action": "Create asset",
          "description": "Create a new asset"
        },
        {
          "name": "Create Folder",
          "value": "createFolder",
          "action": "Create folder",
          "description": "Create a new folder"
        },
        {
          "name": "Delete Asset",
          "value": "deleteAsset",
          "action": "Delete asset",
          "description": "Delete an existing asset"
        },
        {
          "name": "Delete Folder",
          "value": "deleteFolder",
          "action": "Delete folder",
          "description": "Delete an existing folder"
        },
        {
          "name": "Get Item by Path",
          "value": "getAsset",
          "action": "Get item by path",
          "description": "Get a single item by path"
        },
        {
          "name": "List Items",
          "value": "listAssets",
          "action": "List catalog items",
          "description": "List catalog items by given path"
        },
        {
          "name": "Update Asset",
          "value": "updateAsset",
          "action": "Update asset",
          "description": "Update an existing asset"
        },
        {
          "name": "Update Folder",
          "value": "updateFolder",
          "action": "Update folder",
          "description": "Update an existing folder"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "catalog"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "executeScript",
      "options": [
        {
          "name": "Execute Block",
          "value": "executeBlock",
          "action": "Execute block",
          "description": "Execute a specific CoginitiScript block from a catalog asset"
        },
        {
          "name": "Execute Script",
          "value": "executeScript",
          "action": "Execute script",
          "description": "Execute a script from the catalog and get a single result set. If the script produces multiple result sets, only the first one is returned."
        },
        {
          "name": "Execute SQL",
          "value": "executeSQL",
          "action": "Execute SQL",
          "description": "Execute a SQL query directly against a connection and get a single result set. This endpoint lets you run queries without first saving them as catalog assets."
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "execute"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create user",
          "description": "Create a new user"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete user",
          "description": "Delete a user"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get user",
          "description": "Get a user by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List users",
          "description": "List all users"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update user",
          "description": "Update a user"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create group",
          "description": "Create a new group"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete group",
          "description": "Delete a group"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get group",
          "description": "Get a group by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List groups",
          "description": "List all groups"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update group",
          "description": "Update a group"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "group"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"createAsset","name":"Create Asset","description":"Create a new asset","resource":"catalog"},{"operation":"createFolder","name":"Create Folder","description":"Create a new folder","resource":"catalog"},{"operation":"deleteAsset","name":"Delete Asset","description":"Delete an existing asset","resource":"catalog"},{"operation":"deleteFolder","name":"Delete Folder","description":"Delete an existing folder","resource":"catalog"},{"operation":"getAsset","name":"Get Item by Path","description":"Get a single item by path","resource":"catalog"},{"operation":"listAssets","name":"List Items","description":"List catalog items by given path","resource":"catalog"},{"operation":"updateAsset","name":"Update Asset","description":"Update an existing asset","resource":"catalog"},{"operation":"updateFolder","name":"Update Folder","description":"Update an existing folder","resource":"catalog"},{"operation":"executeBlock","name":"Execute Block","description":"Execute a specific CoginitiScript block from a catalog asset","resource":"execute"},{"operation":"executeScript","name":"Execute Script","description":"Execute a script from the catalog and get a single result set. If the script produces multiple result sets, only the first one is returned.","resource":"execute"},{"operation":"executeSQL","name":"Execute SQL","description":"Execute a SQL query directly against a connection and get a single result set. This endpoint lets you run queries without first saving them as catalog assets.","resource":"execute"},{"operation":"create","name":"Create","description":"Create a new user","resource":"user"},{"operation":"delete","name":"Delete","description":"Delete a user","resource":"user"},{"operation":"get","name":"Get","description":"Get a user by ID","resource":"user"},{"operation":"list","name":"List","description":"List all users","resource":"user"},{"operation":"update","name":"Update","description":"Update a user","resource":"user"},{"operation":"create","name":"Create","description":"Create a new group","resource":"group"},{"operation":"delete","name":"Delete","description":"Delete a group","resource":"group"},{"operation":"get","name":"Get","description":"Get a group by ID","resource":"group"},{"operation":"list","name":"List","description":"List all groups","resource":"group"},{"operation":"update","name":"Update","description":"Update a group","resource":"group"}]

npm_readme:
  # @coginiti/n8n-nodes-coginiti

  This is an n8n community node. It lets you use [Coginiti API](https://support.coginiti.co/hc/categories/18554190258711-API) in your n8n workflows.

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

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [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

  Supports all of the Coginiti API operations as of Nov-11, 2025

  ## Credentials

  Coginiti API Token is required to run Coginiti automations, read more about [managing personal access tokens](https://support.coginiti.co/hc/articles/18723746168087-Managing-Personal-Access-Tokens).

  ## Compatibility

  Coginiti node was tested against n8n 1.116.2

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Coginiti API documentation](https://support.coginiti.co/hc/categories/18554190258711-API)

  ## Version history

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Coginiti API to manage catalogs, execute tasks, and handle identity management within automated workflows.","capabilities":["Catalog operations","Task execution","Identity management","API integration with Coginiti"],"authentication":"API Token required (Personal Access Token)","commonUseCases":["Automating catalog management tasks","Executing Coginiti services via workflow automation","Handling user identity operations in Coginiti"],"limitations":["Limited to operations supported as of November 11, 2025","Tested only against n8n version 1.116.2"],"relatedNodes":["n8n community nodes","API nodes"]}


node_type: n8n-nodes-qdrant.qdrant
package_name: n8n-nodes-qdrant
display_name: Qdrant
description: Official n8n node to interface with Qdrant - https://qdrant.tech
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: qdrant-tech
author_github_url: https://github.com/qdrant/
npm_package_name: n8n-nodes-qdrant
npm_version: 0.2.1
community_fetched_at: 2026-03-25T21:19:40.770Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "collection",
      "options": [
        {
          "name": "Collection",
          "value": "collection"
        },
        {
          "name": "Payload",
          "value": "payload"
        },
        {
          "name": "Point",
          "value": "point"
        },
        {
          "name": "Search",
          "value": "search"
        },
        {
          "name": "Vector",
          "value": "vector"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Collections",
          "value": "listCollections",
          "action": "List Collections",
          "routing": {
            "request": {
              "url": "/collections",
              "method": "GET"
            }
          },
          "description": "List all collections in the Qdrant instance"
        },
        {
          "name": "Create Collection",
          "value": "createCollection",
          "action": "Create Collection",
          "routing": {
            "request": {
              "url": "=/collections/{{$parameter.collectionName}}",
              "body": {
                "vectors": "={{JSON.parse($parameter.vectors)}}",
                "init_from": "={{JSON.parse($parameter.initFrom)}}",
                "wal_config": "={{JSON.parse($parameter.walConfig)}}",
                "hnsw_config": "={{JSON.parse($parameter.hnswConfig)}}",
                "shard_number": "={{$parameter.shardNumber}}",
                "sparse_vectors": "={{JSON.parse($parameter.sparseVectors)}}",
                "on_disk_payload": "={{$parameter.onDiskPayload}}",
                "sharding_method": "={{$parameter.shardingMethod}}",
                "optimizers_config": "={{JSON.parse($parameter.optimizersConfig)}}",
                "replication_factor": "={{$parameter.replicationFactor}}",
                "strict_mode_config": "={{JSON.parse($parameter.strictModeConfig)}}",
                "quantization_config": "={{JSON.parse($parameter.quantizationConfig)}}",
                "write_consistency_factor": "={{$parameter.writeConsistencyFactor}}"
              },
              "method": "PUT"
            }
          },
          "description": "Create a new collection in the Qdrant instance"
        },
        {
          "name": "Update Collection",
          "value": "updateCollection",
          "action": "Update Collection",
          "routing": {
            "request": {
              "url": "=/collections/{{$parameter.collectionName}}",
              "body": {
                "params": "={{JSON.parse($parameter.params)}}",
                "vectors": "={{JSON.parse($parameter.vectors)}}",
                "hnsw_config": "={{JSON.parse($parameter.hnswConfig)}}",
                "sparse_vectors": "={{JSON.parse($parameter.sparseVectors)}}",
                "optimizers_config": "={{JSON.parse($parameter.optimizersConfig)}}",
                "strict_mode_config": "={{JSON.parse($parameter.strictModeConfig)}}",
                "quantization_config": "={{JSON.parse($parameter.quantizationConfig)}}"
              },
              "method": "PATCH"
            }
          },
          "description": "Update parameters of an existing collection in the Qdrant instance"
        },
        {
          "name": "Get Collection",
          "value": "getCollection",
          "action": "Get Collection",
          "routing": {
            "request": {
              "url": "=/collections/{{$parameter.collectionName}}",
              "method": "GET"
            }
          },
          "description": "Get details of a specific collection"
        },
        {
          "name": "Check If Collection Exists",
          "value": "collectionExists",
          "action": "Check If Collection Exists",
          "routing": {
            "request": {
              "url": "=/collections/{{$parameter.collectionName}}/exists",
              "method": "GET"
            }
          },
          "description": "Check if a collection exists in the Qdrant instance"
        },
        {
          "name": "Delete Collection",
          "value": "deleteCollection",
          "action": "Delete Collection",
          "routing": {
            "request": {
              "url": "=/collections/{{$parameter.collectionName}}",
              "method": "DELETE"
            }
          },
          "description": "Delete the specified collection"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "collection"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Upsert Points",
          "value": "upsertPoints",
          "action": "Upsert Points",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points",
              "body": {
                "points": "={{JSON.parse($parameter.points)}}"
              },
              "method": "PUT"
            }
          },
          "description": "Insert or update points in a collection"
        },
        {
          "name": "Retrieve Point",
          "value": "retrievePoint",
          "action": "Retrieve Point",
          "routing": {
            "request": {
              "url": "=/collections/{{$parameter.collectionName}}/points/{{isNaN(Number($parameter.id)) ?  $parameter.id : Number($parameter.id)}}",
              "method": "GET"
            }
          },
          "description": "Retrieves all details from a single point"
        },
        {
          "name": "Retrieve Points",
          "value": "retrievePoints",
          "action": "Retrieve Points",
          "routing": {
            "request": {
              "qs": {
                "timeout": "={{$parameter.timeout}}",
                "consistency": "={{$parameter.consistency}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points",
              "body": {
                "ids": "={{JSON.parse($parameter.points)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}",
                "with_vector": "={{$parameter.withVector}}",
                "with_payload": "={{$parameter.withPayload}}"
              },
              "method": "POST"
            }
          },
          "description": "Retrieve all details from multiple points"
        },
        {
          "name": "Delete Points",
          "value": "deletePoints",
          "action": "Delete Points",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/delete",
              "body": {
                "filter": "={{JSON.parse($parameter.filter)}}",
                "points": "={{JSON.parse($parameter.points)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "POST"
            }
          },
          "description": "Delete specified points from the collection"
        },
        {
          "name": "Count Points",
          "value": "countPoints",
          "action": "Count Points",
          "routing": {
            "request": {
              "qs": {
                "timeout": "={{$parameter.timeout}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/count",
              "body": {
                "exact": "={{$parameter.exact}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "POST"
            }
          },
          "description": "Counts the number of points that match a specified filtering condition"
        },
        {
          "name": "Scroll Points",
          "value": "scrollPoints",
          "action": "Scroll Points",
          "routing": {
            "request": {
              "qs": {
                "timeout": "={{$parameter.timeout}}",
                "consistency": "={{$parameter.consistency}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/scroll",
              "body": {
                "limit": "={{$parameter.limit}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "offset": "={{isNaN(Number($parameter.offset)) ?  $parameter.offset : Number($parameter.offset)}}",
                "order_by": "={{JSON.parse($parameter.orderBy)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}",
                "with_vector": "={{$parameter.withVector}}",
                "with_payload": "={{$parameter.withPayload}}"
              },
              "method": "POST"
            }
          },
          "description": "Returns all points in a page-by-page manner"
        },
        {
          "name": "Batch Update Points",
          "value": "batchUpdatePoints",
          "action": "Batch Update Points",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/batch",
              "body": {
                "operations": "={{JSON.parse($parameter.operations)}}"
              },
              "method": "POST"
            }
          },
          "description": "Batch update points, including their respective vectors and payloads"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "point"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Update Vectors",
          "value": "updateVectors",
          "action": "Update Vectors",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/vectors",
              "body": {
                "points": "={{JSON.parse($parameter.points)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "PUT"
            }
          },
          "description": "Update specified vectors on points"
        },
        {
          "name": "Delete Vectors",
          "value": "deleteVectors",
          "action": "Delete Vectors",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/vectors/delete",
              "body": {
                "filter": "={{JSON.parse($parameter.filter)}}",
                "points": "={{JSON.parse($parameter.points)}}",
                "vector": "={{JSON.parse($parameter.vector)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "POST"
            }
          },
          "description": "Delete specified vectors from points"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "vector"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Set Payload",
          "value": "setPayload",
          "action": "Set Payload",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/payload",
              "body": {
                "key": "={{$parameter.key ? $parameter.key : null}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "points": "={{JSON.parse($parameter.points)}}",
                "payload": "={{JSON.parse($parameter.payload)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "POST"
            }
          },
          "description": "Sets payload values for specified points"
        },
        {
          "name": "Overwrite Payload",
          "value": "overwritePayload",
          "action": "Overwrite Payload",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/payload",
              "body": {
                "key": "={{$parameter.key ? $parameter.key : null}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "points": "={{JSON.parse($parameter.points)}}",
                "payload": "={{JSON.parse($parameter.payload)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "PUT"
            }
          },
          "description": "Replaces the entire payload of specified points with a new payload"
        },
        {
          "name": "Delete Payload",
          "value": "deletePayload",
          "action": "Delete Payload",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/payload/delete",
              "body": {
                "keys": "={{JSON.parse($parameter.keys)}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "points": "={{JSON.parse($parameter.points)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "POST"
            }
          },
          "description": "Deletes specified payload keys from points"
        },
        {
          "name": "Clear Payload",
          "value": "clearPayload",
          "action": "Clear Payload",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/payload/clear",
              "body": {
                "filter": "={{JSON.parse($parameter.filter)}}",
                "points": "={{JSON.parse($parameter.points)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "POST"
            }
          },
          "description": "Removes the entire payload for specified points"
        },
        {
          "name": "Payload Facets",
          "value": "payloadFacets",
          "action": "Get Payload Facets",
          "routing": {
            "request": {
              "qs": {
                "timeout": "={{$parameter.timeout}}",
                "consistency": "={{$parameter.consistency}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/facet",
              "body": {
                "key": "={{$parameter.key}}",
                "exact": "={{$parameter.exact}}",
                "limit": "={{$parameter.limit}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "POST"
            }
          },
          "description": "Retrieves facets for the specified payload field"
        },
        {
          "name": "Create Payload Index",
          "value": "createPayloadIndex",
          "action": "Create Payload Index",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/index",
              "body": {
                "field_name": "={{$parameter.fieldName}}",
                "field_schema": "={{JSON.parse($parameter.fieldSchema)}}"
              },
              "method": "PUT"
            }
          },
          "description": "Creates a payload index for a field in the specified collection"
        },
        {
          "name": "Delete Payload Index",
          "value": "deletePayloadIndex",
          "action": "Delete Payload Index",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/index/{{$parameter.fieldName}}",
              "method": "DELETE"
            }
          },
          "description": "Deletes a payload index for a field in the specified collection"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "payload"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Query Points",
          "value": "queryPoints",
          "action": "Query Points",
          "routing": {
            "request": {
              "qs": {
                "timeout": "={{$parameter.timeout}}",
                "consistency": "={{$parameter.consistency}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/query",
              "body": {
                "limit": "={{$parameter.limit}}",
                "query": "={{JSON.parse($parameter.query)}}",
                "using": "={{$parameter.using}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "offset": "={{$parameter.offset}}",
                "params": "={{JSON.parse($parameter.params)}}",
                "prefetch": "={{JSON.parse($parameter.prefetch)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}",
                "lookup_from": "={{JSON.parse($parameter.lookupFrom)}}",
                "with_vector": "={{$parameter.withVector}}",
                "with_payload": "={{$parameter.withPayload}}",
                "score_threshold": "={{$parameter.scoreThreshold}}"
              },
              "method": "POST"
            }
          },
          "description": "Query points in a collection using various search methods"
        },
        {
          "name": "Query Batch Points",
          "value": "queryBatchPoints",
          "action": "Query Batch Points",
          "routing": {
            "request": {
              "qs": {
                "timeout": "={{$parameter.timeout}}",
                "consistency": "={{$parameter.consistency}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/query/batch",
              "body": {
                "searches": "={{JSON.parse($parameter.searches)}}"
              },
              "method": "POST"
            }
          },
          "description": "Query multiple points in batch using various search methods"
        },
        {
          "name": "Query Points Groups",
          "value": "queryPointsGroups",
          "action": "Query Points Groups",
          "routing": {
            "request": {
              "qs": {
                "timeout": "={{$parameter.timeout}}",
                "consistency": "={{$parameter.consistency}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/query/groups",
              "body": {
                "limit": "={{$parameter.limit}}",
                "query": "={{JSON.parse($parameter.query)}}",
                "using": "={{$parameter.using}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "params": "={{JSON.parse($parameter.params)}}",
                "group_by": "={{$parameter.groupBy}}",
                "prefetch": "={{JSON.parse($parameter.prefetch)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}",
                "group_size": "={{$parameter.groupSize}}",
                "lookup_from": "={{JSON.parse($parameter.lookupFrom)}}",
                "with_lookup": "={{JSON.parse($parameter.withLookup)}}",
                "with_vector": "={{$parameter.withVector}}",
                "with_payload": "={{$parameter.withPayload}}",
                "score_threshold": "={{$parameter.scoreThreshold}}"
              },
              "method": "POST"
            }
          },
          "description": "Query points and group results by a specified payload field"
        },
        {
          "name": "Matrix Pairs",
          "value": "matrixPairs",
          "action": "Matrix Pairs",
          "routing": {
            "request": {
              "qs": {
                "timeout": "={{$parameter.timeout}}",
                "consistency": "={{$parameter.consistency}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/search/matrix/pairs",
              "body": {
                "limit": "={{$parameter.limit}}",
                "using": "={{$parameter.using}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "sample": "={{$parameter.sample}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "POST"
            }
          },
          "description": "Retrieve sparse matrix of pairwise distances between points sampled from the collection"
        },
        {
          "name": "Matrix Offsets",
          "value": "matrixOffsets",
          "action": "Matrix Offsets",
          "routing": {
            "request": {
              "qs": {
                "timeout": "={{$parameter.timeout}}",
                "consistency": "={{$parameter.consistency}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/search/matrix/offsets",
              "body": {
                "limit": "={{$parameter.limit}}",
                "using": "={{$parameter.using}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "sample": "={{$parameter.sample}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "POST"
            }
          },
          "description": "Retrieve sparse matrix of pairwise distances between points sampled from the collection"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"listCollections","name":"List Collections","description":"List all collections in the Qdrant instance","resource":"collection"},{"operation":"createCollection","name":"Create Collection","description":"Create a new collection in the Qdrant instance","resource":"collection"},{"operation":"updateCollection","name":"Update Collection","description":"Update parameters of an existing collection in the Qdrant instance","resource":"collection"},{"operation":"getCollection","name":"Get Collection","description":"Get details of a specific collection","resource":"collection"},{"operation":"collectionExists","name":"Check If Collection Exists","description":"Check if a collection exists in the Qdrant instance","resource":"collection"},{"operation":"deleteCollection","name":"Delete Collection","description":"Delete the specified collection","resource":"collection"},{"operation":"upsertPoints","name":"Upsert Points","description":"Insert or update points in a collection","resource":"point"},{"operation":"retrievePoint","name":"Retrieve Point","description":"Retrieves all details from a single point","resource":"point"},{"operation":"retrievePoints","name":"Retrieve Points","description":"Retrieve all details from multiple points","resource":"point"},{"operation":"deletePoints","name":"Delete Points","description":"Delete specified points from the collection","resource":"point"},{"operation":"countPoints","name":"Count Points","description":"Counts the number of points that match a specified filtering condition","resource":"point"},{"operation":"scrollPoints","name":"Scroll Points","description":"Returns all points in a page-by-page manner","resource":"point"},{"operation":"batchUpdatePoints","name":"Batch Update Points","description":"Batch update points, including their respective vectors and payloads","resource":"point"},{"operation":"updateVectors","name":"Update Vectors","description":"Update specified vectors on points","resource":"vector"},{"operation":"deleteVectors","name":"Delete Vectors","description":"Delete specified vectors from points","resource":"vector"},{"operation":"setPayload","name":"Set Payload","description":"Sets payload values for specified points","resource":"payload"},{"operation":"overwritePayload","name":"Overwrite Payload","description":"Replaces the entire payload of specified points with a new payload","resource":"payload"},{"operation":"deletePayload","name":"Delete Payload","description":"Deletes specified payload keys from points","resource":"payload"},{"operation":"clearPayload","name":"Clear Payload","description":"Removes the entire payload for specified points","resource":"payload"},{"operation":"payloadFacets","name":"Payload Facets","description":"Retrieves facets for the specified payload field","resource":"payload"},{"operation":"createPayloadIndex","name":"Create Payload Index","description":"Creates a payload index for a field in the specified collection","resource":"payload"},{"operation":"deletePayloadIndex","name":"Delete Payload Index","description":"Deletes a payload index for a field in the specified collection","resource":"payload"},{"operation":"queryPoints","name":"Query Points","description":"Query points in a collection using various search methods","resource":"search"},{"operation":"queryBatchPoints","name":"Query Batch Points","description":"Query multiple points in batch using various search methods","resource":"search"},{"operation":"queryPointsGroups","name":"Query Points Groups","description":"Query points and group results by a specified payload field","resource":"search"},{"operation":"matrixPairs","name":"Matrix Pairs","description":"Retrieve sparse matrix of pairwise distances between points sampled from the collection","resource":"search"},{"operation":"matrixOffsets","name":"Matrix Offsets","description":"Retrieve sparse matrix of pairwise distances between points sampled from the collection","resource":"search"}]

npm_readme:
  # n8n-nodes-qdrant

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

  This is the official [n8n](https://n8n.io/) node for interfacing with Qdrant.

  [Qdrant](http://qdrant.tech) is a vector similarity search engine that provides a production-ready service with a convenient API to store, search, and manage vectors.

  ## Installation

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

  ## Operations

  The node supports the following operations:

  ### Collection

  - [List Collections](https://api.qdrant.tech/v-1-14-x/api-reference/collections/get-collections) - List all collections in the Qdrant instance
  - [Create Collection](https://api.qdrant.tech/v-1-14-x/api-reference/collections/create-collection) - Create a new collection with specified vector parameters
  - [Update Collection](https://api.qdrant.tech/v-1-14-x/api-reference/collections/update-collection) - Update parameters of an existing collection
  - [Get Collection](https://api.qdrant.tech/v-1-14-x/api-reference/collections/get-collection) - Get information about a specific collection
  - [Collection Exists](https://api.qdrant.tech/v-1-14-x/api-reference/collections/collection-exists) - Check if a collection exists
  - [Delete Collection](https://api.qdrant.tech/v-1-14-x/api-reference/collections/delete-collection) - Delete a collection

  ### Point

  - [Upsert Points](https://api.qdrant.tech/v-1-14-x/api-reference/points/upsert-points) - Insert or update points in a collection
  - [Retrieve Point](https://api.qdrant.tech/v-1-14-x/api-reference/points/get-point) - Get a single point by ID
  - [Retrieve Points](https://api.qdrant.tech/v-1-14-x/api-reference/points/get-points) - Get multiple points by their IDs
  - [Delete Points](https://api.qdrant.tech/v-1-14-x/api-reference/points/delete-points) - Remove points from a collection
  - [Count Points](https://api.qdrant.tech/v-1-14-x/api-reference/points/count-points) - Count points in a collection with optional filtering
  - [Scroll Points](https://api.qdrant.tech/v-1-14-x/api-reference/points/scroll-points) - Scroll through all points in a collection
  - [Batch Update Points](https://api.qdrant.tech/v-1-14-x/api-reference/points/batch-update) - Perform multiple point operations in a single request

  ### Vector

  - [Update Vectors](https://api.qdrant.tech/v-1-14-x/api-reference/points/update-vectors) - Update vectors for existing points
  - [Delete Vectors](https://api.qdrant.tech/v-1-14-x/api-reference/points/delete-vectors) - Remove vectors from points

  ### Search

  - [Query Points](https://api.qdrant.tech/v-1-14-x/api-reference/search/query-points) - Search for similar vectors
  - [Query Points In Batch](https://api.qdrant.tech/v-1-14-x/api-reference/search/query-batch-points) - Perform multiple vector searches in batch
  - [Query Points Groups](https://api.qdrant.tech/v-1-14-x/api-reference/search/query-points-groups) - Group search results by payload field
  - [Matrix Pairs](https://api.qdrant.tech/v-1-14-x/api-reference/search/matrix-pairs) - Calculate distance matrix between pairs of points
  - [Matrix Offsets](https://api.qdrant.tech/v-1-14-x/api-reference/search/matrix-offsets) - Calculate distance matrix using offsets

  ### Payload

  - [Set Payload](https://api.qdrant.tech/v-1-14-x/api-reference/points/set-payload) - Set payload for points
  - [Overwrite Payload](https://api.qdrant.tech/v-1-14-x/api-reference/points/overwrite-payload) - Replace entire payload for points
  - [Delete Payload](https://api.qdrant.tech/v-1-14-x/api-reference/points/delete-payload) - Remove payload from points
  - [Clear Payload](https://api.qdrant.tech/v-1-14-x/api-reference/points/clear-payload) - Clear all payload fields
  - [Payload Facets](https://api.qdrant.tech/v-1-14-x/api-reference/points/facet) - Get payload field statistics
  - [Create Payload Index](https://api.qdrant.tech/v-1-14-x/api-reference/indexes/create-field-index) - Create an index for payload fields
  - [Delete Payload Index](https://api.qdrant.tech/v-1-14-x/api-reference/indexes/delete-field-index) - Remove a payload field index

  ## Credentials

  To use this node, you need to set up Qdrant credentials:

  - URL: The REST URL of your Qdrant instance
  - API Key (optional): Your Qdrant API key if authentication is enabled

  ## Compatibility

  This node is compatible with:

  - Qdrant version 1.14.0 and above

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Qdrant Documentation](https://qdrant.tech/documentation/)
  - [Qdrant GitHub Repository](https://github.com/qdrant/qdrant)

ai_documentation_summary:
  {"purpose":"This n8n node provides official integration with Qdrant, a vector similarity search engine, enabling storage, retrieval, and management of vectors and their associated payloads.","capabilities":["List, create, update, get, and delete collections","Upsert, retrieve, delete, count, and scroll points","Update and delete vectors","Query points, batch query, and group search results","Calculate distance matrices (matrix pairs and offsets)","Set, overwrite, delete, and clear point payloads","Create and delete payload field indexes","Get payload field statistics"],"authentication":"API Key required (optional, only if authentication is enabled on Qdrant instance)","commonUseCases":["Semantic search and vector similarity queries","Embedding storage and retrieval workflows","Vector database management and maintenance","Semantic clustering and grouping operations"],"limitations":["Requires Qdrant version 1.14.0 or above","API Key is optional and only needed if Qdrant instance has authentication enabled"],"relatedNodes":["n8n-nodes-http.request","n8n-nodes-webhook","n8n-nodes-ai.embeddings"]}


node_type: n8n-nodes-trackingtime.trackingtimeTrigger
package_name: n8n-nodes-trackingtime
display_name: TrackingTime Trigger
description: Handle TrackingTime events via webhooks
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: jflores-tt
author_github_url: https://github.com/TrackingTime/
npm_package_name: n8n-nodes-trackingtime
npm_version: 1.0.2
community_fetched_at: 2026-03-25T21:19:40.771Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-trackingtime

  This is an n8n community node that connects your workflows with [TrackingTime](https://trackingtime.co/), the cloud platform for tracking projects, tasks, and billable hours.

  TrackingTime centralizes time tracking so teams can monitor productivity, collaborate on schedules, and export accurate timesheets for billing or payroll.

  [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

  - Add Time Entry – create a new time entry for a TrackingTime account.
  - Search Time Entry – query existing entries using flexible filters.
  - Update Time Entry – modify the details of an existing time entry.

  ## Credentials

  - Generate an **App Password** from your TrackingTime user profile (Settings → Integrations).
  - In n8n, create a new **TrackingTime** credential and paste the password; the node authenticates via Basic auth with a fixed username of `API_TOKEN`.
  - Ensure the TrackingTime user has access to the teams and projects whose time entries you plan to manage.

  ## Compatibility

  - Requires n8n v1.0.0 or higher.
  - Developed and tested against n8n 1.50+, which includes the resource mapper used by the search operation.

  ## Usage

  - Drop the **TrackingTime** node into your workflow and choose the `Time Entry` resource.
  - Select the operation (add, search, or update) and supply the required account, project, and time details.
  - For searches, use the **Search Fields** mapper to set the same filters you would pass to the API (e.g. project ID, date range).
  - Execute the node to sync your time data with TrackingTime without leaving n8n.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [TrackingTime API overview](https://support.trackingtime.co/en/articles/6329119-apps-integrations)
  - [TrackingTime product site](https://trackingtime.co/)

  ## Version history

  - 0.1.21 – Initial release with add, search, and update time entry operations.

ai_documentation_summary:
  {"purpose":"A community n8n node that connects workflows to TrackingTime to manage time entries through add, search, and update operations.","capabilities":["Create new time entries","Query existing time entries with flexible filters","Modify details of existing time entries","Sync time data with TrackingTime platform"],"authentication":"Basic auth with a fixed username 'API_TOKEN' and a TrackingTime App Password","commonUseCases":["Automating time entry creation from other workflow triggers","Syncing project hours for billing or payroll purposes","Querying historical time data for reporting"],"limitations":["Requires n8n v1.0.0 or higher (tested on 1.50+)","Uses a fixed username for authentication rather than standard OAuth2","Requires user access to specific teams and projects"],"relatedNodes":["n8n-nodes-trackingtime.trackingTime","n8n-nodes-trackingtime.trackingTimeWebhook"]}


node_type: @lusha-org/n8n-nodes-lusha.lusha
package_name: @lusha-org/n8n-nodes-lusha
display_name: Lusha
description: Lusha API integration for contact and company enrichment with prospecting
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: lusha-oss
author_github_url: https://github.com/lusha-oss/n8n-nodes-lusha.git
npm_package_name: @lusha-org/n8n-nodes-lusha
npm_version: 1.0.10
community_fetched_at: 2026-03-25T21:19:40.772Z
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"
        }
      ],
      "description": "The resource to operate on",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "enrichSingle",
      "options": [
        {
          "name": "Enrich Single",
          "value": "enrichSingle",
          "action": "Enrich a single contact",
          "description": "Enrich a single contact with additional information"
        },
        {
          "name": "Enrich Bulk",
          "value": "enrichBulk",
          "action": "Enrich contacts in bulk",
          "description": "Enrich multiple contacts with additional information"
        },
        {
          "name": "Search Contacts",
          "value": "searchContacts",
          "action": "Search for contacts",
          "description": "Search and discover new contacts based on criteria"
        },
        {
          "name": "Enrich from Search",
          "value": "enrichFromSearch",
          "action": "Enrich contacts from search results",
          "description": "Enrich contacts found through a previous search"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "enrichSingle",
      "options": [
        {
          "name": "Enrich Single",
          "value": "enrichSingle",
          "action": "Enrich a single company",
          "description": "Enrich a single company with additional information"
        },
        {
          "name": "Enrich Bulk",
          "value": "enrichBulk",
          "action": "Enrich companies in bulk",
          "description": "Enrich multiple companies with additional information"
        },
        {
          "name": "Search Companies",
          "value": "searchCompanies",
          "action": "Search for companies",
          "description": "Search and discover new companies based on criteria"
        },
        {
          "name": "Enrich from Search",
          "value": "enrichFromSearch",
          "action": "Enrich companies from search results",
          "description": "Enrich companies found through a previous search"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "company"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"enrichSingle","name":"Enrich Single","description":"Enrich a single contact with additional information","resource":"contact"},{"operation":"enrichBulk","name":"Enrich Bulk","description":"Enrich multiple contacts with additional information","resource":"contact"},{"operation":"searchContacts","name":"Search Contacts","description":"Search and discover new contacts based on criteria","resource":"contact"},{"operation":"enrichFromSearch","name":"Enrich from Search","description":"Enrich contacts found through a previous search","resource":"contact"},{"operation":"enrichSingle","name":"Enrich Single","description":"Enrich a single company with additional information","resource":"company"},{"operation":"enrichBulk","name":"Enrich Bulk","description":"Enrich multiple companies with additional information","resource":"company"},{"operation":"searchCompanies","name":"Search Companies","description":"Search and discover new companies based on criteria","resource":"company"},{"operation":"enrichFromSearch","name":"Enrich from Search","description":"Enrich companies found through a previous search","resource":"company"}]

npm_readme:
  # n8n-nodes-lusha

  This is an n8n community node that integrates [Lusha](https://www.lusha.com/) with n8n, enabling contact and company data enrichment directly in your workflows.

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

  ## Features

  This node provides comprehensive access to Lusha's API capabilities:

  ### 🧑‍💼 Contact Operations

  - **Single Contact Enrichment** - Find contact details using name & company, email, or LinkedIn URL
  - **Bulk Contact Enrichment** - Enrich up to 100 contacts in a single operation
  - **Contact Prospecting** - Search for contacts with advanced filters
  - **Smart Enrichment** - Enrich all, new, or specific contacts from search results

  ### 🏢 Company Operations

  - **Single Company Enrichment** - Get company details using domain or company name
  - **Bulk Company Enrichment** - Enrich up to 100 companies at once
  - **Company Prospecting** - Search for companies with comprehensive filters
  - **Flexible Selection** - Enrich all or specific companies from search results

  ### 🔍 Advanced Filtering

  - **Contact Filters**: Departments, seniority levels, job titles, locations, existing data points
  - **Company Filters**: Industries, sub-industries, employee count, revenue ranges, technologies, locations, SIC/NAICS codes
  - **Smart Pagination**: Navigate through large result sets efficiently

  ## Installation

  ### Community Node (Recommended)

  In your n8n instance:

  1. Go to **Settings** > **Community Nodes**
  2. Click **Install a community node**
  3. Enter: `n8n-nodes-lusha`
  4. Click **Install**

  ### Manual Installation

  ```bash
  # Navigate to your n8n custom nodes folder
  cd ~/.n8n/custom

  # Clone this repository
  git clone https://github.com/lusha-oss/n8n-nodes-lusha.git

  # Install dependencies
  cd n8n-nodes-lusha
  npm install

  # Build the node
  npm run build

  # Restart n8n
  ```

  ## Credentials

  To use this node, you'll need a Lusha API key:

  1. Sign up for a [Lusha account](https://www.lusha.com/)
  2. Navigate to Settings > API
  3. Generate your API key
  4. In n8n, add new Lusha credentials with your API key

  ## Usage Examples

  ### Example 1: Enrich Single Contact

  Find contact information using a person's name and company:

  - **Resource**: Contact
  - **Operation**: Enrich Single
  - **Search By**: Name and Company
  - **First Name**: John
  - **Last Name**: Doe
  - **Company Name**: Acme Corp

  ### Example 2: Bulk Company Enrichment

  Enrich multiple companies from a spreadsheet:

  - **Resource**: Company
  - **Operation**: Enrich Bulk
  - **Companies JSON**: Connect from previous node or provide JSON array

  ### Example 3: Contact Prospecting

  Search for sales leaders in technology companies:

  - **Resource**: Prospecting
  - **Operation**: Search Contacts
  - **Departments**: Sales
  - **Seniority**: Director, Vice President, C-Suite
  - **Industries**: Technology

  ### Example 4: Enrich Search Results

  After running a prospecting search:

  - **Resource**: Prospecting
  - **Operation**: Enrich Contacts
  - **Selection Type**: All Contacts
  - **Request ID**: (automatically passed from search)

  ## Parameters

  ### Contact Enrichment

  - **Search Methods**: Name & Company, Email, LinkedIn URL
  - **Filter Options**: All data, emails only, phones only

  ### Company Enrichment

  - **Search Methods**: Domain, Company Name
  - **Bulk Format**: JSON array with company identifiers

  ### Prospecting Filters

  #### Contact Filters

  - **Job Titles**: Free text, comma-separated
  - **Departments**: Dropdown selection (Sales, Marketing, IT, etc.)
  - **Seniority**: Levels from Intern to Founder
  - **Locations**: Countries, states, cities
  - **Data Points**: Filter by available contact information

  #### Company Filters

  - **Industries**: Main industry categories
  - **Sub-Industries**: Specific industry segments
  - **Employee Count**: Size ranges from 1-10 to 10,000+
  - **Revenue**: Min/Max revenue selection
  - **Locations**: Company headquarters
  - **Technologies**: Tech stack used
  - **Codes**: SIC and NAICS classifications

  ## Error Handling

  The node includes comprehensive error handling:

  - Invalid API credentials
  - Rate limiting responses
  - Invalid input data
  - Empty results handling
  - Network timeouts

  ## Rate Limits

  Please be aware of Lusha's API rate limits:

  - Check your plan's specific limits
  - The node handles responses appropriately
  - Consider adding delays for large bulk operations

  ## Support

  - **Issues**: [GitHub Issues](https://github.com/yourusername/n8n-nodes-lusha/issues)
  - **n8n Community**: [n8n Community Forum](https://community.n8n.io)
  - **Lusha API Docs**: [Lusha API Documentation](https://docs.lusha.com/apis)

  ## License

  [MIT](LICENSE.md)

  ## Contributing

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

  ## Version History

  ### 1.0.0

  - Initial release
  - Full contact and company enrichment
  - Prospecting search and enrichment
  - Bulk operations support
  - Advanced filtering options

  ## Credits

  Created by [Your Name]
  Based on the Lusha API v2

ai_documentation_summary:
  {"purpose":"Integrates Lusha API with n8n to enrich contact and company data, perform prospecting searches, and filter results for sales and marketing workflows.","capabilities":["Single contact enrichment by name, company, email, or LinkedIn URL","Bulk contact enrichment (up to 100 contacts)","Contact prospecting with advanced filters","Smart enrichment of search results (all or specific)","Single company enrichment by domain or name","Bulk company enrichment (up to 100 companies)","Company prospecting with comprehensive filters","Filtering by job titles, departments, seniority, locations, industries, employee count, revenue, and technologies","Smart pagination for large result sets"],"authentication":"API key required","commonUseCases":["Sales prospecting by finding decision-makers in target companies","Enriching lead lists with email addresses and phone numbers","Validating existing contact data for accuracy","Finding contacts in specific departments (e.g., Sales, Marketing) at target companies","Bulk updating company details for a database"],"limitations":["Bulk operations are limited to 100 items per request","Subject to Lusha API rate limits","Requires a paid Lusha account for API access","Manual installation requires npm build step"],"relatedNodes":["Spreadsheet","JSON","Delay","HTTP Request","Split In Batches"]}


node_type: n8n-nodes-bookstack.bookstack
package_name: n8n-nodes-bookstack
display_name: BookStack
description: Manage BookStack resources
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: lucaguindani
author_github_url: https://github.com/lucaguindani/
npm_package_name: n8n-nodes-bookstack
npm_version: 1.3.0
community_fetched_at: 2026-03-25T21:19:40.773Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "global",
      "options": [
        {
          "name": "Attachment",
          "value": "attachment"
        },
        {
          "name": "Book",
          "value": "book"
        },
        {
          "name": "Chapter",
          "value": "chapter"
        },
        {
          "name": "Global",
          "value": "global"
        },
        {
          "name": "Image",
          "value": "image"
        },
        {
          "name": "Page",
          "value": "page"
        },
        {
          "name": "Shelf",
          "value": "shelf"
        }
      ],
      "description": "The BookStack resource to work with",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "attachment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "book"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "page"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "shelf"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chapter"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Global search"
        },
        {
          "name": "Audit Log",
          "value": "auditLogList",
          "action": "Audit log"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "global"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"create","name":"Create","resource":"attachment"},{"operation":"delete","name":"Delete","resource":"attachment"},{"operation":"get","name":"Get","resource":"attachment"},{"operation":"getAll","name":"Get Many","resource":"attachment"},{"operation":"update","name":"Update","resource":"attachment"},{"operation":"create","name":"Create","resource":"book"},{"operation":"delete","name":"Delete","resource":"book"},{"operation":"get","name":"Get","resource":"book"},{"operation":"getAll","name":"Get Many","resource":"book"},{"operation":"update","name":"Update","resource":"book"},{"operation":"create","name":"Create","resource":"page"},{"operation":"delete","name":"Delete","resource":"page"},{"operation":"get","name":"Get","resource":"page"},{"operation":"getAll","name":"Get Many","resource":"page"},{"operation":"update","name":"Update","resource":"page"},{"operation":"create","name":"Create","resource":"shelf"},{"operation":"delete","name":"Delete","resource":"shelf"},{"operation":"get","name":"Get","resource":"shelf"},{"operation":"getAll","name":"Get Many","resource":"shelf"},{"operation":"update","name":"Update","resource":"shelf"},{"operation":"create","name":"Create","resource":"chapter"},{"operation":"delete","name":"Delete","resource":"chapter"},{"operation":"get","name":"Get","resource":"chapter"},{"operation":"getAll","name":"Get Many","resource":"chapter"},{"operation":"update","name":"Update","resource":"chapter"},{"operation":"search","name":"Search","resource":"global"},{"operation":"auditLogList","name":"Audit Log","resource":"global"},{"operation":"create","name":"Create","resource":"image"},{"operation":"delete","name":"Delete","resource":"image"},{"operation":"get","name":"Get","resource":"image"},{"operation":"getAll","name":"Get Many","resource":"image"},{"operation":"update","name":"Update","resource":"image"}]

npm_readme:
  # n8n-nodes-bookstack

  [![CI](https://github.com/lucaguindani/n8n-nodes-bookstack/actions/workflows/ci.yml/badge.svg)](https://github.com/lucaguindani/n8n-nodes-bookstack/actions/workflows/ci.yml)

  This is a n8n community node that lets you use BookStack in your n8n workflows. The [n8n](https://n8n.io/) project is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  BookStack is an open source, self‑hosted documentation / knowledge base platform for organizing and sharing content via books, chapters, pages, and shelves.

  - [Installation](#installation)
  - [Operations](#operations)
  - [Credentials](#credentials)
  - [Compatibility](#compatibility)
  - [Usage](#usage)
  - [Resources](#resources)
  - [License](#license)
  - [Contributing](#contributing)
  - [Disclaimer](#disclaimer)

  ---
  ## Installation

  ### Community node
  Follow the official guide: [Install a community node](https://docs.n8n.io/integrations/community-nodes/installation/).

  ### Manual (custom code folder)
  If you are running a self‑hosted n8n and want to build from source:
  ```bash
  # Go to your n8n custom folder
  mkdir -p ~/.n8n/custom && cd ~/.n8n/custom

  # Clone the repository
  git clone https://github.com/lucaguindani/n8n-nodes-bookstack.git
  cd n8n-nodes-bookstack

  # Install dependencies & build
  pnpm install
  pnpm run build

  # Restart n8n so the node is loaded
  ```
  After restart, search for "BookStack" in the node picker.

  ---
  ## Operations
  The node exposes CRUD + search and audit capabilities for core BookStack entities.

  Resource: Book
  - Get Many / Get / Create / Update / Delete

  Resource: Page
  - Get Many / Get / Create / Update / Delete

  Resource: Chapter
  - Get Many / Get / Create / Update / Delete

  Resource: Shelf
  - Get Many / Get / Create / Update / Delete

  Resource: Image
  - Get Many / Get / Create / Update / Delete

  Resource: Attachment
  - Get Many / Get / Create / Update / Delete

  Resource: Global
  - Search / Audit Log

  ---
  ## Credentials
  You need a BookStack API Token.
  1. In BookStack, open: My Account → Access & Security (`/my-account/auth`)
  2. Create a token; copy Token ID and Token Secret
  3. In n8n, create new credentials of type "Bookstack API":
     - Base URL: e.g. `https://your-bookstack.example.com/api`
     - Token ID
     - Token Secret
  4. Save and use in the node

  Required permission: The token inherits the permissions of the user who created it. Ensure that user can read/create/update intended entities. Audit Log requires permission to manage both users and system settings.

  ---
  ## Compatibility
  Tested with:
  - n8n 1.109+
  - Bookstack 24.5+
  - Node 20+

  ---
  ## Usage
  ### Listing (Get Many)
  - Return All: When enabled, the node will automatically paginate through all results.
  - Limit: When "Return All" is disabled, sets the maximum number of items to return.
  - Sort By / Sort Direction
  - Filters (field, operation, value)

  Internally, the node handles pagination (count/offset) for you when needed.

  ### Global Search
  - Provide a search query and optionally pick a content type (book, page, chapter, shelf)
  - "Return All" / "Limit" to control the amount of results
  - "Deep Dive" to automatically fetch full content for all search results. This provides complete context but increases execution time and API calls.

  ### Image & Attachment
  - "Binary Property" to tell the node which binary key on the current item holds the file. For example, if a previous node (HTTP Request, Read Binary File, etc.) stored the file under the key `data`, enter `data` here. The node will read that binary entry and attach it as the file in the request.

  ### Tags
  When creating/updating entities, `tags` can be provided as a comma‑separated list: `tagA, tagB`.

  ---
  ## Resources
  * n8n Community Nodes Docs: https://docs.n8n.io/integrations/#community-nodes
  * BookStack Documentation: https://www.bookstackapp.com/docs/
  * BookStack API Reference: https://demo.bookstackapp.com/api/docs
  * BookStack GitHub: https://github.com/BookStackApp/BookStack

  ---
  ## License
  This project is licensed under the MIT License – see [LICENSE.md](./LICENSE.md).

  ---
  ## Contributing
  To lunch a local instance, make sure Node 20+ and pnpm 10+ are installed, then run the following from the root directory of the project.

  ```bash
  pnpm install
  pnpm run dev
  ```

  You should be able to connect to `http://localhost:5678`.

  Pull requests are welcome. For significant changes, open an issue first to discuss scope.

  Before committing, ensure build passes and no lint or formatting errors are found.

  ```bash
  pnpm run lint
  pnpm run format
  pnpm run build
  ```

  Please provide a clear PR description.

  ---
  ## Disclaimer
  This community node is not an official BookStack product. Use at your own risk; validate results in critical workflows.

ai_documentation_summary:
  {"purpose":"This n8n community node enables full CRUD operations, search, and audit logging for BookStack resources including books, pages, chapters, shelves, images, and attachments.","capabilities":["Create, Read, Update, Delete (CRUD) for Books, Pages, Chapters, Shelves, Images, and Attachments","Global Search with content type filtering and 'Deep Dive' for full content retrieval","Audit Log access for user and system settings","Built-in pagination handling with 'Return All' and limit controls","Sorting by field and direction","Filtering by field, operation, and value","Binary file attachment support via custom binary keys","Tag management (comma-separated list) for entity creation and updates"],"authentication":"BookStack API Token (Token ID and Token Secret required)","commonUseCases":["Automated documentation management and content synchronization","Knowledge base search and content retrieval workflows","Audit trail generation for user and system changes","Bulk import or export of BookStack content"],"limitations":["Audit Log requires specific permissions to manage both users and system settings","Deep Dive feature increases execution time and API calls significantly","Not an official BookStack product; use at own risk"],"relatedNodes":["HTTP Request","Read Binary File","Write Binary File","Split In Batches"]}


node_type: @tavily/n8n-nodes-tavily.tavily
package_name: @tavily/n8n-nodes-tavily
display_name: Tavily
description: Tavily API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs: "={{['main']}}"
updated_at: 2026-03-25 21:19:40
author_name: konstantintzt
author_github_url: https://github.com/tavily-ai/tavily-n8n-node.git
npm_package_name: @tavily/n8n-nodes-tavily
npm_version: 0.5.1
community_fetched_at: 2026-03-25T21:19:40.774Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Crawl",
          "value": "crawl"
        },
        {
          "name": "Extract",
          "value": "extract"
        },
        {
          "name": "Map",
          "value": "map"
        },
        {
          "name": "Research",
          "value": "research"
        },
        {
          "name": "Search",
          "value": "search"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "urls",
      "options": [
        {
          "name": "URLs",
          "value": "urls",
          "action": "Extract",
          "description": "Extract raw content from URLs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "extract"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "query",
      "options": [
        {
          "name": "Query",
          "value": "query",
          "action": "Search",
          "description": "Search query"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "url",
      "options": [
        {
          "name": "URL",
          "value": "url",
          "action": "Crawl",
          "description": "The root URL to begin the crawl"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "crawl"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "url",
      "options": [
        {
          "name": "URL",
          "value": "url",
          "action": "Map",
          "description": "Discover all internal links starting from a base URL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "map"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create Research Task",
          "value": "create",
          "action": "Create research task",
          "description": "Initiate a comprehensive research task on a given topic"
        },
        {
          "name": "Get Research Status",
          "value": "status",
          "action": "Get research status",
          "description": "Retrieve the status and results of a research task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "research"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"urls","name":"URLs","description":"Extract raw content from URLs","resource":"extract"},{"operation":"query","name":"Query","description":"Search query","resource":"search"},{"operation":"url","name":"URL","description":"The root URL to begin the crawl","resource":"crawl"},{"operation":"url","name":"URL","description":"Discover all internal links starting from a base URL","resource":"map"},{"operation":"create","name":"Create Research Task","description":"Initiate a comprehensive research task on a given topic","resource":"research"},{"operation":"status","name":"Get Research Status","description":"Retrieve the status and results of a research task","resource":"research"}]

npm_readme:
  # @tavily/n8n-nodes-tavily

  @tavily/n8n-nodes-tavily is a node for n8n that integrates the Tavily API, enabling powerful web search and content extraction within your no-code automation workflows.

  ## Features

  ### Tavily Search
  Tavily Search allows you to query the web with powerful filtering capabilities, including options to refine results by topic, time range, and specific domains to include or exclude. You can choose to retrieve a generated answer, raw content, or even related images, depending on your workflow needs. It also supports different search depths—basic or advanced. 

  ### Tavily Extract
   Tavily Extract allows you to effortlessly retrieve raw content from a list of websites, making it ideal for data collection, content analysis, and research. You can also combine Tavily Extract with our Search method: first, obtain a list of relevant documents, then perform further processing on selected links to gather additional information and use it as context for your research tasks.

  ### Tavily Crawl
  Tavily Crawl allows you to intelligently crawl a website from a starting URL to discover and extract content across multiple pages. Control depth, breadth, and apply filters to tailor your crawl for comprehensive analysis and content aggregation.

  ### Tavily Map
  Tavily Map allows you to discover and map out all the URLs within a website starting from a root URL. Unlike Crawl, which extracts content, Map focuses on efficiently building a comprehensive sitemap of a website's structure. This is ideal for understanding site architecture, planning content extraction, or identifying specific pages for further processing.

  ### Tavily Research
  Tavily Research performs comprehensive research on a given topic by conducting multiple searches, analyzing sources, and generating a detailed research report. Choose between different models (Mini for targeted research, Pro for comprehensive multi-angle analysis) and customize the output format with citation styles and structured schemas.

  ## Getting a Tavily API Key

  1. Go to the [Tavily website](https://tavily.com) and create an account
  2. Navigate to the [Tavily dashboard](https://app.tavily.com/home) to get your API key

  ## Configuring Credentials in n8n

  1. In your n8n instance, go to the "Credentials" section
  2. Click "Create Credential"
  3. Search for or select "Tavily API"
  4. Enter your Tavily API key in the appropriate field
  5. Save the credential

  ## Usage

  ### Tavily Search

  1. Add the "Tavily" node to your n8n workflow
  2. Connect it to the preceding node in your workflow
  3. Click on 'Search'
  4. In the node's settings:
     - Select your Tavily API
     - Enter your search query
     - Configure any other desired search parameters (topic, search depth, etc.)
  5. Run the workflow to execute the search

  ### Tavily Extract

  1. Add the "Tavily" node to your n8n workflow
  2. Connect it to the preceding node
  3. Click on 'Extract'
  4. In the node's settings:
     - Select your Tavily API credential
     - Enter the URLs you want to extract content from
     - Configure any other extraction parameters (include images, extract depth)
  5. Run the workflow to extract the content

  ### Tavily Crawl

  1. Add the "Tavily" node to your n8n workflow
  2. Connect it to the preceding node
  3. Click on 'Crawl'
  4. In the node's settings:
     - Select your Tavily API credential
     - Enter the root URL to begin the crawl
     - Configure crawl parameters (max depth, limit, etc.)
  5. Run the workflow to crawl the website and extract content

  ### Tavily Map

  1. Add the "Tavily" node to your n8n workflow
  2. Connect it to the preceding node
  3. Click on 'Map'
  4. In the node's settings:
     - Select your Tavily API credential
     - Enter the root URL to begin mapping
     - Configure map parameters (max depth, limit, filters, etc.)
  5. Run the workflow to map the website's URL structure

  ### Tavily Research

  #### Create Research Task

  1. Add the "Tavily" node to your n8n workflow
  2. Connect it to the preceding node
  3. Click on 'Research'
  4. Select 'Create Research Task' operation
  5. In the node's settings:
     - Select your Tavily API credential
     - Enter your research task or question
     - Configure model (Auto, Mini, or Pro) and other options
  6. Run the workflow to initiate the research task
  7. The response will include a `request_id` to check the status later

  #### Get Research Status

  1. Add the "Tavily" node to your n8n workflow
  2. Connect it to the preceding node
  3. Click on 'Research'
  4. Select 'Get Research Status' operation
  5. In the node's settings:
     - Select your Tavily API credential
     - Enter the `request_id` from the create research task response
  6. Run the workflow to get the research status and results

  ## Parameters

  ### Tavily Search Parameters

  | Parameter | Description |
  |-----------|-------------|
  | Query | The search query to execute |
  | Topic | The category of the search (General, News, or Finance) |
  | Search Depth | The depth of the search (Basic or Advanced) |
  | Chunks Per Source (Advanced Search only) | Number of content chunks to retrieve from each source (1-3) |
  | Max Results | Maximum number of search results to return (1-20) |
  | Time Range | Time range filter for results (day, week, month, year) |
  | Days (News Only) | Number of days back from the current date to include (for News topic) |
  | Include Answer | Include an LLM-generated answer in the response (Basic or Advanced) |
  | Include Raw Content | Include cleaned and parsed HTML content of each search result |
  | Include Images | Perform an image search and include the results in the response |
  | Include Image Descriptions | When including images, also add a descriptive text for each image |
  | Include Domains | A list of domains to specifically include in the search results |
  | Exclude Domains | A list of domains to specifically exclude from the search results |
  | Include Favicon | Include the favicon URL for each result |
  | Include Usage | Whether to include credit usage information in the response. |
  | Country | Boost search results from a specific country. |
  | Auto Parameters | When enabled, Tavily automatically configures search parameters based on your query's content and intent |
  | Start Date | Will return all results after the specified start date (publish date). Required to be written in the format YYYY-MM-DD |
  | End Date | Will return all results before the specified end date (publish date). Required to be written in the format YYYY-MM-DD |

  ### Tavily Extract Parameters

  | Parameter | Description |
  |-----------|-------------|
  | URLs | One or more URLs to extract content from |
  | Include Images | Include a list of images extracted from each URL |
  | Extract Depth | How deeply to parse each URL (Basic or Advanced) |
  | Format | Format of the extracted web page content (Markdown or Text) |
  | Include Favicon | Include the favicon URL for each result |
  | Include Usage | Whether to include credit usage information in the response. NOTE:The value may be 0 if the total successful URL extractions has not yet reached 5 calls. See our [Credits & Pricing documentation](https://docs.tavily.com/documentation/api-credits) for details. |

  ### Tavily Crawl Parameters

  | Parameter | Description |
  |-----------|-------------|
  | URL | The root URL to begin the crawl |
  | Instructions | Natural language instructions for the crawler |
  | Max Depth | Maximum depth of the crawl (≥ 1) |
  | Max Breadth | Maximum number of links to follow per level (≥ 1) |
  | Limit | Maximum number of results to return (≥ 1) |
  | Select Paths | Regex patterns to select only URLs with specific path patterns |
  | Select Domains | Regex patterns to select crawling to specific domains or subdomains |
  | Exclude Paths | Regex patterns to exclude URLs with specific path patterns |
  | Exclude Domains | Regex patterns to exclude specific domains or subdomains from crawling |
  | Allow External | Whether to allow following links that go to external domains |
  | Include Images | Whether to include images in the crawl results |
  | Extract Depth | Extraction depth (Basic or Advanced) |
  | Format | Format of the extracted web page content (Markdown or Text) |
  | Include Favicon | Include the favicon URL for each result |
  | Include Usage | Whether to include credit usage information in the response. NOTE:The value may be 0 if the total use of /extract and /map calls has not yet reached minimum needed. See our [Credits & Pricing documentation](https://docs.tavily.com/documentation/api-credits) for details. |

  ### Tavily Map Parameters

  | Parameter | Description |
  |-----------|-------------|
  | URL | The root URL to begin mapping |
  | Instructions | Natural language instructions guiding the mapping process |
  | Max Depth | Defines how far from the base URL the crawler can explore (≥ 1) |
  | Max Breadth | Maximum number of links to follow per level of the tree (≥ 1) |
  | Limit | Total number of links the crawler will process before stopping (≥ 1) |
  | Select Paths | Regex patterns to select only URLs with specific path patterns |
  | Select Domains | Regex patterns to select crawling to specific domains or subdomains |
  | Exclude Paths | Regex patterns to exclude URLs with specific path patterns |
  | Exclude Domains | Regex patterns to exclude specific domains or subdomains from crawling |
  | Allow External | Whether to include external domain links in the final results list |
  | Timeout | Maximum time in seconds to wait for the map operation (10-150) |

  ### Tavily Research Parameters

  #### Create Research Task

  | Parameter | Description |
  |-----------|-------------|
  | Input | The research task or question to investigate |
  | Model | The model used by the research agent (Auto, Mini, or Pro). Mini is optimized for targeted research, Pro provides comprehensive multi-angle research |
  | Citation Format | The format for citations in the research report (Numbered, MLA, APA, or Chicago) |
  | Output Schema | A JSON Schema object that defines the structure of the research output |
  | Stream | Whether to stream research results in real-time as Server-Sent Events (SSE) with progress updates and incremental results |

  #### Get Research Status

  | Parameter | Description |
  |-----------|-------------|
  | Request ID | The unique identifier of the research task returned from the Create Research Task operation |

  ## Troubleshooting

  ### Error Codes

  | Error Code | Description | Solution |
  |------------|-------------|----------|
  | 400 Bad Request | Invalid request parameters or unsupported values | Check all parameters and their formats |
  | 401 Unauthorized | Missing or invalid API key | Verify API key or generate a new one |
  | 429 Too Many Requests | Rate limit exceeded | Reduce request frequency or implement backoff |
  | 432 Plan Limit Exceeded | Exceeds plan limits | Upgrade your plan via [Tavily Dashboard](https://app.tavily.com/billing) |
  | 433 Pay-As-You-Go Limit Exceeded | Exceeds pay-as-you-go limit | Increase limit via [Tavily Dashboard](https://app.tavily.com/billing) |
  | 500 Internal Server Error | Server-side issue | Retry request after a few minutes |

  ## Cost

  Head to the [API Credits Overview](https://docs.tavily.com/documentation/api-credits) in our documentation to learn more about how many API Credits each request costs.

  ## License

  This project is licensed under the terms of the MIT license.

  ## Contact

  If you are encountering issues while using Tavily, please email us at support@tavily.com. We'll be happy to help you.

  If you want to stay updated on the latest Tavily news and releases, head to our [Developer Community](https://community.tavily.com) to learn more!

ai_documentation_summary:
  {"purpose":"This n8n node integrates the Tavily API to perform web search, content extraction, website crawling, site mapping, and comprehensive research within no-code automation workflows.","capabilities":["Web search with filtering by topic, time range, and domains","Content extraction from specific URLs","Website crawling with configurable depth and breadth","Website URL mapping and sitemap generation","Automated research with multiple search iterations and source analysis","Support for different search depths (basic/advanced)","Support for different research models (Mini/Pro)","Image retrieval in search results"],"authentication":"API key required","commonUseCases":["Market research and competitor analysis","Data collection from multiple sources","Content aggregation and summarization","Website structure analysis","Automated fact-checking and verification"],"limitations":["Research tasks require a separate request_id to check status","Some advanced features may depend on specific Tavily API plan tiers","Crawl and Map operations are limited by API rate limits"],"relatedNodes":["HTTP Request","Code","Function","Wait Until","Split In Batches"]}


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

updated_at: 2026-03-25 21:19:40
author_name: zenorocha
author_github_url: https://github.com/resend/
npm_package_name: n8n-nodes-resend
npm_version: 2.3.4
community_fetched_at: 2026-03-25T21:19:40.774Z
ai_summary_generated_at: 2026-03-25 22:47:20
description:
  Send emails, manage contacts, create broadcasts, handle templates, domains, segments, topics, and webhooks using the Resend email platform

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "email",
      "options": [
        {
          "name": "Broadcast",
          "value": "broadcasts",
          "description": "Create, send, update, or delete email broadcasts to reach multiple contacts at once"
        },
        {
          "name": "Contact",
          "value": "contacts",
          "description": "Add, update, delete, or list contacts (email subscribers) and manage their segment and topic memberships"
        },
        {
          "name": "Contact Property",
          "value": "contactProperties",
          "description": "Create, update, delete, or list custom contact properties (metadata fields) for storing additional contact information"
        },
        {
          "name": "Domain",
          "value": "domains",
          "description": "Add, verify, update, or delete sending domains for email authentication and deliverability"
        },
        {
          "name": "Email",
          "value": "email",
          "description": "Send single or batch emails, retrieve sent emails, cancel scheduled emails, or manage email attachments"
        },
        {
          "name": "Event",
          "value": "events",
          "description": "Create, send, retrieve, update, or delete events for triggering workflows (private alpha)"
        },
        {
          "name": "Receiving Email",
          "value": "receivingEmails",
          "description": "List and retrieve received emails and their attachments from inbound email processing"
        },
        {
          "name": "Segment",
          "value": "segments",
          "description": "Create, update, delete, or list contact segments for grouping contacts based on criteria"
        },
        {
          "name": "Template",
          "value": "templates",
          "description": "Create, update, publish, duplicate, or delete reusable email templates with dynamic variables"
        },
        {
          "name": "Topic",
          "value": "topics",
          "description": "Create, update, delete, or list subscription topics for managing email preferences"
        },
        {
          "name": "Webhook",
          "value": "webhooks",
          "description": "Create, update, delete, or list webhooks for receiving real-time notifications about email events"
        },
        {
          "name": "Workflow",
          "value": "workflows",
          "description": "Create, update, delete, or list automated email workflows and monitor runs (private alpha)"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Cancel",
          "value": "cancel",
          "action": "Cancel a scheduled email",
          "description": "Cancel a previously scheduled email by its email ID before it gets sent"
        },
        {
          "name": "Get Attachment",
          "value": "getAttachment",
          "action": "Get attachment from email",
          "description": "Download a specific attachment from a sent email using the email ID and attachment ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all sent emails",
          "description": "Get a list of all previously sent emails with their status, subject, and recipients"
        },
        {
          "name": "List Attachments",
          "value": "listAttachments",
          "action": "List email attachments",
          "description": "Get all attachments from a sent email by providing the email ID"
        },
        {
          "name": "Retrieve",
          "value": "retrieve",
          "action": "Get email details",
          "description": "Get details of a specific sent email including subject, recipients, status, and timestamps"
        },
        {
          "name": "Send",
          "value": "send",
          "action": "Send a new email",
          "description": "Send a new email to one or more recipients with HTML or plain text content, attachments, and optional scheduling"
        },
        {
          "name": "Send and Wait for Response",
          "value": "sendAndWait",
          "action": "Send email and wait for recipient response",
          "description": "Send an email with response buttons and pause workflow execution until the recipient clicks a response"
        },
        {
          "name": "Send Batch",
          "value": "sendBatch",
          "action": "Send multiple emails in batch",
          "description": "Send up to 100 emails in a single API call for bulk email delivery with individual customization"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update scheduled email time",
          "description": "Reschedule a scheduled email by updating its scheduled_at time before it is sent"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "email"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an email template",
          "description": "Create a new reusable email template with HTML content and dynamic variables for personalization"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a template",
          "description": "Permanently delete an email template by its template ID"
        },
        {
          "name": "Duplicate",
          "value": "duplicate",
          "action": "Duplicate a template",
          "description": "Create a copy of an existing template with a new name for easy customization"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get template details",
          "description": "Retrieve a template's details including HTML content, variables, and publish status by template ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all templates",
          "description": "Get all email templates with their names, IDs, and publish status"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish a template",
          "description": "Publish a template to make it available for sending emails. Required before a template can be used in email operations."
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a template",
          "description": "Update a template's name, subject, HTML content, or variables"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "templates"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Add a new sending domain",
          "description": "Add a new sending domain for email authentication. Returns DNS records that must be configured for verification."
        },
        {
          "name": "Create Tracking Domain",
          "value": "createTrackingDomain",
          "action": "Create a tracking domain",
          "description": "Create a custom domain for click and open tracking (private alpha)"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a domain",
          "description": "Remove a sending domain from your account. Emails can no longer be sent from this domain after deletion."
        },
        {
          "name": "Delete Tracking Domain",
          "value": "deleteTrackingDomain",
          "action": "Delete a tracking domain",
          "description": "Remove an existing click tracking domain (private alpha)"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get domain details",
          "description": "Retrieve details of a domain including DNS records, verification status, and configuration"
        },
        {
          "name": "Get Tracking Domain",
          "value": "getTrackingDomain",
          "action": "Get tracking domain details",
          "description": "Retrieve a single click tracking domain with its DNS records and verification status (private alpha)"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all domains",
          "description": "Get all sending domains with their verification status and DNS record requirements"
        },
        {
          "name": "List Tracking Domains",
          "value": "listTrackingDomains",
          "action": "List tracking domains",
          "description": "List all tracking domains for a given domain (private alpha)"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update domain settings",
          "description": "Update domain settings such as click tracking, open tracking, or TLS requirements"
        },
        {
          "name": "Verify",
          "value": "verify",
          "action": "Verify domain DNS records",
          "description": "Trigger verification of DNS records for a domain. Use after configuring DNS to check if domain is ready for sending."
        },
        {
          "name": "Verify Tracking Domain",
          "value": "verifyTrackingDomain",
          "action": "Verify a tracking domain",
          "description": "Trigger DNS verification for a tracking domain (private alpha)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "domains"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a broadcast campaign",
          "description": "Create a new email broadcast campaign with subject, content, and target audience for bulk email sending"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a broadcast",
          "description": "Permanently delete a broadcast campaign by its broadcast ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get broadcast details",
          "description": "Retrieve details of a specific broadcast including status, subject, audience, and send statistics"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all broadcasts",
          "description": "Get a list of all broadcast campaigns with their status, subject lines, and creation dates"
        },
        {
          "name": "Send",
          "value": "send",
          "action": "Send a broadcast",
          "description": "Trigger the sending of a broadcast campaign to its target audience immediately or at a scheduled time"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a broadcast",
          "description": "Update a broadcast's subject, content, audience, or schedule before it is sent"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "broadcasts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact segment",
          "description": "Create a new contact segment for grouping contacts based on criteria or manual assignment"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a segment",
          "description": "Permanently delete a segment by its segment ID. Contacts in the segment are not deleted."
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get segment details",
          "description": "Retrieve details of a specific segment including its name, contact count, and creation date"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all segments",
          "description": "Get all segments in the account with their names, IDs, and contact counts"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "segments"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a subscription topic",
          "description": "Create a new subscription topic for organizing email preferences and managing unsubscribe options"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a topic",
          "description": "Permanently delete a subscription topic by its topic ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get topic details",
          "description": "Retrieve details of a specific topic including its name, description, and subscriber count"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all topics",
          "description": "Get all subscription topics with their names, IDs, and subscriber counts"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a topic",
          "description": "Update a topic's name or description"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "topics"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Add to Segment",
          "value": "addToSegment",
          "action": "Add contact to a segment",
          "description": "Add an existing contact to a segment by providing the contact ID and segment ID"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new contact",
          "description": "Create a new contact with email address, optional name, custom properties, and segment/topic assignments"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a contact",
          "description": "Permanently delete a contact by their contact ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get contact details",
          "description": "Retrieve a contact's details including email, name, properties, and subscription status by contact ID"
        },
        {
          "name": "Get Topics",
          "value": "getTopics",
          "action": "Get contact topic subscriptions",
          "description": "Get all topic subscriptions (opt-in/opt-out status) for a specific contact"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all contacts",
          "description": "Get a list of all contacts in the account with their email addresses and basic information"
        },
        {
          "name": "List Segments",
          "value": "listSegments",
          "action": "List contact segments",
          "description": "Get all segments that a specific contact belongs to"
        },
        {
          "name": "Remove From Segment",
          "value": "removeFromSegment",
          "action": "Remove contact from segment",
          "description": "Remove a contact from a segment by providing the contact ID and segment ID"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update contact details",
          "description": "Update a contact's information including name, email, properties, or unsubscribe status"
        },
        {
          "name": "Update Topics",
          "value": "updateTopics",
          "action": "Update contact topic subscriptions",
          "description": "Update a contact's topic subscription preferences (opt-in or opt-out of specific topics)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contacts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact property",
          "description": "Create a new custom contact property (metadata field) for storing additional information about contacts"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a contact property",
          "description": "Permanently delete a contact property. This removes the property from all contacts."
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get contact property details",
          "description": "Retrieve details of a specific contact property including its name, type, and configuration"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all contact properties",
          "description": "Get all custom contact properties defined for storing contact metadata"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a contact property",
          "description": "Update a contact property's name or configuration"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contactProperties"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a webhook endpoint",
          "description": "Create a new webhook endpoint to receive real-time notifications for email events like delivered, opened, clicked, bounced"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a webhook",
          "description": "Delete a webhook endpoint. Events will no longer be sent to this URL."
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get webhook details",
          "description": "Retrieve details of a webhook including its URL, subscribed events, and status"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all webhooks",
          "description": "Get all configured webhooks with their URLs, event subscriptions, and status"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a webhook",
          "description": "Update a webhook's URL or the events it is subscribed to"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhooks"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get received email details",
          "description": "Retrieve a specific received email including sender, subject, body, and headers by email ID"
        },
        {
          "name": "Get Attachment",
          "value": "getAttachment",
          "action": "Download attachment from received email",
          "description": "Download a specific attachment from a received email by email ID and attachment ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all received emails",
          "description": "Get all emails received through inbound email processing with sender, subject, and timestamps"
        },
        {
          "name": "List Attachments",
          "value": "listAttachments",
          "action": "List attachments from received email",
          "description": "Get all attachments from a received email including filenames, sizes, and content types"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "receivingEmails"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a workflow",
          "description": "Create a new workflow to automate email sequences"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a workflow",
          "description": "Remove an existing workflow"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get workflow details",
          "description": "Retrieve a single workflow with its steps and edges"
        },
        {
          "name": "Get Run",
          "value": "getRun",
          "action": "Get a workflow run",
          "description": "Retrieve a single workflow run"
        },
        {
          "name": "Get Run Step",
          "value": "getRunStep",
          "action": "Get a workflow run step",
          "description": "Retrieve a single workflow run step"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all workflows",
          "description": "Retrieve a list of workflows"
        },
        {
          "name": "List Run Steps",
          "value": "listRunSteps",
          "action": "List workflow run steps",
          "description": "Retrieve a list of workflow run steps"
        },
        {
          "name": "List Runs",
          "value": "listRuns",
          "action": "List workflow runs",
          "description": "Retrieve a list of workflow runs"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a workflow",
          "description": "Update an existing workflow (enable or disable)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "workflows"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an event",
          "description": "Create a new event that can be used to trigger workflows"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an event",
          "description": "Remove an existing event by ID or name"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get event details",
          "description": "Retrieve a single event by ID or name"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all events",
          "description": "Retrieve a list of events"
        },
        {
          "name": "Send",
          "value": "send",
          "action": "Send an event",
          "description": "Send a named event to trigger matching workflows"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an event",
          "description": "Update an existing event schema"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "events"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"cancel","name":"Cancel","description":"Cancel a previously scheduled email by its email ID before it gets sent","resource":"email"},{"operation":"getAttachment","name":"Get Attachment","description":"Download a specific attachment from a sent email using the email ID and attachment ID","resource":"email"},{"operation":"list","name":"List","description":"Get a list of all previously sent emails with their status, subject, and recipients","resource":"email"},{"operation":"listAttachments","name":"List Attachments","description":"Get all attachments from a sent email by providing the email ID","resource":"email"},{"operation":"retrieve","name":"Retrieve","description":"Get details of a specific sent email including subject, recipients, status, and timestamps","resource":"email"},{"operation":"send","name":"Send","description":"Send a new email to one or more recipients with HTML or plain text content, attachments, and optional scheduling","resource":"email"},{"operation":"sendAndWait","name":"Send and Wait for Response","description":"Send an email with response buttons and pause workflow execution until the recipient clicks a response","resource":"email"},{"operation":"sendBatch","name":"Send Batch","description":"Send up to 100 emails in a single API call for bulk email delivery with individual customization","resource":"email"},{"operation":"update","name":"Update","description":"Reschedule a scheduled email by updating its scheduled_at time before it is sent","resource":"email"},{"operation":"create","name":"Create","description":"Create a new reusable email template with HTML content and dynamic variables for personalization","resource":"templates"},{"operation":"delete","name":"Delete","description":"Permanently delete an email template by its template ID","resource":"templates"},{"operation":"duplicate","name":"Duplicate","description":"Create a copy of an existing template with a new name for easy customization","resource":"templates"},{"operation":"get","name":"Get","description":"Retrieve a template's details including HTML content, variables, and publish status by template ID","resource":"templates"},{"operation":"list","name":"List","description":"Get all email templates with their names, IDs, and publish status","resource":"templates"},{"operation":"publish","name":"Publish","description":"Publish a template to make it available for sending emails. Required before a template can be used in email operations.","resource":"templates"},{"operation":"update","name":"Update","description":"Update a template's name, subject, HTML content, or variables","resource":"templates"},{"operation":"create","name":"Create","description":"Add a new sending domain for email authentication. Returns DNS records that must be configured for verification.","resource":"domains"},{"operation":"createTrackingDomain","name":"Create Tracking Domain","description":"Create a custom domain for click and open tracking (private alpha)","resource":"domains"},{"operation":"delete","name":"Delete","description":"Remove a sending domain from your account. Emails can no longer be sent from this domain after deletion.","resource":"domains"},{"operation":"deleteTrackingDomain","name":"Delete Tracking Domain","description":"Remove an existing click tracking domain (private alpha)","resource":"domains"},{"operation":"get","name":"Get","description":"Retrieve details of a domain including DNS records, verification status, and configuration","resource":"domains"},{"operation":"getTrackingDomain","name":"Get Tracking Domain","description":"Retrieve a single click tracking domain with its DNS records and verification status (private alpha)","resource":"domains"},{"operation":"list","name":"List","description":"Get all sending domains with their verification status and DNS record requirements","resource":"domains"},{"operation":"listTrackingDomains","name":"List Tracking Domains","description":"List all tracking domains for a given domain (private alpha)","resource":"domains"},{"operation":"update","name":"Update","description":"Update domain settings such as click tracking, open tracking, or TLS requirements","resource":"domains"},{"operation":"verify","name":"Verify","description":"Trigger verification of DNS records for a domain. Use after configuring DNS to check if domain is ready for sending.","resource":"domains"},{"operation":"verifyTrackingDomain","name":"Verify Tracking Domain","description":"Trigger DNS verification for a tracking domain (private alpha)","resource":"domains"},{"operation":"create","name":"Create","description":"Create a new email broadcast campaign with subject, content, and target audience for bulk email sending","resource":"broadcasts"},{"operation":"delete","name":"Delete","description":"Permanently delete a broadcast campaign by its broadcast ID","resource":"broadcasts"},{"operation":"get","name":"Get","description":"Retrieve details of a specific broadcast including status, subject, audience, and send statistics","resource":"broadcasts"},{"operation":"list","name":"List","description":"Get a list of all broadcast campaigns with their status, subject lines, and creation dates","resource":"broadcasts"},{"operation":"send","name":"Send","description":"Trigger the sending of a broadcast campaign to its target audience immediately or at a scheduled time","resource":"broadcasts"},{"operation":"update","name":"Update","description":"Update a broadcast's subject, content, audience, or schedule before it is sent","resource":"broadcasts"},{"operation":"create","name":"Create","description":"Create a new contact segment for grouping contacts based on criteria or manual assignment","resource":"segments"},{"operation":"delete","name":"Delete","description":"Permanently delete a segment by its segment ID. Contacts in the segment are not deleted.","resource":"segments"},{"operation":"get","name":"Get","description":"Retrieve details of a specific segment including its name, contact count, and creation date","resource":"segments"},{"operation":"list","name":"List","description":"Get all segments in the account with their names, IDs, and contact counts","resource":"segments"},{"operation":"create","name":"Create","description":"Create a new subscription topic for organizing email preferences and managing unsubscribe options","resource":"topics"},{"operation":"delete","name":"Delete","description":"Permanently delete a subscription topic by its topic ID","resource":"topics"},{"operation":"get","name":"Get","description":"Retrieve details of a specific topic including its name, description, and subscriber count","resource":"topics"},{"operation":"list","name":"List","description":"Get all subscription topics with their names, IDs, and subscriber counts","resource":"topics"},{"operation":"update","name":"Update","description":"Update a topic's name or description","resource":"topics"},{"operation":"addToSegment","name":"Add to Segment","description":"Add an existing contact to a segment by providing the contact ID and segment ID","resource":"contacts"},{"operation":"create","name":"Create","description":"Create a new contact with email address, optional name, custom properties, and segment/topic assignments","resource":"contacts"},{"operation":"delete","name":"Delete","description":"Permanently delete a contact by their contact ID","resource":"contacts"},{"operation":"get","name":"Get","description":"Retrieve a contact's details including email, name, properties, and subscription status by contact ID","resource":"contacts"},{"operation":"getTopics","name":"Get Topics","description":"Get all topic subscriptions (opt-in/opt-out status) for a specific contact","resource":"contacts"},{"operation":"list","name":"List","description":"Get a list of all contacts in the account with their email addresses and basic information","resource":"contacts"},{"operation":"listSegments","name":"List Segments","description":"Get all segments that a specific contact belongs to","resource":"contacts"},{"operation":"removeFromSegment","name":"Remove From Segment","description":"Remove a contact from a segment by providing the contact ID and segment ID","resource":"contacts"},{"operation":"update","name":"Update","description":"Update a contact's information including name, email, properties, or unsubscribe status","resource":"contacts"},{"operation":"updateTopics","name":"Update Topics","description":"Update a contact's topic subscription preferences (opt-in or opt-out of specific topics)","resource":"contacts"},{"operation":"create","name":"Create","description":"Create a new custom contact property (metadata field) for storing additional information about contacts","resource":"contactProperties"},{"operation":"delete","name":"Delete","description":"Permanently delete a contact property. This removes the property from all contacts.","resource":"contactProperties"},{"operation":"get","name":"Get","description":"Retrieve details of a specific contact property including its name, type, and configuration","resource":"contactProperties"},{"operation":"list","name":"List","description":"Get all custom contact properties defined for storing contact metadata","resource":"contactProperties"},{"operation":"update","name":"Update","description":"Update a contact property's name or configuration","resource":"contactProperties"},{"operation":"create","name":"Create","description":"Create a new webhook endpoint to receive real-time notifications for email events like delivered, opened, clicked, bounced","resource":"webhooks"},{"operation":"delete","name":"Delete","description":"Delete a webhook endpoint. Events will no longer be sent to this URL.","resource":"webhooks"},{"operation":"get","name":"Get","description":"Retrieve details of a webhook including its URL, subscribed events, and status","resource":"webhooks"},{"operation":"list","name":"List","description":"Get all configured webhooks with their URLs, event subscriptions, and status","resource":"webhooks"},{"operation":"update","name":"Update","description":"Update a webhook's URL or the events it is subscribed to","resource":"webhooks"},{"operation":"get","name":"Get","description":"Retrieve a specific received email including sender, subject, body, and headers by email ID","resource":"receivingEmails"},{"operation":"getAttachment","name":"Get Attachment","description":"Download a specific attachment from a received email by email ID and attachment ID","resource":"receivingEmails"},{"operation":"list","name":"List","description":"Get all emails received through inbound email processing with sender, subject, and timestamps","resource":"receivingEmails"},{"operation":"listAttachments","name":"List Attachments","description":"Get all attachments from a received email including filenames, sizes, and content types","resource":"receivingEmails"},{"operation":"create","name":"Create","description":"Create a new workflow to automate email sequences","resource":"workflows"},{"operation":"delete","name":"Delete","description":"Remove an existing workflow","resource":"workflows"},{"operation":"get","name":"Get","description":"Retrieve a single workflow with its steps and edges","resource":"workflows"},{"operation":"getRun","name":"Get Run","description":"Retrieve a single workflow run","resource":"workflows"},{"operation":"getRunStep","name":"Get Run Step","description":"Retrieve a single workflow run step","resource":"workflows"},{"operation":"list","name":"List","description":"Retrieve a list of workflows","resource":"workflows"},{"operation":"listRunSteps","name":"List Run Steps","description":"Retrieve a list of workflow run steps","resource":"workflows"},{"operation":"listRuns","name":"List Runs","description":"Retrieve a list of workflow runs","resource":"workflows"},{"operation":"update","name":"Update","description":"Update an existing workflow (enable or disable)","resource":"workflows"},{"operation":"create","name":"Create","description":"Create a new event that can be used to trigger workflows","resource":"events"},{"operation":"delete","name":"Delete","description":"Remove an existing event by ID or name","resource":"events"},{"operation":"get","name":"Get","description":"Retrieve a single event by ID or name","resource":"events"},{"operation":"list","name":"List","description":"Retrieve a list of events","resource":"events"},{"operation":"send","name":"Send","description":"Send a named event to trigger matching workflows","resource":"events"},{"operation":"update","name":"Update","description":"Update an existing event schema","resource":"events"}]

npm_readme:
  <h1 align="center">
    <br>
    <a href="/"><img src=".github/media/resend-header.png" alt="n8n-nodes-resend" width="900"></a>
    <br>
  </h1>

  <p align="center">
  	<img alt="NPM Version" src="https://img.shields.io/npm/v/n8n-nodes-resend">
  	<img alt="GitHub License" src="https://img.shields.io/github/license/resend/n8n-nodes-resend">
  	<img alt="NPM Downloads" src="https://img.shields.io/npm/dm/n8n-nodes-resend">
  	<img alt="NPM Last Update" src="https://img.shields.io/npm/last-update/n8n-nodes-resend">
  	<img alt="Static Badge" src="https://img.shields.io/badge/n8n-2.6.4-EA4B71?logo=n8n">
  </p>

  <p align="center">
    <a href="#installation">Installation</a> |
    <a href="#credentials">Credentials</a> |
    <a href="#human-in-the-loop">Human in the Loop</a> |
    <a href="#resources">Resources</a> |
    <a href="#trigger-events">Trigger Events</a> |
    <a href="#limitations">Limitations</a> |
    <a href="#development">Development</a>
  </p>

  ---

  The official node for [n8n](https://n8n.io) that integrates with the [Resend](https://resend.com) API. Send emails, manage contacts, handle domains, and receive webhooks.

  ## API Coverage

  > [!WARNING]
  > Audiences are deprecated in favor of Segments and won't be supported in this node. Please use Segments for contact grouping and targeting.

  The table below shows which endpoints are currently implemented:

  <details>
  <summary><strong>View all endpoints</strong></summary>

  | API Resource           | Endpoint              | Status  | Operations                                                                                                       |
  | ---------------------- | --------------------- | ------- | ---------------------------------------------------------------------------------------------------------------- |
  | **Email**              | `/emails`             | ✅ Full | Send, Send Batch, Send and Wait, List, Get, Update, Cancel, List Attachments, Get Attachment                     |
  | **Receiving Emails**   | `/emails/receiving`   | ✅ Full | List, Get, List Attachments, Get Attachment                                                                      |
  | **Domains**            | `/domains`            | ✅ Full | Create, List, Get, Update, Delete, Verify                                                                        |
  | **Templates**          | `/templates`          | ✅ Full | Create, List, Get, Update, Delete, Publish, Duplicate                                                            |
  | **Contacts**           | `/contacts`           | ✅ Full | Create, List, Get, Update, Delete, Add to Segment, List Segments, Remove from Segment, Get Topics, Update Topics |
  | **Broadcasts**         | `/broadcasts`         | ✅ Full | Create, List, Get, Update, Delete, Send                                                                          |
  | **Segments**           | `/segments`           | ✅ Full | Create, List, Get, Delete                                                                                        |
  | **Topics**             | `/topics`             | ✅ Full | Create, List, Get, Update, Delete                                                                                |
  | **Contact Properties** | `/contact-properties` | ✅ Full | Create, List, Get, Update, Delete                                                                                |
  | **Webhooks**           | `/webhooks`           | ✅ Full | Create, List, Get, Update, Delete                                                                                |

  </details>

  ## Installation

  1. Make a new workflow or open an existing one
  2. Open the nodes panel by selecting **+** or pressing **Tab**
  3. Search for **Resend**
  4. Select **Install** to install the node for your instance

  ## Credentials

  This package uses two separate credentials:

  ### Resend API

  1. Get your API key from [Resend Dashboard](https://resend.com/api-keys)
  2. In n8n, go to **Credentials** > **Add credential**
  3. Search for **Resend API** and paste your key

  This credential is used by the main **Resend** node for all API operations.

  ### Resend Webhook Signing Secret

  1. Create a webhook endpoint in your [Resend Dashboard](https://resend.com/webhooks)
  2. Copy the signing secret (starts with `whsec_`)
  3. In n8n, go to **Credentials** > **Add credential**
  4. Search for **Resend Webhook Signing Secret** and paste your secret

  This credential is used exclusively by the **Resend Trigger** node for webhook signature verification. Each webhook endpoint in Resend has its own unique signing secret.

  ## Human in the Loop

  The **Send and Wait for Response** operation enables human-in-the-loop workflows. Send an email and pause the workflow until the recipient responds via approval buttons or a form.

  ### Features

  - **Approval Workflows**: Send emails with Approve/Decline buttons for quick decisions
  - **Free Text Responses**: Collect text input via a response form
  - **Configurable Wait Time**: Set a timeout or wait indefinitely
  - **Secure Callbacks**: Responses use signed URLs for security

  ### How to Use

  The workflow pauses at the email step and resumes automatically once the recipient clicks a button or submits the response form.

  1. In the node panel, go to **Human in the Loop** > **Resend**
  2. Or select **Email** resource > **Send and Wait for Response** operation

  ### Configuration Options

  | Option                   | Description                                              |
  | ------------------------ | -------------------------------------------------------- |
  | **Response Type**        | Choose between Approval (buttons) or Free Text (form)    |
  | **Approval Type**        | Single button (Approve only) or Double (Approve/Decline) |
  | **Button Labels**        | Customize the button text                                |
  | **Button Styles**        | Primary or Secondary styling                             |
  | **Message Button Label** | Label for the form link button (Free Text mode)          |
  | **Response Form Title**  | Title shown on the response form                         |
  | **Limit Wait Time**      | Set a timeout for the wait period                        |

  ## Resources

  <details>
  <summary><strong>Email</strong></summary>

  | Operation        | Description                                       |
  | ---------------- | ------------------------------------------------- |
  | Send             | Send a single email with optional attachments     |
  | Send Batch       | Send up to 100 emails in one request              |
  | Send and Wait    | Send email and wait for recipient response (HITL) |
  | List             | List sent emails                                  |
  | Get              | Retrieve email details and status                 |
  | Cancel           | Cancel a scheduled email                          |
  | Update           | Modify a scheduled email                          |
  | List Attachments | List attachments for a sent email                 |
  | Get Attachment   | Get a specific attachment from a sent email       |

  </details>

  <details>
  <summary><strong>Receiving Email</strong></summary>

  | Operation        | Description                                     |
  | ---------------- | ----------------------------------------------- |
  | List             | List all received emails                        |
  | Get              | Retrieve a received email                       |
  | List Attachments | List attachments for a received email           |
  | Get Attachment   | Get a specific attachment from a received email |

  </details>

  <details>
  <summary><strong>Contact</strong></summary>

  | Operation           | Description                              |
  | ------------------- | ---------------------------------------- |
  | Create              | Add a new contact                        |
  | Get                 | Retrieve contact details                 |
  | Update              | Modify contact information               |
  | Delete              | Remove a contact                         |
  | List                | List all contacts                        |
  | Add to Segment      | Add a contact to a segment               |
  | List Segments       | List segments for a contact              |
  | Remove From Segment | Remove a contact from a segment          |
  | Get Topics          | Get topic subscriptions for a contact    |
  | Update Topics       | Update topic subscriptions for a contact |

  </details>

  <details>
  <summary><strong>Contact Property</strong></summary>

  | Operation | Description                      |
  | --------- | -------------------------------- |
  | Create    | Create a custom contact property |
  | Get       | Retrieve property details        |
  | Update    | Modify property settings         |
  | Delete    | Remove a property                |
  | List      | List all contact properties      |

  </details>

  <details>
  <summary><strong>Segment</strong></summary>

  | Operation | Description                                          |
  | --------- | ---------------------------------------------------- |
  | Create    | Create a new segment with optional filter conditions |
  | Get       | Retrieve segment details                             |
  | Delete    | Remove a segment                                     |
  | List      | List all segments                                    |

  </details>

  <details>
  <summary><strong>Topic</strong></summary>

  | Operation | Description                 |
  | --------- | --------------------------- |
  | Create    | Create a subscription topic |
  | Get       | Retrieve topic details      |
  | Update    | Modify topic settings       |
  | Delete    | Remove a topic              |
  | List      | List all topics             |

  </details>

  <details>
  <summary><strong>Broadcast</strong></summary>

  | Operation | Description                   |
  | --------- | ----------------------------- |
  | Create    | Create an email campaign      |
  | Get       | Retrieve broadcast details    |
  | Send      | Send a broadcast to a segment |
  | Update    | Modify broadcast settings     |
  | Delete    | Remove a broadcast            |
  | List      | List all broadcasts           |

  </details>

  <details>
  <summary><strong>Template</strong></summary>

  | Operation | Description                    |
  | --------- | ------------------------------ |
  | Create    | Create an email template       |
  | Get       | Retrieve template details      |
  | Update    | Modify a template              |
  | Delete    | Remove a template              |
  | List      | List all templates             |
  | Publish   | Publish a template             |
  | Duplicate | Duplicate an existing template |

  </details>

  <details>
  <summary><strong>Domain</strong></summary>

  | Operation | Description                 |
  | --------- | --------------------------- |
  | Create    | Add a sending domain        |
  | Get       | Retrieve domain details     |
  | Verify    | Trigger domain verification |
  | Update    | Modify domain settings      |
  | Delete    | Remove a domain             |
  | List      | List all domains            |

  </details>

  <details>
  <summary><strong>Webhook</strong></summary>

  | Operation | Description               |
  | --------- | ------------------------- |
  | Create    | Create a webhook endpoint |
  | Get       | Retrieve webhook details  |
  | Update    | Modify webhook settings   |
  | Delete    | Remove a webhook          |
  | List      | List all webhooks         |

  </details>

  ## Trigger Events

  The **Resend Trigger** node receives webhooks for real-time email events. Signatures are automatically verified using Svix.

  > **Note:** The trigger node requires the **Resend Webhook Signing Secret** credential (separate from the Resend API credential). See the [Credentials](#credentials) section for setup instructions.

  <details>
  <summary><strong>View all events</strong></summary>

  | Event                    | Description                          |
  | ------------------------ | ------------------------------------ |
  | `email.sent`             | Email sent to recipient              |
  | `email.delivered`        | Email delivered successfully         |
  | `email.delivery_delayed` | Email delivery delayed               |
  | `email.opened`           | Recipient opened the email           |
  | `email.clicked`          | Link clicked in email                |
  | `email.bounced`          | Email bounced                        |
  | `email.complained`       | Spam complaint received              |
  | `email.failed`           | Email failed to send due to an error |
  | `email.received`         | Inbound email received by Resend     |
  | `email.scheduled`        | Email scheduled to be sent           |
  | `email.suppressed`       | Email suppressed by Resend           |
  | `contact.created`        | New contact added                    |
  | `contact.updated`        | Contact modified                     |
  | `contact.deleted`        | Contact removed                      |
  | `domain.created`         | New domain added                     |
  | `domain.updated`         | Domain modified                      |
  | `domain.deleted`         | Domain removed                       |

  </details>

  ## Limitations

  - Maximum email size: 40MB (including attachments)
  - Attachments not supported with scheduled emails

  ## Development

  ```bash
  git clone https://github.com/resend/n8n-nodes-resend.git
  cd n8n-nodes-resend
  npm install
  npm run build
  npm run lint
  ```

  ## License

  [MIT](LICENSE.md)

  <p align="center">
    <a href="https://github.com/resend/n8n-nodes-resend">GitHub</a> |
    <a href="https://github.com/resend/n8n-nodes-resend/issues">Issues</a> |
    <a href="https://resend.com/docs">Resend Docs</a>
  </p>

ai_documentation_summary:
  {"purpose":"This n8n node integrates with the Resend email platform to send emails, manage contacts, create broadcasts, handle templates and domains, and receive webhooks.","capabilities":["Send emails (single, batch, with wait)","List and retrieve email details and attachments","Manage email domains (create, verify, update, delete)","Create and manage email templates","Manage contacts and segments","Create and send broadcasts","Manage topics and contact properties","Set up and manage webhooks","Human-in-the-loop workflows with approval buttons and form responses"],"authentication":"API key required (Resend API key) and Webhook Signing Secret (whsec_) for trigger nodes","commonUseCases":["Transactional email notifications","Marketing email campaigns and broadcasts","Customer segmentation and targeted messaging","Email verification and domain management","Workflow pauses for user approval or feedback collection"],"limitations":["Audiences feature is deprecated; only Segments are supported","Webhook signing secrets are unique per endpoint and must be configured separately"],"relatedNodes":["Resend Trigger","Human in the Loop (Resend)","Generic HTTP Request","Generic Webhook"]}


