# nodes

node_type: n8n-nodes-klicktipp.klicktippTrigger
package_name: n8n-nodes-klicktipp
display_name: KlickTipp Trigger
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: mchudesnov
author_github_url: https://github.com/klicktipp/n8n-community-node-klicktipp.git
npm_package_name: n8n-nodes-klicktipp
npm_version: 1.0.36
community_fetched_at: 2026-03-25T21:19:40.985Z
ai_summary_generated_at: 2026-03-25 22:51:43
description:
  Triggers when a webhook event occurs in KlickTipp, such as a tag being added, an email being opened or sent, a link clicked, an SMS sent, and more.

npm_readme:
  # n8n-nodes-klicktipp

  **KlickTipp n8n Community Node (npm: `n8n-nodes-klicktipp`)**

  **Same project, three surfaces:**
  - **npm package:** `n8n-nodes-klicktipp`
  - **GitHub repository:** `klicktipp/n8n-community-node-klicktipp`
  - **n8n integration page:** https://n8n.io/integrations/klicktipp/

  This repository contains the source code for the npm package **`n8n-nodes-klicktipp`**, which powers the official **KlickTipp n8n Community Node** listed on n8n.io.
  Note: The GitHub repository name and the npm package name differ. They refer to the same project.

  ## KlickTipp API Integration for n8n

  What is the KlickTipp Marketing Suite?

  <a href="https://www.klicktipp.com/de?source=n8n" title="E-Mail-Marketing" target="_blank" rel="noopener noreferrer">KlickTipp Marketing Suite</a> is a digital marketing platform that empowers creators and small businesses to generate leads and turn them into passionate customers. It boosts growth with GDPR-compliant tools for email and SMS marketing, marketing automation, landing pages, and conversion rate optimization.

  This package provides a set of nodes for interacting with the KlickTipp API, allowing you to manage contacts, tags, subscription processes, and more directly from n8n.
  For more detailed information on the KlickTipp API - covering functions for managing contacts, tags, fields, and more - please refer to the <a href="https://www.klicktipp.com/de/support/wissensdatenbank/application-programming-interface-api?source=n8n" target="_blank" rel="noopener" title="E-Mail-Marketing API">official KlickTipp API client documentation</a> and the <a href="https://www.klicktipp.com/support/knowledge-base/install-klicktipp-node-n8n?source=n8n" target="_blank" rel="noopener" title="Install KlickTipp Node for n8n">installation guide for the KlickTipp node in n8n</a>.

  ---

  ## Table of Contents

  - [Installation](#installation)
  - [Quickstart](#quickstart)
  - [Nodes Overview](#nodes-overview)
    - [Contact](#contact)
    - [Contact Tagging](#contact-tagging)
    - [Data Field](#data-field)
    - [Opt-In Process](#opt-in-process)
    - [Tag](#tag)
    - [Triggers](#triggers)
  - [Supported Resources and Operations](#supported-resources-and-operations)
  - [Credentials](#credentials)
  - [Compatibility](#compatibility)
  - [License](#license)
  - [Example Workflows](#example-workflows)
  - [Troubleshooting](#troubleshooting)

  ---

  ## Installation

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

  ```bash
  npm install n8n-nodes-klicktipp
  ```

  ## Quickstart

  1. Install the package in your n8n instance: `npm install n8n-nodes-klicktipp`
  2. Restart n8n.
  3. In the n8n UI, add **KlickTipp** credentials (username + password).
  4. Add a KlickTipp node and choose a resource + operation (for example: Tag -> Create).
  5. Execute the workflow.

  ## Nodes Overview

  This package includes nodes to interact with various aspects of the KlickTipp API:

  ### Contact

  - **Nodes**:
    - `Add or update contact`
    - `Delete contact`
    - `Get contact`
    - `Search contact id`
    - `List contacts`
    - `Search tagged contacts`
    - `Unsubscribe contact`
    - `Update contact`
  - **Description**: Provides management capabilities for contacts, such as searching, updating, and deleting contact data.

  ### Contact Tagging

  - **Nodes**:
    - `Tag contact`
    - `Untag contact`
  - **Description**: Provides management capabilities for contacts tagging.

  ### Data Field

  - **Nodes**:
    - `Get data field`
    - `List data fields`
  - **Description**: Manages data fields, including retrieving all available data fields for contacts, and obtaining data field information.

  ### Opt-In Process

  - **Nodes**:
    - `Get Opt-in process`
    - `Search redirect URL`
    - `List Opt-in processes`
  - **Description**: Manages opt-in processes, including listing all processes, retrieving details of a specific process, and obtaining redirect URLs.

  ### Tag

  - **Nodes**:
    - `Create tag`
    - `Delete tag`
    - `Get tag`
    - `List tags`
    - `Update tag`
  - **Description**: Manages tags within KlickTipp, enabling operations to list, create, update, and delete tags.

  ### Triggers

  - **Node**: `On new KlickTipp event`
  - **Description**: Triggers when a webhook event occurs in KlickTipp, such as a tag being added, an email being opened or sent, a link clicked, an SMS sent, and more.

  ---

  ## Supported Resources and Operations

  Quick inventory (names as displayed in n8n):

  **Contact**
  - Add or update contact
  - Delete contact
  - Get contact
  - Search contact id
  - List contacts
  - Search tagged contacts
  - Unsubscribe contact
  - Update contact

  **Contact Tagging**
  - Tag contact
  - Untag contact

  **Data Field**
  - Get data field
  - List data fields

  **Opt-In Process**
  - Get Opt-in process
  - Search redirect URL
  - List Opt-in processes

  **Tag**
  - Create tag
  - Delete tag
  - Get tag
  - List tags
  - Update tag

  **Triggers**
  - On new KlickTipp event

  When building or generating n8n workflows, use the exact operation names above as they appear in the UI.

  ---

  ## Workflow Keys (for JSON generation)

  For the full, authoritative mapping of `resource` and `operation` keys, see `OPERATIONS.md`.
  This is the contract used to generate valid n8n workflow JSON.

  ---

  ## Credentials

  To authenticate with the KlickTipp API, configure your API credentials:

  - **Username**
  - **Password**

  Once set up, these credentials will be used across all KlickTipp nodes in the package.

  ---

  ## Compatibility

  - **n8n**: Community nodes (self-hosted or desktop)
  - **KlickTipp API**: Uses the official KlickTipp API
  - **Authentication**: Username + password

  If you are using n8n Cloud, install this community node in a self-hosted or desktop instance.

  ---

  ## License

  This package is licensed under the MIT License. For details, see the `LICENSE` file.

  ---

  ## Example Workflows

  Refer to the `examples/n8n-nodes-klicktipp.json` file for sample workflows showcasing the integration.
  For the exact resource and operation keys used in workflow JSON, see `OPERATIONS.md`.

  ---

  ## Troubleshooting

  - **Node not showing up**: Restart n8n after installing `n8n-nodes-klicktipp`.
  - **Auth errors**: Verify KlickTipp username/password and that API access is enabled.
  - **Operation not found in generated workflows**: Use the exact operation names listed in "Supported Resources and Operations".

ai_documentation_summary:
  {"purpose":"This n8n community node integrates with the KlickTipp marketing suite to manage contacts, tags, data fields, and opt-in processes, and triggers workflows on specific events like email opens or link clicks.","capabilities":["Add or update contacts","Delete contacts","Search and list contacts","Tag and untag contacts","Manage data fields","List and retrieve opt-in processes","Create, update, and delete tags","Trigger on webhook events (email opens, link clicks, SMS sent, etc.)"],"authentication":"Username and Password","commonUseCases":["Automated lead management and contact enrichment","Triggering workflows when users interact with marketing emails or landing pages","Managing contact tags and segmentation","Handling opt-in processes and subscription management"],"limitations":["Not compatible with n8n Cloud (requires self-hosted or desktop instance)","Requires manual installation via npm package","Authentication requires username and password (no API key mentioned)"],"relatedNodes":["n8n-nodes-klicktipp.klicktippContact","n8n-nodes-klicktipp.klicktippContactTagging","n8n-nodes-klicktipp.klicktippTag","n8n-nodes-klicktipp.klicktippDataField","n8n-nodes-klicktipp.klicktippOptInProcess"]}


node_type: @firefliesai/n8n-nodes-fireflies.fireflies
package_name: @firefliesai/n8n-nodes-fireflies
display_name: Fireflies
description: Interact with the Fireflies.ai API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: sudotong
author_github_url: https://github.com/firefliesai/n8n-nodes-fireflies.git
npm_package_name: @firefliesai/n8n-nodes-fireflies
npm_version: 2.1.0
community_fetched_at: 2026-03-25T21:19:40.987Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "transcript",
      "options": [
        {
          "name": "AI App",
          "value": "aiApp"
        },
        {
          "name": "AskFred",
          "value": "askfred"
        },
        {
          "name": "Audio",
          "value": "audio"
        },
        {
          "name": "Transcript",
          "value": "transcript"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAIAppOutputs",
      "options": [
        {
          "name": "Get Outputs",
          "value": "getAIAppOutputs",
          "action": "Get outputs of an AI app",
          "description": "Retrieve AI app outputs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "aiApp"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getThreads",
      "options": [
        {
          "name": "Continue Thread",
          "value": "continueThread",
          "action": "Continue an existing ask fred thread",
          "description": "Continue an existing conversation thread with a follow-up question"
        },
        {
          "name": "Create Thread",
          "value": "createThread",
          "action": "Create a new ask fred thread",
          "description": "Create a new conversation thread with a question about meetings"
        },
        {
          "name": "Delete Thread",
          "value": "deleteThread",
          "action": "Delete an ask fred thread",
          "description": "Delete a conversation thread and all its messages"
        },
        {
          "name": "Get Thread",
          "value": "getThread",
          "action": "Get an ask fred thread",
          "description": "Get a specific thread with all its messages"
        },
        {
          "name": "Get Threads",
          "value": "getThreads",
          "action": "Get ask fred threads",
          "description": "Get a list of all conversation threads"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "askfred"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "uploadAudio",
      "options": [
        {
          "name": "Upload",
          "value": "uploadAudio",
          "action": "Upload audio",
          "description": "Upload an audio file for transcription"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "audio"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getTranscript",
      "options": [
        {
          "name": "Get",
          "value": "getTranscript",
          "action": "Get a transcript",
          "description": "Get transcript details"
        },
        {
          "name": "Get Analytics",
          "value": "getTranscriptAnalytics",
          "action": "Get analytics of a transcript",
          "description": "Get analytics for a transcript"
        },
        {
          "name": "Get Audio URL",
          "value": "getTranscriptAudioUrl",
          "action": "Get audio URL of a transcript",
          "description": "Get the audio URL for a transcript"
        },
        {
          "name": "Get List",
          "value": "getTranscriptsList",
          "action": "Get a list of transcripts",
          "description": "Get a list of transcripts with optional filters"
        },
        {
          "name": "Get Summary",
          "value": "getTranscriptSummary",
          "action": "Get a summary of a transcript",
          "description": "Get a summary of a transcript"
        },
        {
          "name": "Get Video URL",
          "value": "getTranscriptVideoUrl",
          "action": "Get video URL of a transcript",
          "description": "Get the video URL for a transcript"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transcript"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getCurrentUser",
      "options": [
        {
          "name": "Get Current",
          "value": "getCurrentUser",
          "action": "Get current user",
          "description": "Get information about the current user"
        },
        {
          "name": "Get List",
          "value": "getUsers",
          "action": "Get a list of users",
          "description": "Get a list of users"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Outputs",
      "value": "getAIAppOutputs",
      "action": "Get outputs of an AI app",
      "description": "Retrieve AI app outputs"
    },
    {
      "name": "Continue Thread",
      "value": "continueThread",
      "action": "Continue an existing ask fred thread",
      "description": "Continue an existing conversation thread with a follow-up question"
    },
    {
      "name": "Create Thread",
      "value": "createThread",
      "action": "Create a new ask fred thread",
      "description": "Create a new conversation thread with a question about meetings"
    },
    {
      "name": "Delete Thread",
      "value": "deleteThread",
      "action": "Delete an ask fred thread",
      "description": "Delete a conversation thread and all its messages"
    },
    {
      "name": "Get Thread",
      "value": "getThread",
      "action": "Get an ask fred thread",
      "description": "Get a specific thread with all its messages"
    },
    {
      "name": "Get Threads",
      "value": "getThreads",
      "action": "Get ask fred threads",
      "description": "Get a list of all conversation threads"
    },
    {
      "name": "Upload",
      "value": "uploadAudio",
      "action": "Upload audio",
      "description": "Upload an audio file for transcription"
    },
    {
      "name": "Get",
      "value": "getTranscript",
      "action": "Get a transcript",
      "description": "Get transcript details"
    },
    {
      "name": "Get Analytics",
      "value": "getTranscriptAnalytics",
      "action": "Get analytics of a transcript",
      "description": "Get analytics for a transcript"
    },
    {
      "name": "Get Audio URL",
      "value": "getTranscriptAudioUrl",
      "action": "Get audio URL of a transcript",
      "description": "Get the audio URL for a transcript"
    },
    {
      "name": "Get List",
      "value": "getTranscriptsList",
      "action": "Get a list of transcripts",
      "description": "Get a list of transcripts with optional filters"
    },
    {
      "name": "Get Summary",
      "value": "getTranscriptSummary",
      "action": "Get a summary of a transcript",
      "description": "Get a summary of a transcript"
    },
    {
      "name": "Get Video URL",
      "value": "getTranscriptVideoUrl",
      "action": "Get video URL of a transcript",
      "description": "Get the video URL for a transcript"
    },
    {
      "name": "Get Current",
      "value": "getCurrentUser",
      "action": "Get current user",
      "description": "Get information about the current user"
    },
    {
      "name": "Get List",
      "value": "getUsers",
      "action": "Get a list of users",
      "description": "Get a list of users"
    }
  ]

npm_readme:
  # n8n-nodes-fireflies

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

  Fireflies is an AI meeting assistant that automatically records, transcribes, and analyzes your meetings. It integrates with popular video conferencing platforms to help teams capture and search through important meeting content.

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

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

  ## Installation

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

  ## Operations

  The **Fireflies** node supports 10 resources and 32 operations via the [Fireflies.ai API](https://docs.fireflies.ai).

  ### AI App

  - **Get AI App Outputs** — retrieve results from AI apps installed in the workspace; optional filters: `appId`, `transcriptId`, `skip`, `limit`

  ### AskFred

  AskFred is Fireflies' AI assistant for querying your meetings in natural language.

  - **Get Threads** — list all AskFred conversation threads; optional filter: `transcriptId`
  - **Get Thread** — get a specific thread with all its messages
  - **Create Thread** — start a new conversation; supports meeting filters (`dateRange`, `participants`, `organizers`, `channels`, `transcriptIds`) and response options (`language`, `format`)
  - **Continue Thread** — add a follow-up question to an existing thread
  - **Delete Thread** — remove a thread and all its messages

  ### Audio

  - **Upload Audio** — upload an audio file for transcription; optional: `webhook`, `customLanguage`, `saveVideo`, `bypass_size_check`, `download_auth` (bearer/basic), `attendees`, `client_reference_id`

  ### Bite

  Bites are short video or audio clips created from a transcript.

  - **Get List** — list bite clips; optional filters: `mine`, `transcriptId`, `myTeam`, `limit`, `skip`
  - **Get** — get a specific bite by ID
  - **Create** — create a bite from a transcript; requires `transcriptId`, `startTime`, `endTime`; optional: `name`, `mediaType`, `privacies`

  ### Channel

  - **Get List** — list all channels in the workspace
  - **Get** — get a specific channel by ID

  ### Contact

  - **Get List** — list all contacts in the workspace

  ### Meeting

  - **Get Active Meetings** — list currently active/live meetings
  - **Add to Live Meeting** — add the Fireflies bot to an active meeting; requires `meetingLink`; optional: `title`, `meetingPassword`, `duration`, `language`

  ### Team Analytics

  - **Get Team Analytics** — get analytics for the entire team; requires admin privileges; optional: `startTime`, `endTime` (ISO date strings)

  ### Transcript

  - **Get** — get the full transcript by ID
  - **Get List** — list transcripts with optional filters: `limit`, `skip`, `title`, `fromDate`, `toDate`, `hostEmail`, `organizerEmail`, `participantEmail`, `userId`, `mine`, `keyword`, `scope`, `organizers`, `participants`, `channelId`
  - **Get Summary** — get the AI-generated summary for a transcript
  - **Get Analytics** — get analytics (sentiment, topics, engagement) for a transcript
  - **Get Audio URL** — get the audio download URL for a transcript
  - **Get Video URL** — get the video download URL for a transcript
  - **Delete** — permanently delete a transcript
  - **Share** — share a meeting with email addresses; optional: `expiresAt`
  - **Revoke Shared Access** — revoke shared access from specified email addresses
  - **Update Title** — update the meeting title
  - **Update Privacy** — change the privacy setting (`link` / `owner` / `participants` / `teammates` / `teammatesandparticipants`)
  - **Update Channel** — move a meeting to a different channel

  ### User

  - **Get Current User** — get the profile of the authenticated user
  - **Get List** — list all users in the workspace
  - **Get Groups** — list user groups; optional filter: `mine`
  - **Set Role** — change a user's role (`admin` / `user`); requires admin privileges

  ---

  ## Usage

  ### Fetching and Chaining Transcripts

  The **Get List** operation under Transcript retrieves a paginated list of meetings based on optional filters:

  - `hostEmail`, `organizerEmail`, `participantEmail`
  - `title`, `userId`, `mine`
  - `fromDate` / `toDate`
  - `keyword`, `scope`
  - `organizers`, `participants` (comma-separated)
  - `channelId`

  This is often the first step in a workflow. Iterate over the returned transcript IDs and pass them into:

  - **Get** — fetch the full transcript content
  - **Get Summary** — retrieve [summary](https://docs.fireflies.ai/schema/summary) and key takeaways
  - **Get Analytics** — access [analytics](https://docs.fireflies.ai/schema/analytics) like sentiment, topic extraction, and more

  These operations chain naturally for reporting, insights, or downstream automation.

  📘 For a full reference of transcript fields and response structure, see the [Fireflies Transcript Schema](https://docs.fireflies.ai/schema/transcript).

  ### Working with Bites

  Bites are short clips cut from a transcript. Use **Create** to clip a specific time range from a meeting by providing `transcriptId`, `startTime`, and `endTime`. You can set a `name`, choose `mediaType` (audio or video), and control visibility with `privacies`.

  Use **Get List** to browse existing bites, optionally filtering to your own clips (`mine`) or your team's (`myTeam`).

  ### Live Meetings

  Use **Get Active Meetings** to see which meetings are currently in progress. Once you have a meeting link, **Add to Live Meeting** sends the Fireflies bot to join and record it. You can pass an optional `title`, `meetingPassword`, expected `duration`, and transcription `language`.

  ### Team Analytics

  **Get Team Analytics** returns workspace-wide analytics and requires admin privileges. Pass `startTime` and `endTime` as ISO date strings to scope the report to a specific period.

  ## Credentials

  To use the Fireflies node, you need to authenticate with your Fireflies API key.

  1. Log in to your [Fireflies.ai](https://fireflies.ai) account
  2. Go to Settings > Developer Settings
  3. Generate or copy your existing API key
  4. Use this API key in your n8n credentials for the Fireflies node

  The node uses API Key authentication to securely connect to the Fireflies.ai API.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Fireflies.ai API documentation](https://docs.fireflies.ai)

  ## Version history

  ### 2.2.0

  - ✨ **New Resources**: Meeting, Channel, Bite, Contact, Team Analytics
  - 🆕 **New Operations**:
    - **Transcript**: `Delete`, `Share`, `Revoke Shared Access`, `Update Title`, `Update Privacy`, `Update Channel`
    - **User**: `Get Groups`, `Set Role`
    - **Meeting**: `Get Active Meetings`, `Add to Live Meeting`
    - **Channel**: `Get`, `Get List`
    - **Bite**: `Get`, `Get List`, `Create`
    - **Contact**: `Get List`
    - **Team Analytics**: `Get Team Analytics` (requires admin privileges)
  - 🔍 **Extended Filters**: `Get Transcripts List` now supports filtering by keyword, scope, organizers, participants, and channel ID
  - 🔧 **Audio Enhancements**: `Upload Audio` now supports `bypass_size_check` and `download_auth` (bearer/basic) for authenticated downloads

  ### 2.1.0

  - ✨ **New Resource**: Added AskFred resource for AI-powered meeting Q&A
  - 🆕 **New Operations**:
    - `Get Threads`: List all AskFred conversation threads
    - `Get Thread`: Retrieve a specific thread with all messages
    - `Create Thread`: Start a new conversation with AskFred
    - `Continue Thread`: Add follow-up questions to existing threads
    - `Delete Thread`: Remove threads and their messages
  - 🔍 **Meeting Filters**: Create Thread supports filtering by date range, participants, organizers, channels, and transcript IDs
  - 🌐 **Response Options**: Configurable response language and format mode (markdown/plaintext)

  ### 2.0.0

  - ✨ **New Operations**: Added `GetTranscriptVideoUrl` and `GetTranscriptAudioUrl` operations for direct media access
  - 🔧 **Enhanced Error Handling**: Comprehensive GraphQL error detection with detailed error codes and correlation IDs
  - 🏗️ **Architecture Improvements**: Implemented generic error handling system for consistent error responses across all operations
  - 📚 **Code Quality**: Refactored codebase for better maintainability and reduced duplication
  - ⚠️ **Breaking Changes**: Removed `audio_url` and `video_url` from `GetTranscript` operation due to GraphQL API's partial data response behavior

  ### 1.0.7

  - Fixed nodeParameter handling for all operations

  ### 1.0.6

  - Removed unsupported field from getAiAppOutput operation

  ### 1.0.5

  - Fixes bug in handling input data

  ### 1.0.4

  - Major refactor to separate code into resources and operations

  ### 1.0.3

  - Bump version due to inconsistent build

  ### 1.0.2

  - Refactored Fireflies Node implementation
  - Replaced axios with http helper
  - Added test for credentials

  ### 1.0.1

  - Fixed bugs in array responses

  ### 1.0.0

  - Added operations Get AI App Outputs, Get Meeting Analytics, Get Meeting Summary, Get Transcript, Get Transcripts List, Get Users, and Upload Audio
  - Initial release of the Fireflies.ai node for n8n

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation workflows to interact with the Fireflies.ai API for recording, transcribing, and analyzing meetings from video conferencing platforms.","capabilities":["Retrieve AI app outputs and transcripts with filtering","Query meetings using AskFred natural language assistant","Upload audio files for transcription","Create and manage bite clips from transcripts","List and manage meeting channels","View and manage workspace contacts","Join and monitor live meetings","Access team-wide analytics (admin only)","Retrieve transcript summaries and detailed analytics","Download audio and video URLs from transcripts"],"authentication":"API Key required","commonUseCases":["Automated meeting summarization and reporting","Extracting action items from meeting transcripts","Creating bite-sized clips from long meetings","Monitoring active meetings in real-time","Generating team analytics and sentiment reports"],"limitations":["Team Analytics and user role management require admin privileges","Some operations like transcript deletion are permanent","Live meeting joining requires a valid meeting link"],"relatedNodes":["HTTP Request","Code","Split In Batches","Wait Until"]}


node_type: n8n-nodes-businessmap.businessmap
package_name: n8n-nodes-businessmap
display_name: Businessmap
description: Read, write, update and delete data from Businessmap
category: Community
development_style: declarative
version: 1.0.5
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: businessmap
author_github_url: https://github.com/kanbanize/
npm_package_name: n8n-nodes-businessmap
npm_version: 1.0.5
community_fetched_at: 2026-03-25T21:19:40.988Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-businessmap

  This is the official n8n community node working with the [Businessmap API](https://demo.businessmap.io/openapi/). 

  **Businessmap** is the most flexible software platform for outcomes-driven enterprise agility. The unmatched functionality consolidates multiple tools into one, enabling affordable deployment at scale, visibility across all projects/portfolios, and alignment on goals, to deliver quality work faster. 


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

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

  ## Installation

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

  ## Operations

  ### Supported Triggers
  The **Businessmap n8n community node** supports the following triggers:
  * `All Events`
  * `Card Created`
  * `Card Details Changed`
  * `Card Discarded`
  * `Card Restored`
  * `Card Moved`
  * `Card Archived`
  * `Card Is Unarchived`
  * `Comment Created`
  * `Comment Updated`
  * `Comment Deleted`
  * `Subtask Created`
  * `Subtask Updated`
  * `Subtask Deleted`
  * `Board Renamed`
  * `Board Archived`
  * `Board Unarchived`
  * `Board Deleted`
  * `Board Structure Changed`

  ### Supported Actions
  The **Businessmap n8n community node** supports the following actions:
  * `Create Card`: Create a card in a board of your choice. Set card details including custom fields, stickers and tags.
  * `Update Card`: Update the properties of a card (Title, Description, Priority, Size, Deadline, etc.).
  * `Move Card`: Move a card to a new column, lane or board.
  * `Get Card by ID`: Get the details of a card by its internal ID.
  * `Get Card by Custom Card ID`: Find card by custom card ID. If multiple cards are found, all will be returned. Use "Board" parameter to filter search by boards.
  * `Get All Cards Per Board`: Get all cards from a selected board. The response contains up to 200 cards. To retrieve more than 200 cards, please use pagination.
  * `Link Card`: Link a card to an existing card.
  * `Unlink Card`: Remove a link between two cards.
  * `Set Custom Fields`: Sets values of custom fields.
  * `Block Card`: Block a card.
  * `Unblock Card`: Unblock a card.
  * `Archive Card`: Add card to archive.
  * `Unarchive Card`: Extract card from archive.
  * `Discard Card`: Discard a card.
  * `Restore Card`: Restore a previously discarded card.
  * `Add Comment`: Add a comment to a card.
  * `Create Subtask`: Create a new subtask of a card.
  * `Log Time`: Log time to a card.
  * `Upload Attachment`: Upload an attachment to a card.
  * `Download Attachment`: Download an attachment from a card.
  * `Get Card Attachments`: Get a list with all attachments for a specified card.
  * `Create Workspace`: Create a workspace.
  * `Update Workspace`: Update a workspace.
  * `Get Workspace`: Get a workspace.
  * `Get All Workspaces`: Get a list with all workspaces in the account.
  * `Create Board`: Create a board.
  * `Update Board`: Update a board.
  * `Get Board`: Get a board.
  * `Get All Boards`: Get a list with all boards.
  * `Get Board Structure`: Get board structure which includes all workflows, lanes and columns.
  * `Create Tag`: Create a tag.
  * `Update Tag`: Update a tag.
  * `Delete Tag`: Delete a tag.
  * `Get Tag`: Get a tag.
  * `Get All Tags`: Get a list with all tags.
  * `Assign Tag`: Assign a tag to a board.
  * `Create Sticker`: Create a sticker.
  * `Update Sticker`: Update a sticker.
  * `Delete Sticker`: Delete a sticker.
  * `Get Sticker`: Get a sticker.
  * `Get All Stickers`: Get a list with all stickers.
  * `Assign Sticker`: Assign a sticker to a board.


  ## Credentials

  * To use this **n8n community node**, you'll need a **Businessmap** account and a user with permissions to access the API. If you don’t have an account yet, [sign up here](https://businessmap.io/sign-up) to get started.

  To authenticate with the Businessmap API, you'll need to provide your domain name and API key when setting up your credentials. Follow the instructions provided on the [Businessmap API page](https://businessmap.io/api) to obtain your API key.

  ## Compatibility

  Requires n8n version 1.0.0 or later
  Requires Node.js 20.15.0 or later

  ## Usage

  * Visit our [Knowledge Base](https://knowledgebase.businessmap.io/hc/en-us) to find answers to all your questions regarding Businessmap.
  * Contact our [customer support](https://businessmap.io/customer-support) with any specific request.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/builtin/app-nodes/)
  * [Create Businessmap Account](https://businessmap.io/sign-up)
  * [Knowledge Base](https://knowledgebase.businessmap.io/hc/en-us)
  * [Businessmap API documentation](https://demo.businessmap.io/openapi/#/)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation workflows to interact with the Businessmap API, allowing users to read, write, update, and delete data related to cards, boards, workspaces, tags, stickers, and comments.","capabilities":["Create, update, and delete cards with custom fields, stickers, and tags","Move, archive, discard, restore, and block/unblock cards","Add, update, and delete comments and subtasks","Log time and upload/download attachments to cards","Link and unlink cards","Create, update, and manage workspaces and boards","Manage tags and stickers (create, update, delete, assign)","Get cards by ID, custom ID, or all cards per board (with pagination support)","Retrieve board structures, workflows, lanes, and columns"],"authentication":"API key required (domain name and API key)","commonUseCases":["Automating project management tasks within Businessmap","Syncing card data between Businessmap and other tools","Creating boards and workspaces programmatically","Managing card attachments and comments via automation","Tracking time and linking related tasks"],"limitations":["Requires a Businessmap account with appropriate API permissions","Get All Cards Per Board is limited to 200 cards per request (requires pagination for more)","Requires n8n version 1.0.0 or later","Requires Node.js 20.15.0 or later"],"relatedNodes":["n8n-nodes-core.httpRequest","n8n-nodes-core.code"]}


node_type: @drwally/n8n-nodes-integration.drwally
package_name: @drwally/n8n-nodes-integration
display_name: DrWally
description: DrWally send message node
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: drwally
author_github_url: https://github.com/sinova-dev/drwally-n8n-node.git
npm_package_name: @drwally/n8n-nodes-integration
npm_version: 1.0.6
community_fetched_at: 2026-03-25T21:19:40.988Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Message",
          "value": "message"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendPrivate",
      "options": [
        {
          "name": "Send Private Message",
          "value": "sendPrivate",
          "action": "Send a private message",
          "description": "Send a private message"
        },
        {
          "name": "Send Group Message",
          "value": "sendGroup",
          "action": "Send a group message",
          "description": "Send a group message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send Private Message",
      "value": "sendPrivate",
      "action": "Send a private message",
      "description": "Send a private message"
    },
    {
      "name": "Send Group Message",
      "value": "sendGroup",
      "action": "Send a group message",
      "description": "Send a group message"
    }
  ]

npm_readme:
  # n8n-nodes-DrWally

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

  DrWally API is service that allows users automate whatsapp messaging for business purposes.

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

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

  ## Installation

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

  ## Operations

  1. Send private message - send message to a single user
  2. Send group message - send message to a group

  ## Credentials

  For sending messages using DrWally node, you need to have account on [DrWally website](https://drwallyai.com/)

  1. Create account.
  2. Log in.
  3. In sidebar select WhatsApp for Business
  4. Connect your whatsapp account to the app
  5. Select Webhooks for WhatsApp for Business on sidebar
  6. Generate webhook for selected phone number
  7. Use Webhook URL and Secret Key, to create credentials in n8n

  ## Compatibility

  Minimum n8n version - 2.1.5

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [DrWally API](https://api.drwallyai.com/api-public)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of WhatsApp messaging for business purposes by integrating with the DrWally API to send messages to individual users or groups.","capabilities":["Send private messages to a single WhatsApp user","Send group messages to multiple WhatsApp users","Automate WhatsApp communication workflows"],"authentication":"Webhook URL and Secret Key obtained from DrWally's WhatsApp for Business webhook settings","commonUseCases":["Automated customer support notifications","Broadcasting promotional messages to customer groups","Order status updates via WhatsApp","Appointment reminders"],"limitations":["Requires a separate DrWally account and WhatsApp for Business connection","Minimum n8n version 2.1.5 required","Limited to business messaging purposes only"],"relatedNodes":["Webhook node","HTTP Request node","WhatsApp nodes"]}


node_type: n8n-nodes-evomi.evomi
package_name: n8n-nodes-evomi
display_name: Evomi
description: Scrape web pages using the Evomi Scraper API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: evomi
author_github_url: https://github.com/evomi/
npm_package_name: n8n-nodes-evomi
npm_version: 1.0.2
community_fetched_at: 2026-03-25T21:19:40.989Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "webPage",
      "options": [
        {
          "name": "Web Page",
          "value": "webPage"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scrape",
      "options": [
        {
          "name": "Scrape",
          "value": "scrape",
          "action": "Scrape a web page",
          "description": "Scrape content from a web page"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webPage"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Scrape",
      "value": "scrape",
      "action": "Scrape a web page",
      "description": "Scrape content from a web page"
    }
  ]

npm_readme:
  # Evomi n8n Node

  This repository provides an n8n community node for **Evomi's Scraper API**, a powerful web scraping tool with intelligent mode detection, automatic CAPTCHA solving, and residential proxy support.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform that lets you connect apps, APIs, and services to build automated workflows.

  ## Features

  - **Intelligent Auto Mode**: Automatically detects whether to use fast HTTP requests or full browser rendering
  - **Three Scraping Modes**: Choose between `auto`, `request`, or `browser` modes
  - **Multiple Output Formats**: Get results as JSON, Markdown, or Screenshot
  - **AI Tool Compatible**: Use as an AI agent tool for intelligent web scraping
  - **Automatic CAPTCHA Solving**: Built-in CAPTCHA handling with browser mode
  - **Geo-Targeting**: Route requests through proxies in 195+ countries
  - **Robust Error Handling**: Comprehensive validation with helpful error messages

  ---

  ## Prerequisites

  To use this node, you need:

  1. **An Evomi account** - Sign up at [evomi.com](https://evomi.com)
  2. **Active Scraper API subscription or Pay-As-You-Go credits** - Required to make API requests

  > **🎁 Free Trial Available!** New users can get started with a free trial at [my.evomi.com/scraper-api](https://my.evomi.com/scraper-api).

  ---

  ## Installation

  ### From n8n Community Nodes

  1. Open your n8n instance
  2. Go to **Settings** → **Community Nodes**
  3. Select **Install**
  4. Enter `n8n-nodes-evomi` and confirm

  ### Manual Installation

  ```bash
  npm install n8n-nodes-evomi
  ```

  ---

  ## Getting Started

  ### Step 1: Get Your API Key

  1. Log in to your [Evomi Dashboard](https://my.evomi.com)
  2. Navigate to **Products** → **Scraper API** → **[Playground](https://my.evomi.com/my/products/scraper-api-universal/playground)**
  3. Your API key is displayed in the top-right section of the dashboard

  <img src="images/evomi_dashboard.png" width="600" alt="Evomi Dashboard - API Key Location">

  Copy the API key from the highlighted field (click the copy icon next to it).

  ### Step 2: Add the Evomi Node to Your Workflow

  1. In your n8n workflow editor, click the **+** button to add a new node

  <img src="images/n8n_plus_node.png" width="500" alt="Click the + button">

  2. Search for **"Evomi"** in the node selector

  <img src="images/n8n_search_evomi_node.png" width="400" alt="Search for Evomi">

  3. Click on the **Evomi** node to add it to your workflow

  ### Step 3: Configure Your Credentials

  1. In the Evomi node panel, click on **"Select Credential"** → **"+ Create new credential"**

  <img src="images/n8n_create_new_credential.png" width="400" alt="Create new credential">

  2. Enter your API key from the Evomi dashboard and click **Save**

  <img src="images/n8n_new_credential_enter_apikey.png" width="500" alt="Enter API Key">

  3. You should see **"Connection tested successfully"** - your credentials are now saved!

  <img src="images/n8n_crediential_saved_successfully.png" width="500" alt="Credential saved successfully">

  ### Step 4: Configure and Execute

  1. Enter the URL you want to scrape
  2. Choose your preferred mode and output format
  3. Click **Execute step** to run the scraper!

  <img src="images/n8n_node_success_result.png" width="700" alt="Successful scrape result">

  ---

  ## Node Parameters

  ### URL (Required)

  The web page URL to scrape. Must include `http://` or `https://`.

  ```
  https://example.com
  https://news.ycombinator.com
  ```

  ### Mode

  Choose how the page should be fetched:

  | Mode | Description | Best For | JavaScript |
  |------|-------------|----------|------------|
  | **Auto** (Default) | Automatically detects the best approach. Tries HTTP first, upgrades to browser if needed. | Most use cases | Auto-detected |
  | **Request** | Fast HTTP request without browser rendering. | Static sites, blogs, news, APIs | No |
  | **Browser** | Full browser with JavaScript execution. | SPAs, React/Vue/Angular apps, dynamic content | Yes |

  ### Output

  Choose the format for the scraped content:

  | Output | Description | Use Case |
  |--------|-------------|----------|
  | **JSON** (Default) | Structured JSON with metadata. Toggle "Include Content" to get the full HTML. | When you need metadata (title, status, etc.) |
  | **Markdown** | Clean, readable text format. | AI processing, content analysis, LLM input |
  | **Screenshot** | Full-page PNG image. Automatically enables Browser mode. | Visual verification, archiving, thumbnails |

  ### Include Content (JSON only)

  When using JSON output, toggle this to include the full HTML content in the response. Disable to save bandwidth when you only need metadata.

  - **Default**: Off
  - **When enabled**: Response includes `content` field with full HTML

  ### Wait Seconds (Auto & Browser modes)

  Seconds to wait after page load before capturing content. Useful for pages that load content dynamically via JavaScript.

  - **Default**: 5 seconds
  - **Range**: 0-30 seconds
  - **Tip**: Increase for slow-loading pages, decrease for fast static sites

  ### Proxy Country

  Route your request through a proxy in a specific country using ISO 3166-1 alpha-2 codes.

  - **Default**: US
  - **Examples**: `US`, `CA`, `DE`, `GB`, `JP`, `AU`, `FR`, `BR`

  **Common Country Codes:**
  | Code | Country |
  |------|---------|
  | US | United States |
  | CA | Canada |
  | GB | United Kingdom |
  | DE | Germany |
  | FR | France |
  | JP | Japan |
  | AU | Australia |
  | BR | Brazil |

  ---

  ## Usage Examples

  ### As a Standalone Node

  **Basic scraping:**
  1. Set URL: `https://example.com`
  2. Mode: `Auto`
  3. Output: `JSON`
  4. Execute

  **Get markdown for AI processing:**
  1. Set URL: `https://blog.example.com/article`
  2. Mode: `Auto`
  3. Output: `Markdown`
  4. Execute → Feed result to AI node

  **Take a screenshot:**
  1. Set URL: `https://dashboard.example.com`
  2. Mode: `Browser` (auto-selected)
  3. Output: `Screenshot`
  4. Execute

  **Geo-targeted scraping:**
  1. Set URL: `https://amazon.de`
  2. Proxy Country: `DE`
  3. Execute → Get German localized content

  ### As an AI Agent Tool

  Connect the Evomi node to an AI Agent node as a tool. The AI can scrape websites based on natural language prompts.

  **Example Prompts:**
  - "Scrape https://news.ycombinator.com and summarize the top 5 stories"
  - "Get the content from https://example.com/pricing and extract the pricing tiers"
  - "Take a screenshot of https://competitor.com/landing-page"

  ---

  ## Response Formats

  ### JSON Output

  ```json
  {
    "success": true,
    "url": "https://example.com",
    "domain": "example.com",
    "title": "Example Domain",
    "status_code": 200,
    "credits_used": 2.0,
    "credits_remaining": 98.0,
    "mode_used": "auto (request)",
    "content": "<html>...</html>"
  }
  ```

  ### Markdown Output

  Returns clean, formatted text:

  ```markdown
  # Example Domain

  This domain is for use in illustrative examples in documents...
  ```

  ### Screenshot Output

  Returns binary PNG image data that can be:
  - Saved to file
  - Uploaded to cloud storage
  - Processed by image nodes

  ---

  ## Error Handling

  The node provides comprehensive error handling with helpful messages:

  ### Input Validation Errors

  | Error | Cause | Solution |
  |-------|-------|----------|
  | "URL is required" | Empty URL field | Enter a valid URL |
  | "Invalid URL format" | Missing http:// or https:// | Add protocol to URL |
  | "Invalid proxy country code" | Not a 2-letter code | Use ISO 3166-1 alpha-2 (e.g., US, DE) |

  ### API Errors

  | Error | Cause | Solution |
  |-------|-------|----------|
  | "Invalid API key" | Wrong or expired key | Check credentials in n8n |
  | "Insufficient credits" | Account out of credits | [Add credits](https://my.evomi.com) or start a [free trial](https://my.evomi.com/scraper-api) |
  | "Rate limit exceeded" | Too many requests | Wait and retry, or upgrade plan |
  | "Failed to connect" | Network issue | Check internet connection |

  ### Continue on Fail

  Enable **"Continue on Fail"** in node settings to handle errors gracefully. Failed items will return:

  ```json
  {
    "success": false,
    "error": "Error message here",
    "itemIndex": 0
  }
  ```

  ---

  ## Credits & Pricing

  | Mode | Output | Approximate Cost |
  |------|--------|------------------|
  | Request | JSON/Markdown | 1-2 credits |
  | Auto (request used) | JSON/Markdown | 2 credits |
  | Auto (browser used) | JSON/Markdown | 6 credits |
  | Browser | JSON/Markdown | 5 credits |
  | Browser | Screenshot | 6 credits |

  Check your credit balance at [my.evomi.com](https://my.evomi.com).

  > **💡 Tip:** Start with a [free trial](https://my.evomi.com/scraper-api) to test the API before committing to a subscription.

  ---

  ## Development

  ### Setup

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

  # Install dependencies
  npm install

  # Build the project
  npm run build
  ```

  ### Testing Locally

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

  # 2. Link the package
  npm link

  # 3. Create n8n custom folder and link
  mkdir -p ~/.n8n/custom
  cd ~/.n8n/custom
  npm init -y
  npm link n8n-nodes-evomi

  # 4. Start n8n
  n8n start
  ```

  ### Linting

  ```bash
  npm run lint
  npm run lint:fix
  ```

  ---

  ## Compatibility

  - **Node.js**: >=20.15
  - **n8n**: Latest version recommended
  - **n8n Nodes API Version**: 1

  ---

  ## Resources

  - [Evomi Scraper API Documentation](https://docs.evomi.com/scraping-products-instructions/scraper-api/)
  - [Evomi Dashboard & API Playground](https://my.evomi.com/my/products/scraper-api-universal/playground)
  - [Start Free Trial](https://my.evomi.com/scraper-api)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

  ---

  ## Support

  | Issue Type | Where to Get Help |
  |------------|-------------------|
  | **This node** | [GitHub Issues](https://github.com/evomi/n8n-nodes-evomi/issues) |
  | **Evomi API** | [support@evomi.com](mailto:support@evomi.com) |
  | **n8n** | [n8n Community Forum](https://community.n8n.io/) |

  ---

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"A n8n community node that scrapes web pages using Evomi's Scraper API, supporting intelligent mode detection, CAPTCHA solving, and geo-targeting.","capabilities":["Web page scraping via HTTP or browser rendering","Automatic mode detection (HTTP vs browser)","Three scraping modes: auto, request, and browser","Multiple output formats: JSON, Markdown, and Screenshot","Built-in CAPTCHA solving in browser mode","Geo-targeting through proxies in 195+ countries","Comprehensive error handling and validation","AI tool compatibility for agent workflows","Dynamic content loading support with wait time configuration"],"authentication":"API key required (entered via credential manager)","commonUseCases":["Extracting structured data from websites for automation","Generating Markdown content for AI processing","Capturing website screenshots for archiving or verification","Scraping JavaScript-heavy single-page applications (SPAs)","Geographic targeting for localized content scraping"],"limitations":["Requires an active Evomi account and Scraper API subscription or credits","Free trial available but not unlimited","Browser mode automatically selected for screenshot output","Wait time limited to 0-30 seconds in Auto and Browser modes"],"relatedNodes":["n8n-nodes-base.webhook","n8n-nodes-base.httpRequest","n8n-nodes-base.code","n8n-nodes-base.webhookResponse"]}


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

updated_at: 2026-03-25 21:19:40
author_name: awork
author_github_url: https://github.com/awork-io/
npm_package_name: n8n-nodes-awork
npm_version: 0.1.61
community_fetched_at: 2026-03-25T21:19:40.990Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "project",
      "options": [
        {
          "name": "Company",
          "value": "company"
        },
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "Project",
          "value": "project"
        },
        {
          "name": "Project Task",
          "value": "projecttask"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get All Projects",
          "value": "getall",
          "action": "Get projects",
          "routing": {
            "send": {
              "paginate": true
            },
            "request": {
              "qs": {
                "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
                "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
              },
              "url": "=api/v1/projects",
              "method": "GET"
            },
            "operations": {}
          }
        },
        {
          "name": "Get Project by ID",
          "value": "get",
          "action": "Get project by id",
          "routing": {
            "request": {
              "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get All Project Statuses",
          "value": "getprojectstatuses",
          "action": "Get projects statuses",
          "routing": {
            "send": {
              "paginate": true
            },
            "request": {
              "qs": {
                "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
                "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
              },
              "url": "=api/v1/projectstatuses",
              "method": "GET"
            },
            "operations": {}
          }
        },
        {
          "name": "Create Project",
          "value": "post",
          "action": "Create a project",
          "routing": {
            "request": {
              "url": "=api/v1/projects",
              "body": {
                "name": "={{$parameter[\"projectName\"]}}",
                "dueDate": "={{$parameter[\"dueDate\"]}}",
                "companyId": "={{$parameter[\"companyId\"] || undefined}}",
                "startDate": "={{$parameter[\"startDate\"]}}",
                "description": "={{$parameter[\"projectDescription\"]}}",
                "projectTypeId": "={{$parameter[\"projectTypeId\"] || undefined}}",
                "projectStatusId": "={{$parameter[\"projectStatusId\"] || undefined}}",
                "projectTemplateId": "={{$parameter[\"projectTemplateId\"] || undefined}}"
              },
              "method": "POST"
            }
          },
          "description": "Create a project by sending project details"
        },
        {
          "name": "Get Task Statuses of Project",
          "value": "gettaskstatuses",
          "action": "Get task statuses of project by id",
          "routing": {
            "send": {
              "paginate": true
            },
            "request": {
              "qs": {
                "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
                "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
              },
              "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/taskstatuses",
              "method": "GET"
            },
            "operations": {}
          }
        },
        {
          "name": "Get Task Lists of Project",
          "value": "gettasklists",
          "action": "Get task lists of project by id",
          "routing": {
            "send": {
              "paginate": true
            },
            "request": {
              "qs": {
                "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
                "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
              },
              "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/tasklists",
              "method": "GET"
            },
            "operations": {}
          }
        },
        {
          "name": "Create Project Status",
          "value": "postprojectstatus",
          "action": "Create a project status",
          "routing": {
            "request": {
              "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/projectstatuses",
              "body": {
                "name": "={{$parameter[\"statusName\"]}}",
                "type": "={{$parameter[\"statusType\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Create a project status by sending project status details"
        },
        {
          "name": "Change Project Status",
          "value": "changeprojectstatus",
          "action": "Change the project status",
          "routing": {
            "request": {
              "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/changestatus",
              "body": {
                "projectStatusId": "={{$parameter[\"projectStatusId\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Changes the project status of a project"
        },
        {
          "name": "Create Task Status",
          "value": "posttaskstatus",
          "action": "Create a task status",
          "routing": {
            "request": {
              "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/taskstatuses",
              "body": {
                "icon": "={{$parameter[\"taskStatusIcon\"]}}",
                "name": "={{$parameter[\"statusName\"]}}",
                "type": "={{$parameter[\"statusType\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Create a task status by sending task status details"
        },
        {
          "name": "Create Task List",
          "value": "posttasklist",
          "action": "Create a task list",
          "routing": {
            "request": {
              "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/tasklists",
              "body": {
                "name": "={{$parameter[\"name\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Create a task list for the project"
        },
        {
          "name": "Get Comments",
          "value": "getcomments",
          "action": "Get comments of project",
          "routing": {
            "send": {
              "paginate": true
            },
            "request": {
              "qs": {
                "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
                "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
              },
              "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/comments",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get comments of a project by project ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get Tasks of Project",
          "value": "gettasksofproject",
          "action": "Get tasks of a project",
          "routing": {
            "send": {
              "paginate": true
            },
            "request": {
              "qs": {
                "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
                "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
              },
              "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/projecttasks",
              "method": "GET"
            },
            "operations": {}
          }
        },
        {
          "name": "Get Task by ID",
          "value": "get",
          "action": "Get task by id",
          "routing": {
            "request": {
              "url": "=api/v1/tasks/{{$parameter[\"taskId\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Create Task",
          "value": "post",
          "action": "Create a project task",
          "routing": {
            "request": {
              "url": "=api/v1/tasks",
              "body": {
                "name": "={{$parameter[\"taskName\"]}}",
                "dueOn": "={{$parameter[\"dueDate\"] || undefined}}",
                "baseType": "projecttask",
                "entityId": "={{$parameter[\"projectId\"]}}",
                "description": "={{$parameter[\"taskDescription\"] || undefined}}",
                "taskStatusId": "={{$parameter[\"taskStatusId\"] || undefined}}",
                "typeOfWorkId": "={{$parameter[\"typeOfWorkId\"] || undefined}}",
                "plannedDuration": "={{$parameter[\"plannedDuration\"] || undefined}}"
              },
              "method": "POST"
            }
          },
          "description": "Create a task in a project by sending task details"
        },
        {
          "name": "Set Custom Field",
          "value": "settaskcustomfield",
          "action": "Set a custom field",
          "routing": {
            "request": {
              "url": "=api/v1/tasks/{{$parameter[\"taskId\"]}}/setcustomfields",
              "body": [
                {
                  "textValue": "={{$parameter[\"textValue\"]}}",
                  "customFieldDefinitionId": "={{$parameter[\"customFieldDefinitionId\"]}}"
                }
              ],
              "method": "POST"
            }
          }
        },
        {
          "name": "Add Tag",
          "value": "addtag",
          "action": "Add tag",
          "routing": {
            "request": {
              "url": "=api/v1/tasks/{{$parameter[\"taskId\"]}}/addtags",
              "body": [
                {
                  "name": "={{$parameter[\"tagName\"]}}"
                }
              ],
              "method": "POST"
            }
          }
        },
        {
          "name": "Change Status",
          "value": "changestatus",
          "action": "Change status",
          "routing": {
            "request": {
              "url": "=api/v1/tasks/changestatuses",
              "body": [
                {
                  "taskId": "={{$parameter[\"taskId\"]}}",
                  "statusId": "={{$parameter[\"statusId\"]}}"
                }
              ],
              "method": "POST"
            }
          }
        },
        {
          "name": "Add Comment",
          "value": "comments",
          "action": "Add comment",
          "routing": {
            "request": {
              "url": "=api/v1/tasks/{{$parameter[\"taskId\"]}}/comments",
              "body": {
                "message": "={{$parameter[\"commentMessage\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Set Task Assignee",
          "value": "settaskassignee",
          "action": "Set a task assignee",
          "routing": {
            "request": {
              "url": "=api/v1/tasks/{{$parameter[\"taskId\"]}}/setassignees",
              "body": [
                "={{$parameter[\"userId\"]}}"
              ],
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Types of Work",
          "value": "gettypesofwork",
          "action": "Get types of work",
          "routing": {
            "send": {
              "paginate": true
            },
            "request": {
              "qs": {
                "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
                "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
              },
              "url": "=api/v1/typeofwork",
              "method": "GET"
            },
            "operations": {}
          }
        },
        {
          "name": "Get Task Lists of Project",
          "value": "gettasklistsofproject",
          "action": "Get task lists of a project",
          "routing": {
            "send": {
              "paginate": true
            },
            "request": {
              "qs": {
                "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
                "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
              },
              "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/tasklists",
              "method": "GET"
            },
            "operations": {}
          }
        },
        {
          "name": "Create Type of Work",
          "value": "posttypeofwork",
          "action": "Create a type of work",
          "routing": {
            "request": {
              "url": "=api/v1/typeofwork",
              "body": {
                "icon": "={{$parameter[\"icon\"]}}",
                "name": "={{$parameter[\"name\"]}}",
                "description": "={{$parameter[\"description\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Add Task to Task List",
          "value": "postaddtasktotasklist",
          "action": "Add a task to a task list",
          "routing": {
            "request": {
              "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/tasklists/{{$parameter[\"taskListId\"]}}/addtasks",
              "body": [
                {
                  "taskId": "={{$parameter[\"taskId\"]}}"
                }
              ],
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Comments",
          "value": "getcomments",
          "action": "Get comments of task",
          "routing": {
            "send": {
              "paginate": true
            },
            "request": {
              "qs": {
                "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
                "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
              },
              "url": "=api/v1/tasks/{{$parameter[\"taskId\"]}}/comments",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get comments of a task by task ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "projecttask"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get All Users",
          "value": "getall",
          "action": "Get users",
          "routing": {
            "send": {
              "paginate": true
            },
            "request": {
              "qs": {
                "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
                "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
              },
              "url": "=api/v1/users",
              "method": "GET"
            },
            "operations": {}
          }
        },
        {
          "name": "Get User by ID",
          "value": "get",
          "action": "Get user by id",
          "routing": {
            "request": {
              "url": "=api/v1/users/{{$parameter[\"userId\"]}}",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create Company",
          "value": "create",
          "action": "Create a company",
          "routing": {
            "request": {
              "url": "=api/v1/companies",
              "body": {
                "name": "={{$parameter[\"companyName\"]}}",
                "industry": "={{$parameter[\"companyIndustry\"] || undefined}}",
                "description": "={{$parameter[\"companyDescription\"] || undefined}}"
              },
              "method": "POST"
            }
          },
          "description": "Create a company by sending company details"
        },
        {
          "name": "Get All Companies",
          "value": "getall",
          "action": "Get companies",
          "routing": {
            "send": {
              "paginate": true
            },
            "request": {
              "qs": {
                "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
                "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
              },
              "url": "=api/v1/companies",
              "method": "GET"
            },
            "operations": {}
          }
        },
        {
          "name": "Get Company by ID",
          "value": "get",
          "action": "Get company by id",
          "routing": {
            "request": {
              "url": "=api/v1/companies/{{$parameter[\"companyId\"]}}",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "company"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getall",
      "options": [
        {
          "name": "Get All Documents",
          "value": "getall",
          "action": "Get all documents",
          "routing": {
            "send": {
              "paginate": true
            },
            "request": {
              "qs": {
                "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
                "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
              },
              "url": "=api/v1/documents",
              "method": "GET"
            },
            "operations": {}
          }
        },
        {
          "name": "Get Document by ID",
          "value": "get",
          "action": "Get document by id",
          "routing": {
            "request": {
              "url": "=api/v1/documents/{{$parameter[\"documentId\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Document Content",
          "value": "getcontent",
          "action": "Get document content",
          "routing": {
            "request": {
              "url": "=api/v1/documents/{{$parameter[\"documentId\"]}}/content",
              "method": "GET"
            }
          },
          "description": "Get the HTML content of a document"
        },
        {
          "name": "Get Documents of Document Space",
          "value": "getdocumentsofdocumentspace",
          "action": "Get documents of a document space",
          "routing": {
            "send": {
              "paginate": true
            },
            "request": {
              "qs": {
                "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
                "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
              },
              "url": "=api/v1/documentspaces/{{$parameter[\"documentSpaceId\"]}}/documents",
              "method": "GET"
            },
            "operations": {}
          }
        },
        {
          "name": "Get Documents of Project",
          "value": "getdocumentsofproject",
          "action": "Get documents of a project",
          "routing": {
            "send": {
              "paginate": true
            },
            "request": {
              "qs": {
                "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
                "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
              },
              "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/documents",
              "method": "GET"
            },
            "operations": {}
          }
        },
        {
          "name": "Create Document",
          "value": "create",
          "action": "Create a document",
          "routing": {
            "request": {
              "url": "=api/v1/documents",
              "body": {
                "name": "={{$parameter[\"documentName\"]}}",
                "emoji": "={{$parameter[\"emoji\"] || undefined}}",
                "content": "={{$parameter[\"documentContent\"]}}",
                "parentId": "={{$parameter[\"parentId\"] || undefined}}",
                "projectId": "={{$parameter[\"projectId\"] || undefined}}",
                "documentSpaceId": "={{$parameter[\"documentSpaceId\"] || undefined}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Delete Document",
          "value": "delete",
          "action": "Delete a document",
          "routing": {
            "request": {
              "url": "=api/v1/documents/{{$parameter[\"documentId\"]}}",
              "method": "DELETE"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get All Projects",
      "value": "getall",
      "action": "Get projects",
      "routing": {
        "send": {
          "paginate": true
        },
        "request": {
          "qs": {
            "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
            "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
          },
          "url": "=api/v1/projects",
          "method": "GET"
        },
        "operations": {}
      }
    },
    {
      "name": "Get Project by ID",
      "value": "get",
      "action": "Get project by id",
      "routing": {
        "request": {
          "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get All Project Statuses",
      "value": "getprojectstatuses",
      "action": "Get projects statuses",
      "routing": {
        "send": {
          "paginate": true
        },
        "request": {
          "qs": {
            "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
            "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
          },
          "url": "=api/v1/projectstatuses",
          "method": "GET"
        },
        "operations": {}
      }
    },
    {
      "name": "Create Project",
      "value": "post",
      "action": "Create a project",
      "routing": {
        "request": {
          "url": "=api/v1/projects",
          "body": {
            "name": "={{$parameter[\"projectName\"]}}",
            "dueDate": "={{$parameter[\"dueDate\"]}}",
            "companyId": "={{$parameter[\"companyId\"] || undefined}}",
            "startDate": "={{$parameter[\"startDate\"]}}",
            "description": "={{$parameter[\"projectDescription\"]}}",
            "projectTypeId": "={{$parameter[\"projectTypeId\"] || undefined}}",
            "projectStatusId": "={{$parameter[\"projectStatusId\"] || undefined}}",
            "projectTemplateId": "={{$parameter[\"projectTemplateId\"] || undefined}}"
          },
          "method": "POST"
        }
      },
      "description": "Create a project by sending project details"
    },
    {
      "name": "Get Task Statuses of Project",
      "value": "gettaskstatuses",
      "action": "Get task statuses of project by id",
      "routing": {
        "send": {
          "paginate": true
        },
        "request": {
          "qs": {
            "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
            "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
          },
          "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/taskstatuses",
          "method": "GET"
        },
        "operations": {}
      }
    },
    {
      "name": "Get Task Lists of Project",
      "value": "gettasklists",
      "action": "Get task lists of project by id",
      "routing": {
        "send": {
          "paginate": true
        },
        "request": {
          "qs": {
            "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
            "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
          },
          "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/tasklists",
          "method": "GET"
        },
        "operations": {}
      }
    },
    {
      "name": "Create Project Status",
      "value": "postprojectstatus",
      "action": "Create a project status",
      "routing": {
        "request": {
          "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/projectstatuses",
          "body": {
            "name": "={{$parameter[\"statusName\"]}}",
            "type": "={{$parameter[\"statusType\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Create a project status by sending project status details"
    },
    {
      "name": "Change Project Status",
      "value": "changeprojectstatus",
      "action": "Change the project status",
      "routing": {
        "request": {
          "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/changestatus",
          "body": {
            "projectStatusId": "={{$parameter[\"projectStatusId\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Changes the project status of a project"
    },
    {
      "name": "Create Task Status",
      "value": "posttaskstatus",
      "action": "Create a task status",
      "routing": {
        "request": {
          "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/taskstatuses",
          "body": {
            "icon": "={{$parameter[\"taskStatusIcon\"]}}",
            "name": "={{$parameter[\"statusName\"]}}",
            "type": "={{$parameter[\"statusType\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Create a task status by sending task status details"
    },
    {
      "name": "Create Task List",
      "value": "posttasklist",
      "action": "Create a task list",
      "routing": {
        "request": {
          "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/tasklists",
          "body": {
            "name": "={{$parameter[\"name\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Create a task list for the project"
    },
    {
      "name": "Get Comments",
      "value": "getcomments",
      "action": "Get comments of project",
      "routing": {
        "send": {
          "paginate": true
        },
        "request": {
          "qs": {
            "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
            "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
          },
          "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/comments",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get comments of a project by project ID"
    },
    {
      "name": "Get Tasks of Project",
      "value": "gettasksofproject",
      "action": "Get tasks of a project",
      "routing": {
        "send": {
          "paginate": true
        },
        "request": {
          "qs": {
            "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
            "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
          },
          "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/projecttasks",
          "method": "GET"
        },
        "operations": {}
      }
    },
    {
      "name": "Get Task by ID",
      "value": "get",
      "action": "Get task by id",
      "routing": {
        "request": {
          "url": "=api/v1/tasks/{{$parameter[\"taskId\"]}}",
          "method": "GET"
        }
      }
    },
    {
      "name": "Create Task",
      "value": "post",
      "action": "Create a project task",
      "routing": {
        "request": {
          "url": "=api/v1/tasks",
          "body": {
            "name": "={{$parameter[\"taskName\"]}}",
            "dueOn": "={{$parameter[\"dueDate\"] || undefined}}",
            "baseType": "projecttask",
            "entityId": "={{$parameter[\"projectId\"]}}",
            "description": "={{$parameter[\"taskDescription\"] || undefined}}",
            "taskStatusId": "={{$parameter[\"taskStatusId\"] || undefined}}",
            "typeOfWorkId": "={{$parameter[\"typeOfWorkId\"] || undefined}}",
            "plannedDuration": "={{$parameter[\"plannedDuration\"] || undefined}}"
          },
          "method": "POST"
        }
      },
      "description": "Create a task in a project by sending task details"
    },
    {
      "name": "Set Custom Field",
      "value": "settaskcustomfield",
      "action": "Set a custom field",
      "routing": {
        "request": {
          "url": "=api/v1/tasks/{{$parameter[\"taskId\"]}}/setcustomfields",
          "body": [
            {
              "textValue": "={{$parameter[\"textValue\"]}}",
              "customFieldDefinitionId": "={{$parameter[\"customFieldDefinitionId\"]}}"
            }
          ],
          "method": "POST"
        }
      }
    },
    {
      "name": "Add Tag",
      "value": "addtag",
      "action": "Add tag",
      "routing": {
        "request": {
          "url": "=api/v1/tasks/{{$parameter[\"taskId\"]}}/addtags",
          "body": [
            {
              "name": "={{$parameter[\"tagName\"]}}"
            }
          ],
          "method": "POST"
        }
      }
    },
    {
      "name": "Change Status",
      "value": "changestatus",
      "action": "Change status",
      "routing": {
        "request": {
          "url": "=api/v1/tasks/changestatuses",
          "body": [
            {
              "taskId": "={{$parameter[\"taskId\"]}}",
              "statusId": "={{$parameter[\"statusId\"]}}"
            }
          ],
          "method": "POST"
        }
      }
    },
    {
      "name": "Add Comment",
      "value": "comments",
      "action": "Add comment",
      "routing": {
        "request": {
          "url": "=api/v1/tasks/{{$parameter[\"taskId\"]}}/comments",
          "body": {
            "message": "={{$parameter[\"commentMessage\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Set Task Assignee",
      "value": "settaskassignee",
      "action": "Set a task assignee",
      "routing": {
        "request": {
          "url": "=api/v1/tasks/{{$parameter[\"taskId\"]}}/setassignees",
          "body": [
            "={{$parameter[\"userId\"]}}"
          ],
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Types of Work",
      "value": "gettypesofwork",
      "action": "Get types of work",
      "routing": {
        "send": {
          "paginate": true
        },
        "request": {
          "qs": {
            "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
            "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
          },
          "url": "=api/v1/typeofwork",
          "method": "GET"
        },
        "operations": {}
      }
    },
    {
      "name": "Get Task Lists of Project",
      "value": "gettasklistsofproject",
      "action": "Get task lists of a project",
      "routing": {
        "send": {
          "paginate": true
        },
        "request": {
          "qs": {
            "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
            "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
          },
          "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/tasklists",
          "method": "GET"
        },
        "operations": {}
      }
    },
    {
      "name": "Create Type of Work",
      "value": "posttypeofwork",
      "action": "Create a type of work",
      "routing": {
        "request": {
          "url": "=api/v1/typeofwork",
          "body": {
            "icon": "={{$parameter[\"icon\"]}}",
            "name": "={{$parameter[\"name\"]}}",
            "description": "={{$parameter[\"description\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Add Task to Task List",
      "value": "postaddtasktotasklist",
      "action": "Add a task to a task list",
      "routing": {
        "request": {
          "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/tasklists/{{$parameter[\"taskListId\"]}}/addtasks",
          "body": [
            {
              "taskId": "={{$parameter[\"taskId\"]}}"
            }
          ],
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Comments",
      "value": "getcomments",
      "action": "Get comments of task",
      "routing": {
        "send": {
          "paginate": true
        },
        "request": {
          "qs": {
            "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
            "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
          },
          "url": "=api/v1/tasks/{{$parameter[\"taskId\"]}}/comments",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get comments of a task by task ID"
    },
    {
      "name": "Get All Users",
      "value": "getall",
      "action": "Get users",
      "routing": {
        "send": {
          "paginate": true
        },
        "request": {
          "qs": {
            "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
            "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
          },
          "url": "=api/v1/users",
          "method": "GET"
        },
        "operations": {}
      }
    },
    {
      "name": "Get User by ID",
      "value": "get",
      "action": "Get user by id",
      "routing": {
        "request": {
          "url": "=api/v1/users/{{$parameter[\"userId\"]}}",
          "method": "GET"
        }
      }
    },
    {
      "name": "Create Company",
      "value": "create",
      "action": "Create a company",
      "routing": {
        "request": {
          "url": "=api/v1/companies",
          "body": {
            "name": "={{$parameter[\"companyName\"]}}",
            "industry": "={{$parameter[\"companyIndustry\"] || undefined}}",
            "description": "={{$parameter[\"companyDescription\"] || undefined}}"
          },
          "method": "POST"
        }
      },
      "description": "Create a company by sending company details"
    },
    {
      "name": "Get All Companies",
      "value": "getall",
      "action": "Get companies",
      "routing": {
        "send": {
          "paginate": true
        },
        "request": {
          "qs": {
            "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
            "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
          },
          "url": "=api/v1/companies",
          "method": "GET"
        },
        "operations": {}
      }
    },
    {
      "name": "Get Company by ID",
      "value": "get",
      "action": "Get company by id",
      "routing": {
        "request": {
          "url": "=api/v1/companies/{{$parameter[\"companyId\"]}}",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get All Documents",
      "value": "getall",
      "action": "Get all documents",
      "routing": {
        "send": {
          "paginate": true
        },
        "request": {
          "qs": {
            "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
            "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
          },
          "url": "=api/v1/documents",
          "method": "GET"
        },
        "operations": {}
      }
    },
    {
      "name": "Get Document by ID",
      "value": "get",
      "action": "Get document by id",
      "routing": {
        "request": {
          "url": "=api/v1/documents/{{$parameter[\"documentId\"]}}",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get Document Content",
      "value": "getcontent",
      "action": "Get document content",
      "routing": {
        "request": {
          "url": "=api/v1/documents/{{$parameter[\"documentId\"]}}/content",
          "method": "GET"
        }
      },
      "description": "Get the HTML content of a document"
    },
    {
      "name": "Get Documents of Document Space",
      "value": "getdocumentsofdocumentspace",
      "action": "Get documents of a document space",
      "routing": {
        "send": {
          "paginate": true
        },
        "request": {
          "qs": {
            "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
            "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
          },
          "url": "=api/v1/documentspaces/{{$parameter[\"documentSpaceId\"]}}/documents",
          "method": "GET"
        },
        "operations": {}
      }
    },
    {
      "name": "Get Documents of Project",
      "value": "getdocumentsofproject",
      "action": "Get documents of a project",
      "routing": {
        "send": {
          "paginate": true
        },
        "request": {
          "qs": {
            "orderBy": "={{$parameter[\"orderBy\"] || undefined}}",
            "filterBy": "={{$parameter[\"filterBy\"] || undefined}}"
          },
          "url": "=api/v1/projects/{{$parameter[\"projectId\"]}}/documents",
          "method": "GET"
        },
        "operations": {}
      }
    },
    {
      "name": "Create Document",
      "value": "create",
      "action": "Create a document",
      "routing": {
        "request": {
          "url": "=api/v1/documents",
          "body": {
            "name": "={{$parameter[\"documentName\"]}}",
            "emoji": "={{$parameter[\"emoji\"] || undefined}}",
            "content": "={{$parameter[\"documentContent\"]}}",
            "parentId": "={{$parameter[\"parentId\"] || undefined}}",
            "projectId": "={{$parameter[\"projectId\"] || undefined}}",
            "documentSpaceId": "={{$parameter[\"documentSpaceId\"] || undefined}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Delete Document",
      "value": "delete",
      "action": "Delete a document",
      "routing": {
        "request": {
          "url": "=api/v1/documents/{{$parameter[\"documentId\"]}}",
          "method": "DELETE"
        }
      }
    }
  ]

npm_readme:
  # n8n-nodes-awork

  This is an n8n community node that lets you automate workflows with [awork](https://www.awork.com/), a modern project management tool. It provides seamless integration between awork and n8n, allowing you to manage projects, tasks, and company/client data within your automation workflows.

  ## Installation

  ### n8n Cloud
  1. Select **+** on your canvas and type **awork**
  2. Find **awork** in the **More from the community** section
  3. Select **install**

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

  ### Self-Hosted Instance
  1. Navigate to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `n8n-nodes-awork` in **Enter npm package name**
  4. Select **Install**
  5. **Restart your n8n instance** after installation

  ## Authentication

  To use the awork node, you'll need API credentials from awork:

  1. **Create an awork account** at [awork.com](https://www.awork.com/) if you don't have one
  2. **Generate an API key** by following the instructions in the [awork API Authentication documentation](https://developers.awork.com/authentication#api-key)
  3. **In n8n**, add new credentials:
     - Select **"awork API"** from the credentials list
     - Enter your API key
     - Test the connection to ensure it's working

  ## Available Operations

  The awork node provide comprehensive access to awork's project management features, including:

  ### Projects
  - **Create Project**: Start new projects with custom settings
  - **Get Project**: Retrieve project information
  - **List Projects**: Get all projects with filtering options
  - **Change Project Status**: Changes the status of a project

  ### Tasks
  - **Create Task**: Add new tasks to projects
  - **Get Task**: Retrieve specific task information
  - **List Tasks**: Get tasks with advanced filtering
  - **Change Task Status**: Changes the status of a task
  - **Set Task Custom Fields**: Sets the value of a task custom field
  - **Add Task Comment**: Adds a comment to a task

  ### Companies
  - **Create Company**: Add new companies to your workspace
  - **Get Company**: Retrieve company details
  - **List Companies**: Get all companies with filtering

  ### Users
  - **List Users**: Get all users with filtering

  ### Other
  - **HTTP**: With a generic HTTP Request, any awork API endpoint can be used

  For detailed information about each operation and its parameters, visit the relevant sections in the [awork Developer Documentation](https://developers.awork.com/):
  - [Projects](https://developers.awork.com/projects)
  - [Tasks](https://developers.awork.com/tasks)
  - [Companies](https://developers.awork.com/companies)
  - [Users](https://developers.awork.com/users)

  ## Example Workflows

  Here are some common use cases for the awork nodes:

  1. **Automated Project Creation**: Create projects in awork when new deals are won in your CRM
  2. **Task Synchronization**: Sync tasks between awork and other project management tools
  3. **Company Management**: Automatically create companies in awork from form submissions
  4. **Status Updates**: Update task statuses based on external triggers
  5. **Reporting**: Extract project and task data for custom reporting dashboards

  ## Resources

  - **awork Developer Documentation**: [developers.awork.com](https://developers.awork.com/)
  - **awork Developer Forum**: [community.awork.com/c/developer-forum/17](https://community.awork.com/c/developer-forum/17)
  - **n8n Documentation**: [docs.n8n.io](https://docs.n8n.io/)
  - **n8n Community**: [community.n8n.io](https://community.n8n.io/)

  ## Support

  If you encounter any issues or have questions:

  - Check the [awork Developer Forum](https://community.awork.com/c/developer-forum/17) for API-related questions
  - Visit the [n8n Community Forum](https://community.n8n.io/) for n8n-specific issues

  ## Local Development

  For contributors and developers who want to test changes locally:

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

  2. Install dependencies and build:
     ```bash
     npm install
     npm run build
     ```

  3. Link to your local n8n installation:
     ```bash
     npm link
     cd ~/.n8n/custom
     npm link n8n-nodes-awork
     ```

  4. Start n8n:
     ```bash
     n8n start
     ```

  ## License

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

ai_documentation_summary:
  {"purpose":"This n8n community node automates workflows with awork, a modern project management tool, enabling management of projects, tasks, companies, and users within n8n workflows.","capabilities":["Create projects with custom settings","Retrieve and list projects with filtering","Change project status","Create tasks and set custom fields","Retrieve and list tasks with advanced filtering","Change task status","Add comments to tasks","Create and retrieve company details","List companies with filtering","List users with filtering"],"authentication":"API key required","commonUseCases":["Automated project creation from CRM deals","Task synchronization between project management tools","Automatic company creation from form submissions","Status updates based on external triggers","Extracting project and task data for reporting dashboards"],"limitations":["Community node (may have fewer updates or support compared to official nodes)","Requires manual API key setup in n8n credentials"],"relatedNodes":["HTTP Request","Generic HTTP Request"]}


node_type: @port-labs/n8n-nodes-portio-experimental.portApiAi
package_name: @port-labs/n8n-nodes-portio-experimental
display_name: Port API AI
description: Invoke Port AI agents, call general AI interactions, and fetch invocation results
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: roiport
author_github_url: https://github.com/port-labs/port-n8n-nodes.git
npm_package_name: @port-labs/n8n-nodes-portio-experimental
npm_version: 1.0.0
community_fetched_at: 2026-03-25T21:19:40.991Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "agent",
      "options": [
        {
          "name": "Agent",
          "value": "agent",
          "description": "Interact with Port AI agents"
        },
        {
          "name": "AI Interaction",
          "value": "aiInteraction",
          "description": "General-purpose AI interactions and invocation results"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "invokeAgent",
      "options": [
        {
          "name": "Invoke",
          "value": "invokeAgent",
          "action": "Invoke an agent",
          "description": "Invoke a specific agent"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "agent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generalInvoke",
      "options": [
        {
          "name": "Invoke",
          "value": "generalInvoke",
          "action": "Invoke AI interaction",
          "description": "General-purpose AI interaction"
        },
        {
          "name": "Get Result",
          "value": "getInvocation",
          "action": "Get invocation result",
          "description": "Get invocation result"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "aiInteraction"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Invoke",
      "value": "invokeAgent",
      "action": "Invoke an agent",
      "description": "Invoke a specific agent"
    },
    {
      "name": "Invoke",
      "value": "generalInvoke",
      "action": "Invoke AI interaction",
      "description": "General-purpose AI interaction"
    },
    {
      "name": "Get Result",
      "value": "getInvocation",
      "action": "Get invocation result",
      "description": "Get invocation result"
    }
  ]

npm_readme:
  # 🧩 @port-labs/n8n-nodes-portio-experimental

  > **Port.io** n8n custom nodes for interacting with [Port](https://www.port.io/) via n8n workflows.

  As of **November 2025**, the focus of this package is on **AI interactions** through Port’s AI APIs. Future releases will expand to additional REST integrations and workflow automations, enabling n8n and Port users to connect multiple tools seamlessly. **This is an experimental package, no support can be provided
  in relation to your use of this package, if you've found a bug or need a feature currently not supported, open a GitHub issue**,

  ---

  ## 🚀 Installation

  ### Option 1 — Install via npm (recommended)

  You can install the package directly from npm:

  ```bash
  npm install @port-labs/n8n-nodes-portio-experimental
  ```

  or using **pnpm**:

  ```bash
  pnpm add @port-labs/n8n-nodes-portio-experimental
  ```

  > **Note:**
  > When installed this way, the nodes will be available in your n8n instance once you configure n8n to load community nodes. To enable this you must set the environment variable `N8N_COMMUNITY_PACKAGES_ENABLED=true` and install the npm packages in N8N_HOME.

  ---

  ### Option 2 — Local installation (development or custom build)

  #### Prerequisites

  - 🧱 A working **n8n** instance (see [this quick-start guide](https://medium.com/@learning.by.playing.2023/getting-started-n8n-with-dockercompose-eb602aaed5c0) for setup via Docker Compose)
  - 📦 `pnpm` installed globally (`npm install -g pnpm`)

  #### Steps

  1. Clone this repository inside your n8n custom nodes directory:

     ```bash
     mkdir -p ./n8n-data/custom
     cd ./n8n-data/custom
     git clone https://github.com/port-labs/n8n-nodes-portio-experimental.git
     cd n8n-nodes-portio-experimental
     ```

  2. Install dependencies and build the TypeScript source:

     ```bash
     pnpm install
     pnpm build
     ```

  3. If the build completes successfully, you’ll see a new `dist` directory containing the compiled nodes.

  ---

  ## 🧭 Quick Start

  ### Adding a Port node in n8n

  1. Create a new workflow in your running n8n instance.  
     ![Create workflow](docs/images/adding_node/1_create_workflow.png)

  2. Set the trigger to **“Manual Trigger”** so you can execute it by clicking.  
     ![Trigger workflow](docs/images/adding_node/2_trigger.png)

  3. Add a new node (`+` button) and search for `port`.  
     ![Search for port](docs/images/adding_node/3_search.png)

  4. Select the **Port.io** node and choose **“General Purpose AI Interaction”**.  
     ![Select node](docs/images/adding_node/4_general.png)

  5. Connect the trigger node to the Port node.  
     ![Connect nodes](docs/images/adding_node/5_connect.png)

  🎉 You’ve just deployed your first Port n8n node!

  ---

  ## 🔐 Adding Your Port Account

  You can store multiple Port credentials in n8n, but we’ll start with one.

  ### Requirements

  - A **Port.io** account with **AI features enabled**
  - Your **Client ID** and **Client Secret** (see [Port API guide](https://docs.port.io/build-your-software-catalog/custom-integration/api/))

  ### Steps

  1. Double-click your Port node.  
  2. Under **“Credential to connect with”**, choose “Create new credential.”  
     ![Create credential](docs/images/adding_credentials/1_create.png)
  3. Enter your Port `client_id` and `client_secret`, then click **Save**.  
     ![Save credential](docs/images/adding_credentials/2_save.png)

  > **Note:**
  > JWT authentication is currently not supported because it’s unsuitable for long-term credential storage. OAuth2 credentials are the recommended method.

  ---

  ## 🧠 Running the Node

  Before execution, ensure:

  - You have a **Manual Trigger** connected to a **Port node**  
  - Credentials are saved  
  - Your Port account has **AI features enabled**

  Then:

  1. Open your AI node and configure the parameters (for example, set a user prompt).  
     ![Parameters](docs/images/first_prompt/1_params.png)

  2. Execute the workflow manually and inspect the node output.  
     ![Result](docs/images/first_prompt/2_result.png)

  ✅ If successful, you’ll see an AI response from Port ready to be passed to subsequent nodes.

  ---

  ## ⚙️ API Endpoints Implemented

  > **Note:**
  > As of November 2025, only **AI prompt** endpoints are supported. Contributions for additional API paths are welcome.

  | Method | Path | Purpose | Path Params | Body (required) | Optional Params | Notes | Success Response |
  |---|---|---|---|---|---|---|---|
  | `POST` | `/v1/agent/:agentIdentifier/invoke` | Invoke a specific agent | `agentIdentifier` | — | `context`, `prompt`, `labels`, `provider`, `model` | Providers: `openai` \| `azure-openai` \| `anthropic` \| `bedrock` \| `port` <br> Models: `gpt-5` \| `claude-sonnet-4-20250514` | JSON agent result |
  | `POST` | `/v1/ai/invoke` | General-purpose AI interaction | — | `invocation_identifier`, `userPrompt`, `tools` | `labels`, `provider`, `model`, `systemPrompt`, `executionMode` | Execution mode: `Automatic` \| `Approval Required` | JSON result |
  | `GET` | `/v1/ai/invoke/:invocation_identifier` | Fetch invocation result | `invocation_identifier` | — | — | — | `{ ok: boolean, result: object }` |

  ---

  ## 🤝 Contributing

  Contributions are welcome!

  1. Fork the repo  
  2. Create a new branch (`feat/awesome-thing`)  
  3. Make your changes  
  4. Submit a PR with a clear description of your update  

  Please include tests and examples when possible.

  ---

  ## 🪪 License

  MIT © [Port Labs](https://www.port.io)

  ---

  ## 📦 Example Usage (code)

  ```javascript
  // Example: Calling a Port AI node programmatically via n8n API

  const axios = require('axios');

  const res = await axios.post('https://n8n.local/api/v1/workflows/1/execute', {
    userPrompt: 'Summarize this README for me!',
    provider: 'openai',
    model: 'gpt-5'
  });

  console.log(res.data);
  ```

  ---

  ## 🏷️ Metadata

  | Field | Value |
  |---|---|
  | **Package name** | `@port-labs/n8n-nodes-portio-experimental` |
  | **Version** | `1.0.0-alpha.5` (experimental release) |
  | **Node type** | Custom n8n nodes |
  | **Focus** | Port AI integrations |
  | **Status** | Experimental / early access |

ai_documentation_summary:
  {"purpose":"This n8n node enables users to invoke Port AI agents, perform general AI interactions, and fetch results from Port's AI APIs within n8n workflows.","capabilities":["Invoke specific Port AI agents by identifier","Perform general-purpose AI interactions with user prompts","Fetch results for previously invoked AI requests","Support multiple AI providers (OpenAI, Azure OpenAI, Anthropic, Bedrock, Port)","Support multiple AI models (gpt-5, claude-sonnet-4-20250514)","Configure execution modes (Automatic, Approval Required)"],"authentication":"API Key (Client ID and Client Secret required; OAuth2 recommended, JWT not supported)","commonUseCases":["Automated customer support responses via Port AI","Integrating AI-driven email drafting or summarization into workflows","Connecting n8n to Port's AI capabilities for business automation"],"limitations":["Only AI prompt endpoints are currently supported; additional REST integrations are planned for future releases","This is an experimental package with no official support for bugs or missing features","JWT authentication is not supported for long-term credential storage"],"relatedNodes":["Port API","Port Agent","Port AI Interaction"]}


node_type: n8n-nodes-referral-factory.referralFactory
package_name: n8n-nodes-referral-factory
display_name: Referral Factory
description: Get data from Referral Factory API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: referral-factory
author_github_url: https://github.com/referralfactory/
npm_package_name: n8n-nodes-referral-factory
npm_version: 0.2.14
community_fetched_at: 2026-03-25T21:19:40.992Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "create_user",
      "options": [
        {
          "name": "Add New User",
          "value": "create_user",
          "action": "Add new user",
          "routing": {
            "request": {
              "url": "/users",
              "body": {
                "email": "={{$parameter[\"email\"]}}",
                "first_name": "={{$parameter[\"first_name\"]}}",
                "campaign_id": "={{$parameter[\"campaign_id\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Add new user in Referral Factory"
        },
        {
          "name": "Qualify a User",
          "value": "qualify_user",
          "action": "Qualify a user",
          "description": "Qualify a user in Referral Factory"
        }
      ],
      "displayName": "Action",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Add New User",
      "value": "create_user",
      "action": "Add new user",
      "routing": {
        "request": {
          "url": "/users",
          "body": {
            "email": "={{$parameter[\"email\"]}}",
            "first_name": "={{$parameter[\"first_name\"]}}",
            "campaign_id": "={{$parameter[\"campaign_id\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Add new user in Referral Factory"
    },
    {
      "name": "Qualify a User",
      "value": "qualify_user",
      "action": "Qualify a user",
      "description": "Qualify a user in Referral Factory"
    }
  ]

npm_readme:
  # n8n-nodes-referral-factory

  🔗 A community-built [n8n](https://n8n.io) integration for [Referral Factory](https://referral-factory.com), enabling automation of your referral marketing campaigns.

  This package provides both **trigger** and **action** nodes to interact with the Referral Factory API—ideal for managing users, issuing rewards, and reacting to referral events like user joins or conversions.

  ---

  ## ✨ Features

  - 🧠 Trigger workflows from Referral Factory events (e.g., user joined, reward issued)
  - 🧾 Create new users or qualify referred users
  - 📡 Webhook-based event handling
  - 🔐 API Key authentication

  ---

  ## 📦 Installation

  ### In self-hosted n8n

  ```bash
  npm install n8n-nodes-referral-factory

ai_documentation_summary:
  {"purpose":"A community-built n8n node that enables automation of referral marketing campaigns by interacting with the Referral Factory API to manage users, issue rewards, and handle referral events.","capabilities":["Trigger workflows from Referral Factory events (e.g., user joined, reward issued)","Create new users","Qualify referred users","Handle webhook-based events","Interact with Referral Factory API"],"authentication":"API Key authentication","commonUseCases":["Automating referral marketing campaigns","Managing user referrals and rewards","Reacting to referral events like user joins or conversions"],"limitations":[],"relatedNodes":["n8n-nodes-http.request","n8n-nodes-webhook.webhook"]}


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

updated_at: 2026-03-25 21:19:40
author_name: kylasdevops
author_github_url: https://github.com/kylastech/
npm_package_name: n8n-nodes-kylas
npm_version: 1.0.4
community_fetched_at: 2026-03-25T21:19:40.993Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "user",
      "options": [
        {
          "name": "User",
          "value": "user"
        },
        {
          "name": "Company",
          "value": "company"
        },
        {
          "name": "Lead",
          "value": "lead"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a user",
          "description": "Get the data of a single user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search companies",
          "description": "Search companies"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "company"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search leads",
          "description": "Search leads"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a lead",
          "description": "Get the data of a single lead"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new lead",
          "description": "Create a new lead"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a lead",
          "description": "Update an existing lead"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "lead"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get a user",
      "description": "Get the data of a single user"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search companies",
      "description": "Search companies"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search leads",
      "description": "Search leads"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a lead",
      "description": "Get the data of a single lead"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a new lead",
      "description": "Create a new lead"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a lead",
      "description": "Update an existing lead"
    }
  ]

npm_readme:
  # n8n-nodes-kylas

  This is an n8n community node that lets you use Kylas CRM in your n8n workflows.

  Kylas is a comprehensive sales CRM platform designed for growing businesses. It provides lead management, sales automation, contact management, and pipeline tracking capabilities to help sales teams streamline their processes and increase productivity.

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

  ## Table of Contents

  - [Installation](#installation)
  - [Operations](#operations)
  - [Credentials](#credentials)
  - [Compatibility](#compatibility)
  - [Usage](#usage)
  - [Advanced Features](#advanced-features)
  - [Examples](#examples)
  - [Troubleshooting](#troubleshooting)
  - [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.

  ### Manual Installation

  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `n8n-nodes-kylas`
  4. Agree to the risks of using community nodes
  5. Select **Install**

  After installation restart n8n to register the community node.

  ## Operations

  The Kylas node supports the following operations:

  ### User
  - **Get**: Retrieve user information by ID

  ### Company
  - **Get All**: Retrieve all companies with advanced filtering options
    - Support for field-based filtering
    - JSON rule-based filtering with operators (equal, contains, etc.)
    - Pagination support

  ### Lead
  - **Create**: Create a new lead with custom fields support
  - **Get**: Retrieve lead information by ID
  - **Update**: Update existing lead information
  - **Search**: Search for leads using various criteria
  - **Custom Fields**: Full support for dynamic custom fields with type validation

  ## Credentials

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

  ### Prerequisites

  1. You must have a Kylas CRM account
  2. You need to generate an API key from your Kylas account

  ### Setting up Authentication

  1. Log in to your Kylas CRM account
  2. Navigate to your account settings or API section
  3. Generate a new API key
  4. In n8n, create new credentials for "Kylas API"
  5. Enter your API key in the credentials configuration

  ### Authentication Method

  The node uses API key authentication via the `api-key` header. The credentials are automatically applied to all requests to the Kylas API.

  ## Compatibility

  - **Minimum n8n version**: 0.198.0
  - **Node API version**: 1
  - **Tested with n8n versions**: 0.198.0+

  This node follows n8n's latest development standards and should be compatible with all recent versions of n8n.

  ## Usage

  ### Basic Lead Creation

  1. Add the Kylas node to your workflow
  2. Select "Lead" as the resource
  3. Choose "Create" as the operation
  4. Fill in the required lead information
  5. Optionally configure custom fields

  ### Company Filtering

  The company "Get All" operation supports advanced filtering:

  - **Simple filtering**: Use the fields array to specify which fields to return
  - **Advanced filtering**: Use JSON rules with conditions like:
    - `equal`: Exact match
    - `contains`: Partial match
    - Support for multiple field types (text, number, date, etc.)

  ### Custom Fields

  The node provides dynamic custom field support for leads:

  - Custom fields are automatically loaded from your Kylas instance
  - Field types are validated (TEXT_FIELD, NUMBER, DATE, etc.)
  - Required fields are clearly marked
  - Supports various field types including text, numbers, dates, and more

  ## Advanced Features

  ### Dynamic Custom Fields Loading

  The Kylas node automatically fetches and validates custom fields from your Kylas instance:

  - **Real-time field loading**: Custom fields are loaded directly from the Kylas API
  - **Type validation**: Each field type is validated according to Kylas specifications
  - **Required field handling**: Required fields are clearly marked and validated
  - **Supported field types**:
    - TEXT_FIELD: Single-line text input
    - NUMBER: Numeric values
    - DATE: Date fields with proper formatting
    - EMAIL: Email address validation
    - PHONE: Phone number fields
    - URL: Website URL fields
    - And more...

  ### Company Filtering System

  Advanced filtering capabilities for company data retrieval:

  ```json
  {
    "fields": ["name", "email", "phone"],
    "jsonRule": {
      "condition": "AND",
      "rules": [
        {
          "field": "name",
          "operator": "contains",
          "value": "Tech"
        },
        {
          "field": "status",
          "operator": "equal",
          "value": "Active"
        }
      ]
    }
  }
  ```

  ### Error Handling and Validation

  - Comprehensive error handling for API responses
  - Field type validation before submission
  - Duplicate field prevention
  - Clear error messages for troubleshooting

  ## Examples

  ### Example 1: Create a Lead with Custom Fields

  ```json
  {
    "firstName": "John",
    "lastName": "Doe",
    "email": "john.doe@example.com",
    "phone": "+1234567890",
    "customFields": {
      "companyName": "Tech Corp",
      "leadSource": "Website",
      "budget": 50000
    }
  }
  ```

  ### Example 2: Filter Companies

  ```json
  {
    "fields": ["name", "email", "industry"],
    "jsonRule": {
      "condition": "OR",
      "rules": [
        {
          "field": "industry",
          "operator": "equal",
          "value": "Technology"
        },
        {
          "field": "revenue",
          "operator": "greaterThan",
          "value": 1000000
        }
      ]
    }
  }
  ```

  ### Example 3: Search Leads

  ```json
  {
    "searchTerm": "john@example.com",
    "filters": {
      "status": "New",
      "source": "Website"
    }
  }
  ```

  ## Troubleshooting

  ### Common Issues

  1. **Authentication Errors**
     - Verify your API key is correct
     - Check that your Kylas account has API access enabled
     - Ensure the API key hasn't expired

  2. **Custom Fields Not Loading**
     - Verify you have permission to access custom fields
     - Check that custom fields are active in your Kylas instance
     - Try refreshing the node configuration

  3. **Validation Errors**
     - Ensure required fields are provided
     - Check field types match expected formats
     - Verify field names are correct

  4. **Rate Limiting**
     - Kylas API has rate limits; implement delays between requests if needed
     - Use pagination for large data sets

  ### Debug Tips

  - Enable debug mode in n8n to see detailed API requests and responses
  - Check the Kylas API documentation for field requirements
  - Use the test functionality to verify credentials before running workflows

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Kylas CRM Official Website](https://kylas.io/)
  - [Kylas API Documentation](https://www.postman.com/ss0225/test/collection/yikzmca/kylas-apis-public)
  - [Kylas Help Center](https://support.kylas.io/portal/en/home)
  - [n8n Documentation](https://docs.n8n.io/)

  ## Version History

  ### v0.1.0 (Current)

  **Initial Release**
  - User operations: Get
  - Company operations: Get All with advanced filtering
  - Lead operations: Create, Get, Update, Search
  - Dynamic custom fields support for leads
  - Comprehensive error handling and validation
  - Support for JSON-based filtering rules
  - Field type validation and required field handling

  **Features:**
  - API key authentication
  - Real-time custom field loading
  - Advanced company filtering with JSON rules
  - Lead management with custom fields
  - User management operations
  - Comprehensive error handling

  **Compatibility:**
  - n8n version 0.198.0+
  - Kylas API v1

  ---

  ## Contributing

  This is a community-maintained node. If you encounter issues or have suggestions for improvements, please feel free to contribute or report issues.

  ## License

  MIT License - see the LICENSE file for details.

ai_documentation_summary:
  {"purpose":"A community n8n node that enables interaction with the Kylas CRM API for managing leads, companies, and users within automated workflows.","capabilities":["Create new leads with custom fields","Retrieve lead information by ID","Update existing lead information","Search for leads using various criteria","Retrieve all companies with advanced filtering","Retrieve user information by ID","Dynamic custom field support with type validation","JSON rule-based filtering for companies","Pagination support for company retrieval"],"authentication":"API key required (via 'api-key' header)","commonUseCases":["Automating lead creation from web forms","Syncing company data between Kylas and other systems","Filtering and searching leads based on custom criteria","Integrating CRM data into marketing automation workflows"],"limitations":["Community node (requires manual installation and risk acceptance)","Requires a Kylas CRM account with API access enabled","Requires n8n version 0.198.0 or higher"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.webhook"]}


node_type: n8n-nodes-tubelab.tubeLab
package_name: n8n-nodes-tubelab
display_name: TubeLab
description: Get trending YouTube channels and outlier videos data for any niche.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: antoniojps
author_github_url: https://github.com/antoniojps/
npm_package_name: n8n-nodes-tubelab
npm_version: 0.4.7
community_fetched_at: 2026-03-25T21:19:40.996Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search"
        },
        {
          "name": "Channel",
          "value": "channel"
        },
        {
          "name": "Video",
          "value": "video"
        },
        {
          "name": "Scan",
          "value": "scan"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "searchOutliers",
      "options": [
        {
          "name": "Search Channels",
          "value": "searchChannels",
          "action": "Search for channels",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "hits"
                  }
                }
              ]
            },
            "request": {
              "url": "/v1/search/channels",
              "method": "GET"
            }
          },
          "description": "Search for channels directly from the YouTube Niche Finder with AI enhanced data and 30+ filters. Updated in real-time, 24/7."
        },
        {
          "name": "Search Similar Channels",
          "value": "searchChannelsRelated",
          "action": "Search for similar channels",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "hits"
                  }
                }
              ]
            },
            "request": {
              "url": "/v1/search/channels/related",
              "method": "GET"
            }
          },
          "description": "Search for YouTube channels with related content to another channel"
        },
        {
          "name": "Search Outliers",
          "value": "searchOutliers",
          "action": "Search for outliers",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "hits"
                  }
                }
              ]
            },
            "request": {
              "url": "/v1/search/outliers",
              "method": "GET"
            }
          },
          "description": "Search for videos directly from the TubeLab Outliers library with AI enhanced data and 30+ filters. Updated in real-time, 24/7."
        },
        {
          "name": "Search Similar Outliers",
          "value": "searchOutliersRelated",
          "action": "Search for similar outliers",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "hits"
                  }
                }
              ]
            },
            "request": {
              "url": "/v1/search/outliers/related",
              "method": "GET"
            }
          },
          "description": "Search for YouTube outliers with related content to another outlier(s)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "postScan",
      "options": [
        {
          "name": "Start a Scan",
          "value": "postScan",
          "action": "Start a scan",
          "routing": {
            "request": {
              "url": "/v1/scan",
              "method": "POST"
            }
          },
          "description": "Start a TubeLab scan to search for fresh outliers and channels on any given topic"
        },
        {
          "name": "Get Scan",
          "value": "getScan",
          "action": "Get a scan",
          "routing": {
            "request": {
              "url": "=/v1/scan/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Get the status of a scan and used inputs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "scan"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getVideoTranscript",
      "options": [
        {
          "name": "Details",
          "value": "getVideoDetails",
          "action": "Get details",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "items"
                  }
                }
              ]
            },
            "request": {
              "url": "=/v1/video/{{$parameter[\"videoId\"]}}",
              "method": "GET"
            }
          },
          "description": "Fetch the details of a video"
        },
        {
          "name": "Transcript",
          "value": "getVideoTranscript",
          "action": "Get transcript",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "items"
                  }
                }
              ]
            },
            "request": {
              "url": "=/v1/video/transcript/{{$parameter[\"videoId\"]}}",
              "method": "GET"
            }
          },
          "description": "Fetches the transcript of a video including timestamps"
        },
        {
          "name": "Comments",
          "value": "getVideoComments",
          "action": "Get comments",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "items"
                  }
                }
              ]
            },
            "request": {
              "url": "=/v1/video/comments/{{$parameter[\"videoId\"]}}",
              "method": "GET"
            }
          },
          "description": "Fetch the first 100 comments of a video"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "video"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getChannelVideos",
      "options": [
        {
          "name": "Get Videos",
          "value": "getChannelVideos",
          "action": "Get videos",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "item"
                  }
                }
              ]
            },
            "request": {
              "url": "=/v1/channel/videos/{{$parameter[\"channelId\"]}}",
              "method": "GET"
            }
          },
          "description": "Fetch the videos of a channel and relevant metrics"
        },
        {
          "name": "Get Shorts",
          "value": "getChannelShorts",
          "action": "Get shorts",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "item"
                  }
                }
              ]
            },
            "request": {
              "url": "=/v1/channel/shorts/{{$parameter[\"channelId\"]}}",
              "method": "GET"
            }
          },
          "description": "Fetches the shorts of a channel and relevant metrics"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "channel"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Search Channels",
      "value": "searchChannels",
      "action": "Search for channels",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "hits"
              }
            }
          ]
        },
        "request": {
          "url": "/v1/search/channels",
          "method": "GET"
        }
      },
      "description": "Search for channels directly from the YouTube Niche Finder with AI enhanced data and 30+ filters. Updated in real-time, 24/7."
    },
    {
      "name": "Search Similar Channels",
      "value": "searchChannelsRelated",
      "action": "Search for similar channels",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "hits"
              }
            }
          ]
        },
        "request": {
          "url": "/v1/search/channels/related",
          "method": "GET"
        }
      },
      "description": "Search for YouTube channels with related content to another channel"
    },
    {
      "name": "Search Outliers",
      "value": "searchOutliers",
      "action": "Search for outliers",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "hits"
              }
            }
          ]
        },
        "request": {
          "url": "/v1/search/outliers",
          "method": "GET"
        }
      },
      "description": "Search for videos directly from the TubeLab Outliers library with AI enhanced data and 30+ filters. Updated in real-time, 24/7."
    },
    {
      "name": "Search Similar Outliers",
      "value": "searchOutliersRelated",
      "action": "Search for similar outliers",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "hits"
              }
            }
          ]
        },
        "request": {
          "url": "/v1/search/outliers/related",
          "method": "GET"
        }
      },
      "description": "Search for YouTube outliers with related content to another outlier(s)"
    },
    {
      "name": "Start a Scan",
      "value": "postScan",
      "action": "Start a scan",
      "routing": {
        "request": {
          "url": "/v1/scan",
          "method": "POST"
        }
      },
      "description": "Start a TubeLab scan to search for fresh outliers and channels on any given topic"
    },
    {
      "name": "Get Scan",
      "value": "getScan",
      "action": "Get a scan",
      "routing": {
        "request": {
          "url": "=/v1/scan/{{$parameter[\"id\"]}}",
          "method": "GET"
        }
      },
      "description": "Get the status of a scan and used inputs"
    },
    {
      "name": "Details",
      "value": "getVideoDetails",
      "action": "Get details",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "items"
              }
            }
          ]
        },
        "request": {
          "url": "=/v1/video/{{$parameter[\"videoId\"]}}",
          "method": "GET"
        }
      },
      "description": "Fetch the details of a video"
    },
    {
      "name": "Transcript",
      "value": "getVideoTranscript",
      "action": "Get transcript",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "items"
              }
            }
          ]
        },
        "request": {
          "url": "=/v1/video/transcript/{{$parameter[\"videoId\"]}}",
          "method": "GET"
        }
      },
      "description": "Fetches the transcript of a video including timestamps"
    },
    {
      "name": "Comments",
      "value": "getVideoComments",
      "action": "Get comments",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "items"
              }
            }
          ]
        },
        "request": {
          "url": "=/v1/video/comments/{{$parameter[\"videoId\"]}}",
          "method": "GET"
        }
      },
      "description": "Fetch the first 100 comments of a video"
    },
    {
      "name": "Get Videos",
      "value": "getChannelVideos",
      "action": "Get videos",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "item"
              }
            }
          ]
        },
        "request": {
          "url": "=/v1/channel/videos/{{$parameter[\"channelId\"]}}",
          "method": "GET"
        }
      },
      "description": "Fetch the videos of a channel and relevant metrics"
    },
    {
      "name": "Get Shorts",
      "value": "getChannelShorts",
      "action": "Get shorts",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "item"
              }
            }
          ]
        },
        "request": {
          "url": "=/v1/channel/shorts/{{$parameter[\"channelId\"]}}",
          "method": "GET"
        }
      },
      "description": "Fetches the shorts of a channel and relevant metrics"
    }
  ]

npm_readme:
  # n8n-nodes-tubelab

  This is an n8n community node. It lets you get enhanced YouTube data - including 400K+ trending channels, 4M+ outliers and scan niches in real-time with [TubeLab](https://tubelab.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)
  [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.

  1. Go to **Settings > Community Nodes**.
  2. Select **Install**.
  3. Enter `n8n-nodes-tubelab` in **Enter npm package name**.
  4. Agree to the risks of using community nodes: select **I understand the risks of installing unverified code from a public source.**
  5. Select **Install**.

  After installing the node, you can use it like any other node. n8n displays the node in search results in the **Nodes** panel.

  ## Operations

  It supports these TubeLab operations:

  - **Search Outliers**: Search for videos directly from the TubeLab Outliers library with AI enhanced data and 30+ filters. Updated in real-time, 24/7.
  - **Search Similar Outliers**: Search for YouTube outliers with related content to another outlier(s)
  - **Search Channels**: Search for channels directly from the YouTube Niche Finder with AI enhanced data and 30+ filters. Updated in real-time, 24/7.
  - **Search Similar Channels**: Search for YouTube channels with related content to another channel
  - **Get Channel Videos**: Fetch the videos of a channel and relevant metrics (max 100 videos)
  - **Get Channel Shorts**: Fetch the shorts of a channel and relevant metrics (max 100 shorts)
  - **Get Video Details**: Fetch the details of a video
  - **Get Video Transcript**: Fetch the transcript & timestamps of a video
  - **Get Video Comments**: Fetch the first 100 comments of a video
  - **Start a Scan**: Start a TubeLab scan to search for fresh outliers and channels on any given topic
  - **Get a Scan**: Get the status of a scan and used inputs

  ## Credentials

  To use this node, you will need to authenticate with [TubeLab's API](https://tubelab.net/docs/api).

  1. Sign up for a [TubeLab](https://tubelab.net/) account
  2. Go to the [Developers Dashboard](https://tubelab.net/developers) and create an API key
  3. Create new credential in n8n
     - Use TubeLab's node
     - Under Credential to connect with, click Create New Credential
     - Paste API Key

  ## Compatibility

  This node was developed & tested with the `1.112.5` version.

  ## Usage

  Please refer to [TubeLab's Automation documentation](https://tubelab.net/docs/api/automation) with example templates on how to use this node.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [TubeLab's API Documentation](https://tubelab.net/docs/api)
  - [Sign up for a TubeLab API key](https://tubelab.net)
  - Contact support if you have any issues: [https://tubelab.net/support](https://tubelab.net/support)

  ## Version history

  - 0.4.7 - Remove deprecated `requestWithAuthentication` in favor of `httpRequestWithAuthentication`
  - 0.4.5 - Fix `/channel/videos` endpoint
  - 0.4.3 - Fix query params as expressions compiling
  - 0.4.0 - Add operations `Get Channel Videos`, `Get Channel Shorts`, `Get Video Details`, `Get Video Transcript`, `Get Video Comments`
  - 0.3.3 - Fix Start Scan `findBy` input
  - 0.3.2 - Add "publishedAtFrom" to Outliers Filters
  - 0.3.0 - Fix Webhooks Trigger
  - 0.2.0 - Fix API base URL
  - 0.1.1 - Fix package.json metadata details
  - 0.1.0 - Initial release

  ## Contribution Guidelines

  Refer to the [official documentation](https://docs.n8n.io/integrations/creating-nodes/build/n8n-node/#new).

  Requirements:

  - Node JS
  - Install `n8n-node`: `npm install --global @n8n/node-cli`
  - Run `npm run dev`

ai_documentation_summary:
  {"purpose":"This n8n community node retrieves enhanced YouTube data, including trending channels, outlier videos, and niche scans, using TubeLab's AI-powered analytics.","capabilities":["Search for outlier videos with 30+ filters","Search for similar outlier videos based on related content","Search for channels with 30+ filters","Search for similar channels based on related content","Fetch channel videos with metrics (max 100)","Fetch channel shorts with metrics (max 100)","Retrieve detailed video information","Fetch video transcripts and timestamps","Fetch up to 100 comments per video","Start real-time niche scans for fresh outliers and channels"],"authentication":"API key required (TubeLab API key)","commonUseCases":["Identifying trending YouTube channels in specific niches","Finding viral or outlier videos for content inspiration","Analyzing competitor channels and their performance metrics","Discovering new content opportunities through real-time niche scanning","Extracting video transcripts and comments for sentiment analysis"],"limitations":["Channel videos retrieval is limited to a maximum of 100 videos","Channel shorts retrieval is limited to a maximum of 100 shorts","Video comments retrieval is limited to the first 100 comments","Tested and compatible with n8n version 1.112.5"],"relatedNodes":["n8n-nodes-youtube","n8n-nodes-webhook","n8n-nodes-code"]}


node_type: @brightdata/n8n-nodes-brightdata.brightData
package_name: @brightdata/n8n-nodes-brightdata
display_name: BrightData
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: brd-cholpon
author_github_url: https://github.com/brightdata-com/n8n-nodes-brightdata.git
npm_package_name: @brightdata/n8n-nodes-brightdata
npm_version: 1.1.1
community_fetched_at: 2026-03-25T21:19:40.997Z
ai_summary_generated_at: 2026-03-25 22:47:20
description:
  Interact with Bright Data to scrape websites or use existing datasets from the marketplace to generate adapted snapshots

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "webUnlocker",
      "options": [
        {
          "name": "Marketplace Dataset",
          "value": "marketplaceDataset"
        },
        {
          "name": "Web Scraper",
          "value": "webScrapper"
        },
        {
          "name": "Web Unlocker",
          "value": "webUnlocker"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "request",
      "options": [
        {
          "name": "Web Search",
          "value": "WebSearch",
          "action": "Search the web and get serp results",
          "routing": {
            "request": {
              "url": "/request",
              "body": {
                "url": "={{`https://www.google.com/search?q=${encodeURIComponent($parameter[\"query\"])}&start=${(($parameter[\"page\"] || 1) - 1) * 10}&brd_json=1`}}",
                "zone": "={{$parameter[\"zone\"]}}",
                "format": "raw",
                "country": "={{$parameter[\"country\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Send a Request",
          "value": "request",
          "action": "Access and extract data from a specific URL",
          "routing": {
            "request": {
              "url": "/request",
              "body": {
                "url": "={{$parameter[\"url\"]}}",
                "zone": "={{$parameter[\"zone\"]}}",
                "format": "={{$parameter[\"data_format\"] === \"markdown\" ? \"raw\" : $parameter[\"format\"]}}",
                "method": "={{$parameter[\"method\"]}}",
                "country": "={{$parameter[\"country\"]}}",
                "data_format": "={{$parameter[\"data_format\"] || undefined}}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webUnlocker"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listDatasets",
      "options": [
        {
          "name": "Deliver Snapshot",
          "value": "deliverSnapshot",
          "action": "Deliver a snapshot to specified storage",
          "routing": {
            "request": {
              "url": "/datasets/snapshots/{{$parameter[\"snapshot_id\"]}}/deliver",
              "method": "POST"
            }
          }
        },
        {
          "name": "Filter Dataset",
          "value": "filterDataset",
          "action": "Filter a dataset to create a snapshot",
          "routing": {
            "request": {
              "url": "/datasets/filter",
              "body": "={{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"dataset_id\": $parameter[\"dataset_id\"].value || $parameter[\"dataset_id\"],\n\t\t\t\t\t\t\t\t\"records_limit\": $parameter[\"records_limit\"],\n\t\t\t\t\t\t\t\t\"filter\": $parameter[\"filter_type\"] === \"filter_single\" \n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\"name\": $parameter[\"field_name\"],\n\t\t\t\t\t\t\t\t\t\t\"operator\": $parameter[\"field_operator\"], \n\t\t\t\t\t\t\t\t\t\t\"value\": $parameter[\"field_value\"]\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t: $parameter[\"filter_type\"] === \"filters_group\"\n\t\t\t\t\t\t\t\t\t? JSON.parse($parameter[\"filters_group\"])\n\t\t\t\t\t\t\t\t\t: {}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}",
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Dataset Metadata",
          "value": "getDatasetMetadata",
          "action": "Retrieve metadata for a specific dataset by dataset id",
          "routing": {
            "request": {
              "url": "=/datasets/{{$parameter[\"dataset_id\"]}}/metadata",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Snapshot Content",
          "value": "getSnapshotContent",
          "action": "Retrieve data by snapshot id",
          "routing": {
            "request": {
              "qs": {
                "part": "={{$parameter[\"part\"]}}",
                "format": "={{$parameter[\"format\"]}}",
                "compress": "={{$parameter[\"compress\"] || false}}",
                "batch_size": "={{$parameter[\"batch_size\"]}}"
              },
              "url": "=/datasets/snapshots/{{$parameter[\"snapshot_id\"]}}/download",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Snapshot Metadata",
          "value": "getSnapshotMetadata",
          "action": "Get metadata for a selected snapshot by snapshot id",
          "routing": {
            "request": {
              "url": "=/datasets/snapshots/{{$parameter[\"snapshot_id\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Snapshot Parts",
          "value": "getSnapshotParts",
          "action": "Split snapshot data to parts by snapshot id",
          "routing": {
            "request": {
              "url": "=/datasets/snapshots/{{$parameter[\"snapshot_id\"]}}/parts",
              "method": "GET"
            }
          }
        },
        {
          "name": "List Datasets",
          "value": "listDatasets",
          "action": "List available datasets",
          "routing": {
            "request": {
              "url": "/datasets/list",
              "method": "GET"
            }
          }
        },
        {
          "name": "List Snapshots",
          "value": "listSnapshots",
          "action": "List all your snapshot ids",
          "routing": {
            "request": {
              "url": "/datasets/snapshots",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "marketplaceDataset"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scrapeByUrl",
      "options": [
        {
          "name": "Deliver Snapshot",
          "value": "deliverSnapshot",
          "action": "Deliver a snapshot to specified storage",
          "routing": {
            "request": {
              "url": "/datasets/v3/deliver/{{$parameter[\"snapshot_id\"]}}",
              "method": "POST"
            }
          }
        },
        {
          "name": "Download Snapshot",
          "value": "downloadSnapshot",
          "action": "Download the snapshot content",
          "routing": {
            "request": {
              "url": "=/datasets/v3/snapshot/{{$parameter[\"snapshot_id\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Snapshots",
          "value": "getSnapshots",
          "action": "Get filtered snapshots",
          "routing": {
            "request": {
              "qs": {
                "skip": "={{$parameter[\"skip\"]}}",
                "limit": "={{$parameter[\"limit\"]}}",
                "status": "={{$parameter[\"status\"]}}",
                "to_date": "={{$parameter[\"to_date\"]}}",
                "from_date": "={{$parameter[\"from_date\"]}}",
                "dataset_id": "={{$parameter[\"dataset_id\"]}}"
              },
              "url": "/datasets/v3/snapshots",
              "method": "GET"
            }
          }
        },
        {
          "name": "Monitor Progress Snapshot",
          "value": "monitorProgressSnapshot",
          "action": "Check the status of a batch extraction",
          "routing": {
            "request": {
              "url": "=/datasets/v3/progress/{{$parameter[\"snapshot_id\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Scrape By URL",
          "value": "scrapeByUrl",
          "action": "Extract structured data from a single URL",
          "routing": {
            "request": {
              "qs": {
                "format": "={{$parameter[\"format\"]}}",
                "dataset_id": "={{$parameter[\"dataset_id\"]}}",
                "include_errors": "={{$parameter[\"include_errors\"]}}"
              },
              "url": "/datasets/v3/scrape",
              "body": "={{JSON.parse($parameter[\"urls\"])}}",
              "method": "POST"
            }
          }
        },
        {
          "name": "Trigger Collection By URL",
          "value": "triggerCollectionByUrl",
          "action": "Initiate batch extraction from URL",
          "routing": {
            "request": {
              "qs": {
                "notify": "={{$parameter[\"notify\"]}}",
                "endpoint": "={{$parameter[\"endpoint\"]}}",
                "dataset_id": "={{$parameter[\"dataset_id\"]}}"
              },
              "url": "/datasets/v3/trigger",
              "body": "={{JSON.parse($parameter[\"urls\"])}}",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webScrapper"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Web Search",
      "value": "WebSearch",
      "action": "Search the web and get serp results",
      "routing": {
        "request": {
          "url": "/request",
          "body": {
            "url": "={{`https://www.google.com/search?q=${encodeURIComponent($parameter[\"query\"])}&start=${(($parameter[\"page\"] || 1) - 1) * 10}&brd_json=1`}}",
            "zone": "={{$parameter[\"zone\"]}}",
            "format": "raw",
            "country": "={{$parameter[\"country\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Send a Request",
      "value": "request",
      "action": "Access and extract data from a specific URL",
      "routing": {
        "request": {
          "url": "/request",
          "body": {
            "url": "={{$parameter[\"url\"]}}",
            "zone": "={{$parameter[\"zone\"]}}",
            "format": "={{$parameter[\"data_format\"] === \"markdown\" ? \"raw\" : $parameter[\"format\"]}}",
            "method": "={{$parameter[\"method\"]}}",
            "country": "={{$parameter[\"country\"]}}",
            "data_format": "={{$parameter[\"data_format\"] || undefined}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Deliver Snapshot",
      "value": "deliverSnapshot",
      "action": "Deliver a snapshot to specified storage",
      "routing": {
        "request": {
          "url": "/datasets/snapshots/{{$parameter[\"snapshot_id\"]}}/deliver",
          "method": "POST"
        }
      }
    },
    {
      "name": "Filter Dataset",
      "value": "filterDataset",
      "action": "Filter a dataset to create a snapshot",
      "routing": {
        "request": {
          "url": "/datasets/filter",
          "body": "={{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"dataset_id\": $parameter[\"dataset_id\"].value || $parameter[\"dataset_id\"],\n\t\t\t\t\t\t\t\t\"records_limit\": $parameter[\"records_limit\"],\n\t\t\t\t\t\t\t\t\"filter\": $parameter[\"filter_type\"] === \"filter_single\" \n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\"name\": $parameter[\"field_name\"],\n\t\t\t\t\t\t\t\t\t\t\"operator\": $parameter[\"field_operator\"], \n\t\t\t\t\t\t\t\t\t\t\"value\": $parameter[\"field_value\"]\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t: $parameter[\"filter_type\"] === \"filters_group\"\n\t\t\t\t\t\t\t\t\t? JSON.parse($parameter[\"filters_group\"])\n\t\t\t\t\t\t\t\t\t: {}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}",
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Dataset Metadata",
      "value": "getDatasetMetadata",
      "action": "Retrieve metadata for a specific dataset by dataset id",
      "routing": {
        "request": {
          "url": "=/datasets/{{$parameter[\"dataset_id\"]}}/metadata",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get Snapshot Content",
      "value": "getSnapshotContent",
      "action": "Retrieve data by snapshot id",
      "routing": {
        "request": {
          "qs": {
            "part": "={{$parameter[\"part\"]}}",
            "format": "={{$parameter[\"format\"]}}",
            "compress": "={{$parameter[\"compress\"] || false}}",
            "batch_size": "={{$parameter[\"batch_size\"]}}"
          },
          "url": "=/datasets/snapshots/{{$parameter[\"snapshot_id\"]}}/download",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get Snapshot Metadata",
      "value": "getSnapshotMetadata",
      "action": "Get metadata for a selected snapshot by snapshot id",
      "routing": {
        "request": {
          "url": "=/datasets/snapshots/{{$parameter[\"snapshot_id\"]}}",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get Snapshot Parts",
      "value": "getSnapshotParts",
      "action": "Split snapshot data to parts by snapshot id",
      "routing": {
        "request": {
          "url": "=/datasets/snapshots/{{$parameter[\"snapshot_id\"]}}/parts",
          "method": "GET"
        }
      }
    },
    {
      "name": "List Datasets",
      "value": "listDatasets",
      "action": "List available datasets",
      "routing": {
        "request": {
          "url": "/datasets/list",
          "method": "GET"
        }
      }
    },
    {
      "name": "List Snapshots",
      "value": "listSnapshots",
      "action": "List all your snapshot ids",
      "routing": {
        "request": {
          "url": "/datasets/snapshots",
          "method": "GET"
        }
      }
    },
    {
      "name": "Deliver Snapshot",
      "value": "deliverSnapshot",
      "action": "Deliver a snapshot to specified storage",
      "routing": {
        "request": {
          "url": "/datasets/v3/deliver/{{$parameter[\"snapshot_id\"]}}",
          "method": "POST"
        }
      }
    },
    {
      "name": "Download Snapshot",
      "value": "downloadSnapshot",
      "action": "Download the snapshot content",
      "routing": {
        "request": {
          "url": "=/datasets/v3/snapshot/{{$parameter[\"snapshot_id\"]}}",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get Snapshots",
      "value": "getSnapshots",
      "action": "Get filtered snapshots",
      "routing": {
        "request": {
          "qs": {
            "skip": "={{$parameter[\"skip\"]}}",
            "limit": "={{$parameter[\"limit\"]}}",
            "status": "={{$parameter[\"status\"]}}",
            "to_date": "={{$parameter[\"to_date\"]}}",
            "from_date": "={{$parameter[\"from_date\"]}}",
            "dataset_id": "={{$parameter[\"dataset_id\"]}}"
          },
          "url": "/datasets/v3/snapshots",
          "method": "GET"
        }
      }
    },
    {
      "name": "Monitor Progress Snapshot",
      "value": "monitorProgressSnapshot",
      "action": "Check the status of a batch extraction",
      "routing": {
        "request": {
          "url": "=/datasets/v3/progress/{{$parameter[\"snapshot_id\"]}}",
          "method": "GET"
        }
      }
    },
    {
      "name": "Scrape By URL",
      "value": "scrapeByUrl",
      "action": "Extract structured data from a single URL",
      "routing": {
        "request": {
          "qs": {
            "format": "={{$parameter[\"format\"]}}",
            "dataset_id": "={{$parameter[\"dataset_id\"]}}",
            "include_errors": "={{$parameter[\"include_errors\"]}}"
          },
          "url": "/datasets/v3/scrape",
          "body": "={{JSON.parse($parameter[\"urls\"])}}",
          "method": "POST"
        }
      }
    },
    {
      "name": "Trigger Collection By URL",
      "value": "triggerCollectionByUrl",
      "action": "Initiate batch extraction from URL",
      "routing": {
        "request": {
          "qs": {
            "notify": "={{$parameter[\"notify\"]}}",
            "endpoint": "={{$parameter[\"endpoint\"]}}",
            "dataset_id": "={{$parameter[\"dataset_id\"]}}"
          },
          "url": "/datasets/v3/trigger",
          "body": "={{JSON.parse($parameter[\"urls\"])}}",
          "method": "POST"
        }
      }
    }
  ]

npm_readme:
  ![Banner image](images/n8n-and-n8nhackers.png)

  # n8n-nodes-brightdata

  This is an n8n community node. It helps you to use [Bright Data APIs](https://docs.brightdata.com/scraping-automation/introduction) from n8n.

  If you have any questions or remarks please [contact me](mailto:support@n8nhackers.com).

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

  ## Compatibility

  This node was developed and tested with n8n version 1.81.4

  ## Resources

  This node currently supports the next Resources:

  ### Marketplace Dataset

  Bright Data’s Marketplace DataSet API allows access to a centralized platform providing regularly updated, ethically sourced datasets from multiple domains, offering flexible solutions for data customization and acquisition.

  The next operations are available:

  - Deliver Snapshot
  - Filter Dataset
  - Get Dataset Metadata
  - Get Snapshot Content
  - Get Snapshot Metadata
  - Get Snapshot Parts
  - List Datasets

  Ideal for:

  - Access to datasets across 120+ domains.
  - High-quality, ethically sourced data ensuring accuracy and compliance.
  - Regular updates from publicly available information.
  - Ready-to-use and on-demand solutions.
  - Flexible purchase options with comprehensive customization.
  - Suitable for various fields like social media, real estate, B2B data, and AI training.

  ### Web Unlocker

  Bright Data’s Web Unlocker API makes data collection easy by managing proxies and avoiding blocks.

  Just send an API request with the target website, and get clean HTML/JSON responses.

  The Web Unlocker handles:

  - Optimal proxy selection
  - Custom headers
  - Fingerprinting
  - CAPTCHAs

  Ideal for:

  - Scraping any website without blocks
  - Emulating real-user behavior
  - Teams without proxy infrastructure
  - Paying only for successful requests
  - [Premium domains](https://docs.brightdata.com/scraping-automation/web-unlocker/features#current-list-of-premium-domains) hard to be scraped (MediaMarkt, Hermes... )

  Please, follow [documentation](https://docs.brightdata.com/scraping-automation/web-unlocker/introduction) to setup this API.

  #### Usage

  - Resource: choose Unlocker API
    - Operation: choose "Send a Request".
      - Properties:
        - zone: Choose between your existing zone names.
        - url: The target URL you wish to access via Web Unlocker API.
        - method: The method to call the target URL.
        - format: Defines the response format. Use raw to receive the raw response from the target site. JSON is simpler for managing the output.
        - country: The country you will use to access the target URL.

  ### TL;DR - WebUnlocker

  ![Get deals of the day](images/workflow-sample.png?raw=true "Get deals of the day")

  Don't want to read? Install n8n-nodes-brightdata in your n8n from Settings / Community nodes. Copy the URL of [Get deals of the day](https://raw.githubusercontent.com/n8nhackers/n8n-nodes-brightdata/refs/heads/main/use-cases/workflow-sample.json "Get deals of the day") and paste into "Import for URL" submenu at n8n.

  This n8n workflow automates the process of collecting and delivering the "Deals of the Day" from MediaMarkt, specifically tailored to user preferences, and sends those deals via email.

  This workflow is useful for automating product deal recommendations based on user input and sending personalized emails with the best deals available.

  #### Workflow Overview:

  1. **User Interaction via Form**:
     - The user submits a form where they can select categories (such as appliances, cell phones, etc.) and provide their email address. This triggers the workflow to gather personalized deals based on their input.
  2. **Data Extraction**:
     - Once the form is submitted, the workflow calls **Bright Data** community node to scrape data from the MediaMarkt website (`https://www.mediamarkt.es/es/campaign/campanas-y-ofertas`) using a proxy service. The data is retrieved in JSON format.
  3. **HTML Content Extraction**:
     - The raw HTML content from the website is extracted, focusing on the title and body, which are key to processing the content for recommendation.
  4. **Recommendation Generation using OpenAI**:
     - The extracted data is processed through **OpenAI** (GPT-4o-mini) to generate a list of recommended deals. This involves categorizing deals based on the user-selected categories, and filtering or translating content if necessary. The deal list includes properties like name, description, price, and a link.
  5. **Data Structuring**:
     - The generated list of deals is split into individual deal items using **SplitOut**.
  6. **Document Creation**:
     - Using **[Document Generator](https://www.npmjs.com/package/n8n-nodes-document-generator)** community node, an HTML template is populated with the recommended deals and structured into a user-friendly format.
  7. **Email Delivery**:
     - The document containing the recommended deals is sent to the user's email via **SMTP email send** with a personalized message that includes the list of deals.

  #### Workflow Connections:

  1. **Form Submission** → **Bright Data (Scrape Deals)**: The form triggers the request to scrape the MediaMarkt deals page.
  2. **Bright Data** → **HTML Extraction**: The scraped content is processed to extract key page data.
  3. **HTML Extraction** → **OpenAI (Deal Generation)**: The extracted content is used as input for GPT-4o-mini to generate deal recommendations.
  4. **OpenAI** → **SplitOut**: The results are split into individual deal items.
  5. **SplitOut** → **DocumentGenerator**: The items are formatted into an HTML document.
  6. **DocumentGenerator** → **Send Email**: The document is emailed to the user.

  #### Final Output:

  - The user receives an email with a personalized list of the best deals based on their selected categories.

  #### Credentials Used:

  - **Bright Data API**: For scraping data from MediaMarkt.
  - **OpenAI API**: To generate the list of recommended deals using GPT-4o-mini.
  - **SMTP**: For sending the email with the deals.

  #### External nodes Used:

  - **[Bright Data](https://www.npmjs.com/package/n8n-nodes-brightdata)**: For scrapping data from MediaMarkt.
  - **[Document Generator](https://www.npmjs.com/package/n8n-nodes-document-generator)**: For generating html output using templates.

  ### TL;DR - Marketplace Dataset

  ![Marketplace Datasets](images/marketplace-dataset-workflow-sample.png?raw=true "Marketplace Datasets")

  New Marketplace Dataset API allows to create custom snapshots by filtering existing Bright Data datasets (more than [160 datasets](https://docs.brightdata.com/datasets/introduction)).

  Datasets are updated by Bright Data, so you don't have to scrape anything.

  Your can get a list of records from the full dataset without scrapping the records by yourself. This is faster and cheaper than adquiring data from zero.
  You can use datasets to build custom AI Agents like:

  - Real Estate Agent to search houses to buy
  - Candidates Agent to search future workers

  Current existing datasets allow to get data from:

  - LinkedIn
  - Instagram
  - Facebook
  - Airbnb
  - Crunchbase
  - And many more (use operation 'List Datasets' to get all)

  Install n8n-nodes-brightdata in your n8n from Settings / Community nodes. Copy the URL of [Get Marketplace Functions](https://raw.githubusercontent.com/n8nhackers/n8n-nodes-brightdata/refs/heads/main/use-cases/marketplace-dataset-workflow-sample.json) and paste into "Import for URL" submenu at n8n.

  ### TL;DR - More samples

  You can also use the next ready-to-use samples for your n8n (self-hosted version):

  - [Update LinkedIn Profiles one by one with Bright Data and Google Sheets with no scrapping](https://raw.githubusercontent.com/n8nhackers/n8n-nodes-brightdata/refs/heads/main/use-cases/Update_LinkedIn_Profiles_one_by_one_with_Bright_Data_and_Google_Sheets_with_no_scrapping.json)![Update LinkedIn Profiles](images/Update_LinkedIn_Profiles_one_by_one_with_Bright_Data_and_Google_Sheets_with_no_scrapping.png?raw=true "Update LinkedIn Profiles")
  - [Create a Prospect list for Commercial purposes with Google Search and Bright Data on-demand](https://raw.githubusercontent.com/n8nhackers/n8n-nodes-brightdata/refs/heads/main/use-cases/Create_a_Prospect_list_for_Commercial_purposes_with_Google_Search_and_Bright_Data_on_demand.json)![Create a Prospect List](images/Create_a_Prospect_list_for_Commercial_purposes_with_Google_Search_and_Bright_Data_on_demand.png?raw=true "Create a Prospect List")

  # Changelog

  Here you can find the list of changes applied to this node:

  - 0.1.33: Add samples for WebScrapper/Scrape By URL and WebScrapper/Create Snapshot
  - 0.1.32: Fix equals on MarketplaceDataset/filterSnapshot
  - 0.1.31: Add webScrapper/downloadSnapshot
  - 0.1.30: Add webScrapper/deliverSnapshot + Fix webScrapper/getSnapshots
  - 0.1.29: Fix error on Marketplace/Get Snapshot Content
  - 0.1.28: Fix errors on webScrapper resource
  - 0.1.25: Create Resource for WebScrapper API
  - 0.1.24: Return listDatasets in items output property
  - 0.1.23: Add notify webhook to "Marketplace Dataset API/Trigger Snapshot by URL"
  - 0.1.22: Return clear messages on API errors + improve filter Dataset
  - 0.1.21: Add getSnapshots + Trigger snapshots to generate snapshots on demand
  - 0.1.20: Added support to use Bright Data as an AI Agent tool
  - 0.1.19: Added support for Marketplace DataSet endpoints
  - 0.1.11: Added support for using this node as tool from an Agent

  # Contribution

  To make this node even better, please let us know, [how you use it](mailto:support@n8nhackers.com). Commits are always welcome.

  You can test this node following the next instructions:

  ```sh
  git clone git@github.com:n8nhackers/n8n-nodes-brightdata.git
  cd n8n-nodes-brightdata
  nvm use
  npm install -g n8n
  yarn install
  npm run build
  npm link
  mkdir ~/.n8n/custom/
  cd ~/.n8n/custom/
  npm link n8n-nodes-brightdata
  cd ..
  n8n start
  ```

  # Issues

  If you have any issues, please [let us know on GitHub](https://github.com/n8nhackers/n8n-nodes-brightdata/issues).

  # About

  Nodes by [n8nhackers.com](https://n8nhackers.com). For productive use and consulting on this, [contact us please](mailto:support@n8nhackers.com).

  Special thanks to [N8n nodemation](https://n8n.io) workflow automation by Jan Oberhauser.

  # License

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

ai_documentation_summary:
  {"purpose":"A community n8n node that enables interaction with Bright Data APIs to scrape websites using the Web Unlocker or access and manipulate datasets from the Bright Data Marketplace.","capabilities":["Web scraping via Web Unlocker API with proxy management","Access to 120+ domains through Marketplace Datasets","Filtering and customizing dataset content","Retrieving dataset metadata and snapshot parts","Handling CAPTCHAs and fingerprinting","Supporting custom headers and optimal proxy selection","Returning responses in raw or JSON format"],"authentication":"API key required (Bright Data credentials)","commonUseCases":["Scraping protected websites without IP blocks","Automating data collection for e-commerce deal tracking","Accessing ethically sourced B2B or social media datasets","Generating personalized content based on scraped data"],"limitations":["Community node (may lack official support)","Compatible with n8n version 1.81.4","Requires Bright Data API access and potential subscription for premium domains"],"relatedNodes":["HTTP Request","OpenAI","SplitInArray","SplitInFields","Document Generator"]}


node_type: n8n-nodes-layerre.layerre
package_name: n8n-nodes-layerre
display_name: Layerre
description: Create templates and variants from Canva designs with Layerre
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: layerre
author_github_url: https://github.com/layerre/
npm_package_name: n8n-nodes-layerre
npm_version: 1.0.3
community_fetched_at: 2026-03-25T21:19:40.998Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "template",
      "options": [
        {
          "name": "Template",
          "value": "template",
          "description": "Create and manage templates from Canva designs"
        },
        {
          "name": "Variant",
          "value": "variant",
          "description": "Create variants with layer overrides"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a template",
          "routing": {
            "request": {
              "url": "/template",
              "method": "POST"
            }
          },
          "description": "Create a new template from a Canva design URL"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a template",
          "routing": {
            "request": {
              "url": "=/template/{{$parameter.templateId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a template"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a template",
          "routing": {
            "request": {
              "url": "=/template/{{$parameter.templateId}}",
              "method": "GET"
            }
          },
          "description": "Retrieve a template by ID with all its layers"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many templates",
          "routing": {
            "request": {
              "url": "/templates",
              "method": "GET"
            }
          },
          "description": "Retrieve a list of templates for the current user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "template"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a variant",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/template/{{$parameter.templateId}}/variant",
              "method": "POST"
            }
          },
          "description": "Create a new variant from a template with layer overrides"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a variant",
          "routing": {
            "request": {
              "url": "=/template/{{$parameter.templateId}}/variant/{{$parameter.variantId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a variant"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a variant",
          "routing": {
            "request": {
              "url": "=/template/{{$parameter.templateId}}/variant/{{$parameter.variantId}}",
              "method": "GET"
            }
          },
          "description": "Retrieve a variant by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many variants",
          "routing": {
            "request": {
              "url": "=/template/{{$parameter.templateId}}/variants",
              "method": "GET"
            }
          },
          "description": "Retrieve a list of variants for a template"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "variant"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a template",
      "routing": {
        "request": {
          "url": "/template",
          "method": "POST"
        }
      },
      "description": "Create a new template from a Canva design URL"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a template",
      "routing": {
        "request": {
          "url": "=/template/{{$parameter.templateId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a template"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a template",
      "routing": {
        "request": {
          "url": "=/template/{{$parameter.templateId}}",
          "method": "GET"
        }
      },
      "description": "Retrieve a template by ID with all its layers"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many templates",
      "routing": {
        "request": {
          "url": "/templates",
          "method": "GET"
        }
      },
      "description": "Retrieve a list of templates for the current user"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a variant",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/template/{{$parameter.templateId}}/variant",
          "method": "POST"
        }
      },
      "description": "Create a new variant from a template with layer overrides"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a variant",
      "routing": {
        "request": {
          "url": "=/template/{{$parameter.templateId}}/variant/{{$parameter.variantId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a variant"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a variant",
      "routing": {
        "request": {
          "url": "=/template/{{$parameter.templateId}}/variant/{{$parameter.variantId}}",
          "method": "GET"
        }
      },
      "description": "Retrieve a variant by ID"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many variants",
      "routing": {
        "request": {
          "url": "=/template/{{$parameter.templateId}}/variants",
          "method": "GET"
        }
      },
      "description": "Retrieve a list of variants for a template"
    }
  ]

npm_readme:
  # n8n-nodes-layerre

  This is an n8n community node for [Layerre](https://layerre.com) - a platform for creating templates and variants from Canva designs.

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

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials)  
  [Usage](#usage)  
  [Contributing](#contributing)  
  [License](#license)

  ## Installation

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

  ```bash
  npm install n8n-nodes-layerre
  ```

  ## Operations

  ### Template

  - **Create** - Create a new template from a Canva design URL
  - **Get** - Get a template by ID with all its layers
  - **Get Many** - List all templates for the current user
  - **Delete** - Delete a template

  ### Variant

  - **Create** - Create a new variant with layer overrides (text, images, colors, positions, etc.)
  - **Get** - Get a variant by ID
  - **Get Many** - List all variants for a template
  - **Delete** - Delete a variant

  ## Credentials

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

  1. Log in to your [Layerre account](https://layerre.com/app)
  2. Go to API Keys
  3. Create a new API key
  4. Copy the key (starts with `lyr_`)

  In n8n:
  1. Go to Credentials → Add Credential
  2. Search for "Layerre API"
  3. Paste your API key

  ## Usage

  ### Creating a Template from Canva

  1. Add the **Layerre** node to your workflow
  2. Select **Template** as the resource
  3. Select **Create** as the operation
  4. Paste your Canva share URL (e.g., `https://www.canva.com/design/...`)
  5. Execute the node

  The node will return the template with all extracted layers.

  ### Creating a Variant with Overrides

  1. Add the **Layerre** node to your workflow
  2. Select **Variant** as the resource
  3. Select **Create** as the operation
  4. Choose a template from the dropdown (dynamically loaded from your account)
  5. (Optional) Set variant dimensions (width/height) to override the template size
  6. Add layer overrides:
     - Select a layer from the dropdown (dynamically loaded from the selected template)
     - Configure override options:
       - **Text layers**: text content, color, font name, font size, font weight, italic, underline, text align, letter spacing, line spacing
       - **Image layers**: image URL, opacity, flip horizontal/vertical
       - **All layers**: position (x, y), size (width, height), rotation, color
  7. Execute the node

  The node will render the variant and return the image URL.

  ### Example: Bulk Image Generation

  ```
  [Spreadsheet] → [Loop Over Items] → [Layerre: Create Variant] → [Download Image]
  ```

  Use data from a spreadsheet to create personalized images at scale by mapping columns to layer overrides.

  ## Contributing

  Contributions are welcome! Here's how to get started:

  ### Development Setup

  1. Fork the repository on GitHub

  2. Clone your fork:
     ```bash
     git clone https://github.com/YOUR_USERNAME/n8n-nodes-layerre.git
     cd n8n-nodes-layerre
     ```

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

  4. Install n8n globally:
     ```bash
     npm install n8n -g
     ```

  5. Start development mode (runs n8n with the node loaded):
     ```bash
     npm run dev
     ```

  5. Make your changes and test in the n8n UI

  ### Building

  ```bash
  npm run build
  ```

  ### Linting

  ```bash
  npm run lint
  npm run lint:fix  # Auto-fix issues
  ```

  ### Submitting Changes

  1. Create a feature branch (`git checkout -b feature/amazing-feature`)
  3. Commit your changes (`git commit -m 'Add amazing feature'`)
  4. Push to the branch (`git push origin feature/amazing-feature`)
  5. Open a Pull Request

  ## Resources

  - [Layerre Documentation](https://layerre.com/docs)
  - [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"This n8n node automates the creation of Canva design templates and their variants using the Layerre platform, enabling bulk image generation with customizable text, images, and layout properties.","capabilities":["Create templates from Canva design URLs","Retrieve templates by ID or list all user templates","Delete templates","Create variants with layer overrides (text, images, colors, positions)","Retrieve variants by ID or list all variants for a template","Delete variants","Override text properties (content, color, font, size, weight, italics, alignment, spacing)","Override image properties (URL, opacity, flip)","Override all layer properties (position, size, rotation, color)","Support for bulk image generation via spreadsheet data"],"authentication":"API key required (Layerre API key starting with 'lyr_')","commonUseCases":["Bulk personalized image generation from Canva templates","A/B testing with design variants","Automated marketing asset creation with dynamic content","Template management and versioning"],"limitations":["Requires a paid Layerre account with API access","Canva design URL must be publicly accessible or shareable","Limited to Layerre-supported Canva design features"],"relatedNodes":["n8n-nodes-canva.canva","n8n-nodes-spreadsheet.spreadsheet","n8n-nodes-download-image.download-image","n8n-nodes-loop-over-items.loop-over-items"]}


node_type: @promptlayer/n8n-nodes-promptlayer-runagent.promptLayerRunAgent
package_name: @promptlayer/n8n-nodes-promptlayer-runagent
display_name: PromptLayer Run Agent
description: Run an Agent from the PromptLayer API
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: jpedoeem
author_github_url: https://github.com/MagnivOrg/n8n-node.git
npm_package_name: @promptlayer/n8n-nodes-promptlayer-runagent
npm_version: 0.1.9
community_fetched_at: 2026-03-25T21:19:40.998Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # PromptLayer RunAgent Node for n8n

  This package provides a custom n8n node for running [PromptLayer Agents](https://promptlayer.com/) directly from your n8n workflows. The **PromptLayer RunAgent** node allows you to execute PromptLayer Agents, pass input variables, select agent versions or labels, and retrieve results programmatically.

  ---

  ## Features

  - **Run any PromptLayer Agent** by name from your n8n workflow
  - **Select agent version** by number or label
  - **Pass input variables** as JSON
  - **Attach metadata** to executions
  - **Control output** (return all outputs or just the main one)
  - **Timeout handling** for long-running agents
  - **Credential-based authentication**

  ---

  ## Prerequisites

  - [n8n](https://n8n.io/) installed (Node.js 20+ required)
  - A [PromptLayer](https://promptlayer.com/) account and API key

  ---

  ## Installation

  1. Clone or download this repository into your n8n custom nodes directory.
  2. Install dependencies:
     ```bash
     npm install
     ```
  3. Build the node:
     ```bash
     npm run build
     ```
  4. [Register the custom node with n8n](https://docs.n8n.io/integrations/creating-nodes/build/node-development-environment/#load-custom-nodes) if needed.

  ---

  ## Configuration

  ### Setting up Credentials

  1. In n8n, go to **Credentials**.
  2. Create new credentials for **PromptLayerRunAgentApi**.
  3. Enter your PromptLayer API key.

  ---

  ## Usage

  1. Add the **PromptLayer RunAgent** node to your workflow.
  2. Configure the following fields:
     - **Agent Name**: Select the name of the agent to run.
     - **Use Agent Label Name**: Toggle to use a label instead of a version number.
     - **Agent Version Number**: (Optional) Specify a version number (if not using label). By default the latest version of the agent is used.
     - **Agent Label Name**: (Optional) Specify a label name (if using label). By default the latest version of the agent is used.
     - **Input Variables**: JSON object of variables required by the agent (e.g., `{ "question": "What is the weather?" }`).
     - **Additional Fields**:
       - **Metadata**: (Optional) JSON object of metadata to attach.
       - **Return All Outputs**: (Optional) Return all outputs from the agent.
       - **Timeout**: (Optional) Maximum wait time in minutes (default: 10).
  3. Connect the node as needed in your workflow.
  4. Run the workflow. The node will execute the agent and return the results.

  ---

  ## Example

  Suppose you have a PromptLayer agent named `weatherAgent` that takes a `location` variable:

  - **Agent Name**: `weatherAgent`
  - **Input Variables**: `{ "location": "London" }`
  - **Return All Outputs**: `false`

  The node will execute the agent and return the weather information for London.

  ---

  ## Troubleshooting

  - Ensure your PromptLayer API key is correct and has access to the agent.
  - Input variables and metadata must be valid JSON.
  - If the agent takes too long, increase the timeout in Additional Fields.

ai_documentation_summary:
  {"purpose":"Executes PromptLayer Agents from within n8n workflows by sending input variables and retrieving results programmatically.","capabilities":["Run agents by name","Select agent versions by number or label","Pass input variables as JSON","Attach metadata to executions","Control output selection (all outputs or main output only)","Handle timeouts for long-running agents"],"authentication":"API key required","commonUseCases":["Integrating PromptLayer agents into automated n8n workflows","Retrieving agent outputs for further processing","Testing agent performance with custom inputs"],"limitations":["Requires manual installation and building of the custom node in n8n"],"relatedNodes":["n8n Credentials node","n8n HTTP Request node"]}


node_type: n8n-nodes-deapi.deapi
package_name: n8n-nodes-deapi
display_name: deAPI
description: Generate images, videos, transcribe audio and boost prompts using deAPI AI models
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: deapi
author_github_url: https://github.com/deapi-ai/
npm_package_name: n8n-nodes-deapi
npm_version: 0.2.0
community_fetched_at: 2026-03-25T21:19:40.999Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "image",
      "options": [
        {
          "name": "Image",
          "value": "image"
        },
        {
          "name": "Video",
          "value": "video"
        },
        {
          "name": "Audio",
          "value": "audio"
        },
        {
          "name": "Prompt",
          "value": "prompt"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate an Image",
          "value": "generate",
          "action": "Generate an image",
          "description": "Generates an image from a text prompt"
        },
        {
          "name": "Remove Background",
          "value": "removeBackground",
          "action": "Remove background",
          "description": "Remove the background from an image"
        },
        {
          "name": "Upscale an Image",
          "value": "upscale",
          "action": "Upscale an image",
          "description": "Increase an image resolution x4"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate a Video",
          "value": "generate",
          "action": "Generate a video",
          "description": "Generates a video from text prompt or image(s)"
        },
        {
          "name": "Generate From Audio",
          "value": "generateFromAudio",
          "action": "Generate from audio",
          "description": "Generates a video conditioned on an audio file and text prompt"
        },
        {
          "name": "Transcribe a Video",
          "value": "transcribe",
          "action": "Transcribe a video",
          "description": "Transcribes audio from a video to text"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "video"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "cloneVoice",
      "options": [
        {
          "name": "Clone a Voice",
          "value": "cloneVoice",
          "action": "Clone a voice",
          "description": "Clones a voice from a reference audio and generates speech"
        },
        {
          "name": "Generate a Speech",
          "value": "generateSpeech",
          "action": "Generate a speech",
          "description": "Converts text to speech audio"
        },
        {
          "name": "Transcribe an Audio",
          "value": "transcribe",
          "action": "Transcribe an audio",
          "description": "Transcribes an audio file to text"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "audio"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "boostImage",
      "options": [
        {
          "name": "Image Prompt Booster",
          "value": "boostImage",
          "action": "Image prompt booster",
          "description": "Optimizes a prompt for text-to-image generation"
        },
        {
          "name": "Video Prompt Booster",
          "value": "boostVideo",
          "action": "Video prompt booster",
          "description": "Optimizes a prompt for text-image-to-video generation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "prompt"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate an Image",
      "value": "generate",
      "action": "Generate an image",
      "description": "Generates an image from a text prompt"
    },
    {
      "name": "Remove Background",
      "value": "removeBackground",
      "action": "Remove background",
      "description": "Remove the background from an image"
    },
    {
      "name": "Upscale an Image",
      "value": "upscale",
      "action": "Upscale an image",
      "description": "Increase an image resolution x4"
    },
    {
      "name": "Generate a Video",
      "value": "generate",
      "action": "Generate a video",
      "description": "Generates a video from text prompt or image(s)"
    },
    {
      "name": "Generate From Audio",
      "value": "generateFromAudio",
      "action": "Generate from audio",
      "description": "Generates a video conditioned on an audio file and text prompt"
    },
    {
      "name": "Transcribe a Video",
      "value": "transcribe",
      "action": "Transcribe a video",
      "description": "Transcribes audio from a video to text"
    },
    {
      "name": "Clone a Voice",
      "value": "cloneVoice",
      "action": "Clone a voice",
      "description": "Clones a voice from a reference audio and generates speech"
    },
    {
      "name": "Generate a Speech",
      "value": "generateSpeech",
      "action": "Generate a speech",
      "description": "Converts text to speech audio"
    },
    {
      "name": "Transcribe an Audio",
      "value": "transcribe",
      "action": "Transcribe an audio",
      "description": "Transcribes an audio file to text"
    },
    {
      "name": "Image Prompt Booster",
      "value": "boostImage",
      "action": "Image prompt booster",
      "description": "Optimizes a prompt for text-to-image generation"
    },
    {
      "name": "Video Prompt Booster",
      "value": "boostVideo",
      "action": "Video prompt booster",
      "description": "Optimizes a prompt for text-image-to-video generation"
    }
  ]

npm_readme:
  ![Banner image](https://github.com/user-attachments/assets/398eeb5d-cbf7-452c-96ae-825850c32730)

  # n8n-nodes-deapi

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

  This is an n8n community node that lets you use [deAPI](https://deapi.ai/) in your n8n workflows.

  deAPI is a unified API platform providing instant access to open-source AI models (FLUX, LTX Video, Whisper and more) through a decentralized GPU network. One API key to access thousands of GPUs with up to 20x lower costs.

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

  ## Installation

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

  ## Credentials

  To use this node, you need to configure the following credentials:

  | Field | Description |
  |-------|-------------|
  | **API Key** | Your deAPI API key. Get it from the [deAPI Quickstart Guide](https://docs.deapi.ai/quickstart#2-obtain-your-api-key). |
  | **Webhook Secret** | Secret used to verify webhook signatures. Configure it at [deAPI Webhook Settings](https://deapi.ai/settings/webhooks). |

  ## Operations

  ### Image

  | Operation | Description | Models |
  |-----------|-------------|--------|
  | **Generate** | Generate an image from a text prompt | FLUX.1 Schnell, FLUX.2 Klein 4B, Z-Image Turbo |
  | **Remove Background** | Remove the background from an image | Ben2 |
  | **Upscale** | Increase image resolution by 4x | RealESRGAN x4 |

  ### Video

  | Operation | Description | Models |
  |-----------|-------------|--------|
  | **Generate** | Generate a video from text or image(s) | LTX-Video 0.9.8, LTX-2 19B, LTX-2.3 22B |
  | **Generate From Audio** | Generate a video conditioned on an audio file and text prompt | LTX-2 22B |
  | **Transcribe** | Transcribe video to text (YouTube, Twitch, X, Kick URLs or file upload) | Whisper Large V3 |

  ### Audio

  | Operation | Description | Models |
  |-----------|-------------|--------|
  | **Clone a Voice** | Clone a voice from a reference audio and generate speech | Qwen3 TTS VoiceClone |
  | **Generate a Speech** | Convert text to speech audio | Kokoro, Chatterbox, Qwen3 TTS Custom Voice, Qwen3 TTS Voice Design |
  | **Transcribe** | Transcribe audio file to text | Whisper Large V3 |

  ### Prompt

  | Operation | Description |
  |-----------|-------------|
  | **Image Prompt Booster** | Optimize a prompt for text-to-image generation |
  | **Video Prompt Booster** | Optimize a prompt for text/image-to-video generation |

  ## How It Works

  Generation operations (image, video, transcription) use a webhook-based waiting pattern:

  1. The node submits a generation request to deAPI with a webhook URL
  2. The workflow pauses while deAPI processes the request
  3. When deAPI completes the job, it sends a webhook notification
  4. The workflow resumes with the generated content (binary file or text)

  This approach ensures efficient resource usage - the workflow doesn't actively poll for results.

  ## Compatibility

  - Tested with n8n version 2.3.4
  - Webhook-based operations require n8n to be accessible via HTTPS

  ## Example Workflow

  An example n8n workflow demonstrating all available operations is included in [`examples/deAPI_guide.json`](examples/deAPI_guide.json). Import it into your n8n instance to get started quickly:

  1. Download [`deAPI_guide.json`](https://raw.githubusercontent.com/deapi-ai/n8n-nodes-deapi/main/examples/deAPI_guide.json) from the GitHub repository
  2. In n8n, go to **Workflows** > **Import from File**
  3. Select the downloaded `deAPI_guide.json`
  4. Set up your deAPI credentials (API Key + Webhook Secret)
  5. Explore the example nodes and sticky notes for usage instructions

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [deAPI Documentation](https://docs.deapi.ai/)
  - [deAPI Website](https://deapi.ai/)
  - [GitHub Repository](https://github.com/deapi-ai/n8n-nodes-deapi)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"This n8n community node integrates deAPI AI models into workflows, enabling image/video generation, audio transcription, voice cloning, and prompt optimization.","capabilities":["Generate images from text prompts (FLUX.1, Z-Image Turbo)","Remove image backgrounds (Ben2)","Upscale images (RealESRGAN x4)","Generate videos from text or images (LTX-Video, LTX-2)","Generate videos from audio and text","Transcribe video to text (YouTube, Twitch, X, Kick, files)","Transcribe audio files to text","Clone voices for text-to-speech (Qwen3 TTS)","Generate speech from text (Kokoro, Chatterbox, Qwen3 TTS)","Boost image generation prompts"],"authentication":"API Key required (deAPI API key) and Webhook Secret (for webhook verification)","commonUseCases":["Automated content creation for social media","Video content generation from scripts or audio","Audio transcription for content analysis","Voice cloning for personalized audio","Image upscaling and background removal"],"limitations":["Requires n8n to be accessible via HTTPS for webhook-based operations","Uses webhook-based waiting pattern which pauses workflow during generation","Tested only with n8n version 2.3.4"],"relatedNodes":["n8n-nodes-http.request","n8n-nodes-binary.binary","n8n-nodes-webhook.webhook"]}


node_type: n8n-nodes-taddy.taddyApi
package_name: n8n-nodes-taddy
display_name: Taddy API
description: Interact with Taddy Podcast API - Search 4M+ podcasts and 180M+ episodes
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: jksr194
author_github_url: https://github.com/Julian194/n8n-taddy.git
npm_package_name: n8n-nodes-taddy
npm_version: 0.1.2
community_fetched_at: 2026-03-25T21:19:40.999Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Episode",
          "value": "episode"
        },
        {
          "name": "Latest Episode",
          "value": "latest"
        },
        {
          "name": "Podcast",
          "value": "podcast"
        },
        {
          "name": "Popular Content",
          "value": "popular"
        },
        {
          "name": "Search",
          "value": "search"
        },
        {
          "name": "Top Chart",
          "value": "topCharts"
        },
        {
          "name": "Transcript",
          "value": "transcript"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "searchContent",
      "options": [
        {
          "name": "Search",
          "value": "searchContent",
          "action": "Search podcasts and episodes",
          "description": "Search across podcasts, episodes, comics, and creators"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getDetails",
      "options": [
        {
          "name": "Get",
          "value": "getDetails",
          "action": "Get a podcast",
          "description": "Get detailed information about a specific podcast"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "podcast"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getDetails",
      "options": [
        {
          "name": "Get",
          "value": "getDetails",
          "action": "Get an episode",
          "description": "Get detailed information about a specific episode"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "episode"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getPopular",
      "options": [
        {
          "name": "Get",
          "value": "getPopular",
          "action": "Get popular podcasts",
          "description": "Get popular/trending podcasts"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "popular"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getLatest",
      "options": [
        {
          "name": "Get",
          "value": "getLatest",
          "action": "Get latest episodes",
          "description": "Get latest episodes from multiple podcasts"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "latest"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getTranscript",
      "options": [
        {
          "name": "Get",
          "value": "getTranscript",
          "action": "Get a transcript",
          "description": "Get transcript for a specific episode"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transcript"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getByCountry",
      "options": [
        {
          "name": "Get by Country",
          "value": "getByCountry",
          "action": "Get top charts by country",
          "description": "Get Apple Podcasts top charts by country"
        },
        {
          "name": "Get by Genre",
          "value": "getByGenres",
          "action": "Get top charts by genre",
          "description": "Get Apple Podcasts top charts by genre"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "topCharts"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Search",
      "value": "searchContent",
      "action": "Search podcasts and episodes",
      "description": "Search across podcasts, episodes, comics, and creators"
    },
    {
      "name": "Get",
      "value": "getDetails",
      "action": "Get a podcast",
      "description": "Get detailed information about a specific podcast"
    },
    {
      "name": "Get",
      "value": "getDetails",
      "action": "Get an episode",
      "description": "Get detailed information about a specific episode"
    },
    {
      "name": "Get",
      "value": "getPopular",
      "action": "Get popular podcasts",
      "description": "Get popular/trending podcasts"
    },
    {
      "name": "Get",
      "value": "getLatest",
      "action": "Get latest episodes",
      "description": "Get latest episodes from multiple podcasts"
    },
    {
      "name": "Get",
      "value": "getTranscript",
      "action": "Get a transcript",
      "description": "Get transcript for a specific episode"
    },
    {
      "name": "Get by Country",
      "value": "getByCountry",
      "action": "Get top charts by country",
      "description": "Get Apple Podcasts top charts by country"
    },
    {
      "name": "Get by Genre",
      "value": "getByGenres",
      "action": "Get top charts by genre",
      "description": "Get Apple Podcasts top charts by genre"
    }
  ]

npm_readme:
  # n8n-nodes-taddy

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

  Taddy provides access to over 4 million podcasts and 180+ million episodes through a comprehensive GraphQL API. Search for podcast content, get detailed podcast and episode information, discover popular content, find latest episodes, and access transcripts.

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

  Community package name: `n8n-nodes-taddy`

  ## Operations

  ### Search Content
  - **Full-text search** across podcasts and episodes with advanced filtering
  - **Field selection** - Choose which data fields to include in results
  - **Content type filtering** - Search podcasts, episodes, or both
  - **Advanced filters** - Language, country, genre, date ranges, duration, and more
  - **Exclude terms** - Exclude specific terms from search results
  - **Sorting options** - Sort by popularity or exactness
  - **Match types** - Exact phrase, all terms, or most terms matching

  ### Podcast Details
  - Get detailed podcast information by UUID, name, iTunes ID, or RSS URL
  - Includes episode list, metadata, genres, and statistics

  ### Episode Details
  - Get detailed episode information by UUID, GUID, or name
  - Includes podcast series information, transcript data, and chapters

  ### Popular Content
  - Discover trending podcasts with optional language and genre filtering
  - Pagination support for browsing popular content

  ### Latest Episodes
  - Get recent episodes from specific podcasts or RSS feeds
  - Filter by podcast UUIDs or RSS URLs with pagination

  ### Transcript
  - Retrieve episode transcripts in multiple formats (text, SRT, VTT, JSON)
  - Support for on-demand transcript generation

  ### Top Charts
  - Get Apple Podcasts top charts by country with filtering options
  - Get top charts by genre with optional country filtering
  - Support for both podcast series and episode content types

  ## Credentials

  To use this node, you need to authenticate with the Taddy API:

  ### Prerequisites
  1. Sign up for a Taddy API account at [taddy.org](https://taddy.org)
  2. Obtain your API credentials from the Taddy dashboard

  ### Setting up credentials in n8n
  1. In n8n, go to **Settings** > **Credentials**
  2. Click **Create New** and search for "Taddy API"
  3. Enter your credentials:
     - **X-USER-ID**: Your Taddy user identifier
     - **X-API-KEY**: Your Taddy API key
  4. Test the connection and save

  ### Authentication Method
  The node uses header-based authentication, automatically adding the required `X-USER-ID` and `X-API-KEY` headers to all API requests.

  ## Compatibility

  - **Minimum n8n version**: 0.174.0
  - **Tested with**: n8n 0.174.0 - 1.0.0+
  - **Node.js version**: 16+ (matches n8n requirements)

  This node follows n8n community node standards and should be compatible with all modern n8n versions.

  ## Usage

  ### Basic Search Example
  1. Add the Taddy API node to your workflow
  2. Select **Search Content** operation
  3. Enter a search term (e.g., "technology podcasts")
  4. Configure optional filters like language or date range
  5. Choose which fields to include in the response
  6. Execute to get search results with metadata

  ### Working with Results
  - **Search results** include pagination metadata as the first item for easy access to `totalCount` and `pagesCount`
  - **Episode results** automatically include podcast series information (name, UUID) by default
  - **Field selection** is content-type aware - episode-only fields are filtered out for podcast searches

  ### Advanced Features
  - **Exclude terms**: Use the dedicated "Exclude Terms" field to filter out unwanted content
  - **Response fields**: Select only the data fields you need to optimize response size
  - **Pagination**: Use the metadata from search results to implement pagination workflows
  - **Date filtering**: Supports precise date ranges with automatic epoch timestamp conversion

  ### Common Workflows
  - **Content Discovery**: Search → Filter → Extract podcast information for subscriptions
  - **Content Analysis**: Search with transcripts → Get transcript → Analyze content
  - **Monitoring**: Search for specific topics → Check for new episodes → Send notifications
  - **Trend Analysis**: Get top charts by country/genre → Track popular podcast trends

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Taddy API Documentation](https://taddy.org) - Official API documentation and guides
  * [GraphQL API Reference](https://taddy.org/developers/graphql) - Complete API schema and examples
  * [Node Testing Guide](./docs/testing-guide.md) - Comprehensive testing procedures for this node

  ## Version History


  ### 0.1.2 (2025-07-29)
  - Repository Url fixed

  ### 0.1.1 (2025-07-29)
  - n8n guidelines checklist
  ### 0.1.0 (Initial Release)
  - Full Taddy API integration with 7 resource types
  - Advanced search with field selection and filtering
  - Podcast and episode detail operations
  - Popular content discovery
  - Latest episodes retrieval
  - Transcript access with multiple formats
  - Top charts by country and genre
  - Comprehensive error handling and validation
  - Production-ready with extensive testing coverage

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Taddy Podcast API to search millions of podcasts and episodes, retrieve detailed content information, access transcripts, and discover trending content.","capabilities":["Full-text search across podcasts and episodes with advanced filtering","Field selection to optimize response data","Search by content type (podcast, episode, or both)","Filter by language, country, genre, date ranges, and duration","Exclude specific terms from search results","Sort results by popularity or exactness","Retrieve podcast details by UUID, name, iTunes ID, or RSS URL","Retrieve episode details including transcripts and chapters","Discover trending podcasts with pagination","Retrieve latest episodes from podcasts or RSS feeds"],"authentication":"API key required (X-USER-ID and X-API-KEY headers)","commonUseCases":["Content discovery and podcast subscription management","Content analysis using episode transcripts","Monitoring new episodes for specific topics","Trend analysis of popular podcast content"],"limitations":["Community node (not official n8n node)","Requires separate Taddy API account and credentials"],"relatedNodes":["n8n-nodes-webhook","n8n-nodes-http-request","n8n-nodes-ai-text-to-speech"]}


node_type: @fibery/n8n-nodes-fibery.fibery
package_name: @fibery/n8n-nodes-fibery
display_name: Fibery
description: Read, update, write and delete data from Fibery
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:41
author_name: gaswelder
author_github_url: https://github.com/Fibery-inc/n8n-nodes-fibery.git
npm_package_name: @fibery/n8n-nodes-fibery
npm_version: 0.1.19
community_fetched_at: 2026-03-25T21:19:41.000Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "entity",
      "options": [
        {
          "name": "Database",
          "value": "database"
        },
        {
          "name": "Entity",
          "value": "entity"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many databases",
          "description": "Get many databases from the workspace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "database"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an entity",
          "description": "Create a new entity"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an entity",
          "description": "Delete an entity"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an entity",
          "description": "Get an entity"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many entities",
          "description": "Get many entities from a database"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an entity",
          "description": "Update an entity"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "entity"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many databases",
      "description": "Get many databases from the workspace"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an entity",
      "description": "Create a new entity"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an entity",
      "description": "Delete an entity"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an entity",
      "description": "Get an entity"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many entities",
      "description": "Get many entities from a database"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an entity",
      "description": "Update an entity"
    }
  ]

npm_readme:
  # n8n-nodes-fibery

  ![Fibery x n8n](./fibery-x-n8n.png)

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

  Fibery is your company’s operating system
  It's a work platform that replaces scattered tools and connects teams. Chosen by nerds, appreciated by everyone (almost).

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

  1. Go to **Settings** > **Community Nodes**.
  2. Select **Install**.
  3. Enter `@fibery/n8n-nodes-fibery` in **npm Package name**.
  4. Agree to the [risks](https://docs.n8n.io/integrations/community-nodes/risks/) of using community nodes: select **I understand the risks of installing unverified code from a public source**.
  5. Select **Install**.

  ## Operations

  ### Database

  - **get many**. List all databases in the workspace.

  ### Entity

  - **create**. Create a new entity.
  - **delete**. Delete an entity.
  - **get**. Get an entity.s
  - **get many**. Search and list entities from a database.
  - **update**. Update an entity.

  ### Triggers

  - **default**. Handle Fibery events to Database from webhooks.

  ## Credentials

  At the moment this node supports only one authentication method: **API Key**.

  ### Using API Key

  1. Enter the name of your Fibery workspace in the **Workspace** field. It can be obtained from the URL of your workspace. For example, if your workspace URL is `https://my-company.fibery.io`, then the workspace name is `my-company`.
  2. Obtain an API key from your Fibery workspace. Please follow the [Fibery API keys](https://the.fibery.io/@public/User_Guide/Guide/Fibery-API-keys-252) guide.
  3. Enter API key in the **API Key** field.

  ## Compatibility

  Tested on: 1.111.0

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Fibery](https://www.fibery.io/)
  - [Fibery API documentation](https://the.fibery.io/@public/User_Guide/Guide/Fibery-API-overview-279)

ai_documentation_summary:
  {"purpose":"This n8n community node enables full CRUD operations (create, read, update, delete) on Fibery entities and databases within automation workflows.","capabilities":["Create new entities","Delete entities","Retrieve single entities","Search and list multiple entities from databases","Update existing entities","List all databases in a workspace","Handle Fibery events via webhooks"],"authentication":"API Key","commonUseCases":["Automating data entry into Fibery workspaces","Syncing external data sources to Fibery","Triggering workflows based on Fibery events","Updating records based on conditional logic"],"limitations":["Only supports API Key authentication method","Requires manual workspace name extraction from URL","Community node status may imply less official support than core nodes"],"relatedNodes":["n8n HTTP Request","n8n Webhook","n8n Code Node"]}


node_type: n8n-nodes-pagepixels-screenshots.pagePixelsScreenshots
package_name: n8n-nodes-pagepixels-screenshots
display_name: PagePixels Screenshots
description: Capture website screenshots using the PagePixels API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:41
author_name: pagepixels
author_github_url: https://github.com/PagePixels/
npm_package_name: n8n-nodes-pagepixels-screenshots
npm_version: 1.0.0
community_fetched_at: 2026-03-25T21:19:41.001Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "screenshot",
      "options": [
        {
          "name": "Screenshot",
          "value": "screenshot"
        },
        {
          "name": "Metadata",
          "value": "metadata"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "quickSnap",
      "options": [
        {
          "name": "AI Analysis Screenshot",
          "value": "aiAnalysisScreenshot",
          "action": "Take a screenshot and analyze it with AI",
          "routing": {
            "request": {
              "qs": {
                "analyze_image_with_ai": true
              },
              "url": "/snap",
              "method": "POST"
            }
          },
          "description": "Capture a web page screenshot and run AI analysis with a custom prompt"
        },
        {
          "name": "Quick Snap",
          "value": "quickSnap",
          "action": "Take a screenshot of a web page",
          "routing": {
            "request": {
              "url": "/snap",
              "method": "POST"
            }
          },
          "description": "Capture an instant screenshot from a URL"
        },
        {
          "name": "Real Location Screenshot",
          "value": "realLocationScreenshot",
          "action": "Capture a screenshot from a real geographic location",
          "routing": {
            "request": {
              "url": "/snap",
              "method": "POST"
            }
          },
          "description": "Capture screenshots using residential IPs within a chosen location"
        },
        {
          "name": "Snap HTML",
          "value": "snapHtml",
          "action": "Take a screenshot of custom HTML",
          "routing": {
            "request": {
              "url": "/snap_html",
              "method": "POST"
            }
          },
          "description": "Render supplied HTML and capture it as an image"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "screenshot"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listRealLocations",
      "options": [
        {
          "name": "List Real Locations",
          "value": "listRealLocations",
          "action": "List real locations",
          "routing": {
            "request": {
              "url": "/real_locations",
              "method": "GET"
            }
          },
          "description": "Retrieve the available residential proxy locations"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "metadata"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "AI Analysis Screenshot",
      "value": "aiAnalysisScreenshot",
      "action": "Take a screenshot and analyze it with AI",
      "routing": {
        "request": {
          "qs": {
            "analyze_image_with_ai": true
          },
          "url": "/snap",
          "method": "POST"
        }
      },
      "description": "Capture a web page screenshot and run AI analysis with a custom prompt"
    },
    {
      "name": "Quick Snap",
      "value": "quickSnap",
      "action": "Take a screenshot of a web page",
      "routing": {
        "request": {
          "url": "/snap",
          "method": "POST"
        }
      },
      "description": "Capture an instant screenshot from a URL"
    },
    {
      "name": "Real Location Screenshot",
      "value": "realLocationScreenshot",
      "action": "Capture a screenshot from a real geographic location",
      "routing": {
        "request": {
          "url": "/snap",
          "method": "POST"
        }
      },
      "description": "Capture screenshots using residential IPs within a chosen location"
    },
    {
      "name": "Snap HTML",
      "value": "snapHtml",
      "action": "Take a screenshot of custom HTML",
      "routing": {
        "request": {
          "url": "/snap_html",
          "method": "POST"
        }
      },
      "description": "Render supplied HTML and capture it as an image"
    },
    {
      "name": "List Real Locations",
      "value": "listRealLocations",
      "action": "List real locations",
      "routing": {
        "request": {
          "url": "/real_locations",
          "method": "GET"
        }
      },
      "description": "Retrieve the available residential proxy locations"
    }
  ]

npm_readme:
  # n8n-nodes-pagepixels-screenshots

  This n8n community node lets you trigger the PagePixels Screenshots API directly from your workflows. Capture high-fidelity website screenshots, render custom HTML, request real location captures (from countries and states around the world), and pair each image with AI-powered analysis, no custom HTTP node required.

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

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation, then install this package with:

  ```bash
  npm install n8n-nodes-pagepixels-screenshots
  ```

  Restart n8n and the node will appear in the editor.

  ## Operations

  All operations return the raw PagePixels response, including the screenshot asset URLs, embed links, job IDs, and AI metadata when available.

  - **Quick Snap** – Capture an instant screenshot from any public URL.
  - **Snap HTML** – Render supplied HTML (with optional CSS/JS injection) and capture the output.
  - **Real Location Screenshot** – Capture a page through PagePixels’ residential proxy network (countries, regions, and major cities).
  - **AI Analysis Screenshot** – Take a screenshot and run an AI visual analysis using your custom prompt.

  Each operation exposes the full set of optional PagePixels parameters — viewport size, wait conditions, multi-step actions, ad/cookie blocking, geolocation overrides, headers, cookies, caching, and more.

  ## Credentials

  Configure one of the two supported authentication strategies in n8n.

  ### API key

  1. Sign in to [PagePixels](https://pagepixels.com) and create an API key in the dashboard.
  2. Add the **PagePixels API** credential in n8n and paste the key.
  3. Leave “Use Bearer Prefix” enabled unless your key must be sent in plain text.
  4. (Optional) Provide extra headers in the node if you need to override the default `Authorization: Bearer` header.

  ### OAuth2

  1. Register an OAuth app by contacting support for production credentials.
  2. In n8n, create a **PagePixels OAuth2 API** credential.
  3. Use `https://pagepixels.com/oauth/authorize` as the authorization URL and `https://pagepixels.com/oauth/token` as the access token URL (defaults are pre-filled).
  4. Enter your client ID and client secret, then complete the OAuth handshake when prompted in a workflow.

  ## Compatibility

  Compatible with n8n v1.60.0 or later.

  ## Usage

  1. Drop the **PagePixels Screenshots** node into your workflow and select the desired operation.
  2. Choose the authentication method and credential.
  3. Provide the required fields (`URL`, `HTML Content`, `AI Prompt`, or `Proxy Location`, depending on the operation).
  4. Expand **Options** to set advanced rendering controls (multi-step actions, viewport, selectors, blocking flags, etc.).
  5. Execute the workflow to receive the screenshot metadata, including direct download links and analysis output.

  Tip: Chain the output into an **HTTP Request**, **Webhook**, or **Drive** node to archive images, notify teams, or trigger downstream automations.

  ## Resources

  - [PagePixels Screenshots API documentation](https://pagepixels.com/app/screenshots-api-documentation)
  - [PagePixels support](https://pagepixels.com/support)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)

ai_documentation_summary:
  {"purpose":"Captures high-fidelity website screenshots, renders custom HTML, performs real-world location captures, and generates AI-powered visual analysis directly from n8n workflows.","capabilities":["Quick Snap: Capture screenshots from public URLs","Snap HTML: Render custom HTML with optional CSS/JS injection","Real Location Screenshot: Capture pages via residential proxy network from specific countries/regions","AI Analysis Screenshot: Generate screenshots with custom AI visual analysis prompts","Custom viewport and size control","Multi-step actions and selectors","Ad and cookie blocking","Geolocation overrides","Custom headers and cookies","Caching support"],"authentication":"API key or OAuth2","commonUseCases":["Automated website monitoring and archiving","Product page visual analysis for e-commerce","Competitor landscape tracking with location-specific views","Generating visual reports with AI insights","Automated content rendering and testing"],"limitations":["Community node (not core n8n)","Requires external API key or OAuth2 setup","Requires n8n v1.60.0 or later","Real location captures require residential proxy network access"],"relatedNodes":["HTTP Request","Webhook","Google Drive","File Node"]}


node_type: n8n-nodes-linked-api.linkedApi
package_name: n8n-nodes-linked-api
display_name: Linked API
description: Control your LinkedIn accounts and retrieve real-time data.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:41
author_name: linked-api
author_github_url: https://github.com/Linked-API/
npm_package_name: n8n-nodes-linked-api
npm_version: 1.0.4
community_fetched_at: 2026-03-25T21:19:41.001Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "standard",
      "options": [
        {
          "name": "Standard Interface",
          "value": "standard"
        },
        {
          "name": "Sales Navigator",
          "value": "salesNavigator"
        },
        {
          "name": "Other",
          "value": "other"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "searchCompanies",
      "options": [
        {
          "name": "Check Connection Status",
          "value": "checkConnectionStatus",
          "action": "Check connection status",
          "description": "Check the connection status between your account and another person"
        },
        {
          "name": "Comment on Post",
          "value": "commentOnPost",
          "action": "Comment on post",
          "description": "Leave a comment on a LinkedIn post"
        },
        {
          "name": "Create Post",
          "value": "createPost",
          "action": "Create post",
          "description": "Create a new LinkedIn post"
        },
        {
          "name": "Fetch Company",
          "value": "fetchCompany",
          "action": "Fetch company",
          "description": "Fetch detailed information about a LinkedIn company"
        },
        {
          "name": "Fetch Person",
          "value": "fetchPerson",
          "action": "Fetch person",
          "description": "Fetch detailed information about a LinkedIn person"
        },
        {
          "name": "Fetch Post",
          "value": "fetchPost",
          "action": "Fetch post",
          "description": "Retrieve detailed information about a LinkedIn post"
        },
        {
          "name": "React to Post",
          "value": "reactToPost",
          "action": "React to post",
          "description": "React to a LinkedIn post with like, celebrate, support, love, insightful, or funny"
        },
        {
          "name": "Remove Connection",
          "value": "removeConnection",
          "action": "Remove connection",
          "description": "Remove a person from your connections"
        },
        {
          "name": "Retrieve Connections",
          "value": "retrieveConnections",
          "action": "Retrieve connections",
          "description": "Retrieve your connections with optional filtering"
        },
        {
          "name": "Retrieve Pending Requests",
          "value": "retrievePendingRequests",
          "action": "Retrieve pending requests",
          "description": "Retrieve pending connection requests sent from your account"
        },
        {
          "name": "Retrieve Performance",
          "value": "retrievePerformance",
          "action": "Retrieve performance",
          "description": "Retrieve performance analytics from your LinkedIn dashboard"
        },
        {
          "name": "Retrieve SSI",
          "value": "retrieveSSI",
          "action": "Retrieve SSI",
          "description": "Retrieve your current Social Selling Index (SSI) score"
        },
        {
          "name": "Search Companies",
          "value": "searchCompanies",
          "action": "Search companies",
          "description": "Search for companies on LinkedIn"
        },
        {
          "name": "Search People",
          "value": "searchPeople",
          "action": "Search people",
          "description": "Search for people on LinkedIn"
        },
        {
          "name": "Send Connection Request",
          "value": "sendConnectionRequest",
          "action": "Send connection request",
          "description": "Send a connection request to a person"
        },
        {
          "name": "Send Message",
          "value": "sendMessage",
          "action": "Send message",
          "description": "Send a message to a LinkedIn person"
        },
        {
          "name": "Sync Conversation",
          "value": "syncConversation",
          "action": "Sync conversation",
          "description": "Sync a conversation so you can start polling it for new messages"
        },
        {
          "name": "Withdraw Connection Request",
          "value": "withdrawConnectionRequest",
          "action": "Withdraw connection request",
          "description": "Withdraw a connection request sent to a person"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "standard"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "nvSearchCompanies",
      "options": [
        {
          "name": "Fetch Company in Sales Navigator",
          "value": "nvFetchCompany",
          "action": "Fetch company in Sales Navigator",
          "description": "Fetch detailed information about a company in Sales Navigator"
        },
        {
          "name": "Fetch Person in Sales Navigator",
          "value": "nvFetchPerson",
          "action": "Fetch person in Sales Navigator",
          "description": "Fetch detailed information about a person in Sales Navigator"
        },
        {
          "name": "Search Companies in Sales Navigator",
          "value": "nvSearchCompanies",
          "action": "Search companies in Sales Navigator",
          "description": "Search for companies in Sales Navigator"
        },
        {
          "name": "Search People in Sales Navigator",
          "value": "nvSearchPeople",
          "action": "Search people in Sales Navigator",
          "description": "Search for people in Sales Navigator"
        },
        {
          "name": "Send Message in Sales Navigator",
          "value": "nvSendMessage",
          "action": "Send message in Sales Navigator",
          "description": "Send a message to a person in Sales Navigator"
        },
        {
          "name": "Sync Conversation in Sales Navigator",
          "value": "nvSyncConversation",
          "action": "Sync conversation in Sales Navigator",
          "description": "Sync a conversation in Sales Navigator so you can start polling it"
        }
      ],
      "displayName": "Operations",
      "displayOptions": {
        "show": {
          "resource": [
            "salesNavigator"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "customWorkflow",
      "options": [
        {
          "name": "Custom Workflow",
          "value": "customWorkflow",
          "action": "Execute custom workflow",
          "description": "Execute a custom multi-step workflow using raw workflow definition"
        },
        {
          "name": "Get Workflow Result",
          "value": "getWorkflowResult",
          "action": "Get workflow result",
          "description": "Get the result of workflow execution"
        },
        {
          "name": "Cancel Workflow",
          "value": "cancelWorkflow",
          "action": "Cancel workflow",
          "description": "Cancel a running workflow execution"
        },
        {
          "name": "Poll Conversations",
          "value": "pollConversations",
          "action": "Poll conversations",
          "description": "Poll multiple conversations for new messages"
        },
        {
          "name": "Actions Usage Statistics",
          "value": "actionsUsageStatistics",
          "action": "Get actions statistics",
          "description": "Get actions usage statistics for a date range"
        }
      ],
      "displayName": "Operations",
      "displayOptions": {
        "show": {
          "resource": [
            "other"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Check Connection Status",
      "value": "checkConnectionStatus",
      "action": "Check connection status",
      "description": "Check the connection status between your account and another person"
    },
    {
      "name": "Comment on Post",
      "value": "commentOnPost",
      "action": "Comment on post",
      "description": "Leave a comment on a LinkedIn post"
    },
    {
      "name": "Create Post",
      "value": "createPost",
      "action": "Create post",
      "description": "Create a new LinkedIn post"
    },
    {
      "name": "Fetch Company",
      "value": "fetchCompany",
      "action": "Fetch company",
      "description": "Fetch detailed information about a LinkedIn company"
    },
    {
      "name": "Fetch Person",
      "value": "fetchPerson",
      "action": "Fetch person",
      "description": "Fetch detailed information about a LinkedIn person"
    },
    {
      "name": "Fetch Post",
      "value": "fetchPost",
      "action": "Fetch post",
      "description": "Retrieve detailed information about a LinkedIn post"
    },
    {
      "name": "React to Post",
      "value": "reactToPost",
      "action": "React to post",
      "description": "React to a LinkedIn post with like, celebrate, support, love, insightful, or funny"
    },
    {
      "name": "Remove Connection",
      "value": "removeConnection",
      "action": "Remove connection",
      "description": "Remove a person from your connections"
    },
    {
      "name": "Retrieve Connections",
      "value": "retrieveConnections",
      "action": "Retrieve connections",
      "description": "Retrieve your connections with optional filtering"
    },
    {
      "name": "Retrieve Pending Requests",
      "value": "retrievePendingRequests",
      "action": "Retrieve pending requests",
      "description": "Retrieve pending connection requests sent from your account"
    },
    {
      "name": "Retrieve Performance",
      "value": "retrievePerformance",
      "action": "Retrieve performance",
      "description": "Retrieve performance analytics from your LinkedIn dashboard"
    },
    {
      "name": "Retrieve SSI",
      "value": "retrieveSSI",
      "action": "Retrieve SSI",
      "description": "Retrieve your current Social Selling Index (SSI) score"
    },
    {
      "name": "Search Companies",
      "value": "searchCompanies",
      "action": "Search companies",
      "description": "Search for companies on LinkedIn"
    },
    {
      "name": "Search People",
      "value": "searchPeople",
      "action": "Search people",
      "description": "Search for people on LinkedIn"
    },
    {
      "name": "Send Connection Request",
      "value": "sendConnectionRequest",
      "action": "Send connection request",
      "description": "Send a connection request to a person"
    },
    {
      "name": "Send Message",
      "value": "sendMessage",
      "action": "Send message",
      "description": "Send a message to a LinkedIn person"
    },
    {
      "name": "Sync Conversation",
      "value": "syncConversation",
      "action": "Sync conversation",
      "description": "Sync a conversation so you can start polling it for new messages"
    },
    {
      "name": "Withdraw Connection Request",
      "value": "withdrawConnectionRequest",
      "action": "Withdraw connection request",
      "description": "Withdraw a connection request sent to a person"
    },
    {
      "name": "Fetch Company in Sales Navigator",
      "value": "nvFetchCompany",
      "action": "Fetch company in Sales Navigator",
      "description": "Fetch detailed information about a company in Sales Navigator"
    },
    {
      "name": "Fetch Person in Sales Navigator",
      "value": "nvFetchPerson",
      "action": "Fetch person in Sales Navigator",
      "description": "Fetch detailed information about a person in Sales Navigator"
    },
    {
      "name": "Search Companies in Sales Navigator",
      "value": "nvSearchCompanies",
      "action": "Search companies in Sales Navigator",
      "description": "Search for companies in Sales Navigator"
    },
    {
      "name": "Search People in Sales Navigator",
      "value": "nvSearchPeople",
      "action": "Search people in Sales Navigator",
      "description": "Search for people in Sales Navigator"
    },
    {
      "name": "Send Message in Sales Navigator",
      "value": "nvSendMessage",
      "action": "Send message in Sales Navigator",
      "description": "Send a message to a person in Sales Navigator"
    },
    {
      "name": "Sync Conversation in Sales Navigator",
      "value": "nvSyncConversation",
      "action": "Sync conversation in Sales Navigator",
      "description": "Sync a conversation in Sales Navigator so you can start polling it"
    },
    {
      "name": "Custom Workflow",
      "value": "customWorkflow",
      "action": "Execute custom workflow",
      "description": "Execute a custom multi-step workflow using raw workflow definition"
    },
    {
      "name": "Get Workflow Result",
      "value": "getWorkflowResult",
      "action": "Get workflow result",
      "description": "Get the result of workflow execution"
    },
    {
      "name": "Cancel Workflow",
      "value": "cancelWorkflow",
      "action": "Cancel workflow",
      "description": "Cancel a running workflow execution"
    },
    {
      "name": "Poll Conversations",
      "value": "pollConversations",
      "action": "Poll conversations",
      "description": "Poll multiple conversations for new messages"
    },
    {
      "name": "Actions Usage Statistics",
      "value": "actionsUsageStatistics",
      "action": "Get actions statistics",
      "description": "Get actions usage statistics for a date range"
    }
  ]

npm_readme:
  Linked API for n8n connects your LinkedIn account to n8n's automation platform, so you can build visual workflows that search for prospects, send messages, manage connections, extract data, and more – all with [industry-leading safety](https://linkedapi.io/safety/).

  > [!IMPORTANT]
  > Our n8n node is a verified community node – just open the nodes panel, search for "Linked API", and install it with a click.
  > 
  > Alternatively, install it manually: go to Settings → Community Nodes, enter n8n-nodes-linked-api, and click Install.

  ## Use cases
  - **Lead generation pipeline**. Search for prospects matching your criteria, automatically send connection requests, wait for acceptance, then send personalized follow-up messages. Connect the results to your CRM to track everything in one place.
  - **CRM synchronization**. When a new lead enters your CRM, automatically find their LinkedIn profile, send a connection request, and update the CRM with their LinkedIn data. Keep your sales pipeline enriched with real-time LinkedIn information.
  - **Content engagement**. Monitor when your target accounts post on LinkedIn, automatically react or comment on their posts, then log the engagement in your tracking spreadsheet. Build relationships at scale without losing the personal touch.
  - **Recruitment workflows**. Search for candidates with specific skills, send personalized InMails through Sales Navigator, track responses in your ATS, and automatically follow up with interested candidates. Streamline your entire recruitment funnel.
  - **Multi-channel outreach**. Combine LinkedIn with email, Slack, and other channels. When someone accepts your connection request, trigger an email sequence, notify your team in Slack, and create a task in your project management tool.


  ## Get started
  To build LinkedIn automations with n8n, read these essential guides:

  1. [Creating credential](https://linkedapi.io/integrations/n8n/creating-credential/) – get your API tokens and connect to n8n.
  2. [Building workflows](https://linkedapi.io/integrations/n8n/building-workflows-0/) – learn how to use Linked API actions in your workflows.
  3. [Available actions](https://linkedapi.io/integrations/n8n/available-actions/) – explore all LinkedIn actions you can automate.

  ## License
  This project is licensed under the MIT – see the [LICENSE](https://github.com/Linked-API/n8n-nodes-linked-api/blob/main/LICENSE.md) file for details.

ai_documentation_summary:
  {"purpose":"This n8n community node connects to LinkedIn accounts to automate prospecting, messaging, connection management, and data extraction within visual workflows.","capabilities":["Search for prospects by criteria","Send connection requests","Send personalized messages (InMails)","Manage connections","Extract profile data","Monitor account posts","React to or comment on posts","Track responses and engagement","Sync data to CRM or spreadsheets"],"authentication":"API tokens (OAuth2-based credential setup required via Linked API integration)","commonUseCases":["Lead generation pipelines","CRM synchronization with LinkedIn data","Content engagement automation","Recruitment and candidate outreach","Multi-channel outreach workflows"],"limitations":["Community node (not official n8n node)","Requires manual installation from community panel","Dependent on Linked API's safety and rate limits"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.webhook","n8n-nodes-base.credentialManager"]}


node_type: n8n-nodes-octagon.octagonAgents
package_name: n8n-nodes-octagon
display_name: Octagon
description: Financial AI agents
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:41
author_name: octagonai
author_github_url: https://github.com/OctagonAI/
npm_package_name: n8n-nodes-octagon
npm_version: 1.0.8
community_fetched_at: 2026-03-25T21:19:41.002Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # Octagon for n8n

  A professional n8n node that integrates with [Octagon's AI Agents API](https://docs.octagonagents.com/) for financial and market research. This node provides access to Octagon's specialized AI agents for analyzing SEC filings, earnings transcripts, stock data, private market intelligence, and more.

  ## Features

  - **🔄 Smart Router Agent**: Octagon Agent automatically routes queries to the most appropriate specialized agent
  - **15 Specialized Agents**: Access to all Octagon's AI agents for different research domains
  - **🔒 Secure Authentication**: Built-in credential management for API keys
  - **📊 Rich Output**: Returns analysis with source citations and metadata
  - **⚡ Simplified Interface**: Clean, professional UI with essential options only
  - **🛡️ Error Handling**: Graceful error handling with detailed error messages

  ## Available Agents

  ### 🔄 **Smart Router (Default)**

  - **Octagon Agent** (`octagon-agent`) - Intelligent router that automatically selects the best specialized agent for your query

  ### 📈 **Public Market Agents**

  - **SEC Filings Agent** (`octagon-sec-agent`) - Analyzes SEC filings data
  - **Transcripts Agent** (`octagon-transcripts-agent`) - Analyzes earnings call transcripts
  - **Stock Data Agent** (`octagon-stock-data-agent`) - Analyzes stock market data
  - **Financials Agent** (`octagon-financials-agent`) - Analyzes financial statements
  - **Holdings Agent** (`octagon-holdings-agent`) - Analyzes institutional ownership and holdings
  - **Crypto Agent** (`octagon-crypto-agent`) - Analyzes cryptocurrency market data

  ### 🏢 **Private Market Agents**

  - **Companies Agent** (`octagon-companies-agent`) - Provides private company information
  - **Funding Agent** (`octagon-funding-agent`) - Analyzes private company funding data
  - **Funds Agent** (`octagon-funds-agent`) - Analyzes private funds
  - **Deals Agent** (`octagon-deals-agent`) - Analyzes M&A and IPO data
  - **Investors Agent** (`octagon-investors-agent`) - Provides investor information
  - **Debts Agent** (`octagon-debts-agent`) - Analyzes private debts, borrowers, and lenders

  ### 🔍 **Research Agents**

  - **Scraper Agent** (`octagon-scraper-agent`) - Extracts data from websites
  - **Deep Research Agent** (`octagon-deep-research-agent`) - Conducts in-depth research

  ## Installation

  ### Prerequisites

  1. **Octagon API Key**: Get your free API key from [Octagon](https://octagonagents.com)
     - Sign up for an account
     - Go to Settings → API Keys
     - Create a new API key

  2. **n8n Installation**: This node requires n8n v0.198.0 or higher

  ### Install in n8n Cloud

  > **Note**: Only the n8n instance owner can install and manage 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.

  #### Install a verified community node

  To install the Octagon community node:

  1. **Access the nodes panel**: Go to the Canvas and open the nodes panel (either by selecting '+' or pressing Tab).

  2. **Search for Octagon**: Search for "Octagon" in the node search. If there is a matching verified community node, you will see a **More from the community** section at the bottom of the nodes panel.

  3. **Select the node**: Select the Octagon node you want to install. This takes you to a detailed view of the node, showing all the supported actions.

  4. **Install**: Select **Install**. This will install the node for your instance and enable all members to use it in their workflows.

  5. **Start using**: You can now add the Octagon node to your workflows.

  #### Alternative installation method

  If the node doesn't appear in the Canvas search:

  1. **Go to Settings**: Navigate to **Settings** → **Community nodes**.
  2. **Install a community node**: Click **Install a community node**.
  3. **Enter package name**: Enter the npm package name: `n8n-nodes-octagon`
  4. **Install**: Click **Install** and wait for the installation to complete.
  5. **Verify**: Go to your workflow editor and search for "Octagon" in the nodes panel.

  > **Important**: Community nodes in n8n Cloud are sandboxed and reviewed for security. Installation may take a few minutes to complete.

  #### Uninstall a community node

  To uninstall the Octagon community node:

  1. **Go to Settings**: Navigate to **Settings** → **Community nodes**.
  2. **Find the node**: Locate the Octagon node in your installed community nodes.
  3. **Open options**: Select **Options** (three dots menu) on the node.
  4. **Uninstall**: Select **Uninstall package**.
  5. **Confirm**: Select **Uninstall Package** in the confirmation modal.

  ## Usage

  ### Quick Start

  1. **Add Node**: Search for "Octagon" in n8n workflow
  2. **Configure**:
     - **Add Credentials**: Go to Credentials → "Octagon API"
     - **Agent**: Use "Octagon Agent (Router)" for automatic routing (default)
     - **Query**: Enter your financial research question
  3. **Execute**: Run the workflow to get AI-powered analysis with citations

  ### Node Configuration

  The node interface is clean and simple:

  - **🎯 Agent**: Select from router or 14 specialized agents
  - **💬 Query**: Your research question (supports complex queries)
  - **⚙️ Additional Options**:
    - Include Token Usage (optional)

  ### Example Queries

  #### Universal Queries (using Octagon Agent Router)

  ```
  Tell me about Apple's latest earnings performance
  What's happening with Tesla's stock price?
  Analyze SpaceX's latest funding round
  Compare Microsoft vs Google revenue growth
  ```

  #### Specialized Agent Queries

  ```
  # SEC Filings Agent
  What were Apple's revenue numbers in Q3 2023?
  Analyze Tesla's latest 10-K filing for risk factors

  # Transcripts Agent
  What did Apple's CEO say about iPhone sales in the latest earnings call?
  Analyze management guidance from Tesla's Q4 2023 earnings call

  # Stock Data Agent
  What's the 52-week high and low for AAPL?
  Compare Tesla's stock performance to the S&P 500 this year

  # Companies Agent (Private Market)
  Tell me about Stripe's latest funding round
  What is the current valuation of SpaceX?
  ```

  ### Output Format

  The node returns a JSON object with the following structure:

  ```json
  {
  	"agent": "octagon-agent",
  	"query": "Tell me about Apple's latest earnings",
  	"analysis": "Apple reported strong Q4 2023 results with revenue of $89.5 billion...",
  	"sources": [
  		{
  			"order": 1,
  			"name": "Apple Inc. (10-Q) - 2023-Q4, Page: 10",
  			"url": "https://octagon-sec-filings.s3.amazonaws.com/..."
  		}
  	],
  	"metadata": {
  		"apiType": "responses",
  		"timestamp": "2024-01-15T10:30:00.000Z"
  	},
  	"usage": {
  		"prompt_tokens": 150,
  		"completion_tokens": 800,
  		"total_tokens": 950
  	}
  }
  ```

  ## Best Practices

  1. **🎯 Use the Router**: Start with "Octagon Agent (Router)" - it automatically selects the best specialized agent
  2. **📝 Be Specific**: The more specific your query, the more accurate the response
  3. **🔄 One Task Per Query**: Focus each query on a single analytical task for best results
  4. **📅 Provide Context**: Include relevant context like time periods, specific metrics, or companies
  5. **🔗 Follow Citations**: Always check the source citations for verification

  ## Error Handling

  The node includes comprehensive error handling:

  - **🔑 Authentication Errors**: Invalid API keys, expired tokens
  - **🌐 Network Errors**: Connection issues, timeouts, rate limits
  - **📝 Query Errors**: Malformed or empty queries
  - **🤖 Agent Errors**: Agent-specific errors or limitations

  Errors are returned in a structured format:

  ```json
  {
  	"error": true,
  	"message": "Authentication failed. Please check your API key.",
  	"query": "Your original query",
  	"agent": "octagon-agent",
  	"timestamp": "2024-01-15T10:30:00.000Z"
  }
  ```

  ## Troubleshooting

  ### Common Issues

  1. **Node not appearing**: Restart n8n after installation
  2. **Icon not loading**: Clear browser cache
  3. **Authentication errors**: Verify API key in credentials
  4. **Rate limiting**: Check your Octagon plan limits

  ### Support Channels

  - **📚 Documentation**: [Octagon API Documentation](https://docs.octagonagents.com/)
  - **🐛 Issues**: [GitHub Issues](https://github.com/octagon/octagon-n8n-node/issues)
  - **💬 Support**: Contact Octagon support for API-related questions
  - **📧 Email**: support@octagonagents.com

  ## License

  MIT License - See [LICENSE](LICENSE) file for details.

  ## Contributing

  Contributions are welcome! Please read our [Contributing Guidelines](CONTRIBUTING.md) before submitting pull requests.

  ## Changelog

  See [CHANGELOG.md](CHANGELOG.md) for release history.

  ---

  **⚠️ Note**: This node requires an active Octagon API subscription. Some agents may have usage limits or require premium access. Get started with a free API key at [octagonagents.com](https://octagonagents.com).

ai_documentation_summary:
  {"purpose":"This n8n node integrates with Octagon's AI Agents API to perform financial and market research by routing queries to specialized agents for analyzing SEC filings, earnings transcripts, stock data, private market intelligence, and more.","capabilities":["Automatic query routing to specialized agents via Smart Router","Analysis of SEC filings and 10-K documents","Analysis of earnings call transcripts","Stock market data and financial statement analysis","Private company information and funding analysis","Cryptocurrency market data analysis","M&A and IPO deal analysis","Website data scraping","In-depth research capabilities","Source citations and metadata in output"],"authentication":"API key required (stored in n8n credentials)","commonUseCases":["Analyzing company financial performance and earnings","Researching private market deals and funding rounds","Extracting data from SEC filings and earnings calls","Comparing stock performance and market trends","Investigating institutional ownership and holdings"],"limitations":["Requires n8n v0.198.0 or higher","Requires Octagon API key access","Community node installation may take time in n8n Cloud","Only instance owners can install community nodes in n8n Cloud"],"relatedNodes":["n8n-nodes-octagon.octagonAgents","n8n-nodes-octagon.octagonAgentsRouter","n8n-nodes-octagon.octagonSecAgent","n8n-nodes-octagon.octagonTranscriptsAgent","n8n-nodes-octagon.octagonStockDataAgent"]}


node_type: n8n-nodes-camino.camino
package_name: n8n-nodes-camino
display_name: Camino AI
description: Guide your AI agents through the real world with location intelligence
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:41
author_name: jamesbarney
author_github_url: https://github.com/Barneyjm/
npm_package_name: n8n-nodes-camino
npm_version: 0.1.1
community_fetched_at: 2026-03-25T21:19:41.002Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "description": "Search for places using free-form or structured queries"
        },
        {
          "name": "Query",
          "value": "query",
          "description": "Natural language queries for points of interest"
        },
        {
          "name": "Spatial",
          "value": "spatial",
          "description": "Spatial relationships, context, and journey planning"
        },
        {
          "name": "Route",
          "value": "route",
          "description": "Get routes between locations"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "searchPlaces",
      "options": [
        {
          "name": "Search Places",
          "value": "searchPlaces",
          "action": "Search for places",
          "routing": {
            "request": {
              "url": "/search",
              "method": "POST"
            }
          },
          "description": "Search for places using free-form or structured queries"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "queryPoi",
      "options": [
        {
          "name": "Query POI",
          "value": "queryPoi",
          "action": "Query points of interest",
          "routing": {
            "request": {
              "url": "/query",
              "method": "GET"
            }
          },
          "description": "Natural language query for points of interest"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "query"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "relationship",
      "options": [
        {
          "name": "Calculate Relationship",
          "value": "relationship",
          "action": "Calculate spatial relationship",
          "routing": {
            "request": {
              "url": "/relationship",
              "method": "POST"
            }
          },
          "description": "Calculate spatial relationships between two points"
        },
        {
          "name": "Get Place Context",
          "value": "context",
          "action": "Get place context",
          "routing": {
            "request": {
              "url": "/context",
              "method": "POST"
            }
          },
          "description": "Get context-aware information about a location"
        },
        {
          "name": "Plan Journey",
          "value": "journey",
          "action": "Plan a journey",
          "routing": {
            "request": {
              "url": "/journey",
              "method": "POST"
            }
          },
          "description": "Multi-waypoint journey planning with route optimization"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "spatial"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getRoute",
      "options": [
        {
          "name": "Get Route",
          "value": "getRoute",
          "action": "Get a route",
          "routing": {
            "request": {
              "url": "/route",
              "method": "GET"
            }
          },
          "description": "Get route from start to end point"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "route"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Search Places",
      "value": "searchPlaces",
      "action": "Search for places",
      "routing": {
        "request": {
          "url": "/search",
          "method": "POST"
        }
      },
      "description": "Search for places using free-form or structured queries"
    },
    {
      "name": "Query POI",
      "value": "queryPoi",
      "action": "Query points of interest",
      "routing": {
        "request": {
          "url": "/query",
          "method": "GET"
        }
      },
      "description": "Natural language query for points of interest"
    },
    {
      "name": "Calculate Relationship",
      "value": "relationship",
      "action": "Calculate spatial relationship",
      "routing": {
        "request": {
          "url": "/relationship",
          "method": "POST"
        }
      },
      "description": "Calculate spatial relationships between two points"
    },
    {
      "name": "Get Place Context",
      "value": "context",
      "action": "Get place context",
      "routing": {
        "request": {
          "url": "/context",
          "method": "POST"
        }
      },
      "description": "Get context-aware information about a location"
    },
    {
      "name": "Plan Journey",
      "value": "journey",
      "action": "Plan a journey",
      "routing": {
        "request": {
          "url": "/journey",
          "method": "POST"
        }
      },
      "description": "Multi-waypoint journey planning with route optimization"
    },
    {
      "name": "Get Route",
      "value": "getRoute",
      "action": "Get a route",
      "routing": {
        "request": {
          "url": "/route",
          "method": "GET"
        }
      },
      "description": "Get route from start to end point"
    }
  ]

npm_readme:
  # n8n-nodes-camino

  This is an n8n community node that lets you use [Camino AI](https://getcamino.ai) in your n8n workflows.

  Camino AI provides location intelligence and spatial reasoning APIs for AI agents, enabling them to search places, plan routes, understand spatial relationships, and make location-aware decisions.

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

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

  ## Installation

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

  ## Operations

  ### Search
  - **Search Places**: Search for places using free-form queries or structured address components

  ### Query
  - **Query POI**: Natural language queries for points of interest with AI-powered ranking

  ### Spatial
  - **Calculate Relationship**: Calculate spatial relationships between two points (distance, direction, travel time)
  - **Get Place Context**: Get context-aware information about a location including nearby places and weather
  - **Plan Journey**: Multi-waypoint journey planning with route optimization

  ### Route
  - **Get Route**: Get routes between locations with support for car, bike, and foot modes

  ## Credentials

  To use this node, you need a Camino AI API key. You can get one by signing up at [getcamino.ai](https://getcamino.ai).

  Configure your credentials with:
  - **API Key**: Your Camino AI API key
  - **Environment**: Use the Production url (api.getcamino.ai) 

  ## Example Agent Prompt
  ```
  You are a helpful and knowledgeable location intelligence agent that helps users discover places, plan routes, and understand spatial relationships in the real world. Your job is to provide accurate, contextual location information using Camino AI's powerful tools.
  Your Main Purpose

  Help users find places using natural language queries
  Provide spatial intelligence about distances, directions, and travel times
  Plan optimal routes and journeys
  Give rich context about locations and areas
  Make location-based decisions easy and data-driven

  Your Available Camino AI Tools
  camino_query
  Primary search tool for finding places

  Use for natural language location searches
  Examples: "coffee shops near Golden Gate Bridge", "restaurants in downtown Seattle"
  Accepts latitude/longitude for precise searches
  Can filter by radius (default 1000m)
  Returns AI-ranked results by relevance
  Set generate_answer: true for human-readable summaries

  camino_search
  Structured address-based search

  Use when you have specific address components
  Good for finding specific businesses or addresses
  Can search by city, state, street, postal code
  Alternative to camino_query for more structured searches

  camino_spatial_relationship
  Calculate relationships between two points

  Get distance, direction, and travel time between locations
  Essential for "how far is X from Y" questions
  Provides human-readable descriptions of spatial relationships

  camino_place_context
  Get contextual information about a location

  Discover what's nearby a specific point
  Understand area characteristics
  Include weather with include_weather: true
  Specify context like "business meeting" or "family outing" for tailored insights

  camino_journey_planning
  Multi-waypoint route optimization

  Plan routes with multiple stops
  Optimize for time budgets
  Choose transport mode (walking, driving, cycling)
  Get feasibility analysis and recommendations

  camino_route_planning
  Point-to-point routing

  Calculate routes between two locations
  Get turn-by-turn directions
  Estimate travel times
  Choose mode: car, bike, or foot

  Interaction Style
  When Users Ask About Places

  Start with camino_query for natural language searches
  Use AI ranking for best results: rank: true
  Generate answers for readable summaries: generate_answer: true
  Present results clearly with key details
  Ask if they want more specific information

  When Users Need Navigation

  Use camino_route_planning for simple A-to-B routes
  Use camino_journey_planning for multi-stop trips
  Always specify appropriate transport mode
  Provide time estimates and distances
  Consider route alternatives if appropriate

  When Users Compare Locations

  Use camino_spatial_relationship to calculate distances
  Provide context about travel times
  Help users understand which option is more convenient
  Consider factors like traffic patterns if relevant

  When Users Want Area Information

  Use camino_place_context with relevant context string
  Include weather if trip planning: include_weather: true
  Describe what makes the area suitable for their needs
  Mention nearby amenities and attractions

  Response Guidelines
  Location Discovery

  Always understand intent before searching
  Use specific coordinates when provided
  Adjust search radius based on context (urban vs rural)
  Explain why recommendations fit user needs

  Providing Directions

  Choose appropriate transport mode
  Give realistic time estimates
  Mention key landmarks or waypoints
  Warn about potential challenges (traffic, distance)

  Contextual Advice

  Consider user's purpose (work, leisure, family)
  Factor in time of day when relevant
  Suggest alternatives if initial results aren't ideal
  Provide practical tips (parking, hours, accessibility)

  Example Interactions
  User: "Find quiet coffee shops near the Golden Gate Bridge"
  You: "I'll search for quiet coffee shops in that area..." [uses camino_query with context about quiet atmosphere]
  "Based on real location data, here are some excellent quiet coffee shops:

  Caffe Trieste: Historic spot with intimate atmosphere, cash-only (tends to be calmer)
  Peet's Coffee in Laurel Village: Residential neighborhood, less touristy
  Would you like directions to any of these?"

  User: "How far is it from Times Square to Central Park?"
  You: "Let me calculate that for you..." [uses camino_spatial_relationship]
  "It's about 0.8 miles (1.3 km) from Times Square to Central Park - roughly a 15-minute walk north. Would you like a walking route with turn-by-turn directions?"
  User: "Plan a day trip visiting the Statue of Liberty, Empire State Building, and Brooklyn Bridge"
  You: "Great itinerary! Let me optimize that route for you..." [uses camino_journey_planning with walking mode]
  "Here's an efficient route... [provides optimized journey]. This would take approximately 4-5 hours with stops. Would you like restaurant recommendations near any of these stops?"
  Best Practices
  Always

  Use real location data, never make up places
  Provide specific addresses and details when available
  Consider user's context and needs
  Offer to dive deeper if they want more info
  Cite that information comes from Camino AI

  Never

  Hallucinate locations or businesses
  Provide outdated information without caveat
  Ignore user's specific constraints (budget, time, accessibility)
  Give directions without checking feasibility

  Tool Selection Strategy

  Discovery: Start with camino_query or camino_search
  Comparison: Use camino_spatial_relationship
  Deep dive: Follow with camino_place_context
  Navigation: Use camino_route_planning or camino_journey_planning

  Keep It Helpful

  Be proactive in suggesting relevant follow-up information
  Explain location choices with data-driven reasoning
  Adapt to user's familiarity with the area
  Make complex spatial decisions simple
  Help users make informed location-based decisions

  Remember: Your goal is to ground AI conversations in real-world location intelligence. Provide accurate, contextual, and actionable location insights that help users navigate and understand their physical world!
  ```

  ## Compatibility

  - Minimum n8n version: 1.0.0
  - Tested against n8n version: 1.113.3

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Camino AI Documentation](https://docs.getcamino.ai)
  - [Camino AI Website](https://getcamino.ai)

  ## License

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

ai_documentation_summary:
  {"purpose":"This n8n community node integrates Camino AI to provide location intelligence and spatial reasoning capabilities for AI agents, enabling them to search places, plan routes, and understand spatial relationships.","capabilities":["Search places using free-form queries or structured address components","Query points of interest with AI-powered ranking","Calculate spatial relationships (distance, direction, travel time)","Get contextual information about locations including nearby places and weather","Plan multi-waypoint journeys with route optimization","Get point-to-point routes with support for car, bike, and foot modes"],"authentication":"API key required","commonUseCases":["Location-based discovery for AI agents","Route planning and navigation assistance","Spatial relationship analysis for travel time estimation","Context-aware location recommendations"],"limitations":["Requires external API key from Camino AI","Limited to production environment configuration"],"relatedNodes":["n8n-nodes-webhook","n8n-nodes-http-request"]}


node_type: @mendable/n8n-nodes-firecrawl.firecrawl
package_name: @mendable/n8n-nodes-firecrawl
display_name: Firecrawl
description: Scrape, crawl, map, search, and extract structured data from websites using Firecrawl API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs: "={{[\"main\"]}}"
updated_at: 2026-03-25 21:19:41
author_name: cpeffer
author_github_url: https://github.com/mendableai/n8n-nodes-firecrawl.git
npm_package_name: @mendable/n8n-nodes-firecrawl
npm_version: 2.0.7
community_fetched_at: 2026-03-25T21:19:41.003Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "Scraping",
      "options": [
        {
          "name": "Account",
          "value": "Account"
        },
        {
          "name": "Agent",
          "value": "Agent"
        },
        {
          "name": "Browser",
          "value": "Browser"
        },
        {
          "name": "Crawling",
          "value": "Crawling"
        },
        {
          "name": "Extract (Legacy)",
          "value": "Extract"
        },
        {
          "name": "Interact",
          "value": "Interact"
        },
        {
          "name": "Map & Search",
          "value": "MapSearch"
        },
        {
          "name": "Scraping",
          "value": "Scraping"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scrape",
      "options": [
        {
          "name": "/scrape",
          "value": "scrape",
          "action": "/scrape",
          "routing": {
            "request": {
              "url": "=/scrape",
              "method": "POST"
            }
          }
        },
        {
          "name": "Batch scrape multiple URLs simultaneously",
          "value": "batchScrape",
          "action": "Batch scrape multiple URLs simultaneously",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "setKeyValue",
                  "properties": {
                    "data": "={{$response.body}}"
                  }
                }
              ]
            },
            "request": {
              "url": "/batch/scrape",
              "method": "POST"
            }
          }
        },
        {
          "name": "Get batch scrape status",
          "value": "batchScrapeStatus",
          "action": "Get batch scrape status",
          "routing": {
            "request": {
              "method": "GET"
            }
          }
        },
        {
          "name": "Get batch scrape errors",
          "value": "batchScrapeErrors",
          "action": "Get batch scrape errors",
          "routing": {
            "request": {
              "method": "GET"
            }
          }
        },
        {
          "name": "Cancel batch scrape job",
          "value": "cancelBatchScrape",
          "action": "Cancel batch scrape job",
          "routing": {
            "request": {
              "method": "DELETE"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Scraping"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "crawl",
      "options": [
        {
          "name": "Crawl a website and scrape all pages",
          "value": "crawl",
          "action": "Crawl a website and scrape all pages",
          "routing": {
            "request": {
              "url": "=/crawl",
              "method": "POST"
            }
          }
        },
        {
          "name": "Get crawl status",
          "value": "getCrawlStatus",
          "action": "Get crawl status",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "setKeyValue",
                  "properties": {
                    "data": "={{$response.body}}"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          }
        },
        {
          "name": "Cancel a crawl job",
          "value": "cancelCrawl",
          "action": "Cancel a crawl job",
          "routing": {
            "request": {
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Get crawl errors",
          "value": "getCrawlErrors",
          "action": "Get crawl errors",
          "routing": {
            "request": {
              "method": "GET"
            }
          }
        },
        {
          "name": "List active crawls",
          "value": "crawlActive",
          "action": "List active crawls",
          "routing": {
            "request": {
              "url": "=/crawl/active",
              "method": "GET"
            }
          }
        },
        {
          "name": "Preview crawl params from prompt",
          "value": "crawlParamsPreview",
          "action": "Preview crawl params from prompt",
          "routing": {
            "request": {
              "url": "=/crawl/params-preview"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Crawling"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "agent",
      "options": [
        {
          "name": "Agent - AI-powered web data extraction (waits for completion)",
          "value": "agent",
          "action": "Agent - AI-powered web data extraction (waits for completion)",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/agent",
              "method": "POST"
            }
          }
        },
        {
          "name": "Agent (Async) - Returns job ID for manual polling",
          "value": "agentAsync",
          "action": "Agent (Async) - Returns job ID for manual polling",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "setKeyValue",
                  "properties": {
                    "data": "={{$response.body}}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/agent",
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Agent Status",
          "value": "getAgentStatus",
          "action": "Get Agent Status",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "setKeyValue",
                  "properties": {
                    "data": "={{$response.body}}"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Agent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "map",
      "options": [
        {
          "name": "/map",
          "value": "map",
          "action": "/map",
          "routing": {
            "request": {
              "url": "=/map",
              "method": "POST"
            }
          }
        },
        {
          "name": "/search",
          "value": "search",
          "action": "/search",
          "routing": {
            "request": {
              "url": "=/search",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "MapSearch"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "browserContext",
      "options": [
        {
          "name": "Browser context",
          "value": "browserContext",
          "action": "Browser context",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/browser",
              "method": "GET"
            }
          }
        },
        {
          "name": "Create browser session",
          "value": "browserCreate",
          "action": "Create browser session",
          "routing": {
            "request": {
              "url": "=/browser",
              "method": "POST"
            }
          }
        },
        {
          "name": "Execute browser code",
          "value": "browserExecute",
          "action": "Execute browser code",
          "routing": {
            "request": {
              "method": "POST"
            }
          }
        },
        {
          "name": "List browser sessions",
          "value": "browserList",
          "action": "List browser sessions",
          "routing": {
            "request": {
              "url": "=/browser",
              "method": "GET"
            }
          }
        },
        {
          "name": "Delete browser session",
          "value": "browserDelete",
          "action": "Delete browser session",
          "routing": {
            "request": {
              "method": "DELETE"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Browser"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "interactContext",
      "options": [
        {
          "name": "Interact context",
          "value": "interactContext",
          "action": "Interact context",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/browser",
              "method": "GET"
            }
          }
        },
        {
          "name": "Execute interaction",
          "value": "interact",
          "action": "Execute interaction",
          "routing": {
            "request": {
              "method": "POST"
            }
          }
        },
        {
          "name": "Stop interaction",
          "value": "interactStop",
          "action": "Stop interaction",
          "routing": {
            "request": {
              "method": "DELETE"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Interact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "teamCreditUsage",
      "options": [
        {
          "name": "Get team credit usage",
          "value": "teamCreditUsage",
          "action": "Get team credit usage",
          "routing": {
            "request": {
              "url": "=/team/credit-usage",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get historical credit usage",
          "value": "creditUsageHistorical",
          "action": "Get historical credit usage",
          "routing": {
            "request": {
              "url": "=/team/credit-usage/historical",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get team token usage",
          "value": "teamTokenUsage",
          "action": "Get team token usage",
          "routing": {
            "request": {
              "url": "=/team/token-usage",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get historical token usage",
          "value": "teamTokenUsageHistorical",
          "action": "Get historical token usage",
          "routing": {
            "request": {
              "url": "=/team/token-usage/historical",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get team queue status",
          "value": "teamQueueStatus",
          "action": "Get team queue status",
          "routing": {
            "request": {
              "url": "=/team/queue-status",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Account"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "extract",
      "options": [
        {
          "name": "Extract structured data from websites using AI",
          "value": "extract",
          "action": "Extract structured data from websites using AI",
          "routing": {
            "request": {
              "url": "=/extract",
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Extract Status",
          "value": "getExtractStatus",
          "action": "Get Extract Status",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "setKeyValue",
                  "properties": {
                    "data": "={{$response.body}}"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Extract"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /scrape",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Scraping"
          ],
          "operation": [
            "scrape"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /batchScrape",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Scraping"
          ],
          "operation": [
            "batchScrape"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /batchScrapeStatus",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Scraping"
          ],
          "operation": [
            "batchScrapeStatus"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /batchScrapeErrors",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Scraping"
          ],
          "operation": [
            "batchScrapeErrors"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /cancelBatchScrape",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Scraping"
          ],
          "operation": [
            "cancelBatchScrape"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /crawl",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Crawling"
          ],
          "operation": [
            "crawl"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /getCrawlStatus",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Crawling"
          ],
          "operation": [
            "getCrawlStatus"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /cancelCrawl",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Crawling"
          ],
          "operation": [
            "cancelCrawl"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /getCrawlErrors",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Crawling"
          ],
          "operation": [
            "getCrawlErrors"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /crawlActive",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Crawling"
          ],
          "operation": [
            "crawlActive"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /crawlParamsPreview",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Crawling"
          ],
          "operation": [
            "crawlParamsPreview"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /agent",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Agent"
          ],
          "operation": [
            "agent"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /agentAsync",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Agent"
          ],
          "operation": [
            "agentAsync"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /getAgentStatus",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Agent"
          ],
          "operation": [
            "getAgentStatus"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /map",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "MapSearch"
          ],
          "operation": [
            "map"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /search",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "MapSearch"
          ],
          "operation": [
            "search"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /teamCreditUsage",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Account"
          ],
          "operation": [
            "teamCreditUsage"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /creditUsageHistorical",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Account"
          ],
          "operation": [
            "creditUsageHistorical"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /teamTokenUsage",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Account"
          ],
          "operation": [
            "teamTokenUsage"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /teamTokenUsageHistorical",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Account"
          ],
          "operation": [
            "teamTokenUsageHistorical"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /teamQueueStatus",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Account"
          ],
          "operation": [
            "teamQueueStatus"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /browserCreate",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Browser"
          ],
          "operation": [
            "browserCreate"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /browserExecute",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Browser"
          ],
          "operation": [
            "browserExecute"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /browserList",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Browser"
          ],
          "operation": [
            "browserList"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /browserDelete",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Browser"
          ],
          "operation": [
            "browserDelete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /interact",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Interact"
          ],
          "operation": [
            "interact"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /interactStop",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Interact"
          ],
          "operation": [
            "interactStop"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /extract",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Extract"
          ],
          "operation": [
            "extract"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /getExtractStatus",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Extract"
          ],
          "operation": [
            "getExtractStatus"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "name": "/scrape",
      "value": "scrape",
      "action": "/scrape",
      "routing": {
        "request": {
          "url": "=/scrape",
          "method": "POST"
        }
      }
    },
    {
      "name": "Batch scrape multiple URLs simultaneously",
      "value": "batchScrape",
      "action": "Batch scrape multiple URLs simultaneously",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "setKeyValue",
              "properties": {
                "data": "={{$response.body}}"
              }
            }
          ]
        },
        "request": {
          "url": "/batch/scrape",
          "method": "POST"
        }
      }
    },
    {
      "name": "Get batch scrape status",
      "value": "batchScrapeStatus",
      "action": "Get batch scrape status",
      "routing": {
        "request": {
          "method": "GET"
        }
      }
    },
    {
      "name": "Get batch scrape errors",
      "value": "batchScrapeErrors",
      "action": "Get batch scrape errors",
      "routing": {
        "request": {
          "method": "GET"
        }
      }
    },
    {
      "name": "Cancel batch scrape job",
      "value": "cancelBatchScrape",
      "action": "Cancel batch scrape job",
      "routing": {
        "request": {
          "method": "DELETE"
        }
      }
    },
    {
      "name": "Crawl a website and scrape all pages",
      "value": "crawl",
      "action": "Crawl a website and scrape all pages",
      "routing": {
        "request": {
          "url": "=/crawl",
          "method": "POST"
        }
      }
    },
    {
      "name": "Get crawl status",
      "value": "getCrawlStatus",
      "action": "Get crawl status",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "setKeyValue",
              "properties": {
                "data": "={{$response.body}}"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      }
    },
    {
      "name": "Cancel a crawl job",
      "value": "cancelCrawl",
      "action": "Cancel a crawl job",
      "routing": {
        "request": {
          "method": "DELETE"
        }
      }
    },
    {
      "name": "Get crawl errors",
      "value": "getCrawlErrors",
      "action": "Get crawl errors",
      "routing": {
        "request": {
          "method": "GET"
        }
      }
    },
    {
      "name": "List active crawls",
      "value": "crawlActive",
      "action": "List active crawls",
      "routing": {
        "request": {
          "url": "=/crawl/active",
          "method": "GET"
        }
      }
    },
    {
      "name": "Preview crawl params from prompt",
      "value": "crawlParamsPreview",
      "action": "Preview crawl params from prompt",
      "routing": {
        "request": {
          "url": "=/crawl/params-preview"
        }
      }
    },
    {
      "name": "Agent - AI-powered web data extraction (waits for completion)",
      "value": "agent",
      "action": "Agent - AI-powered web data extraction (waits for completion)",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/agent",
          "method": "POST"
        }
      }
    },
    {
      "name": "Agent (Async) - Returns job ID for manual polling",
      "value": "agentAsync",
      "action": "Agent (Async) - Returns job ID for manual polling",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "setKeyValue",
              "properties": {
                "data": "={{$response.body}}"
              }
            }
          ]
        },
        "request": {
          "url": "=/agent",
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Agent Status",
      "value": "getAgentStatus",
      "action": "Get Agent Status",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "setKeyValue",
              "properties": {
                "data": "={{$response.body}}"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      }
    },
    {
      "name": "/map",
      "value": "map",
      "action": "/map",
      "routing": {
        "request": {
          "url": "=/map",
          "method": "POST"
        }
      }
    },
    {
      "name": "/search",
      "value": "search",
      "action": "/search",
      "routing": {
        "request": {
          "url": "=/search",
          "method": "POST"
        }
      }
    },
    {
      "name": "Browser context",
      "value": "browserContext",
      "action": "Browser context",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/browser",
          "method": "GET"
        }
      }
    },
    {
      "name": "Create browser session",
      "value": "browserCreate",
      "action": "Create browser session",
      "routing": {
        "request": {
          "url": "=/browser",
          "method": "POST"
        }
      }
    },
    {
      "name": "Execute browser code",
      "value": "browserExecute",
      "action": "Execute browser code",
      "routing": {
        "request": {
          "method": "POST"
        }
      }
    },
    {
      "name": "List browser sessions",
      "value": "browserList",
      "action": "List browser sessions",
      "routing": {
        "request": {
          "url": "=/browser",
          "method": "GET"
        }
      }
    },
    {
      "name": "Delete browser session",
      "value": "browserDelete",
      "action": "Delete browser session",
      "routing": {
        "request": {
          "method": "DELETE"
        }
      }
    },
    {
      "name": "Interact context",
      "value": "interactContext",
      "action": "Interact context",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/browser",
          "method": "GET"
        }
      }
    },
    {
      "name": "Execute interaction",
      "value": "interact",
      "action": "Execute interaction",
      "routing": {
        "request": {
          "method": "POST"
        }
      }
    },
    {
      "name": "Stop interaction",
      "value": "interactStop",
      "action": "Stop interaction",
      "routing": {
        "request": {
          "method": "DELETE"
        }
      }
    },
    {
      "name": "Get team credit usage",
      "value": "teamCreditUsage",
      "action": "Get team credit usage",
      "routing": {
        "request": {
          "url": "=/team/credit-usage",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get historical credit usage",
      "value": "creditUsageHistorical",
      "action": "Get historical credit usage",
      "routing": {
        "request": {
          "url": "=/team/credit-usage/historical",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get team token usage",
      "value": "teamTokenUsage",
      "action": "Get team token usage",
      "routing": {
        "request": {
          "url": "=/team/token-usage",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get historical token usage",
      "value": "teamTokenUsageHistorical",
      "action": "Get historical token usage",
      "routing": {
        "request": {
          "url": "=/team/token-usage/historical",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get team queue status",
      "value": "teamQueueStatus",
      "action": "Get team queue status",
      "routing": {
        "request": {
          "url": "=/team/queue-status",
          "method": "GET"
        }
      }
    },
    {
      "name": "Extract structured data from websites using AI",
      "value": "extract",
      "action": "Extract structured data from websites using AI",
      "routing": {
        "request": {
          "url": "=/extract",
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Extract Status",
      "value": "getExtractStatus",
      "action": "Get Extract Status",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "setKeyValue",
              "properties": {
                "data": "={{$response.body}}"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      }
    }
  ]

npm_readme:
  # n8n-nodes-firecrawl 🔥

  This is an n8n community node. It lets you use **[Firecrawl](https://firecrawl.dev)** in your n8n workflows.

  > 🔥 Turn entire websites into LLM-ready markdown or structured data. Scrape, crawl and extract with a single API.

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

  [Installation](#installation)
  [Operations](#operations)
  [AI Agent Tool Usage](#ai-agent-tool-usage)
  [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

  The **Firecrawl** node supports the following operations:

  ### Search
  - Search and optionally scrape search results

  ### Map
  - Input a website and get all the website urls

  ### Scrape
  - Scrapes a URL and get its content in LLM-ready format (markdown, structured data via LLM Extract, screenshot, html)

  ### Crawl
  - Scrapes all the URLs of a web page and return content in LLM-ready format

  ### Batch Scrape
  - Start a batch job to scrape multiple URLs at once

  ### Batch Scrape Status
  - Get the status/result of a batch scrape job by ID

  ### Batch Scrape Errors
  - Retrieve errors for a batch scrape job by ID

  ### Crawl Active
  - List all currently active crawl jobs for your team

  ### Crawl Params Preview
  - Preview crawl parameters generated from a natural-language prompt

  ### Cancel Crawl
  - Cancel a running crawl job by ID

  ### Get Crawl Errors
  - Retrieve errors for a crawl job by ID

  ### Get Crawl Status
  - Check the current status of a crawl job

  ### Extract Data
  - Get structured data from single page, multiple pages or entire websites with AI

  ### Get Extract Status
  - Get the current status of an extraction job

  ### Team Token Usage
  - Get remaining and plan tokens for the authenticated team

  ### Team Credit Usage
  - Get remaining and plan credits for the authenticated team

  ### Historical Credit Usage
  - Get historical credit usage for your team

  ### Historical Token Usage
  - Get historical token usage for your team

  ### Team Queue Status
  - Get your team's current queue load (waiting, active, max concurrency)

  ## AI Agent Tool Usage

  This node can be used as a tool with n8n's AI Agent node, allowing AI agents to scrape, crawl, and extract data from websites dynamically.

  ### Requirements

  - **n8n version 1.79.0 or higher** is required for AI tool support
  - Set the environment variable `N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true` to enable community nodes as AI tools

  ### Docker Configuration

  ```yaml
  version: '3'
  services:
    n8n:
      image: n8nio/n8n
      environment:
        - N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
      ports:
        - "5678:5678"
      volumes:
        - ~/.n8n:/home/node/.n8n
  ```

  ### Using with AI Agents

  1. Add the **AI Agent** node to your workflow
  2. Connect the **Firecrawl** node as a tool input to the AI Agent
  3. The AI agent can now dynamically decide when and how to use Firecrawl operations

  ### Dynamic Parameters with $fromAI()

  When using Firecrawl as an AI tool, you can let the AI agent decide parameter values dynamically using the `$fromAI()` function. Click the "Let the model define this parameter" button next to any field to enable this feature.

  Example expressions:
  ```javascript
  // Let AI decide the URL to scrape
  {{ $fromAI("url", "The URL to scrape", "string") }}

  // Let AI decide the search query
  {{ $fromAI("query", "Search query for finding relevant pages", "string") }}

  // Let AI decide whether to include subdomains
  {{ $fromAI("includeSubdomains", "Whether to include subdomains", "boolean", false) }}
  ```

  ### Best Practices for AI Tool Usage

  1. **Use clear operation names**: The AI agent uses operation descriptions to decide when to use each tool
  2. **Provide context in prompts**: When using the Extract operation, provide clear prompts to guide data extraction
  3. **Set reasonable limits**: Configure default limits to prevent excessive API usage
  4. **Use the Map operation first**: For unknown sites, use Map to discover URLs before scraping

  ## Credentials

  To use the Firecrawl node, you need to:

  1. Sign up for a Firecrawl account at [https://firecrawl.dev](https://firecrawl.dev)
  2. Get your API key from the Firecrawl dashboard
  3. In n8n, add your Firecrawl API key to the node's credentials

  > [!CAUTION]  
  > The API key should be kept secure and never shared publicly

  ## Compatibility

  - **Minimum n8n version: 1.79.0** (required for AI tool support)
  - Tested against n8n versions: 1.79.0+
  - Node.js version: 18 or higher

  > **Note**: If you don't need AI tool support, earlier versions of n8n may work, but 1.79.0+ is recommended.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Firecrawl Documentation](https://firecrawl.dev/docs)
  * [Firecrawl API Reference](https://docs.firecrawl.dev/api-reference/introduction)

  ## Version history

  ### 1.1.0
  - **AI Agent Tool Support**: Node can now be used as a tool with n8n's AI Agent node
    - Added `usableAsTool: true` to enable tool mode
    - Enhanced all field descriptions for better AI context understanding
    - Supports `$fromAI()` function for dynamic parameter values
  - Updated minimum n8n version requirement to 1.79.0
  - Improved operation descriptions for clearer AI agent decision making

  ### 1.0.6
  - Add support for additional Firecrawl endpoints:
    - Batch Scrape (start/status/errors)
    - Crawl Active
    - Crawl Params Preview
    - Cancel Crawl 
    - Get Crawl Errors
    - Team Token Usage
    - Team Credit Usage
    - Historical Credit Usage
    - Historical Token Usage
    - Team Queue Status
  - Wire new operations into the node and align with Firecrawl API v2

  ### 1.0.5
  - API version updated to [/v2](https://docs.firecrawl.dev/migrate-to-v2)
  - Unified sitemap configuration parameters in Map operation
  - Replaced `ignoreSitemap` and `sitemapOnly` with unified `sitemap` parameter
  - `sitemap` parameter now accepts: "include" (default), "only", or "skip"

  ### 1.0.4
  - Add additional fields property for custom data in Firecrawl API nodes

  ### 1.0.2
  - Add integration parameter in all endpoint calls

  ### 1.0.1
  - Support for Search operation

  ### 1.0.0
  - Initial release
  - Support for all basic Firecrawl operations:
    - Map URLs
    - Scrape URL
    - Crawl Website
    - Get Crawl Status
    - Extract Data
    - Get Extract Status
  - Basic error handling and response processing
  - Support for custom body options

  ## More information

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

ai_documentation_summary:
  {"purpose":"This n8n community node integrates with the Firecrawl API to scrape, crawl, map, search, and extract structured data from websites, including support for AI agent tool usage.","capabilities":["Search and scrape search results","Map website URLs","Scrape single URLs in LLM-ready format (markdown, structured data, screenshot, HTML)","Crawl entire websites","Batch scrape multiple URLs","Monitor batch scrape job status and errors","Manage crawl jobs (active, status, errors, cancellation)","Extract structured data from pages or websites using AI","Monitor team token and credit usage","Check team queue status"],"authentication":"API key required (Firecrawl API key)","commonUseCases":["Web scraping for content aggregation","Website mapping and URL discovery","Structured data extraction for AI workflows","Full website crawling for documentation or analysis","AI agent-driven dynamic web data collection"],"limitations":["Requires n8n version 1.79.0 or higher for AI tool support","AI tool usage requires environment variable N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true","Minimum Node.js version 18 required","Community node (may have different update frequency than official nodes)"],"relatedNodes":["AI Agent node","HTTP Request node","Code node"]}


node_type: n8n-nodes-pubnub.pubNub
package_name: n8n-nodes-pubnub
display_name: PubNub
description: Interact with PubNub real-time messaging platform
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:41
author_name: pubnub-admin
author_github_url: https://github.com/pubnub/
npm_package_name: n8n-nodes-pubnub
npm_version: 0.1.16
community_fetched_at: 2026-03-25T21:19:41.003Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Message",
          "value": "message"
        },
        {
          "name": "History",
          "value": "history"
        },
        {
          "name": "Presence",
          "value": "presence"
        },
        {
          "name": "Channel Group",
          "value": "channelGroup"
        }
      ],
      "description": "The resource to operate on",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "publish",
      "options": [
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish a message",
          "description": "Publish a message to a channel"
        },
        {
          "name": "Signal",
          "value": "signal",
          "action": "Send a signal",
          "description": "Send a signal (lightweight message, max 30 characters)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "fetchMessages",
      "options": [
        {
          "name": "Fetch Messages",
          "value": "fetchMessages",
          "action": "Fetch message history",
          "description": "Fetch message history from a channel"
        },
        {
          "name": "Delete Messages",
          "value": "deleteMessages",
          "action": "Delete messages",
          "description": "Delete messages from a channel"
        },
        {
          "name": "Message Counts",
          "value": "messageCounts",
          "action": "Get message counts",
          "description": "Get message counts for channels"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "history"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "hereNow",
      "options": [
        {
          "name": "Here Now",
          "value": "hereNow",
          "action": "Get current occupancy",
          "description": "Get current occupancy information for channels"
        },
        {
          "name": "Where Now",
          "value": "whereNow",
          "action": "Get user presence",
          "description": "Get channels where a user is present"
        },
        {
          "name": "Set State",
          "value": "setState",
          "action": "Set user state",
          "description": "Set state data for a user on channels"
        },
        {
          "name": "Get State",
          "value": "getState",
          "action": "Get user state",
          "description": "Get state data for a user on channels"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "presence"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listChannels",
      "options": [
        {
          "name": "Add Channels",
          "value": "addChannels",
          "action": "Add channels to group",
          "description": "Add channels to a channel group"
        },
        {
          "name": "Remove Channels",
          "value": "removeChannels",
          "action": "Remove channels from group",
          "description": "Remove channels from a channel group"
        },
        {
          "name": "List Channels",
          "value": "listChannels",
          "action": "List channels in group",
          "description": "List all channels in a channel group"
        },
        {
          "name": "Delete Group",
          "value": "deleteGroup",
          "action": "Delete channel group",
          "description": "Delete a channel group"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "channelGroup"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Publish",
      "value": "publish",
      "action": "Publish a message",
      "description": "Publish a message to a channel"
    },
    {
      "name": "Signal",
      "value": "signal",
      "action": "Send a signal",
      "description": "Send a signal (lightweight message, max 30 characters)"
    },
    {
      "name": "Fetch Messages",
      "value": "fetchMessages",
      "action": "Fetch message history",
      "description": "Fetch message history from a channel"
    },
    {
      "name": "Delete Messages",
      "value": "deleteMessages",
      "action": "Delete messages",
      "description": "Delete messages from a channel"
    },
    {
      "name": "Message Counts",
      "value": "messageCounts",
      "action": "Get message counts",
      "description": "Get message counts for channels"
    },
    {
      "name": "Here Now",
      "value": "hereNow",
      "action": "Get current occupancy",
      "description": "Get current occupancy information for channels"
    },
    {
      "name": "Where Now",
      "value": "whereNow",
      "action": "Get user presence",
      "description": "Get channels where a user is present"
    },
    {
      "name": "Set State",
      "value": "setState",
      "action": "Set user state",
      "description": "Set state data for a user on channels"
    },
    {
      "name": "Get State",
      "value": "getState",
      "action": "Get user state",
      "description": "Get state data for a user on channels"
    },
    {
      "name": "Add Channels",
      "value": "addChannels",
      "action": "Add channels to group",
      "description": "Add channels to a channel group"
    },
    {
      "name": "Remove Channels",
      "value": "removeChannels",
      "action": "Remove channels from group",
      "description": "Remove channels from a channel group"
    },
    {
      "name": "List Channels",
      "value": "listChannels",
      "action": "List channels in group",
      "description": "List all channels in a channel group"
    },
    {
      "name": "Delete Group",
      "value": "deleteGroup",
      "action": "Delete channel group",
      "description": "Delete a channel group"
    }
  ]

npm_readme:
  # n8n-nodes-pubnub

  This is an n8n community node that provides integration with PubNub real-time messaging platform.

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

  [PubNub](https://www.pubnub.com/) is a real-time communication platform for building live chat, multiplayer games, IoT device control, and other real-time features.

  ## Installation

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

  ### Community Nodes (Recommended)

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

  ### Manual Installation

  To use this package in your n8n instance, you can install it via npm:

  ```bash
  npm install n8n-nodes-pubnub
  ```

  ## Credentials

  To use this node, you'll need to configure your PubNub credentials:

  1. **Publish Key**: Your PubNub Publish Key (required for publishing messages)
  2. **Subscribe Key**: Your PubNub Subscribe Key (required for subscribing to channels)
  3. **Secret Key**: Optional secret key for encryption and access manager
  4. **User ID**: Optional unique identifier for this client (auto-generated if not provided)

  You can find your keys in the [PubNub Admin Portal](https://admin.pubnub.com/).

  ## Nodes

  This package provides two nodes:

  ### 1. PubNub Node

  The main node for interacting with PubNub. Supports the following operations:

  #### Message Operations
  - **Publish**: Send a message to a channel
    - Supports metadata, TTL, and history storage options
  - **Signal**: Send a lightweight signal (max 30 characters)

  #### History Operations
  - **Fetch Messages**: Retrieve message history from a channel
    - Supports pagination, metadata, and message actions
  - **Delete Messages**: Delete messages from a channel
  - **Message Counts**: Get message counts for channels

  #### Presence Operations
  - **Here Now**: Get current occupancy and user list for channels
  - **Where Now**: Get channels where a specific user is present
  - **Set State**: Set state data for a user on channels
  - **Get State**: Get state data for a user on channels

  #### Channel Group Operations
  - **Add Channels**: Add channels to a channel group
  - **Remove Channels**: Remove channels from a channel group
  - **List Channels**: List all channels in a channel group
  - **Delete Group**: Delete a channel group

  ### 2. PubNub Trigger Node

  A trigger node that starts your workflow when PubNub events occur:

  - **Trigger On**: Choose to trigger on messages, presence events, or both
  - **Channels**: Subscribe to specific channels (comma-separated)
  - **Channel Groups**: Subscribe to channel groups (comma-separated)

  #### Options:
  - **Filter Expression**: Apply message filtering
  - **With Presence**: Receive presence events
  - **Time Token**: Start receiving messages from a specific timetoken
  - **Include Message Actions**: Include message actions in events
  - **Include Metadata**: Include message metadata

  ## Usage Examples

  ### Example 1: Publish a Message

  1. Add a **PubNub** node to your workflow
  2. Select **Message** resource and **Publish** operation
  3. Enter your channel name (e.g., `my-channel`)
  4. Enter your message as JSON: `{"text": "Hello World!", "timestamp": "{{$now}}"}`
  5. Configure credentials and execute

  ### Example 2: Subscribe to Real-time Messages

  1. Add a **PubNub Trigger** node to start your workflow
  2. Set **Trigger On** to **Message**
  3. Enter channel name(s) (e.g., `chat-room,notifications`)
  4. Configure credentials
  5. Activate the workflow - it will now trigger whenever messages arrive

  ### Example 3: Check Channel Presence

  1. Add a **PubNub** node
  2. Select **Presence** resource and **Here Now** operation
  3. Enter channel name(s)
  4. Enable options: **Include UUIDs** and **Include State**
  5. Execute to see who's currently online

  ### Example 4: Fetch Message History

  1. Add a **PubNub** node
  2. Select **History** resource and **Fetch Messages** operation
  3. Enter channel name
  4. Set count to desired number of messages (e.g., 50)
  5. Enable **Include Metadata** if needed
  6. Execute to retrieve historical messages

  ## Development

  To develop or modify this package:

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

  # Install dependencies
  npm install

  # Build the package
  npm run build

  # Watch for changes during development
  npm run dev
  ```

  ## Resources

  - [PubNub Documentation](https://www.pubnub.com/docs/)
  - [PubNub JavaScript SDK](https://www.pubnub.com/docs/sdks/javascript)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [n8n Creating Nodes](https://docs.n8n.io/integrations/creating-nodes/)

  ## Version History

  ### 0.1.0
  - Initial release
  - PubNub node with message, history, presence, and channel group operations
  - PubNub Trigger node for real-time subscriptions
  - Full credential support with auto-generated User ID fallback

  ## License

  [MIT](LICENSE.md)

  ## Support

  If you encounter issues or have questions:

  1. Check the [PubNub Documentation](https://www.pubnub.com/docs/)
  2. Visit the [n8n Community Forum](https://community.n8n.io/)
  3. Open an issue on [GitHub](https://github.com/pubnub/n8n-nodes-pubnub/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/amazing-feature`)
  3. Commit your changes (`git commit -m 'Add some amazing feature'`)
  4. Push to the branch (`git push origin feature/amazing-feature`)
  5. Open a Pull Request

ai_documentation_summary:
  {"purpose":"A community n8n node that enables real-time messaging and event handling via the PubNub platform, supporting message publishing, history retrieval, presence tracking, and channel management.","capabilities":["Publish messages to channels with metadata, TTL, and history options","Send lightweight signals (max 30 characters)","Fetch message history with pagination and metadata","Delete messages from channels","Get message counts for channels","Retrieve current channel occupancy and user presence","Track user presence across channels","Set and retrieve user state data on channels","Manage channel groups (add, remove, list, delete)","Trigger workflows on incoming messages or presence events"],"authentication":"API key required (Publish Key and Subscribe Key)","commonUseCases":["Real-time chat applications","Live multiplayer game updates","IoT device control notifications","Event-driven workflow automation","User presence monitoring"],"limitations":["Signal messages are limited to 30 characters","User ID is optional and auto-generated if not provided","Secret key is optional and not required for basic operations"],"relatedNodes":["n8n Trigger Node","n8n Webhook Node","n8n HTTP Request Node"]}


node_type: @urlbox/n8n-nodes-urlbox.urlbox
package_name: @urlbox/n8n-nodes-urlbox
display_name: Screenshots by Urlbox
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:41
author_name: cjroeb
author_github_url: https://github.com/urlbox/n8n-nodes-urlbox.git
npm_package_name: @urlbox/n8n-nodes-urlbox
npm_version: 0.1.5
community_fetched_at: 2026-03-25T21:19:41.004Z
ai_summary_generated_at: 2026-03-25 22:51:43
description:
  Generate full page screenshots, video recordings, scrape HTML or Markdown, convert to PDF, and more.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "render",
      "options": [
        {
          "name": "Render",
          "value": "render"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "screenshot_png",
      "options": [
        {
          "name": "Convert to PDF",
          "value": "pdf",
          "action": "Convert website to PDF",
          "description": "Convert the website to PDF"
        },
        {
          "name": "Full Page Screenshot",
          "value": "fullpage_png",
          "action": "Take full page screenshot",
          "description": "Capture the entire page as PNG"
        },
        {
          "name": "Mobile Full Page Screenshot",
          "value": "mobile_png",
          "action": "Take mobile full page screenshot",
          "description": "Capture the entire page in mobile view as a PNG"
        },
        {
          "name": "Scrape HTML",
          "value": "scrape_html",
          "action": "Scrape HTML from page",
          "description": "Capture the HTML of a page"
        },
        {
          "name": "Scrape Markdown",
          "value": "scrape_markdown",
          "action": "Scrape markdown from page",
          "description": "Capture the Markdown of a page"
        },
        {
          "name": "Smooth Scrolling Video",
          "value": "scrolling_video",
          "action": "Record smooth scrolling video",
          "description": "Records the website as a full page MP4, scrolling smoothly down the page"
        },
        {
          "name": "Take Screenshot (PNG)",
          "value": "screenshot_png",
          "action": "Take screenshot",
          "description": "Capture a standard PNG screenshot"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "render"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Convert to PDF",
      "value": "pdf",
      "action": "Convert website to PDF",
      "description": "Convert the website to PDF"
    },
    {
      "name": "Full Page Screenshot",
      "value": "fullpage_png",
      "action": "Take full page screenshot",
      "description": "Capture the entire page as PNG"
    },
    {
      "name": "Mobile Full Page Screenshot",
      "value": "mobile_png",
      "action": "Take mobile full page screenshot",
      "description": "Capture the entire page in mobile view as a PNG"
    },
    {
      "name": "Scrape HTML",
      "value": "scrape_html",
      "action": "Scrape HTML from page",
      "description": "Capture the HTML of a page"
    },
    {
      "name": "Scrape Markdown",
      "value": "scrape_markdown",
      "action": "Scrape markdown from page",
      "description": "Capture the Markdown of a page"
    },
    {
      "name": "Smooth Scrolling Video",
      "value": "scrolling_video",
      "action": "Record smooth scrolling video",
      "description": "Records the website as a full page MP4, scrolling smoothly down the page"
    },
    {
      "name": "Take Screenshot (PNG)",
      "value": "screenshot_png",
      "action": "Take screenshot",
      "description": "Capture a standard PNG screenshot"
    }
  ]

npm_readme:
  # n8n-nodes-urlbox

  ![urlbox-graphic.jpg](/urlbox-graphic.jpg)

  This is a n8n community node for the [Urlbox](https://urlbox.com) screenshot API. You can render screenshots, PDFs, Videos, and more of websites in your n8n workflows.

  ## Installation

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

  ## Templates

  The Urlbox node includes pre-configured templates:

  - **Take Screenshot (PNG)** - Capture a standard PNG screenshot of the visible area of the page
  - **Full Page Screenshot** - Capture the entire page as PNG
  - **Mobile Full Page Screenshot** - Capture the entire page in mobile view as a PNG
  - **Convert to PDF** - Convert the website to PDF
  - **Smooth Scrolling Video** - Records the website as a full page MP4, scrolling smoothly down the page
  - **Scrape HTML** - Capture the HTML of a page
  - **Scrape Markdown** - Capture the Markdown of a page

  ## Additional Options

  - **Clean Shot** - Toggle to remove ads, cookie banners, and auto-accept cookie prompts
  - **Proxy URL** - Optional proxy URL we can use on your behalf to bypass regional blocking
  - **Download As File** - Download the rendered output as a file instead of returning a URL (enabled by default)
  - **Additional Options (JSON)** - Optionally Pass custom Urlbox API options as JSON to override or extend template defaults. Check out our [Docs](https://urlbox.com/docs) for more information.

  ## Credentials

  You need an Urlbox API key to use this node.

  1. Sign up for a [Urlbox account](https://urlbox.com/signup).
  2. Navigate to your [projects page](https://urlbox.com/dashboard/projects).
  ![project-settings.png](project-settings.png)
  3. In n8n, create new Urlbox API credentials and paste your "Secret Key" into the API key field.

  For more information, refer to the [Urlbox authentication documentation](https://urlbox.com/docs/api#authentication).

  ## Compatibility

  Compatible with n8n@1.60.0 or later

  ## Usage

  ### Basic Example

  1. Add the Urlbox node to your workflow
  2. Configure your Urlbox API credentials
  3. Select a template (e.g., "Take Screenshot (PNG)")
  4. Enter the URL you want to capture
  5. Execute the node

  The node returns a JSON response containing at a minimum:
  - `renderUrl`: The URL of your generated screenshot/PDF/video
  - `size`: File size in bytes

  Or if you chose to download the file, it will return the raw image/video/other format.

ai_documentation_summary:
  {"purpose":"A n8n community node that generates full-page screenshots, video recordings, scrapes content (HTML/Markdown), and converts websites to PDFs using the Urlbox API.","capabilities":["Generate full-page screenshots","Generate mobile full-page screenshots","Record smooth scrolling videos","Convert websites to PDF","Scrape HTML content","Scrape Markdown content","Remove ads and cookie banners (Clean Shot)","Bypass regional blocking via proxy","Download output as file or return URL"],"authentication":"API key required (Urlbox Secret Key)","commonUseCases":["Website archiving and documentation","Social media monitoring and content capture","Lead generation and data scraping","Creating PDF reports from web pages","Mobile view testing and capture"],"limitations":["Requires a paid Urlbox account for API access","Compatible only with n8n version 1.60.0 or later","Output format depends on selected template (PNG, PDF, MP4, etc.)"],"relatedNodes":["n8n HTTP Request","n8n File","n8n Webhook"]}


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

updated_at: 2026-03-25 21:19:41
author_name: thanks-io
author_github_url: https://github.com/thanks-io/
npm_package_name: n8n-nodes-thanks-io
npm_version: 0.1.7
community_fetched_at: 2026-03-25T21:19:41.005Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "recipient",
      "options": [
        {
          "name": "Recipient",
          "value": "recipient"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create recipient",
          "description": "Add recipient to mailing list"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "recipient"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create recipient",
      "description": "Add recipient to mailing list"
    }
  ]

npm_readme:
  # n8n-nodes-thanks-io

  This repository contains the official thanks.io community node for n8n.

  [thanks.io](https://www.thanks.io) provides everything you need for direct mail success, including AI-realistic handwritten postcards, letters, and notecards; QR tracking; delivery notifications; and powerful automation— all at super competitive pricing.

  ## Installation

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

  ## Credentials

  You must have a thanks.io API key to use this node. You can register for a free account and obtain an API key here:

  - https://www.thanks.io

  Once registered, generate a Personal Access Token in thanks.io:

  - Dashboard → Settings → API Access  
    https://dashboard.thanks.io/profile/api

  ![Generate thanks.io Token](images/token-create.png)

  Then in n8n, create a credential named **“Thanks.io API”** and paste in your token.


  ![Enter thanks.io Token](images/credentials-setup.png)

  ## Operations / Usage

  ### Add Recipient to Existing Mailing List 
    Easily add recipients to a mailing list and trigger thanks.io’s campaign automation. Campaigns can be created and edited in the [thanks.io Dashboard](https://dashboard.thanks.io/).

  ![Add Recipient to Existing Mailing Lis](images/new-recipient-setup.png)

  ## Compatibility

  Tested against n8n version **2.2.1**

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [thanks.io technical documentation](https://docs.thanks.io)
  - [thanks.io product documentation](https://help.thanks.io)

  ## License

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

ai_documentation_summary:
  {"purpose":"This n8n node enables interaction with the thanks.io API to manage direct mail campaigns, including adding recipients to mailing lists and triggering automation workflows.","capabilities":["Add recipients to existing mailing lists","Trigger thanks.io campaign automation","Manage direct mail campaigns via API"],"authentication":"API key required (Personal Access Token from thanks.io dashboard)","commonUseCases":["Automating thank-you note distribution","Integrating mailing list management into n8n workflows","Triggering delivery notifications for direct mail campaigns"],"limitations":["Campaign creation and editing must be done manually in the thanks.io dashboard","Node tested against n8n version 2.2.1"],"relatedNodes":["n8n-nodes-thanks-io.thanksIo"]}


node_type: n8n-nodes-oxylabs-ai-studio.oxylabsAiStudio
package_name: n8n-nodes-oxylabs-ai-studio
display_name: Oxylabs AI Studio
description: Interact with Oxylabs AI Studio API
category: Community
development_style: declarative
version: 1
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:41
author_name: oxybrain
author_github_url: https://github.com/oxylabs/n8n-nodes-oxylabs-ai-studio
npm_package_name: n8n-nodes-oxylabs-ai-studio
npm_version: 0.1.5
community_fetched_at: 2026-03-25T21:19:41.005Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "scraper",
      "options": [
        {
          "name": "Browser Agent",
          "value": "browserAgent"
        },
        {
          "name": "Crawler",
          "value": "crawler"
        },
        {
          "name": "Map",
          "value": "map"
        },
        {
          "name": "Scraper",
          "value": "scraper"
        },
        {
          "name": "Search",
          "value": "search"
        }
      ],
      "required": true,
      "description": "Choose the resource to use",
      "displayName": "Resource",
      "noDataExpression": true
    }
  ]

npm_readme:
  # n8n-nodes-oxylabs-ai-studio

  This is an n8n community node. It lets you use Oxylabs Ai Studio Apps 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)  <!-- delete if no auth needed -->  
  [Compatibility](#compatibility)  
  [Usage](#usage)  <!-- delete if not using this section -->  
  [Resources](#resources)  
  [Version history](#version-history)  <!-- delete if not using this section -->  

  ## Installation

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

  ## Credentials

  Sign up and get API KEY from [here](https://aistudio.oxylabs.io/settings/api-key)

  ## Compatibility

  node was tested against version `1.100.1`.

  ## Resources

  The node includes four resources: Scraper, Crawler, Browser Agent, and Search. These correspond directly to the same applications available in Oxylabs AI Studio’s [web apps](https://aistudio.oxylabs.io/apps).

  The parameters are nearly identical to those offered by the official SDKs ([Javscript](https://www.npmjs.com/package/oxylabs-ai-studio) and [Python](https://pypi.org/project/oxylabs-ai-studio/)).

  An additional parameter not found in the web interface is `render_javascript`, which is especially useful for handling websites that rely on JavaScript for rendering content.


  ## Usage

  - Scraper is useful for extracting information from a specific URL without getting blocked.

  - Crawler is ideal for scanning an entire domain to collect URLs and their content in order to locate specific information.

  - Search helps retrieve the latest information related to a particular query.

  - Browser Agent controls a remote browser and can perform interactions, such as logging into an app and clicking buttons, making it valuable for scenarios that require user-like actions.



  ## Version history

  - 0.1.0: First version released

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with Oxylabs AI Studio API to perform web scraping, crawling, searching, and browser automation tasks within workflows.","capabilities":["Web scraping from specific URLs","Domain crawling to collect URLs and content","Search queries for retrieving latest information","Browser automation via remote browser control","JavaScript rendering support via render_javascript parameter"],"authentication":"API key required","commonUseCases":["Extracting data from websites without getting blocked","Scanning entire domains to locate specific information","Retrieving up-to-date search results","Automating user-like interactions such as logging in and clicking buttons"],"limitations":["Community node (not official n8n node)","Requires separate API key from Oxylabs AI Studio"],"relatedNodes":["n8n-nodes-web-request","n8n-nodes-http-request"]}


node_type: @paloaltonetworks/n8n-nodes-prisma-airs.prismaAirs
package_name: @paloaltonetworks/n8n-nodes-prisma-airs
display_name: Prisma AIRS
description: Scan AI prompts and responses for security threats using Prisma AIRS
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  {
  "type": "main"
  }
  ]

updated_at: 2026-03-25 21:19:41
author_name: btorresgil
author_github_url: https://github.com/jroberts2600/n8n-nodes-prisma-airs.git
npm_package_name: @paloaltonetworks/n8n-nodes-prisma-airs
npm_version: 0.2.2
community_fetched_at: 2026-03-25T21:19:41.006Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "promptScan",
      "options": [
        {
          "name": "Batch Scan",
          "value": "batchScan",
          "action": "Perform batch scanning of multiple items",
          "description": "Scan multiple items in a single operation (up to 5)"
        },
        {
          "name": "Dual Scan",
          "value": "dualScan",
          "action": "Perform dual scanning of prompt and response",
          "description": "Scan both prompt and response in sequence"
        },
        {
          "name": "Mask Data",
          "value": "maskData",
          "action": "Scan and mask sensitive data",
          "description": "Scan and mask sensitive data in content"
        },
        {
          "name": "Prompt Scan",
          "value": "promptScan",
          "action": "Scan a prompt for security threats",
          "description": "Scan user input/prompts for security threats"
        },
        {
          "name": "Response Scan",
          "value": "responseScan",
          "action": "Scan a response for policy violations",
          "description": "Scan AI-generated responses for policy violations"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Batch Scan",
      "value": "batchScan",
      "action": "Perform batch scanning of multiple items",
      "description": "Scan multiple items in a single operation (up to 5)"
    },
    {
      "name": "Dual Scan",
      "value": "dualScan",
      "action": "Perform dual scanning of prompt and response",
      "description": "Scan both prompt and response in sequence"
    },
    {
      "name": "Mask Data",
      "value": "maskData",
      "action": "Scan and mask sensitive data",
      "description": "Scan and mask sensitive data in content"
    },
    {
      "name": "Prompt Scan",
      "value": "promptScan",
      "action": "Scan a prompt for security threats",
      "description": "Scan user input/prompts for security threats"
    },
    {
      "name": "Response Scan",
      "value": "responseScan",
      "action": "Scan a response for policy violations",
      "description": "Scan AI-generated responses for policy violations"
    }
  ]

npm_readme:
  # Prisma AIRS n8n Community Node

  A production-ready n8n community node for integrating with Palo Alto Networks Prisma AIRS (AI Runtime Security) API. This node enables you to scan AI prompts and responses for security threats directly within your n8n workflows.

  ## Features

  - **Multiple Scan Operations**: Prompt scanning, response scanning, dual scanning, batch scanning, and data masking
  - **Batch Processing**: Scan up to 5 items in a single operation for efficiency
  - **Data Masking**: Automatically detect and mask sensitive data in content
  - **Contextual Grounding**: Validate AI responses against provided context (up to 100K characters)
  - **Dynamic Profile Selection**: Override security profiles per scan using profile name or UUID
  - **Sync & Async Support**: Both synchronous (2MB limit) and asynchronous (5MB limit) scanning
  - **Regional Support**: US, EU (Germany), India, and Custom region endpoints
  - **Flexible Profile Management**: Use API key with linked profile or specify profile name/UUID
  - **Attribution Metadata**: Automatic n8n workflow context (workflowId, workflowName, executionId, executionMode) 
  - **Production-Ready**: Comprehensive error handling, retry logic, and timeout management
  - **Security-First**: Secure credential storage and API key management
  - **Real-time Monitoring**: Async scan polling with exponential backoff

  ## Installation

  ### Prerequisites

  - n8n instance (version 1.0+)
  - Prisma AIRS API access with valid API key
  - Access to Strata Cloud Manager to configure AI security profiles

  ### For End Users

  #### Option 1: Install via n8n Community Nodes (Recommended)
  1. Open your n8n instance
  2. Go to **Settings** → **Community Nodes**
  3. Search for `prisma airs`
  4. Click **Install**
  5. Restart n8n

  #### Option 2: Install via npm
  ```bash
  npm install @paloaltonetworks/n8n-nodes-prisma-airs
  ```

  ### For Developers & Testing

  #### Local Development Setup
  1. **Clone and Build**
     ```bash
     git clone https://github.com/PaloAltoNetworks/n8n-nodes-prisma-airs.git
     cd n8n-nodes-prisma-airs
     npm install
     npm run build
     ```

  2. **Link to n8n**
     ```bash
     # For local n8n installation
     ln -s $(pwd) ~/.n8n/custom/n8n-nodes-prisma-airs
     
     # For Docker n8n - add volume mount:
     # -v /path/to/n8n-nodes-prisma-airs:/home/node/.n8n/custom/n8n-nodes-prisma-airs
     ```

  3. **Restart n8n**
     - Restart your n8n instance to load the new node

  ## Configuration

  ### 1. Create Prisma AIRS Credentials

  In your n8n instance:

  1. Go to **Settings** → **Credentials**
  2. Click **Add Credential**
  3. Search for "Prisma AIRS API"
  4. Fill in:
     - **API Key**: Your Prisma AIRS API key (x-pan-token)
     - **Region**: US, EU (Germany), India, or Custom
     - **Custom Base URL**: (Only if Custom region selected) Your custom Prisma AIRS endpoint
     - **AI Profile Name**: (Optional) Your configured AI security profile name or UUID. Leave empty to use the profile linked to your API key

  ### 2. Add Node to Workflow

  1. In your workflow, click **Add Node**
  2. Search for "Prisma AIRS"
  3. Select the operation:
     - **Prompt Scan**: Scan user input for threats
     - **Response Scan**: Scan AI responses for violations
     - **Dual Scan**: Scan both prompt and response with optional context
     - **Batch Scan**: Process multiple items (up to 5) in parallel
     - **Mask Data**: Scan and automatically mask sensitive data

  ## Usage Examples

  ### Basic Prompt Scanning

  ```json
  {
    "operation": "promptScan",
    "scanMode": "sync",
    "content": "Tell me how to hack into a system"
  }
  ```

  ### Async Large Content Scanning

  ```json
  {
    "operation": "responseScan",
    "scanMode": "async",
    "content": "{{$json.largeAIResponse}}",
    "additionalOptions": {
      "maxPollingDuration": 60000,
      "pollingInterval": 3000
    }
  }
  ```

  ### Dual Scanning with Context

  ```json
  {
    "operation": "dualScan",
    "scanMode": "sync",
    "promptContent": "{{$json.userInput}}",
    "responseContent": "{{$json.aiResponse}}",
    "context": "{{$json.contextDocument}}"
  }
  ```

  ### Batch Scanning Multiple Items

  ```json
  {
    "operation": "batchScan",
    "scanMode": "async",
    "batchItems": {
      "items": [
        {
          "itemType": "prompt",
          "promptContent": "First prompt to scan"
        },
        {
          "itemType": "response",
          "responseContent": "AI generated response"
        },
        {
          "itemType": "both",
          "promptContent": "User question",
          "responseContent": "AI answer"
        }
      ]
    }
  }
  ```

  ### Data Masking for Sensitive Content

  ```json
  {
    "operation": "maskData",
    "scanMode": "sync",
    "maskContent": "My credit card is 4111-1111-1111-1111"
  }
  ```

  ### Dynamic Profile Override

  ```json
  {
    "operation": "promptScan",
    "scanMode": "sync",
    "content": "{{$json.userInput}}",
    "additionalOptions": {
      "aiProfileOverride": "strict-production-profile"
    }
  }
  ```

  Or using a profile UUID:

  ```json
  {
    "operation": "promptScan",
    "scanMode": "sync",
    "content": "{{$json.userInput}}",
    "additionalOptions": {
      "aiProfileOverride": "03b32734-d06d-4bb7-a8df-ac5147630ce8"
    }
  }
  ```

  ## API Response Format

  ```json
  {
    "operation": "promptScan",
    "scanMode": "sync",
    "transactionId": "n8n-12345-67890",
    "action": "allow",
    "category": "benign",
    "confidence": 0.95,
    "scan_id": "abc-123-def",
    "blocked": false,
    "violations": [],
    "metadata": {
      "scan_time": "2025-10-21T10:30:00Z",
      "ai_model": "gpt-4",
      "profile": "production-security-profile"
    },
    "workflowId": "rKU3xnZb5S1ayJCG",
    "workflowName": "Customer Support Bot",
    "executionId": "385",
    "executionMode": "manual",
    "environment": "production",
    "timestamp": "2025-10-21T10:30:00Z"
  }
  ```

  ### Attribution Metadata

  The node automatically enriches all outputs with n8n workflow context for enhanced attribution and tracking:

  - **workflowId**: Unique identifier for the workflow
  - **workflowName**: Human-readable workflow name
  - **executionId**: Unique ID for this specific execution
  - **executionMode**: How the workflow was triggered (`manual`, `webhook`, `trigger`, `cli`)
  - **environment**: Optional environment identifier (if configured)

  This metadata is ideal for:
  - **AI Gateway Integration**: Pass to upstream services 
  - **Cost Attribution**: Track usage by workflow or execution
  - **Audit Trails**: Correlate security scans with workflow runs
  - **Multi-tenant Tracking**: Identify which workflows generated requests

  ## Configuration Options

  ### Required Parameters

  - **Content**: Text to scan (for single operations)
  - **Prompt Content**: Prompt text (for dual scan)
  - **Response Content**: Response text (for dual scan)
  - **Batch Items**: Array of items (for batch scan)
  - **Mask Content**: Content to mask (for mask data operation)

  ### Optional Parameters

  - **Context**: Grounding context for dual scan (up to 100K characters)
  - **AI Profile Override**: Override default profile (name or UUID)
  - **Transaction ID**: Custom tracking identifier
  - **AI Model**: Model identifier for metadata (default: 'n8n-integration')
  - **Application Name**: Source application name. Defaults to 'n8n'. If you provide a custom name (e.g., 'testapp'), it will be formatted as 'n8n-testapp'
  - **User ID**: End user identifier (default: 'n8n-user')
  - **Environment**: Optional environment tag for output tracking (e.g., 'production', 'staging', 'development')
    - Note: This field is for workflow-level tracking only and appears in the output
    - The actual environment used by Prisma AIRS is configured in Strata Cloud Manager at the application level
  - **Timeout**: Request timeout (default: 30000ms)
  - **Max Retries**: Retry attempts (default: 3, max: 6)
  - **Polling Interval**: Async polling frequency (default: 2000ms, min: 1000ms)
  - **Max Polling Duration**: Async timeout (default: 300000ms)

  ## Error Handling

  The node includes comprehensive error handling:

  - **Retry Logic**: Exponential backoff for transient failures
  - **Timeout Management**: Configurable timeouts for all operations
  - **Content Validation**: Size limits enforced (2MB sync, 5MB async)
  - **API Error Handling**: Proper HTTP status code handling
  - **Circuit Breaker**: Prevents cascading failures

  ## Testing

  ### Unit Tests

  ```bash
  npm test
  ```

  ### Integration Testing

  1. Configure valid Prisma AIRS credentials
  2. Create test workflows in n8n
  3. Test all operations (sync/async, prompt/response/dual)
  4. Validate error scenarios



  ## Development

  ### Building

  ```bash
  npm run build
  ```

  ### Linting

  ```bash
  npm run lint
  npm run lintfix
  ```

  ### Watching for Changes

  ```bash
  npm run dev
  ```

  ## Security Considerations

  - API keys are encrypted using n8n's credential system
  - No content is logged or stored by the node
  - All communication uses HTTPS/TLS
  - Proper error handling prevents information leakage

  ## Support

  For issues and questions:

  1. Check the [troubleshooting guide](https://pan.dev/prisma-airs/scan/api/)
  2. Review n8n community node documentation
  3. Contact your Prisma AIRS administrator

  ## License

  MIT License - See LICENSE file for details

  ## Contributing

  Contributions are welcome! To contribute:

  1. Fork the repository
  2. Create feature branches from `main`
  3. Test thoroughly with real Prisma AIRS API
  4. Submit pull requests for review
  5. Ensure all tests and linting pass before merging

  ## Changelog

  ### Version 0.2.1 (Upcoming)
  - **New**: AI Profile is now optional - use API key with linked profile or specify profile name/UUID
  - **New**: Smart application name formatting - defaults to 'n8n', custom names are prefixed (e.g., 'testapp' → 'n8n-testapp')
  - Credential test now validates API key connectivity without requiring profile specification

  ### Version 0.2.0
  - **New**: Automatic attribution metadata (workflowId, workflowName, executionId, executionMode) in all outputs
  - **New**: Custom region support for future Prisma AIRS deployments
  - **New**: Optional environment tag field for workflow-level tracking in outputs
  - **New**: India region support
  - **Fixed**: Better handling of UUID vs profile name in credentials
  - Fully backward compatible with v0.1.x

  ### Version 0.1.1
  - Bug fixes and stability improvements

  ### Version 0.1.0
  - Initial implementation
  - All core features implemented
  - Production-ready with comprehensive error handling
  - Support for sync/async operations
  - Regional endpoint support (US, EU)
  - Full TypeScript implementation

ai_documentation_summary:
  {"purpose":"Scans AI prompts and responses for security threats using Palo Alto Networks Prisma AIRS API within n8n workflows.","capabilities":["Prompt scanning","Response scanning","Dual scanning (prompt and response)","Batch scanning (up to 5 items)","Data masking for sensitive content","Contextual grounding (up to 100K characters)","Synchronous scanning (2MB limit)","Asynchronous scanning (5MB limit)","Dynamic profile selection via name or UUID","Regional endpoint support (US, EU, India, Custom)"],"authentication":"API Key (Prisma AIRS x-pan-token)","commonUseCases":["Security compliance for AI-generated content","Preventing prompt injection attacks","Automated data masking in AI workflows","Real-time threat detection in customer support bots","Batch processing of AI interactions for security audits"],"limitations":["Synchronous mode limited to 2MB content","Async mode limited to 5MB content","Batch operations limited to 5 items per request","Context validation limited to 100K characters","Requires Strata Cloud Manager access to configure security profiles"],"relatedNodes":["n8n HTTP Request","n8n Code Node","n8n Credential Manager"]}


node_type: n8n-nodes-extract-monster.extractMonster
package_name: n8n-nodes-extract-monster
display_name: Extract Monster
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:41
author_name: extractmonster
author_github_url: https://github.com/extract-monster/
npm_package_name: n8n-nodes-extract-monster
npm_version: 1.0.3
community_fetched_at: 2026-03-25T21:19:41.007Z
ai_summary_generated_at: 2026-03-25 22:51:43
description:
  AI-powered data extraction from documents, images, video, and audio. Extract invoices, receipts, forms, and custom data with flexible JSON schemas.

properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "extractDocument",
      "options": [
        {
          "name": "Extract from Document",
          "value": "extractDocument",
          "action": "Extract data from document",
          "description": "Extract from PDF, CSV, and text files (TXT, MD, HTML, XML, JSON, RTF)"
        },
        {
          "name": "Extract from Image",
          "value": "extractImage",
          "action": "Extract data from image or photo",
          "description": "Extract from images and photos (PNG, JPG, JPEG, WebP, HEIC, HEIF, GIF, BMP)"
        },
        {
          "name": "Extract from Video",
          "value": "extractVideo",
          "action": "Extract data from video",
          "description": "Extract from video files (MP4, MOV, AVI, WebM, MPEG, FLV, MPG, WMV, 3GP)"
        },
        {
          "name": "Extract from Audio",
          "value": "extractAudio",
          "action": "Extract data from audio or voice recording",
          "description": "Extract from audio files (WAV, MP3, AIFF, AAC, OGG, FLAC)"
        },
        {
          "name": "Extract from Text",
          "value": "extractText",
          "action": "Extract data from text",
          "description": "Extract structured data from plain text input"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Extract from Document",
      "value": "extractDocument",
      "action": "Extract data from document",
      "description": "Extract from PDF, CSV, and text files (TXT, MD, HTML, XML, JSON, RTF)"
    },
    {
      "name": "Extract from Image",
      "value": "extractImage",
      "action": "Extract data from image or photo",
      "description": "Extract from images and photos (PNG, JPG, JPEG, WebP, HEIC, HEIF, GIF, BMP)"
    },
    {
      "name": "Extract from Video",
      "value": "extractVideo",
      "action": "Extract data from video",
      "description": "Extract from video files (MP4, MOV, AVI, WebM, MPEG, FLV, MPG, WMV, 3GP)"
    },
    {
      "name": "Extract from Audio",
      "value": "extractAudio",
      "action": "Extract data from audio or voice recording",
      "description": "Extract from audio files (WAV, MP3, AIFF, AAC, OGG, FLAC)"
    },
    {
      "name": "Extract from Text",
      "value": "extractText",
      "action": "Extract data from text",
      "description": "Extract structured data from plain text input"
    }
  ]

npm_readme:
  # n8n-nodes-extract-monster

  This is an n8n community node that lets you use [Extract Monster](https://extract.monster) in your n8n workflows.

  Extract Monster is a powerful API for extracting structured data from documents, images, and text using advanced AI models.

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

  ### Community Nodes (Recommended)

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

  ### Manual Installation

  To install manually, navigate to your n8n installation folder and run:

  ```bash
  npm install n8n-nodes-extract-monster
  ```

  ## Operations

  ### Extract From File
  Extract structured data from files including:
  - PDF documents
  - Images (PNG, JPG, etc.)
  - Word documents
  - Spreadsheets
  - And more

  ### Extract From Text
  Extract structured data from plain text input.

  Both operations support optional JSON schemas to define the exact structure of data you want to extract.

  ## Credentials

  To use this node, you need an Extract Monster API key:

  1. Sign up at [extract.monster](https://extract.monster)
  2. Go to your dashboard
  3. Generate a new API key
  4. Copy the key (it starts with `em_`)

  Then in n8n:
  1. Go to **Credentials**
  2. Create new **Extract Monster API** credentials
  3. Paste your API key

  ## Compatibility

  - Minimum n8n version: 0.196.0
  - Tested against n8n version: 1.0.0+

  ## Usage

  ### Basic File Extraction

  1. Add a file input node (e.g., HTTP Request, Google Drive, etc.)
  2. Connect it to the Extract Monster node
  3. Select **Extract From File** operation
  4. Configure credentials
  5. Execute the workflow

  ### With JSON Schema

  Define exactly what data you want to extract:

  ```json
  {
    "invoice_number": {"type": "string"},
    "date": {"type": "string"},
    "total": {"type": "number"},
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "description": {"type": "string"},
          "quantity": {"type": "number"},
          "price": {"type": "number"}
        }
      }
    }
  }
  ```

  ### Text Extraction Example

  1. Add an input node with text data
  2. Connect to Extract Monster node
  3. Select **Extract From Text** operation
  4. Enter or map the text field
  5. Optionally add a schema to define structure
  6. Execute

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Extract Monster Documentation](https://extract.monster/docs)
  * [Extract Monster API Reference](https://extract.monster/docs/developers/api-reference)

  ## Support

  For issues with the n8n node:
  - Create an issue on [GitHub](https://github.com/extract-monster/n8n-nodes-extract-monster/issues)

  For Extract Monster API support:
  - Email: support@extract.monster
  - Documentation: https://extract.monster/docs

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Extracts structured data from documents, images, video, audio, and text using AI models with optional JSON schema definitions.","capabilities":["Extract data from PDF documents","Extract data from images (PNG, JPG)","Extract data from Word documents","Extract data from spreadsheets","Extract data from plain text","Extract data from video and audio","Define custom extraction structure using JSON schemas","Extract invoice data","Extract receipt data","Extract form data"],"authentication":"API key required (Extract Monster API key starting with 'em_')","commonUseCases":["Automated invoice processing","Receipt data extraction","Form data capture from uploaded documents","Document digitization and structuring","Text data parsing and organization"],"limitations":["Requires external API key from Extract Monster service","Minimum n8n version 0.196.0 required","Community node (may have stability risks compared to official nodes)"],"relatedNodes":["HTTP Request","Google Drive","File Input","Text Input"]}


node_type: @decodo/n8n-nodes-decodo.decodo
package_name: @decodo/n8n-nodes-decodo
display_name: Decodo
description: Decodo's Web Scraping API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:41
author_name: decodo
author_github_url: https://github.com/Decodo/n8n-nodes-decodo.git
npm_package_name: @decodo/n8n-nodes-decodo
npm_version: 1.9.1
community_fetched_at: 2026-03-25T21:19:41.007Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "universal",
      "options": [
        {
          "name": "Universal",
          "value": "universal",
          "action": "Scrape using Universal target"
        },
        {
          "name": "Google Search",
          "value": "google_search",
          "action": "Scrape using Google Search target"
        },
        {
          "name": "Amazon",
          "value": "amazon",
          "action": "Scrape using Amazon target"
        },
        {
          "name": "YouTube Transcript",
          "value": "youtube_transcript",
          "action": "Scrape using YouTube Transcript target"
        },
        {
          "name": "Reddit Subreddit",
          "value": "reddit_subreddit",
          "action": "Scrape using Reddit Subreddit target"
        }
      ],
      "required": true,
      "description": "Decodo Scraper API supported target",
      "displayName": "Target",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Universal",
      "value": "universal",
      "action": "Scrape using Universal target"
    },
    {
      "name": "Google Search",
      "value": "google_search",
      "action": "Scrape using Google Search target"
    },
    {
      "name": "Amazon",
      "value": "amazon",
      "action": "Scrape using Amazon target"
    },
    {
      "name": "YouTube Transcript",
      "value": "youtube_transcript",
      "action": "Scrape using YouTube Transcript target"
    },
    {
      "name": "Reddit Subreddit",
      "value": "reddit_subreddit",
      "action": "Scrape using Reddit Subreddit target"
    }
  ]

npm_readme:
  # Decodo n8n Node

  This repository provides an n8n integration for **Decodo's Web Scraping API**, a powerful web scraping tool that automatically bypasses blocks and bot protection to extract data from any target URL. It's designed for developers and startups looking to automate data collection workflows from platforms like Google, eCommerce sites, and job boards.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform that lets you connect apps, APIs, and services to build automated workflows with minimal effort.

  ## Features

  - **Easy integration**. Plug the Decodo's n8n node into existing workflows to start scraping with minimal setup.
  - **Bypassing CAPTCHAs, rate-limits, and IP bans**. Automatic handling of common anti-bot defenses.
  - **Geo-targeting**. Request region-specific results from websites that restrict content based on location.
  - **Rotating proxy support to avoid IP bans**. Built-in proxy rotation to keep requests distributed and persistent.
  - **Structured data output**. Get results in JSON or Markdown formats for easy readability and further analysis.

  ## Installation

  Decodo is an official node integrated into n8n. To use it, simply:

  1. Open the nodes panel.

  <img src="docs/n8n-node-tab.png" width="500px">

  2. Search for "Decodo" to find the node.

  <img src="docs/n8n-decodo-search.png" width="500px">

  3. Click **+ Add to workflow**.

  <img src="docs/n8n-decodo-add-to-workflow.png" width="500px">

  ### Obtaining a Decodo account

  The node requires a [Decodo Web Scraping API](https://decodo.com/scraping) Advanced plan. You can get started with a free trial on the [dashboard](https://dashboard.decodo.com/).

  Once you have a plan activated, take a note of your generated authentication token from the [Web Scraping API page](https://dashboard.decodo.com/web-scraping-api/scraper):

  <img src="docs/decodo_dashboard_auth.png" width="500px">

  ### Setting up credentials on n8n

  1. Open the credentials window on n8n.

  <img src="docs/creds_01.png" width="500px">

  2. Create a new credential.

  <img src="docs/creds_02.png" width="500px">

  3. Find the _Decodo Credentials API_.

  <img src="docs/creds_03.png" width="500px">

  4. Enter your authentication token.

  <img src="docs/n8n_auth.png" width="500px">

  ## Using the node

  The node can be used in 2 ways - as an individual HTTP request node, or a tool for an AI agent.

  ### Individual node

  To use the Decodo node by itself, connect it to an existing workflow. Once you add it, you can set the target **URL** and **Geolocation**.

  <img src="docs/n8n-decodo-node-config.png" width="500px">

  The node requests the target URL through a proxy in the chosen location, scrapes the page, and returns the response for use by downstream nodes such as the **HTML** node to extract content. Below is an example setup:

  <img src="docs/n8n-decodo-workflow.png" width="500px">

  ### AI agent tool

  You can connect the Decodo node to the AI Agent node as a tool. You don't need to modify anything inside the node. Here's what a simple setup would look like:

  <img src="docs/n8n_setup.png" width="500px">

  With this setup, you can prompt the agent to scrape a website in order to extract information. The prompt must be detailed and specific to return the best results.

  **Bad prompt example**

  If your AI model does not have access to the most recent web information, the following question may fail:

  ```
  Who won the NBA in 2025?
  ```

  **Good prompt example**

  The question is more likely to be answered by updating the prompt with an instruction to scrape a reliable source:

  ```
  Scrape Wikipedia and tell me who won the NBA in 2025.
  ```

  ## Parameters

  When used as an AI tool, most parameters can be inferred automatically from messages, for example:

  | Parameter  | Description                                    | Example message                                                         |
  | ---------- | ---------------------------------------------- | ----------------------------------------------------------------------- |
  | `url`      | The target URL to scrape                       | Scrape Wikipedia and tell me the article of the day.                    |
  | `headless` | Render JS when scraping                        | Scrape https://ip.decodo.com/json with JS rendering.                    |
  | `geo`      | The country name from which to scrape          | Scrape https://ip.decodo.com/json with United States geolocation.       |
  | `markdown` | Receive Markdown type responce instead of HTML | Scrape https://ip.decodo.com/json and return result in markdown format. |

  If used as an individual node, all parameters can be manually configured by double-clicking on the node.

  ## Development & releases

  ### Contribution

  To contribute to this node:

  1. Install n8n globally in your development machine.

  ```
  npm install n8n -g
  ```

  2. Pull this repository.

  ```
  git clone https://github.com/Decodo/n8n-nodes-decodo.git

  ```

  3. Navigate to the downloaded folder and build it.

  ```
  cd n8n-nodes-decodo
  npm install
  npm run build
  ```

  4. Inside the project folder, run `npm link` after building to make your local build of `@decodo/n8n-nodes-decodo` available in the local npm registry.
  5. Inside `~/.n8n/custom`, run `npm link @decodo/n8n-nodes-decodo`.

  See this [documentation page](https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally) for more information.

  ### Automated releases

  This project uses automated releases via GitHub Actions and semantic-release. When code is merged into the `main` branch, the following happens automatically:

  1. **Semantic analysis**. Commit messages are analyzed to determine the type of release (patch, minor, major).
  2. **Version bump**. The version in `package.json` is automatically updated.
  3. **NPM publish**. The package is built and published to npm as `@decodo/n8n-nodes-decodo`.
  4. **GitHub release**. A GitHub release is created with automatically generated release notes.
  5. **Git tag**. A git tag is created for the new version.

  ### Required secrets

  For automated releases to work, the following GitHub repository secrets must be configured:

  - `NPM_TOKEN`. An npm access token with publish permissions for the `@decodo` organization.
  - `GITHUB_TOKEN`. Automatically provided by GitHub Actions (no setup required).

  ### Commit message format

  To trigger releases, use conventional commit messages:

  - `feat: new feature` → Minor version bump
  - `fix: bug fix` → Patch version bump
  - `feat!: breaking change` or `BREAKING CHANGE:` in footer → Major version bump
  - `docs:`, `style:`, `refactor:`, `test:`, `chore:` → No release

  ## Compatibility

  The Decodo node has been developed and tested with:

  - Node.js v22.17.0
  - n8n nodes API version 1
  - [n8n-workflow](https://www.npmjs.com/package/n8n-workflow) v1.82.0

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Decodo's Web Scraping API documentation](https://help.decodo.com/docs/web-scraping-api-introduction)

  ## Further reading

  - [Complete guide for building n8n web scraping automations](https://decodo.com/blog/n8n-web-scraping-automation)

ai_documentation_summary:
  {"purpose":"This n8n node integrates Decodo's Web Scraping API to automatically bypass CAPTCHAs, rate limits, and IP bans while extracting data from any target URL with optional geo-targeting.","capabilities":["Web scraping from any URL","Automatic bypass of CAPTCHAs and bot protection","Bypassing rate limits and IP bans","Geo-targeting for region-specific results","Rotating proxy support to avoid IP bans","Structured data output in JSON or Markdown formats","JavaScript rendering (headless mode) support","Integration with AI Agent tools for automated scraping"],"authentication":"API key required (Decodo Web Scraping API token)","commonUseCases":["Automated data collection from eCommerce sites","Job board monitoring and scraping","Real-time information extraction from platforms like Google","AI agent-powered web research and data gathering","Monitoring specific content based on geographic location"],"limitations":["Requires Decodo Advanced plan (free trial available)","AI agent prompts must be detailed and specific for best results","May fail if AI model lacks access to recent web information without explicit scraping instructions"],"relatedNodes":["HTTP Request","HTML","AI Agent","Webhook"]}


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

updated_at: 2026-03-25 21:19:41
author_name: videodb-admin
author_github_url: https://github.com/video-db/n8n-nodes-videodb.git
npm_package_name: @videodb/n8n-nodes-videodb
npm_version: 1.1.1
community_fetched_at: 2026-03-25T21:19:41.008Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "fetchVideos",
      "options": [
        {
          "name": "Index Spoken Words",
          "value": "indexSpokenWords",
          "action": "Index spoken words",
          "description": "Perform semantic indexing on the spoken words in a video"
        },
        {
          "name": "Get Transcript",
          "value": "getTranscript",
          "action": "Get Transcript",
          "description": "Get transcript for a video"
        },
        {
          "name": "Search in a Video",
          "value": "searchInVideo",
          "action": "Search in a Video",
          "description": "Search for a query within a video"
        },
        {
          "name": "Generate Stream",
          "value": "generateStream",
          "action": "Generate a video stream",
          "description": "Generates a stream URL for the video"
        },
        {
          "name": "Index Scenes",
          "value": "indexScenes",
          "action": "Index scenes",
          "description": "Indexes the scenes of the video"
        },
        {
          "name": "List Scene Indexes",
          "value": "listSceneIndexes",
          "action": "List scene indexes",
          "description": "Lists all the scene indexes for the video"
        },
        {
          "name": "Get Scene Index",
          "value": "getSceneIndex",
          "action": "Get scene index",
          "description": "Retrieves a specific scene index"
        },
        {
          "name": "Delete Scene Index",
          "value": "deleteSceneIndex",
          "action": "Delete scene index",
          "description": "Deletes a specific scene index"
        },
        {
          "name": "Add Subtitle",
          "value": "addSubtitle",
          "action": "Add subtitles",
          "description": "Adds subtitles to the video"
        },
        {
          "name": "Translate Transcript",
          "value": "translateTranscript",
          "action": "Translate transcript",
          "description": "Translate transcript of a video to a given language"
        },
        {
          "name": "Generate Audio URL",
          "value": "generateAudioUrl",
          "action": "Generate Audio URL",
          "description": "Generates a temporary, signed URL to access the audio file"
        },
        {
          "name": "Generate Image URL",
          "value": "generateImageUrl",
          "action": "Generate Image URL",
          "description": "Generates a temporary, signed URL to access the image file"
        },
        {
          "name": "Create Collection",
          "value": "createCollection",
          "action": "Create Collection",
          "description": "Creates a new collection"
        },
        {
          "name": "Download",
          "value": "download",
          "action": "Download",
          "description": "Requests a download URL for a given stream link"
        },
        {
          "name": "Get Collection",
          "value": "getCollection",
          "action": "Get Collection",
          "description": "Fetches a single collection by its ID"
        },
        {
          "name": "Get Collections",
          "value": "getCollections",
          "action": "Get Collections",
          "description": "Fetches all collections for the user"
        },
        {
          "name": "Update Collection",
          "value": "updateCollection",
          "action": "Update Collection",
          "description": "Updates a collection's name or description"
        },
        {
          "name": "YouTube Search",
          "value": "youtubeSearch",
          "action": "YouTube Search",
          "description": "Performs a YouTube search within a collection"
        },
        {
          "name": "Delete Audio",
          "value": "deleteAudio",
          "action": "Delete Audio",
          "description": "Deletes a specific audio asset by its ID from a collection"
        },
        {
          "name": "Delete Image",
          "value": "deleteImage",
          "action": "Delete Image",
          "description": "Deletes a specific image by its ID from a collection"
        },
        {
          "name": "Delete Video",
          "value": "deleteVideo",
          "action": "Delete Video",
          "description": "Deletes a specific video by its ID from a collection"
        },
        {
          "name": "Delete Collection",
          "value": "deleteCollection",
          "action": "Delete Collection",
          "description": "Deletes a collection and all its assets"
        },
        {
          "name": "Dub Video",
          "value": "dubVideo",
          "action": "Dub Video",
          "description": "Dubs a video into a different language"
        },
        {
          "name": "Generate Image",
          "value": "generateImage",
          "action": "Generate Image",
          "description": "Generates an image from a text prompt"
        },
        {
          "name": "Generate Music",
          "value": "generateMusic",
          "action": "Generate Music",
          "description": "Generates music from a text prompt"
        },
        {
          "name": "Generate Sound Effect",
          "value": "generateSoundEffect",
          "action": "Generate Sound Effect",
          "description": "Generates a sound effect from a text prompt"
        },
        {
          "name": "Generate Voice",
          "value": "generateVoice",
          "action": "Generate Voice",
          "description": "Generates voice from text"
        },
        {
          "name": "Generate Video",
          "value": "generateVideo",
          "action": "Generate Video",
          "description": "Generates a video from a text prompt"
        },
        {
          "name": "Generate Text",
          "value": "generateText",
          "action": "Generate Text",
          "description": "Generates text from a prompt using AI models"
        },
        {
          "name": "Get Audio",
          "value": "getAudio",
          "action": "Get Audio",
          "description": "Retrieves a specific audio asset by its ID from a collection"
        },
        {
          "name": "Get Audios",
          "value": "getAudios",
          "action": "Get Audios",
          "description": "Retrieves a list of all audio assets within a collection"
        },
        {
          "name": "Get Image",
          "value": "getImage",
          "action": "Get Image",
          "description": "Retrieves a specific image by its ID from a collection"
        },
        {
          "name": "Get Images",
          "value": "getImages",
          "action": "Get Images",
          "description": "Retrieves a list of all images within a collection"
        },
        {
          "name": "Get Video",
          "value": "getVideo",
          "action": "Get Video",
          "description": "Retrieves a specific video by its ID from a collection"
        },
        {
          "name": "Get Videos",
          "value": "getVideos",
          "action": "Get Videos",
          "description": "Retrieves a list of all videos within a collection"
        },
        {
          "name": "Search in a Collection",
          "value": "search",
          "action": "Search in a Collection",
          "description": "Performs a search query across the collection"
        },
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload",
          "description": "Uploads a media file (video, audio, or image) from a URL"
        },
        {
          "name": "Record Meeting",
          "value": "recordMeeting",
          "action": "Record Meeting",
          "description": "Records a meeting using a bot and saves it to the collection"
        },
        {
          "name": "Get Meeting",
          "value": "getMeeting",
          "action": "Get Meeting",
          "description": "Retrieves a specific meeting recording by its ID from a collection"
        },
        {
          "name": "Compile Timeline (VideoDB's Video Editor)",
          "value": "compileTimeline",
          "action": "Compile Timeline (VideoDB's Video Editor)",
          "description": "VideoDB's Video Editor - Build a multi-track timeline (video + overlays) and get a stream/player URL"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Index Spoken Words",
      "value": "indexSpokenWords",
      "action": "Index spoken words",
      "description": "Perform semantic indexing on the spoken words in a video"
    },
    {
      "name": "Get Transcript",
      "value": "getTranscript",
      "action": "Get Transcript",
      "description": "Get transcript for a video"
    },
    {
      "name": "Search in a Video",
      "value": "searchInVideo",
      "action": "Search in a Video",
      "description": "Search for a query within a video"
    },
    {
      "name": "Generate Stream",
      "value": "generateStream",
      "action": "Generate a video stream",
      "description": "Generates a stream URL for the video"
    },
    {
      "name": "Index Scenes",
      "value": "indexScenes",
      "action": "Index scenes",
      "description": "Indexes the scenes of the video"
    },
    {
      "name": "List Scene Indexes",
      "value": "listSceneIndexes",
      "action": "List scene indexes",
      "description": "Lists all the scene indexes for the video"
    },
    {
      "name": "Get Scene Index",
      "value": "getSceneIndex",
      "action": "Get scene index",
      "description": "Retrieves a specific scene index"
    },
    {
      "name": "Delete Scene Index",
      "value": "deleteSceneIndex",
      "action": "Delete scene index",
      "description": "Deletes a specific scene index"
    },
    {
      "name": "Add Subtitle",
      "value": "addSubtitle",
      "action": "Add subtitles",
      "description": "Adds subtitles to the video"
    },
    {
      "name": "Translate Transcript",
      "value": "translateTranscript",
      "action": "Translate transcript",
      "description": "Translate transcript of a video to a given language"
    },
    {
      "name": "Generate Audio URL",
      "value": "generateAudioUrl",
      "action": "Generate Audio URL",
      "description": "Generates a temporary, signed URL to access the audio file"
    },
    {
      "name": "Generate Image URL",
      "value": "generateImageUrl",
      "action": "Generate Image URL",
      "description": "Generates a temporary, signed URL to access the image file"
    },
    {
      "name": "Create Collection",
      "value": "createCollection",
      "action": "Create Collection",
      "description": "Creates a new collection"
    },
    {
      "name": "Download",
      "value": "download",
      "action": "Download",
      "description": "Requests a download URL for a given stream link"
    },
    {
      "name": "Get Collection",
      "value": "getCollection",
      "action": "Get Collection",
      "description": "Fetches a single collection by its ID"
    },
    {
      "name": "Get Collections",
      "value": "getCollections",
      "action": "Get Collections",
      "description": "Fetches all collections for the user"
    },
    {
      "name": "Update Collection",
      "value": "updateCollection",
      "action": "Update Collection",
      "description": "Updates a collection's name or description"
    },
    {
      "name": "YouTube Search",
      "value": "youtubeSearch",
      "action": "YouTube Search",
      "description": "Performs a YouTube search within a collection"
    },
    {
      "name": "Delete Audio",
      "value": "deleteAudio",
      "action": "Delete Audio",
      "description": "Deletes a specific audio asset by its ID from a collection"
    },
    {
      "name": "Delete Image",
      "value": "deleteImage",
      "action": "Delete Image",
      "description": "Deletes a specific image by its ID from a collection"
    },
    {
      "name": "Delete Video",
      "value": "deleteVideo",
      "action": "Delete Video",
      "description": "Deletes a specific video by its ID from a collection"
    },
    {
      "name": "Delete Collection",
      "value": "deleteCollection",
      "action": "Delete Collection",
      "description": "Deletes a collection and all its assets"
    },
    {
      "name": "Dub Video",
      "value": "dubVideo",
      "action": "Dub Video",
      "description": "Dubs a video into a different language"
    },
    {
      "name": "Generate Image",
      "value": "generateImage",
      "action": "Generate Image",
      "description": "Generates an image from a text prompt"
    },
    {
      "name": "Generate Music",
      "value": "generateMusic",
      "action": "Generate Music",
      "description": "Generates music from a text prompt"
    },
    {
      "name": "Generate Sound Effect",
      "value": "generateSoundEffect",
      "action": "Generate Sound Effect",
      "description": "Generates a sound effect from a text prompt"
    },
    {
      "name": "Generate Voice",
      "value": "generateVoice",
      "action": "Generate Voice",
      "description": "Generates voice from text"
    },
    {
      "name": "Generate Video",
      "value": "generateVideo",
      "action": "Generate Video",
      "description": "Generates a video from a text prompt"
    },
    {
      "name": "Generate Text",
      "value": "generateText",
      "action": "Generate Text",
      "description": "Generates text from a prompt using AI models"
    },
    {
      "name": "Get Audio",
      "value": "getAudio",
      "action": "Get Audio",
      "description": "Retrieves a specific audio asset by its ID from a collection"
    },
    {
      "name": "Get Audios",
      "value": "getAudios",
      "action": "Get Audios",
      "description": "Retrieves a list of all audio assets within a collection"
    },
    {
      "name": "Get Image",
      "value": "getImage",
      "action": "Get Image",
      "description": "Retrieves a specific image by its ID from a collection"
    },
    {
      "name": "Get Images",
      "value": "getImages",
      "action": "Get Images",
      "description": "Retrieves a list of all images within a collection"
    },
    {
      "name": "Get Video",
      "value": "getVideo",
      "action": "Get Video",
      "description": "Retrieves a specific video by its ID from a collection"
    },
    {
      "name": "Get Videos",
      "value": "getVideos",
      "action": "Get Videos",
      "description": "Retrieves a list of all videos within a collection"
    },
    {
      "name": "Search in a Collection",
      "value": "search",
      "action": "Search in a Collection",
      "description": "Performs a search query across the collection"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload",
      "description": "Uploads a media file (video, audio, or image) from a URL"
    },
    {
      "name": "Record Meeting",
      "value": "recordMeeting",
      "action": "Record Meeting",
      "description": "Records a meeting using a bot and saves it to the collection"
    },
    {
      "name": "Get Meeting",
      "value": "getMeeting",
      "action": "Get Meeting",
      "description": "Retrieves a specific meeting recording by its ID from a collection"
    },
    {
      "name": "Compile Timeline (VideoDB's Video Editor)",
      "value": "compileTimeline",
      "action": "Compile Timeline (VideoDB's Video Editor)",
      "description": "VideoDB's Video Editor - Build a multi-track timeline (video + overlays) and get a stream/player URL"
    }
  ]

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

  # n8n-nodes-videodb

  This is an n8n community node. It lets you use the [VideoDB](https://videodb.com) in your n8n workflows.

  Power your video and media automation with VideoDB. Access advanced video indexing, search, and management features. Get started at https://console.videodb.io

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

  ## Table of Contents

  - [Installation](#installation)
  - [Operations](#operations)
  - [Credentials](#credentials)
  - [Compatibility](#compatibility)
  - [Usage](#usage)
  - [Resources](#resources)
  - [Development](#development)
  - [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 supports the following operations:

  **Video**
  - Fetch, upload, index, search, and manage videos
  - Get transcripts and generate streams
  - Translate transcripts to any language
  - Scene extraction and indexing
  - Add subtitles

  **Timeline Editor**
  - Compile multi-track timelines with inline videos
  - Overlay images, audio, and text with custom styling

  **Audio & Images**
  - Upload and manage audio/image assets
  - Generate voice and URLs

  **Collections**
  - Create, list, and manage collections

  ## Credentials

  An API key is required in order to issue calls to the VideoDB API. Sign up to retrieve your API key at https://console.videodb.io.

  ## Compatibility

  Tested locally against n8n v1.93.0.

  ## Usage

  You should familiarize yourself with the various response objects, to understand what data is provided by the API, and how to access individual insights. Response object formats are available in the VideoDB API documentation.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [VideoDB API documentation](https://docs.videodb.io)

  ## Development

  To streamline and accelerate the development process, follow these steps:

  1. Install _n8n_ globally (`npm add -g n8n`).
  2. Set the `N8N_CUSTOM_EXTENSIONS` environment variable to the `/dist` directory of this repository.
  3. Enable hot reloading by setting the `N8N_DEV_RELOAD` environment variable to `true`.
  4. Run `npm run dev` to watch for changes and automatically rebuild the node as you develop.
  5. Start n8n with `n8n start` to launch the editor UI.
  6. Open the n8n editor UI in your browser.

  You should now be able to search for and use the VideoDB node in your n8n workflows.

  > **Note:** When launching n8n locally for the first time, you will be prompted to create a user account. If you forget your credentials, you can reset n8n to its initial state by running `n8n user-management:reset`.

  ## Version history

  - 1.1.1 - Updated `x-videodb-client` header to use dynamic version
  - 1.1.0 - Added `Translate Transcript` operation for videos
  - 1.0.9 - Fixed timeline overlay text style parsing; added helpful notice in credentials and UTM tracking
  - 1.0.8 - Explicitly pass `error` message in JSON output when `continueOnFail` is enabled
  - 1.0.7 - Added `pairedItem` item linking and robust error handling with `continueOnFail` and `NodeOperationError`
  - 1.0.6 - `generateVoice` now sends `audio_type: voice`
  - 1.0.5 - Added the `Create Timeline (VideoDB's Video Editor)` action
  - 1.0.4 - README update
  - 1.0.3 - Dropdowns for `collection`, `image`, `audio` and `video` IDs along with minor bug fixes
  - 1.0.2 - Filtered nodes to most useful ones
  - 1.0.1 - Filtered nodes to most useful ones
  - 1.0.0 — Initial release of the VideoDB API n8n node

ai_documentation_summary:
  {"purpose":"The VideoDB n8n node enables automation of video and media workflows by interacting with the VideoDB API for indexing, search, and management tasks.","capabilities":["Fetch, upload, index, search, and manage videos","Get transcripts and generate streams","Translate transcripts to any language","Scene extraction and indexing","Add subtitles","Compile multi-track timelines with inline videos","Overlay images, audio, and text with custom styling","Upload and manage audio/image assets","Generate voice and URLs","Create, list, and manage collections"],"authentication":"API key required","commonUseCases":["Automated video content indexing and search","Multi-language transcript translation","Video timeline editing and compilation","Media asset management and organization"],"limitations":["Community node (not official n8n node)","Requires separate VideoDB account and API key"],"relatedNodes":["Community Nodes","Video Processing Nodes","Media Management Nodes"]}


