# nodes

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

updated_at: 2026-02-19 14:41:52
author_name: meetgeek
author_github_url: https://github.com/meetgeekai/meetgeekai-n8n-node.git
npm_package_name: n8n-nodes-meetgeek
npm_version: 0.1.6
community_fetched_at: 2026-02-19T14:41:52.645Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "meeting",
      "options": [
        {
          "name": "Meeting",
          "value": "meeting"
        },
        {
          "name": "Recording",
          "value": "recording"
        },
        {
          "name": "Highlight",
          "value": "highlight"
        },
        {
          "name": "Team",
          "value": "team"
        },
        {
          "name": "Transcript",
          "value": "transcript"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getManyHighlights",
      "options": [
        {
          "name": "Get Many",
          "value": "getManyHighlights",
          "action": "Get many highlights",
          "description": "Get list of highlights for a meeting"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "highlight"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getManyMeetings",
      "options": [
        {
          "name": "Get Many",
          "value": "getManyMeetings",
          "action": "Gets many meetings",
          "description": "Get list of meetings"
        },
        {
          "name": "Get Meeting Details",
          "value": "getMeeting",
          "action": "Gets a meeting by ID",
          "description": "Get a meeting by ID"
        },
        {
          "name": "Get Meeting Summary",
          "value": "getMeetingSummary",
          "action": "Gets meeting summary by ID",
          "description": "Get meeting summary by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "meeting"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "uploadRecording",
      "options": [
        {
          "name": "Upload",
          "value": "uploadRecording",
          "action": "Upload recording",
          "description": "Upload a recording for analysis"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "recording"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getManyTeams",
      "options": [
        {
          "name": "Get Many",
          "value": "getManyTeams",
          "action": "Get many teams",
          "description": "Get list of teams"
        },
        {
          "name": "Get Team Meetings",
          "value": "getTeamMeetings",
          "action": "Gets team meetings"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getManyTranscripts",
      "options": [
        {
          "name": "Get Many",
          "value": "getManyTranscripts",
          "action": "Get many transcripts",
          "description": "Get list of transcripts for a meeting"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transcript"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Many",
      "value": "getManyHighlights",
      "action": "Get many highlights",
      "description": "Get list of highlights for a meeting"
    },
    {
      "name": "Get Many",
      "value": "getManyMeetings",
      "action": "Gets many meetings",
      "description": "Get list of meetings"
    },
    {
      "name": "Get Meeting Details",
      "value": "getMeeting",
      "action": "Gets a meeting by ID",
      "description": "Get a meeting by ID"
    },
    {
      "name": "Get Meeting Summary",
      "value": "getMeetingSummary",
      "action": "Gets meeting summary by ID",
      "description": "Get meeting summary by ID"
    },
    {
      "name": "Upload",
      "value": "uploadRecording",
      "action": "Upload recording",
      "description": "Upload a recording for analysis"
    },
    {
      "name": "Get Many",
      "value": "getManyTeams",
      "action": "Get many teams",
      "description": "Get list of teams"
    },
    {
      "name": "Get Team Meetings",
      "value": "getTeamMeetings",
      "action": "Gets team meetings"
    },
    {
      "name": "Get Many",
      "value": "getManyTranscripts",
      "action": "Get many transcripts",
      "description": "Get list of transcripts for a meeting"
    }
  ]

npm_readme:
  # n8n-nodes-meetgeek

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

  MeetGeek is an AI-powered meeting assistant that automatically records, transcribes, and summarizes your meetings.

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

  ## Operations

  ### Meeting
  - **Get Details**: Retrieve detailed information about a specific meeting

  ### Recording  
  - **Upload**: Upload a recording file for analysis and transcription

  ### Highlight
  - **Get**: Retrieve highlights from a specific meeting
  - **Listen for New**: Webhook trigger that fires when a new highlight is created

  ## Credentials

  This node uses the MeetGeek API credentials. You'll need to:

  1. Go to your MeetGeek settings
  2. Navigate to the Integration Tab
  3. Copy your API token from Public API
  4. Create new credentials in n8n using this token

  ## Compatibility

  Tested with n8n version 0.220.0 and above.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [MeetGeek API Documentation](https://docs.meetgeek.ai)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Provides n8n workflows with access to the MeetGeek API to upload meeting recordings, retrieve meeting details and highlights, and trigger workflows when new highlights are created.","capabilities":["Get meeting details (retrieve detailed information about a specific meeting)","Upload recording files for analysis and transcription","Retrieve highlights from a specific meeting","Webhook trigger: listen for new highlights when they are created"],"authentication":"API key required (MeetGeek Public API token). Obtain token from MeetGeek settings > Integration > Public API and create MeetGeek credentials in n8n using that token.","commonUseCases":["Automatically upload external meeting recordings to MeetGeek for transcription and analysis","Fetch meeting metadata or details to enrich downstream workflow actions","Retrieve highlights to generate summaries, notifications, or follow-up tasks","Trigger workflows when MeetGeek creates a new highlight (real-time reactions to important moments)"],"limitations":["Tested and compatible with n8n version 0.220.0 and above (requirement noted in README)"],"relatedNodes":[]}


node_type: @apify/n8n-nodes-apify.apify
package_name: @apify/n8n-nodes-apify
display_name: Apify
description: Access Apify tools for web scraping, data extraction, and automation.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: mtrunkat
author_github_url: https://github.com/apify/n8n-nodes-apify.git
npm_package_name: @apify/n8n-nodes-apify
npm_version: 0.6.5
community_fetched_at: 2026-02-19T14:41:52.646Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "Actors",
      "options": [
        {
          "name": "Actor",
          "value": "Actors"
        },
        {
          "name": "Actor Task",
          "value": "Actor tasks"
        },
        {
          "name": "Actor Run",
          "value": "Actor runs"
        },
        {
          "name": "Dataset",
          "value": "Datasets"
        },
        {
          "name": "Key-Value Store",
          "value": "Key-Value Stores"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Run actor",
      "options": [
        {
          "name": "Run an Actor",
          "value": "Run actor",
          "action": "Run an Actor",
          "description": "Runs an Actor. You can override the Actor’s input configuration by providing a custom body, which will override the prefilled input values."
        },
        {
          "name": "Run an Actor and Get Dataset",
          "value": "Run actor and get dataset",
          "action": "Run an Actor and get dataset",
          "description": "Runs an Actor, waits for it to finish, and finally returns the dataset items"
        },
        {
          "name": "Scrape Single URL",
          "value": "Scrape single URL",
          "action": "Scrape single URL",
          "description": "Scrape a single URL using the Apify Website Content Crawler Actor and get its content as text, markdown, and HTML"
        },
        {
          "name": "Get Last Run",
          "value": "Get last run",
          "action": "Get last run",
          "description": "Retrieves the most recent run of an Actor. This endpoint is useful for quickly accessing the latest run details, including its status and storages, without needing to specify a run ID."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Actors"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Run task",
      "options": [
        {
          "name": "Run Task",
          "value": "Run task",
          "action": "Run task",
          "description": "Runs an Actor Task and return all associated details. You can optionally override the Actor’s input configuration by providing a custom body."
        },
        {
          "name": "Run Task and Get Dataset",
          "value": "Run task and get dataset",
          "action": "Run task and get dataset",
          "description": "Runs an Actor task, waits for it to finish, and finally returns the dataset items. You can optionally override the Actor’s input configuration by providing a custom body."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Actor tasks"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Get user runs list",
      "options": [
        {
          "name": "Get User Runs List",
          "value": "Get user runs list",
          "action": "Get user runs list",
          "description": "Gets a list of Actor runs for the user. This endpoint is useful for retrieving a history of runs, their statuses, and other data."
        },
        {
          "name": "Get run",
          "value": "Get run",
          "action": "Get run",
          "description": "Gets the details of a specific Actor run by its ID. This endpoint is useful for retrieving information about a run, such as its status, storages, and other metadata."
        },
        {
          "name": "Get runs",
          "value": "Get runs",
          "action": "Get runs",
          "description": "Gets a list of Actor runs. This endpoint is useful for retrieving a history of runs, their statuses, and other data."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Actor runs"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Get items",
      "options": [
        {
          "name": "Get Items",
          "value": "Get items",
          "action": "Get dataset items",
          "description": "Retrieves items from a dataset"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Datasets"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Get Key-Value Store Record",
      "options": [
        {
          "name": "Get Key-Value Store Record",
          "value": "Get Key-Value Store Record",
          "action": "Get key-value store record",
          "description": "Gets a value stored in the key-value store under a specific key"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Key-Value Stores"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Run an Actor",
      "value": "Run actor",
      "action": "Run an Actor",
      "description": "Runs an Actor. You can override the Actor’s input configuration by providing a custom body, which will override the prefilled input values."
    },
    {
      "name": "Run an Actor and Get Dataset",
      "value": "Run actor and get dataset",
      "action": "Run an Actor and get dataset",
      "description": "Runs an Actor, waits for it to finish, and finally returns the dataset items"
    },
    {
      "name": "Scrape Single URL",
      "value": "Scrape single URL",
      "action": "Scrape single URL",
      "description": "Scrape a single URL using the Apify Website Content Crawler Actor and get its content as text, markdown, and HTML"
    },
    {
      "name": "Get Last Run",
      "value": "Get last run",
      "action": "Get last run",
      "description": "Retrieves the most recent run of an Actor. This endpoint is useful for quickly accessing the latest run details, including its status and storages, without needing to specify a run ID."
    },
    {
      "name": "Run Task",
      "value": "Run task",
      "action": "Run task",
      "description": "Runs an Actor Task and return all associated details. You can optionally override the Actor’s input configuration by providing a custom body."
    },
    {
      "name": "Run Task and Get Dataset",
      "value": "Run task and get dataset",
      "action": "Run task and get dataset",
      "description": "Runs an Actor task, waits for it to finish, and finally returns the dataset items. You can optionally override the Actor’s input configuration by providing a custom body."
    },
    {
      "name": "Get User Runs List",
      "value": "Get user runs list",
      "action": "Get user runs list",
      "description": "Gets a list of Actor runs for the user. This endpoint is useful for retrieving a history of runs, their statuses, and other data."
    },
    {
      "name": "Get run",
      "value": "Get run",
      "action": "Get run",
      "description": "Gets the details of a specific Actor run by its ID. This endpoint is useful for retrieving information about a run, such as its status, storages, and other metadata."
    },
    {
      "name": "Get runs",
      "value": "Get runs",
      "action": "Get runs",
      "description": "Gets a list of Actor runs. This endpoint is useful for retrieving a history of runs, their statuses, and other data."
    },
    {
      "name": "Get Items",
      "value": "Get items",
      "action": "Get dataset items",
      "description": "Retrieves items from a dataset"
    },
    {
      "name": "Get Key-Value Store Record",
      "value": "Get Key-Value Store Record",
      "action": "Get key-value store record",
      "description": "Gets a value stored in the key-value store under a specific key"
    }
  ]

npm_readme:
  # n8n Nodes - Apify integration

  This is an n8n community node that integrates [Apify](https://apify.com) with your n8n workflows, so you can run Apify Actors, extract structured data from websites, and automate complex web scraping tasks.

  [Apify](https://apify.com) is a platform for developers to build, deploy, and publish web automation tools, while [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) tool for AI workflow automation that allows you to connect various services.

  ## Table of contents

  - [Installation on self hosted instance](#installation-self-hosted)
  - [Installation on n8n cloud](#installation-n8n-cloud)
  - [Installation for development and contributing](#installation-development-and-contributing)
  - [Operations](#operations)
  - [Credentials](#credentials)
  - [Compatibility](#compatibility)
  - [Usage](#usage)
  - [Resources](#resources)
  - [Release](#releasing-a-new-version)
  - [Version History](#version-history)
  - [Troubleshooting](#troubleshooting)

  ## Installation (self-hosted)

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

  1. Open your n8n instance.
  2. Go to **Settings > Community Nodes**
  3. Select **Install**.
  4. Enter the npm package name: `@apify/n8n-nodes-apify` to install the latest version. To install a specific version (e.g 0.6.4) enter `@apify/n8n-nodes-apify@0.6.4`. All versions are available [here](https://www.npmjs.com/package/@apify/n8n-nodes-apify?activeTab=versions)
  5. Agree to the [risks](https://docs.n8n.io/integrations/community-nodes/risks/) of using community nodes and select **Install**
  6. The node is now available to use in your workflows.

  ## Installation (n8n Cloud)

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

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

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

  ## Installation (development and contributing)

  ### ⚙️ Prerequisites

  - **Node.js**: 22.x or higher (required)
  - **npm**: 10.8.2 or higher (required)

  Verify your versions:

  ```bash
  node --version  # Should be v22.x.x or higher
  npm --version   # Should be 10.8.2 or higher
  ```

  If you use `nvm`, the project includes a `.nvmrc` file. Simply run:

  ```bash
  nvm use
  ```

  ### 1. Clone and Install Dependencies

  Clone the repository and install dependencies:

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

  ### 2. Build the Node Package

  ```bash
  npm run build
  ```

  ### 3. Start Development Server

  Start the n8n development server with your node linked:

  ```bash
  npm run dev
  ```

  ---

  ### 🔁 Making changes

  If you make any changes to your custom node locally, remember to rebuild and restart:

  ```bash
  npm run build
  ```

  ---

  ## Self-hosted n8n: Public webhook URL for triggers

  This configuration is required for our service's trigger functionality to work correctly.

  By default, when running locally n8n generates webhook URLs using `localhost`, which external services cannot reach. To fix this:

  1. **Set your webhook URL**  
     In the same shell or Docker environment where n8n runs, export the `WEBHOOK_URL` to a publicly-accessible address. For example:

  ```bash
  export WEBHOOK_URL="https://your-tunnel.local"
  ```

  2. **Restart n8n**

  ```bash
  npm run dev
  ```

  ## Operations

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

  ### Actors

  - **Run Actor**: Execute an Actor with optional input parameters
    - Default behavior: Uses predefined input values
    - Custom input: Provide JSON object to override any or all default parameters
    - Configurable timeout and memory limits
    - Build version selection
  - **Run Actor and get dataset items**: Execute an Actor, wait for it to finish, and return the dataset items
  - **Scrape Single URL**: Quick scraping of a single URL
  - **Get Last Run**: Retrieve information about the most recent Actor run

  ### Actor tasks

  - **Run Task**: Execute a predefined Actor task
    - Supports custom input JSON
    - Configurable timeout
    - Task-specific settings
  - **Run task and get dataset items**: Execute a task, wait for it to finish, and return the dataset items

  ### Actor runs

  - **Get User Runs List**: List all runs for a user
    - Pagination support
    - Sorting options
    - Status filtering
  - **Get run**: Retrieve detailed information about a specific run

  ### Datasets

  - **Get Items**: Fetch items from a dataset

  ### Key-Value Stores

  - **Get Key-Value Store Record**: Retrieve a specific record by key

  ### Triggers

  Automatically start an n8n workflow whenever an Actor or task finishes execution

  - Can be configured to trigger on success, failure, abort, timeout or any combination of these states
  - Includes run metadata in the output
  - Available triggers:
    - **Actor Run Finished**: Start a workflow when an Actor run completes
    - **Task Run Finished**: Start a workflow when a task run completes

  ### AI Tools

  All Apify node operations can be combined with n8n's AI tools to create powerful workflows.
  For example, you can scrape data from a website using an Actor and then use an AI model to analyze or summarize the extracted information.

  ## Credentials

  The node supports two authentication methods:

  1. **API key authentication**
     - Configure your Apify API key in the n8n credentials section under `apifyApi`

  2. **OAuth2 authentication** (available only in n8n cloud)
     - Configure OAuth2 credentials in the n8n credentials section under `apifyOAuth2Api`

  ![auth](./docs/auth.png)

  ## Compatibility

  - **n8n**: Version 1.57.0 and higher
  - **Node.js**: 22.x or higher
  - **npm**: 10.8.2 or higher

  ## Usage

  1. **Create an Actor**: Set up a new Actor on [Apify](https://apify.com).
  2. **Set up a workflow**: Create a new workflow in n8n.
  3. **Add the Apify node**: Insert the Apify node into your workflow.
  4. **Configure credentials**: Enter your Apify API key and Actor ID.
  5. **Select an operation**: Choose the desired operation for the node.
  6. **Execute the workflow**: Run the workflow to execute the Apify operation.

  ![workflow](./docs/workflow.png)

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Apify API Documentation](https://docs.apify.com)

  # Releasing a New Version

  This project uses a GitHub Actions workflow to automate the release process, including publishing to npm. Here's how to trigger a new release.

  **Prerequisites (for all methods):**

  - Ensure your target branch on GitHub is up-to-date with all changes you want to include in the release.
  - Decide on the new version number, following semantic versioning (e.g., `vX.Y.Z`).
  - Prepare your release notes detailing the changes.
  - If you're using CLI to release, make sure you have the [GitHub CLI (`gh`)](https://cli.github.com/) installed and authenticated (`gh auth login`).

  ---

  ## Method 1: Using the GitHub Web UI (Recommended for ease of use)

  1.  **Navigate to GitHub Releases:**
      - Go to your repository's "Releases" tab

  2.  **Draft a New Release:**
      - Click the **"Draft a new release"** button.

  3.  **Create or Choose a Tag:**
      - In the "Choose a tag" dropdown:
        - **Type your new tag name** (e.g., `v1.2.3`).
        - If the tag doesn't exist, GitHub will prompt you with an option like **"Create new tag: v1.2.3 on publish."** Click this.
        - Ensure the **target branch** selected for creating the new tag is correct. This tag will point to the latest commit on this target branch.

  4.  **Set Release Title and Notes:**
      - Set the "Release title" (e.g., `vX.Y.Z` or a more descriptive title).
      - For the release notes in the description field, you have a few options:
        - **Write your prepared release notes.**
        - **Click the "Generate release notes" button:** GitHub will attempt to automatically create release notes based on merged pull requests since the last release. You can then review and edit these auto-generated notes.

  5.  **Publish the Release:**
      - Click the **"Publish release"** button.

        _Upon publishing, GitHub creates the tag from your specified branch and then creates the release. This "published" release event triggers the automated workflow._

  ---

  ## Method 2: Fully CLI-Driven Release

  This method uses the GitHub CLI (`gh`) for all steps, including tag creation.

  1.  **Ensure your local target branch is synced and changes are pushed:**
      `bash
  git checkout master
  git pull origin master
  `

  2.  **Create the Release (which also creates and pushes the tag):**
      Replace `vX.Y.Z` with your desired tag/version. The command will create this tag from the latest commit of your specified `--target` branch (defaults to repository's default branch, if `--target` is omitted and the branch is up to date).

      ```bash
      gh release create vX.Y.Z \
          --target master \
          --title "vX.Y.Z" \
          --notes "Your detailed release notes here.
          - Feature X
          - Bugfix Y"

      # Or, to use notes from a file:
      gh release create vX.Y.Z \
          --target master \
          --title "vX.Y.Z" \
          --notes-file ./RELEASE_NOTES.md

      # Or, to generate notes from pull requests (commits must follow conventional commit format for best results):
      gh release create vX.Y.Z \
          --target master \
          --title "vX.Y.Z"
          --generate-notes
      ```

      - `vX.Y.Z`: The tag and release name.
      - `--target <branch>`: Specifies which branch the tag should be created from (e.g., `master`). If the tag `vX.Y.Z` doesn't exist, `gh` will create it based on the HEAD of this target branch and push it.
      - `--title "<title>"`: The title for your release.
      - `--notes "<notes>"` or `--notes-file <filepath>` or `--generate-notes`: Your release notes.

        _This command will create the tag, push it to GitHub, and then publish the release. This "published" release event triggers the automated workflow._

  ---

  ## Post-Release: Automated Workflow & Verification (Common to all methods)

  Regardless of how you create and publish the GitHub Release:

  1.  **Automated Workflow Execution:**
      - The "Release & Publish" GitHub Actions workflow will automatically trigger.
      - It will perform:
        1.  Code checkout.
        2.  Version extraction (`X.Y.Z`) from the release tag.
        3.  Build and test processes.
        4.  Update `package.json` and `package-lock.json` to version `X.Y.Z`.
        5.  Commit these version changes back to the branch the release was targeted from with a message like `chore(release): set version to X.Y.Z [skip ci]`.
        6.  Publish the package `@apify/n8n-nodes-apify@X.Y.Z` to npm.

  2.  **Verify the Package on npm:**
      After the workflow successfully completes (check the "Actions" tab in your GitHub repository): - Verify the new version on npm:
      `bash
  npm view @apify/n8n-nodes-apify version
  `
      This should print `X.Y.Z`.

  ## Version history

  Track changes and updates to the node here.

  ## Troubleshooting

  ### Common issues

  1. **Authentication errors**
     - Verify your API key is correct

  2. **Resource Not Found**
     - Verify the resource ID format
     - Check if the resource exists in your Apify account
     - Ensure you have access to the resource

  3. **Operation failures**
     - Check the input parameters
     - Verify resource limits (memory, timeout)
     - Review Apify Console for detailed error messages

  ### Getting help

  If you encounter issues:

  1. Check the [Apify API documentation](https://docs.apify.com)
  2. Review the [n8n Community Nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  3. Open an issue in the [GitHub repository](https://github.com/apify/n8n-nodes-apify)

ai_documentation_summary:
  {"purpose":"Integrates Apify with n8n workflows to run Apify Actors and tasks, perform web scraping and data extraction, retrieve dataset and key-value store records, and trigger workflows on run completion.","capabilities":["Run Actor with optional custom JSON input, configurable timeout, memory limits, and build version selection","Run Actor and wait to return dataset items","Scrape a single URL (quick scrape)","Get Last Run information for an Actor","Run Actor Task with custom JSON input and configurable timeout","Run Task and wait to return dataset items","List user runs (pagination, sorting, status filtering)","Get details of a specific run","Fetch items from a dataset","Retrieve a key-value store record by key"],"authentication":"API key (apifyApi) or OAuth2 (apifyOAuth2Api) — OAuth2 available only in n8n Cloud","commonUseCases":["Run an Apify Actor to scrape a site and return dataset items into a workflow for processing","Execute scheduled or ad-hoc Actor tasks and automatically continue workflow when run finishes (success/failure/abort/timeout)","Quickly scrape a single URL and pass results to AI nodes for summarization or analysis","Fetch a specific key-value store record or dataset items for enrichment, reporting, or downstream automation"],"limitations":["OAuth2 authentication is available only in n8n Cloud (self-hosted must use API key)","Trigger functionality for self-hosted n8n requires a publicly accessible webhook URL (WEBHOOK_URL) to be set","Community node — installation requires agreeing to community-node risks","Compatibility requirements: n8n >= 1.57.0, Node.js 22.x+, npm 10.8.2+"],"relatedNodes":["n8n AI tools (for analyzing/summarizing scraped data)","Webhook/HTTP Request nodes (used for triggers and integrations)"]}


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-02-19 14:41:52
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-02-19T14:41:52.646Z
ai_summary_generated_at: 2026-02-19 16:43:57
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":"Provides n8n workflow integration with the Kylas CRM API to manage users, companies and leads, including creating, retrieving, updating and searching records and handling dynamic custom fields.","capabilities":["Retrieve user information by ID","Retrieve all companies with field-based and JSON rule-based advanced filtering and pagination","Create leads with support for dynamic custom fields","Retrieve lead information by ID","Update existing lead information","Search leads using search terms and filters","Dynamic loading and validation of custom fields (real-time fetch, type validation, required-field handling)","Field type validation and duplicate field prevention","Comprehensive API error handling and clear error messages"],"authentication":"API key required (api-key header)","commonUseCases":["Create leads from forms or other systems, including populating dynamic custom fields","Search and retrieve lead records to enrich or route leads in workflows","Update lead information as part of sales automation or enrichment workflows","Fetch and filter company records for segmentation, reporting or downstream automation","Load custom fields dynamically to build validated input forms or map data reliably"],"limitations":["Community node — requires manual installation via n8n Community Nodes and accepting community-node risks","Supports only the User, Company and Lead resources as documented (other Kylas resources not listed)","Requires a Kylas account and a generated API key to authenticate","Minimum n8n version required: 0.198.0"],"relatedNodes":[]}


node_type: @aotoki/n8n-nodes-line-messaging.lineMessaging
package_name: @aotoki/n8n-nodes-line-messaging
display_name: Line Messaging
description: Interact with the Line Messaging API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: elct9620
author_github_url: https://github.com/elct9620/n8n-nodes-line-messaging.git
npm_package_name: @aotoki/n8n-nodes-line-messaging
npm_version: 0.10.0
community_fetched_at: 2026-02-19T14:41:52.647Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "reply",
      "options": [
        {
          "name": "Get Profile",
          "value": "getProfile",
          "action": "Retrieve profile information of a user",
          "description": "Retrieve profile information of a user"
        },
        {
          "name": "Multicast",
          "value": "multicast",
          "action": "Send a message to multiple users",
          "description": "Send a message to multiple users"
        },
        {
          "name": "Reply",
          "value": "reply",
          "action": "Reply to a message using a reply token",
          "description": "Reply to a message using a reply token"
        },
        {
          "name": "Send",
          "value": "send",
          "action": "Send a message to a user",
          "description": "Send a message to a user"
        },
        {
          "name": "Show Loading Animation",
          "value": "showLoadingAnimation",
          "action": "Display a loading animation to a user",
          "description": "Display a loading animation to a user"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Profile",
      "value": "getProfile",
      "action": "Retrieve profile information of a user",
      "description": "Retrieve profile information of a user"
    },
    {
      "name": "Multicast",
      "value": "multicast",
      "action": "Send a message to multiple users",
      "description": "Send a message to multiple users"
    },
    {
      "name": "Reply",
      "value": "reply",
      "action": "Reply to a message using a reply token",
      "description": "Reply to a message using a reply token"
    },
    {
      "name": "Send",
      "value": "send",
      "action": "Send a message to a user",
      "description": "Send a message to a user"
    },
    {
      "name": "Show Loading Animation",
      "value": "showLoadingAnimation",
      "action": "Display a loading animation to a user",
      "description": "Display a loading animation to a user"
    }
  ]

npm_readme:
  # n8n-nodes-line-messaging

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

  LINE Messaging API enables developers to build chatbots and integrate messaging features into their services with the LINE platform, which is especially popular in Japan, Thailand, Taiwan, and other parts of Asia.

  [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)
  - [Development](#development)
  - [Resources](#resources)

  ## Installation

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

  ```bash
  npm install @aotoki/n8n-nodes-line-messaging
  ```

  ## Operations

  This node provides the following operations:

  ### Line Messaging Node

  - **Reply**: Reply to a user's message using the replyToken
  - **Send**: Proactively send messages to users using their User ID
  - **Multicast**: Send messages to multiple users simultaneously (up to 500 recipients)
  - **Get Profile**: Retrieve user profile information

  ### Line Messaging Data Node

  - **Get Content**: Retrieve content (images, videos, audio, files) from message IDs

  ### Line Messaging Trigger Node

  - **Webhook**: Receive events from LINE Messaging API

  ## Credentials

  You need to set up a LINE Bot channel in the [LINE Developers Console](https://developers.line.biz/console/) before using this node.

  1. Create a new provider and channel in the LINE Developers Console
  2. Enable the Messaging API option
  3. Get your Channel Secret and Channel Access Token from the Basic Settings and Messaging API tabs
  4. Use these credentials when setting up the node in n8n

  ## Compatibility

  - Requires n8n version 1.0.0 or later
  - Built without external dependencies to comply with n8n verified node requirements

  ## Usage

  ### Setting up a LINE Bot Webhook

  1. Create a workflow with the LINE Messaging Trigger node
  2. Configure the node to listen for the events you're interested in
  3. Copy the webhook URL from the trigger node
  4. Set this URL as your webhook URL in the LINE Developers Console
  5. Add a verification step in your workflow to validate the signature using the Channel Secret

  ### Responding to Messages

  1. When a message is received, your workflow will be triggered
  2. You can access the `replyToken` from the trigger output
  3. Use the LINE Messaging node with the "Reply" operation to send a response
  4. Set the reply token and add the messages you want to send

  ### Sending Proactive Messages

  1. Use the LINE Messaging node with the "Send" operation
  2. Provide the User ID of the recipient (format: U1234567890abcdef...)
  3. Add the messages you want to send
  4. This allows sending messages without waiting for user interaction

  ### Sending Bulk Messages (Multicast)

  1. Use the LINE Messaging node with the "Multicast" operation
  2. Provide comma-separated User IDs (e.g., "U1234..., U5678..., U9012...")
  3. Add the messages you want to send to all recipients
  4. Supports up to 500 recipients per operation for efficient bulk messaging

  ### Getting User Profiles

  1. Use the LINE Messaging node with the "Get Profile" operation
  2. Provide the User ID to retrieve profile information
  3. Get user's display name, profile picture, and status message

  ### Retrieving Media Content

  1. When a media message (image, video, audio, file) is received, you get a message ID
  2. Use the LINE Messaging Data node with the "Get Content" operation
  3. Provide the message ID to download the content as binary data
  4. The content can then be processed, saved, or sent to other services

  ### Example: Simple Echo Bot

  This example workflow receives messages and echoes them back to the user:

  1. Add a LINE Messaging Trigger node and configure it to listen for "message" events
  2. Add a LINE Messaging node configured to "Reply"
  3. Set the "Reply Token" field to use the replyToken from the trigger output: `{{$json.replyToken}}`
  4. Add a text message with the content: `You said: {{$json.message.text}}`

  ## Features

  - **Multiple Messaging Types**: Reply to messages, send to individuals, or multicast to groups
  - **Bulk Messaging**: Send to up to 500 recipients simultaneously with multicast operation
  - **Text Messages (V2)**: Send text messages with quote tokens and quick reply buttons
  - **Quick Replies**: Add postback and message action buttons to messages
  - **Quote Messages**: Reference previous messages in conversations
  - **User Profiles**: Retrieve user display names, pictures, and status messages
  - **Media Content**: Download images, videos, audio files, and documents
  - **Webhook Events**: Receive all LINE webhook events for comprehensive bot functionality
  - **No External Dependencies**: Built using only n8n-workflow types and Node.js built-ins

  ## Development

  To develop and test this node locally:

  ```bash
  # Clone the repository
  git clone git@github.com:elct9620/n8n-nodes-line-messaging.git
  cd n8n-nodes-line-messaging

  # Install dependencies
  pnpm install

  # Start the development server
  pnpm n8n-node dev
  ```

  The `pnpm n8n-node dev` command will start a local n8n instance with the node loaded for development and testing. This replaces the previous Docker-based development setup.

  For more development commands, see the available scripts:

  ```bash
  # Build the project
  pnpm build

  # Run linting
  pnpm lint

  # Format code
  pnpm format
  ```

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [LINE Messaging API documentation](https://developers.line.biz/en/docs/messaging-api/)
  - [LINE Bot Designer](https://developers.line.biz/en/services/bot-designer/)

ai_documentation_summary:
  {"purpose":"Provides n8n community nodes to interact with the LINE Messaging API so you can receive webhook events, reply to messages, send proactive and bulk messages, retrieve user profiles, and download media within n8n workflows.","capabilities":["Reply to user messages using replyToken","Send proactive messages to a user by User ID","Multicast messages to multiple users (bulk messaging)","Retrieve user profile information (display name, picture, status)","Receive LINE webhook events via a Trigger node","Download media/content (images, video, audio, files) by message ID","Support for Text Messages (V2) including quote tokens and quick reply buttons","Support quick replies and quote messages in outgoing messages"],"authentication":"Channel Secret and Channel Access Token from LINE Developers Console (LINE Bot credentials required)","commonUseCases":["Build conversational bots that reply to incoming messages (echo bot example)","Send proactive notifications or messages to specific users","Send bulk/multicast messages to up to 500 recipients","Fetch and enrich user data by retrieving user profiles","Receive and process incoming webhook events from LINE"],"limitations":["Requires a LINE Bot channel and the Channel Secret/Channel Access Token from the LINE Developers Console","Multicast operation supports up to 500 recipients per request","You must configure the webhook URL in the LINE Developers Console and implement signature verification in your workflow using the Channel Secret","Requires n8n version 1.0.0 or later"],"relatedNodes":["Line Messaging node","Line Messaging Data node","Line Messaging Trigger node"]}


node_type: n8n-nodes-seo-content-machine.seoContentMachine
package_name: n8n-nodes-seo-content-machine
display_name: SEO Content Machine
description: SEO Content Machine node
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: seocontentmachine
author_github_url: https://github.com/gitTerebi/
npm_package_name: n8n-nodes-seo-content-machine
npm_version: 0.1.20
community_fetched_at: 2026-02-19T14:41:52.648Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "task",
      "options": [
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "Other",
          "value": "other"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "start",
      "options": [
        {
          "name": "Abort",
          "value": "abort",
          "action": "Abort a task",
          "description": "Abort a running task"
        },
        {
          "name": "Content",
          "value": "content",
          "action": "Get content from task",
          "description": "Gets content created by a task"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a task",
          "description": "Create a new task"
        },
        {
          "name": "Data",
          "value": "data",
          "action": "Get task data",
          "description": "Get task data"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a task",
          "description": "Delete a task"
        },
        {
          "name": "Duplicate",
          "value": "duplicate",
          "action": "Duplicate a task",
          "description": "Duplicate a task"
        },
        {
          "name": "Find",
          "value": "find",
          "action": "Find tasks",
          "description": "Find tasks"
        },
        {
          "name": "Start",
          "value": "start",
          "action": "Start a task",
          "description": "Start a task"
        },
        {
          "name": "Status",
          "value": "status",
          "action": "Get task status",
          "description": "Get task status"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update task data",
          "description": "Update task data"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "spin",
      "options": [
        {
          "name": "About Me",
          "value": "about",
          "action": "Generate about me",
          "description": "Generate about me"
        },
        {
          "name": "Spin",
          "value": "spin",
          "action": "Spin text",
          "description": "Spin/Rewrite text"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "other"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Abort",
      "value": "abort",
      "action": "Abort a task",
      "description": "Abort a running task"
    },
    {
      "name": "Content",
      "value": "content",
      "action": "Get content from task",
      "description": "Gets content created by a task"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a task",
      "description": "Create a new task"
    },
    {
      "name": "Data",
      "value": "data",
      "action": "Get task data",
      "description": "Get task data"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a task",
      "description": "Delete a task"
    },
    {
      "name": "Duplicate",
      "value": "duplicate",
      "action": "Duplicate a task",
      "description": "Duplicate a task"
    },
    {
      "name": "Find",
      "value": "find",
      "action": "Find tasks",
      "description": "Find tasks"
    },
    {
      "name": "Start",
      "value": "start",
      "action": "Start a task",
      "description": "Start a task"
    },
    {
      "name": "Status",
      "value": "status",
      "action": "Get task status",
      "description": "Get task status"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update task data",
      "description": "Update task data"
    },
    {
      "name": "About Me",
      "value": "about",
      "action": "Generate about me",
      "description": "Generate about me"
    },
    {
      "name": "Spin",
      "value": "spin",
      "action": "Spin text",
      "description": "Spin/Rewrite text"
    }
  ]

npm_readme:
  # n8n-nodes-seo-content-machine

  This is a n8n community node. It lets you use SEO Content Machine in your n8n workflows.

  SEO Content Machine (https://seocontentmachine.com)  is a scraper and AI content generator desktop tool.

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

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

  ## Installation

  Follow the [official SCM n8n node install guide](https://forum.seocontentmachine.com/t/how-to-install-and-configure-scm-n8n-node/831) on the SCM forum.

  For generic n8n help check out the [n8n community node guide](https://docs.n8n.io/integrations/community-nodes/installation/).

  ## Operations

  Task, Other

  ## Credentials

  You need the SCM API url and port that is displayed on the SCM desktop app.

  ## Resources

  *	[Official SCM n8n node install guide](https://forum.seocontentmachine.com/t/how-to-install-and-configure-scm-n8n-node/831)
  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)

ai_documentation_summary:
  {"purpose":"Provides an n8n integration to control and use the SEO Content Machine (SCM) desktop app from n8n workflows, enabling triggering of SCM tasks and access to its scraping and AI content generation features via SCM's local API.","capabilities":["Trigger and manage SCM tasks (listed as \"Task\" operation)","Other/auxiliary operations (listed as \"Other\" operation)","Invoke SCM scraping and AI content generation via the SCM desktop API","Configure connection to SCM using the desktop app's API URL and port"],"authentication":"Requires the SCM desktop app's API URL and port (local API). No API key or OAuth details are documented in the README.","commonUseCases":["Start or schedule SEO Content Machine scraping jobs from an n8n workflow","Trigger AI content generation in SCM and ingest results into downstream workflow steps","Automate post-processing of SCM output (e.g., store content, send to CMS, run further transforms)","Integrate SCM task runs into larger automation pipelines (notifications, logging, conditional flows)"],"limitations":["Depends on the SCM desktop application running and exposing its local API (must provide URL and port)","README lists only generic operations (\"Task\" and \"Other\"); specific available actions and parameters are not documented in the README","Installation and configuration require following external SCM forum guide; limited documentation in the node README","No API key or advanced authentication method documented—assumes local access to SCM API"],"relatedNodes":[]}


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

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

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

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

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

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

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

ai_documentation_summary:
  {"purpose":"Provides n8n integration to consume the Zoho TeamInbox API, enabling workflows to manage multichannel shared inbox activity and perform actions (for example sending emails and creating contacts) from n8n.","capabilities":["Send an email via Zoho TeamInbox","Create a contact in Zoho TeamInbox","Consume the Zoho TeamInbox API to manage multichannel conversations (WhatsApp, Telegram, Facebook, Instagram DMs, email)","Use n8n triggers and actions to incorporate TeamInbox into automated workflows"],"authentication":"OAuth2 (Zoho OAuth2: requires creating a Client ID and Client Secret in Zoho Developer Console and configuring the authorized redirect URL in n8n)","commonUseCases":["Automatically send outbound emails from workflows","Create or update contacts in TeamInbox from incoming data","Aggregate and automate handling of conversations from multiple channels (WhatsApp, Telegram, Facebook, Instagram, email)","Integrate TeamInbox actions into broader business automation workflows in n8n"],"limitations":["Requires n8n admin account to install community node","Requires a Zoho TeamInbox account with a verified domain","Requires creating/configuring an OAuth2 client in the Zoho Developer Console (Client ID/Secret and authorized redirect URL) before connecting"],"relatedNodes":[]}


node_type: n8n-nodes-smstools.smstools
package_name: n8n-nodes-smstools
display_name: Smstools
description: Send sms or voice messages with the Smstools API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: smstools
author_github_url: https://github.com/Smstools-api/
npm_package_name: n8n-nodes-smstools
npm_version: 0.1.2
community_fetched_at: 2026-02-19T14:41:52.649Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Message",
          "value": "message"
        },
        {
          "name": "Account",
          "value": "account"
        },
        {
          "name": "Tools",
          "value": "tools"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send message",
          "value": "send"
        },
        {
          "name": "Send voice message",
          "value": "send-voice"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "name": "Send message",
      "value": "send"
    },
    {
      "name": "Send voice message",
      "value": "send-voice"
    }
  ]

npm_readme:
  # n8n-nodes-smstools

  Community node for **Smstools** — the Belgian SMS gateway platform [smstools.be](https://www.smstools.be) and [smstools.com](https://www.smstools.com).  
  This node lets you send SMS messages, send voice messages, check delivery statuses, view your account balance, get available sender IDs, and format numbers directly in your n8n workflows.

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

  ---

  ## 🧩 Installation

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

  Once installed, search for **Smstools** in the Nodes panel within n8n.

  ---

  ## ⚙️ Supported Operations

  | Resource    | Operation           | Endpoint                 |
  |--------------|--------------------|--------------------------|
  | **Message**  | Send message        | `POST /v1/message/send`  |
  | **Message**  | Send voice message  | `POST /v1/voice/send`    |
  | **Account**  | Auth info           | `GET /v1/auth`           |
  | **Account**  | Get balance         | `GET /v1/account/balance`|
  | **Account**  | Get sender IDs      | `GET /v1/senderids`      |
  | **Tools**    | Format number       | `POST /v1/format/number` |

  ---

  ## 🔐 Credentials

  To connect with Smstools, you’ll need a **Client ID** and **Client Secret**.  
  These are available in your Smstools account dashboard.

  | Field | Description |
  |--------|-------------|
  | **Base URL** | Default: `https://api.smstools.com` (change only for private gateways) |
  | **Client ID** | Your API client ID from Smstools |
  | **Client Secret** | Your API client secret from Smstools |

  When you test credentials, the node calls `GET /v1/auth` and expects a valid username response on success.

  ---

  ## 🧪 Example Usage

  ### Send an SMS

  1. Add the **Smstools** node.  
  2. Choose **Resource:** `Message`, **Operation:** `Send message`.  
  3. Enter:
     - **Sender:** `MyCompany`
     - **To:** `+3247XXXXXXX`
     - **Message:** `Your package has been shipped!`
  4. *(Optional)* Enable **Test Mode** to simulate sending.

  The node will return the API response containing the message ID and status.

  ---

  ### Send a Voice Message

  1. Add the **Smstools** node.  
  2. Choose **Resource:** `Message`, **Operation:** `Send voice message`.  
  3. Enter:
     - **To:** `+3247XXXXXXX`
     - **Message:** `This is a test voice message from Smstools.`

  The API will convert your text to speech and call the recipient.

  ---

  ## 🧾 Compatibility

  - **Minimum n8n version:** `1.0.0+`
  - **Tested with:** `n8n 1.68+`
  - **Dependencies:** none external — uses built-in `httpRequest` helper.
  - **Supported Node.js (for n8n):** `>= 20.19 <= 24.x`

  ---

  ## 📘 Resources

  - [Smstools API documentation](https://www.smstools.com/en/sms-gateway-api)
  - [Smstools Dashboard](https://app.smstools.com/)
  - [n8n Community Nodes documentation](https://docs.n8n.io/integrations/#community-nodes)

  ---

  ## 🧱 Version History

  | Version | Date     | Notes |
  |----------|----------|-------|
  | **0.1.0** | 2025-10 | Initial community release with v1 API support for message, voice, account, and tools resources. |
  | **0.1.1** | 2025-10 | Update readme.md |
  | **0.1.2** | 2026-02 | Fix n8n review issues (peer deps, auth, pairedItem, continueOnFail, icons) |

  ---

  **Author:** Smstools ([info@smstools.be](mailto:info@smstools.be))  
  **License:** MIT  
  **Repository:** [GitHub](https://github.com/Smstools-api/n8n-nodes-smstools)  
  **npm:** [n8n-nodes-smstools](https://www.npmjs.com/package/n8n-nodes-smstools)

ai_documentation_summary:
  {"purpose":"Send SMS and voice messages via the Smstools API from n8n workflows, and manage related account/tools (balance, sender IDs, number formatting, auth checks).","capabilities":["Send SMS messages (POST /v1/message/send)","Send voice messages / text-to-speech calls (POST /v1/voice/send)","Validate credentials / get auth info (GET /v1/auth)","Get account balance (GET /v1/account/balance)","List available sender IDs (GET /v1/senderids)","Format phone numbers (POST /v1/format/number)","Test Mode to simulate sending requests"],"authentication":"Client ID and Client Secret (API credentials) with configurable Base URL; node validates by calling GET /v1/auth","commonUseCases":["Send transactional or notification SMS messages from workflows (e.g., shipping, alerts)","Send automated voice calls using text-to-speech for notifications or verifications","Check account balance before bulk sends or billing workflows","Retrieve available sender IDs to ensure correct sender configuration","Normalize/format phone numbers before sending messages"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-swiftgum-trigger.swiftgumTrigger
package_name: n8n-nodes-swiftgum-trigger
display_name: Swiftgum Trigger
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  {
  "type": "main"
  }
  ]

updated_at: 2026-02-19 14:41:52
author_name: arthurbk
author_github_url: https://github.com/Swiftgum/n8n-nodes-swiftgum.git
npm_package_name: n8n-nodes-swiftgum-trigger
npm_version: 0.1.7
community_fetched_at: 2026-02-19T14:41:52.651Z
ai_summary_generated_at: 2026-02-19 16:43:57
description:
  Listen for Swiftgum PDF extraction webhooks, filtered by schema. To test, upload a PDF in your Swiftgum workspace — this node will emit the extracted data once processed.

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

  # n8n-nodes-swiftgum-trigger

  A custom [n8n](https://n8n.io) trigger node built by Swiftgum.

  This node allows you to trigger workflows from Swiftgum-related events or integrations.

  ---

  ## 🚀 Features

  - Custom trigger node for Swiftgum-specific events
  - Built for compatibility with the latest n8n versions
  - Ready to use in your local or cloud-hosted n8n instance

  ---

  ## 📚 How to Use the Swiftgum Trigger Node

  ### 1. Add the Swiftgum Trigger to Your Workflow
  - Search for `Swiftgum Trigger` in the n8n node selector.
  - Add it as the starting node of your workflow.

  ### 2. Set Up Credentials  
  - Go to **Credentials** in n8n and create new credentials with your Swiftgum API Key.  
  - Click **Test Credentials** to ensure your API key is valid (it performs a call to `/schemas`).

  ### 3. (Optional) Filter by Schemas  
  - In the node configuration, select one or more **Schema Names or IDs** to only trigger on events matching these schemas.
  - Leave it blank to receive all events (`job.processed`).

  ### 4. Trigger Events
  - Upload a PDF document in your Swiftgum workspace.
  - Once the document is processed, the node will emit structured data extracted from the document.

  ---

  ### 📦 Example Event Payload

  ```json
  {
    "id": "file-123",
    "name": "document.pdf",
    "createdAt": "2024-06-01T12:00:00.000Z",
    "receivedAt": "2024-06-01T12:00:00.000Z",
    "updatedAt": "2024-06-01T12:05:00.000Z",
    "job": {
      "id": "job-123",
      "status": "completed",
      "schema": {
        "type": "object",
        "properties": {
          "fieldA": { "type": "number", "title": "Surface" }
        }
      },
      "result": { "fieldA": 350 }
    }
  }
  ```

  ---

  ### 🔐 Webhook Security

  - Each webhook subscription generates a **signing secret** (`secret`) when created.
  - Verify the authenticity of incoming events using the `X-Swiftgum-Signature` header.
  - The signature is an HMAC-SHA256 hash of the raw body using your secret.

  Example verification (in Node.js):

  ```ts
  const crypto = require('crypto');
  const expectedSignature = crypto
    .createHmac('sha256', secret)
    .update(rawBody)
    .digest('hex');

  if (receivedSignature !== expectedSignature) {
    throw new Error('Invalid signature');
  }
  ```

  ---

  ## 🧰 Installation

  You can install this package directly via the n8n UI or CLI.

  ### Via n8n UI

  Paste this URL into the **Install from npm** input:

  ```
  https://www.npmjs.com/package/n8n-nodes-swiftgum-trigger
  ```

  ### Via CLI (inside your custom n8n setup)

  ```bash
  pnpm add n8n-nodes-swiftgum-trigger
  ```

  ---

  ## 🧪 Local Development

  To test this node locally:

  ```bash
  pnpm install
  pnpm build
  ```

  You can also use our internal dev environment with Docker:

  ```bash
  ./fetch-node.sh
  docker compose up --build
  ```

  ---

  ## 🗂 File Structure

  ```
  n8n-nodes-swiftgum-trigger/
  ├── credentials/           # Custom credential classes
  ├── nodes/                 # Swiftgum Trigger node definition
  ├── dist/                  # Compiled output
  ├── gulpfile.js            # Icon handling
  ├── tsconfig.json
  ├── package.json
  └── README.md
  ```

  ---

  ## 🧑‍💻 Contributing

  Pull requests and contributions are welcome! Please:
  - Follow the code structure in `nodes/` and `credentials/`
  - Run `pnpm lint` before submitting
  - Build locally and test in a running n8n instance

  ---

  ## 🚀 Publishing

  If you're making changes to this node and want to publish them to npm:

  1. Bump the version:
     ```bash
     pnpm version patch   # or minor / major
     ```

  2. Publish to npm:
     ```bash
     pnpm publish --access public
     ```

  > 📦 npm does not allow publishing the same version twice. Always increment the version before running `pnpm publish`.

  ---

  ## 📄 License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Listen for Swiftgum PDF extraction webhooks and emit the processed, structured extraction data into n8n workflows; supports filtering by schema and verifying webhook signatures for security.","capabilities":["Receive Swiftgum webhook events (default event: job.processed)","Filter incoming events by Schema Names or IDs","Emit structured event payloads including file, job, schema, and result fields","Test and validate Swiftgum API credentials (performs a call to /schemas)","Verify webhook authenticity using the X-Swiftgum-Signature header (HMAC-SHA256 of raw body with subscription secret)","Handle webhook subscriptions that include a generated signing secret"],"authentication":"API key required (Swiftgum API Key); webhook requests secured via subscription signing secret (HMAC-SHA256 signature in X-Swiftgum-Signature)","commonUseCases":["Trigger a workflow after a PDF is uploaded and processed in Swiftgum to capture extracted data","Route extracted document fields into databases, CRMs, or other downstream systems","Only react to specific document types by filtering events to particular schemas","Securely accept and validate Swiftgum webhook events before processing"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-zenlayer.zenlayer
package_name: n8n-nodes-zenlayer
display_name: Zenlayer
description: For advanced usage with an AI Gateway from Zenlayer
category: AI
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: gaoyaming
author_github_url: https://github.com/gwraith/
npm_package_name: n8n-nodes-zenlayer
npm_version: 0.1.6
community_fetched_at: 2026-02-19T14:41:52.653Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "text",
      "options": [
        {
          "name": "Image",
          "value": "image"
        },
        {
          "name": "Text",
          "value": "text"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "analyze",
      "options": [
        {
          "name": "Analyze Image",
          "value": "analyze",
          "action": "Analyze image",
          "description": "Analyze images and get descriptions or insights"
        },
        {
          "name": "Generate an Image",
          "value": "generate",
          "action": "Generate an image",
          "description": "Creates an image from a text prompt"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Message a Model",
          "value": "message",
          "action": "Message a model",
          "description": "Send messages to a language model and receive responses"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "text"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Analyze Image",
      "value": "analyze",
      "action": "Analyze image",
      "description": "Analyze images and get descriptions or insights"
    },
    {
      "name": "Generate an Image",
      "value": "generate",
      "action": "Generate an image",
      "description": "Creates an image from a text prompt"
    },
    {
      "name": "Message a Model",
      "value": "message",
      "action": "Message a model",
      "description": "Send messages to a language model and receive responses"
    }
  ]

npm_readme:
  # 介绍
  Zenlayer AI Gateway提供全球领先的 AI 大模型推理服务，依托 Zenlayer 的全球私有网络与分布式边缘架构，为用户带来超低时延、高可靠性的使用体验。平台支持多种主流与前沿 AI 模型，覆盖文本、图像、音频、视频等多模态任务，并集成了业界最受欢迎的模型生态。开发者无需深入理解底层机器学习或基础设施架构，即可轻松使用最先进的 AI 能力，快速构建智能化应用。

  ## 创建 Zenlayer 账户并获取 API Key
  1.前往 ZenlayerAI 控制台创建并管理 API Key (入口见 https://console.zenlayer.com/aigw/aigateway).

  2.点击 [产品]-[创建AI网关]
  ![img1.png](icons/img1.png)

  3.点击 [创建AI网关] 生成新的API Key
  ![img2.png](icons/img2.png)

  4.请注意：API Key 只会在生成时展示一次。请务必复制并妥善保存，以确保未来能够持续使用

  5.在 n8n 中配置 Zenlayer AI Gateway 节点，填写 API Key 以完成集成。
  ![img3.png](icons/img3.png)

  ## 主要功能
  ### 全球加速的模型访问能力
  基于 Zenlayer 的全球私有网络，在全球范围内提供低延迟的模型推理服务，无论用户身在何处都能获得一致稳定的体验。

  ### 丰富的 AI 模型生态
  - 支持多领域多模态 AI 模型，包括但不限于：
  - 大语言模型（LLM）
  - 文本生成与文本理解
  - 图像、音频、视频生成与处理模型

  ### 分布式边缘推理加速
  依托 Zenlayer 的边缘节点网络，实现更快的响应速度与更高吞吐能力，为实时性（如对话、音视频处理）场景提供强劲支持。

  ### 开发者友好与易集成
  只需简单的 API 调用即可接入，无需复杂部署；灵活的配置可满足不同规模应用的接入需求。

  ### 高性价比的 AI 推理服务
  提供灵活的计费方式，适用于创业团队、中小企业乃至大型分布式应用，确保成本可控且性能卓越。

ai_documentation_summary:
  {"purpose":"Expose Zenlayer AI Gateway capabilities to n8n workflows so users can perform low‑latency, edge‑accelerated inference on a variety of AI models (text, image, audio, video) without managing infrastructure.","capabilities":["Call Zenlayer AI Gateway for model inference from n8n workflows","Large language model (LLM) text generation and understanding","Text-based tasks (generation, summarization, Q&A, etc.)","Image generation and image processing tasks","Audio generation and audio processing tasks","Video generation and video processing tasks","Edge‑accelerated, low‑latency inference via Zenlayer global private network","Configure API Key within the node for authentication and integration","Flexible configuration options for different scale and cost requirements"],"authentication":"API key required (create and copy API Key from Zenlayer AI Gateway console; provide it in the n8n node configuration)","commonUseCases":["Build real‑time conversational agents and chatbots powered by LLMs","Integrate text generation (summaries, responses, content) into workflows","Generate or process images, audio, or video within automated workflows","Deliver low‑latency inference for geographically distributed or edge applications","Rapidly add advanced AI features to apps without operating ML infrastructure"],"limitations":[],"relatedNodes":[]}


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

updated_at: 2026-02-19 14:41:52
author_name: netgsm
author_github_url: https://github.com/netgsm/n8n-nodes-netgsm.git
npm_package_name: @netgsm/n8n-nodes-netgsm
npm_version: 0.1.41
community_fetched_at: 2026-02-19T14:41:52.654Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "sms",
      "options": [
        {
          "name": "SMS",
          "value": "sms"
        },
        {
          "name": "ILETI YONETIM SISTEMI",
          "value": "iys"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "smsSend",
      "options": [
        {
          "name": "SMS Send",
          "value": "smsSend",
          "action": "Send a text message",
          "routing": {
            "send": {
              "type": "body",
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/sms/rest/v2/send",
              "json": true,
              "encoding": "json",
              "returnFullResponse": true
            }
          },
          "description": "Send a text message to a phone number"
        },
        {
          "name": "SMS Status Query",
          "value": "smsStatusQuery",
          "action": "Check SMS status",
          "routing": {
            "send": {
              "type": "body",
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/sms/rest/v2/report",
              "json": true,
              "encoding": "json",
              "returnFullResponse": true
            }
          },
          "description": "Check delivery status of a sent SMS using Job ID"
        },
        {
          "name": "SMS Inbox Query",
          "value": "smsInboxQuery",
          "action": "Get inbox messages",
          "routing": {
            "request": {
              "url": "/sms/rest/v2/inbox",
              "method": "GET",
              "returnFullResponse": true
            }
          },
          "description": "Retrieve received SMS messages from inbox"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sms"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "iysAdd",
      "options": [
        {
          "name": "Add IYS Address",
          "value": "iysAdd",
          "action": "Add phone number or email",
          "routing": {
            "send": {
              "type": "body",
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/iys/add",
              "json": true,
              "encoding": "json",
              "returnFullResponse": true
            }
          },
          "description": "This service is used to add a phone number or email address to IYS"
        },
        {
          "name": "Query IYS Address",
          "value": "iysQuery",
          "action": "Query phone number or email",
          "routing": {
            "send": {
              "type": "body",
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/iys/search",
              "json": true,
              "encoding": "json",
              "returnFullResponse": true
            }
          },
          "description": "This service is used to add a phone number or email address to IYS"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "iys"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "SMS Send",
      "value": "smsSend",
      "action": "Send a text message",
      "routing": {
        "send": {
          "type": "body",
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/sms/rest/v2/send",
          "json": true,
          "encoding": "json",
          "returnFullResponse": true
        }
      },
      "description": "Send a text message to a phone number"
    },
    {
      "name": "SMS Status Query",
      "value": "smsStatusQuery",
      "action": "Check SMS status",
      "routing": {
        "send": {
          "type": "body",
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/sms/rest/v2/report",
          "json": true,
          "encoding": "json",
          "returnFullResponse": true
        }
      },
      "description": "Check delivery status of a sent SMS using Job ID"
    },
    {
      "name": "SMS Inbox Query",
      "value": "smsInboxQuery",
      "action": "Get inbox messages",
      "routing": {
        "request": {
          "url": "/sms/rest/v2/inbox",
          "method": "GET",
          "returnFullResponse": true
        }
      },
      "description": "Retrieve received SMS messages from inbox"
    },
    {
      "name": "Add IYS Address",
      "value": "iysAdd",
      "action": "Add phone number or email",
      "routing": {
        "send": {
          "type": "body",
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/iys/add",
          "json": true,
          "encoding": "json",
          "returnFullResponse": true
        }
      },
      "description": "This service is used to add a phone number or email address to IYS"
    },
    {
      "name": "Query IYS Address",
      "value": "iysQuery",
      "action": "Query phone number or email",
      "routing": {
        "send": {
          "type": "body",
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/iys/search",
          "json": true,
          "encoding": "json",
          "returnFullResponse": true
        }
      },
      "description": "This service is used to add a phone number or email address to IYS"
    }
  ]

npm_readme:
  # n8n-nodes-netgsm

  This is the official Netgsm n8n community node. This node integrates with the SMS Gateway to send messages directly from 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.

  ## Operations

  ### SMS
  - SMS Send
  - SMS Status Query
  - List SMS Inbox

  ## Credentials

  This node requires an API Username and Password from Netgsm, You can generate one by going to your [Dashboard](https://portal.netgsm.com.tr/webportal/abonelikislemleri/yetkilendirme/set).

  ## Compatibility

  This node has been tested with n8n 1.94.0

  ## Usage

  [To be completed]

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Netgsm Documentation](https://www.netgsm.com.tr/dokuman)

  ## Version history

  ### 0.1.0
  - Initial version of the project

ai_documentation_summary:
  {"purpose":"Integrate n8n workflows with the Netgsm SMS gateway to send SMS messages, check message status, and list incoming SMS messages.","capabilities":["Send SMS (SMS Send)","Query SMS delivery/status (SMS Status Query)","List SMS inbox (retrieve incoming messages)"],"authentication":"Requires Netgsm API credentials: API Username and Password (generate from Netgsm dashboard)","commonUseCases":["Send transactional or notification SMS from workflows","Check delivery status of sent SMS messages and branch workflow logic based on status","Retrieve incoming SMS messages for processing or routing","Automated alerts and user notifications via SMS"],"limitations":["Usage documentation in README is incomplete ('Usage' section marked 'To be completed')","Node compatibility explicitly tested only with n8n v1.94.0 (other versions not guaranteed)"],"relatedNodes":[]}


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-02-19 14:41:52
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-02-19T14:41:52.655Z
ai_summary_generated_at: 2026-02-19 16:43:57
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":"Execute PromptLayer Agents from n8n workflows: run an agent by name (optionally by version or label), pass JSON inputs and metadata, and retrieve the agent's outputs programmatically.","capabilities":["Run any PromptLayer Agent by name","Select agent version by number","Select agent version by label","Pass input variables as JSON","Attach metadata to executions","Control output (return all outputs or only main output)","Timeout handling for long-running agents","Return results to downstream workflow nodes"],"authentication":"API key required (PromptLayer API key configured via n8n credentials - PromptLayerRunAgentApi)","commonUseCases":["Invoke a PromptLayer agent with input variables to produce a response (e.g., weatherAgent with a location)","Run a specific agent release by version number or label for reproducible outputs","Attach metadata to executions for auditing or tracking within workflows","Integrate agent outputs into downstream automation (conditional routing, database writes, notifications)","Handle longer-running agent tasks by increasing the node timeout and polling for results"],"limitations":["Requires a PromptLayer account and valid API key","n8n environment must meet prerequisites (Node.js 20+ as noted)","Input variables and metadata must be valid JSON","Default maximum wait time is 10 minutes unless adjusted (timeout should be increased for very long-running agents)","If neither version number nor label is specified, the node uses the agent's latest version"],"relatedNodes":[]}


node_type: @datafix/n8n-nodes-exact-online.exactOnline
package_name: @datafix/n8n-nodes-exact-online
display_name: Exact Online
description: Exact Online Node
category: Community
development_style: declarative
version: 1
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: bramknuever
author_github_url: https://github.com/DataFix-B-V/ExactOnline.git
npm_package_name: @datafix/n8n-nodes-exact-online
npm_version: 0.3.7
community_fetched_at: 2026-02-19T14:41:52.655Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "",
      "description": "Resource to connect to. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code-examples/expressions/\">expression</a>. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "displayName": "Resource Name or ID",
      "typeOptions": {
        "loadOptionsMethod": "getResources",
        "loadOptionsDependsOn": [
          "service"
        ]
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "description": "Operation to use. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code-examples/expressions/\">expression</a>. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "displayName": "Operation Name or ID",
      "typeOptions": {
        "loadOptionsMethod": "getOperations",
        "loadOptionsDependsOn": [
          "resource"
        ]
      },
      "noDataExpression": true
    }
  ]

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

  # n8n-nodes-exact-online

  This node was developed during the n8n node-athon. This is version one with a basic CRUD implemented.
  During the development the API reference docs were scraped with a n8n workflow. This Workflow was also included in the repo.
  There were 396 pages scraped and processed into a config file.

  The node is usable with a Developer account which can be created for free at Exact Online's website. This way you can test the node however you like it without compromising your production environment.
  After you can easily connect it with a production environment and automate your workflows.

  ## Developer

  Hi, 

  We are [DataFix](https://datafix.nl), an expert partner of n8n.
  > :warning: **We have developed this node to be free to use. The node is as-is, support is not included.**

  Some of the services we offer:
  * Node Development
  * Workflow Development
  * Mentoring
  * Support

  Feel free to reach out if you want to hire us @ hi@datafix.nl

  For questions or issues with the node, please open an issue on Github.
  We will have a look and if it is an issue with the node we will try to fix it. Be sure to include a proper description and screenshot(s) of the issue so we can easily understand the issue.

  ## Exact Online

  Exact Online is an ERP solution that is offered as a cloud service. Most companies that use exact use it as their main application and have all kinds of applications they use around that. Exact has been expanding over the years and they now offer Exact Online internationally.

  ## Install instructions

  The node can be installed with the community package feature. It can also be installed manually. 
  If you need more information on that, please refer to the n8n docs.

  Make sure to restart n8n when you have installed the node.
  > :warning: **Make sure to restart n8n when you have installed the node.**

  ## Setup instructions

  > :warning: **You need a HTTPS callback url for it to function. Exact Online does not allow you to use HTTP. Make sure you have this before starting the setup.**

  > **_NOTE:_**  Some of the documentation was rewritten because the production app setup is a bit different from the development app. That is also why some names and urls arent the same everywhere, I hope it is clear enough not to get you confused about changing names and such.

  To setup this node you will have to create an App in Exact online. Below there is a step by step guide on how to do this.
  In the future there might be a possibility to simply select it from the app store of Exact Online. I will be looking into getting it approved at a later date.

  The Images should be clear enough for you to follow along.

  Login into Exact Online by clicking on the marked button

  ![Login](https://github.com/bramkn/ExactOnline/blob/master/Images/login.png)

  Click on appcenter button to open the app center, this where you can connect apps.

  ![ManageApps](https://github.com/bramkn/ExactOnline/blob/master/Images/appcenterNormal.png)

  At this point it will forward you to all the apps you can browse. You probably need to click on login in the top right again to actually login on this page.

  After that you will see the manage apps button
  Click on the manage apps button

  ![ManageApps2](https://github.com/bramkn/ExactOnline/blob/master/Images/manageapps2.png)

  You will then see your apps. There is a choice between production and test. Click on register an app.
  If you do not have a choice simply click on the big + to register an app.

  ![Apps](https://github.com/bramkn/ExactOnline/blob/master/Images/Apps.png)

  Open a tab with n8n and go to the Exact Online Node, if you do not have it open already.
  Create a new credentials entry or modify an existing one in the app.

  ![Apps](https://github.com/bramkn/ExactOnline/blob/master/Images/credentials.png)

  You should see the credential information. You need to fill this in, but first you need the Callback URL to be filled in into the app setup in Exact Online.
  Copy the callback URL from n8n into Exact Online. 
  If you are registering a production app you will need to do this in this first screen that pops up. If it is a testing app this pop-up is skipped. (fill in the name and the callback url in the following screen if this step is skipped)

  ![prodRegister](https://github.com/bramkn/ExactOnline/blob/master/Images/registerappProd.png)

  Fill in the rest of the information in the credentials of n8n.
  Should look a bit like this:

  Exact Online:
  ![Apps](https://github.com/bramkn/ExactOnline/blob/master/Images/oauth2Exact2.png)

  n8n:
  ![Apps](https://github.com/bramkn/ExactOnline/blob/master/Images/Oauth2n8n2.png)

  After you can Click connect / reconnect and it might give you a pop-up to login to exact online if you aren't logged in yet or you need to confirm the connection / approve some terms.

  ## Features v1.0

  All posible API requests were scraped from the Exact Online docs. This was used to create a config file. some quality of life features were added and more will be added in the future.

  You can choose al Devisions your account has access to. And all data you have access to will be able to be retrieved.
  Somtimes you do not retrieve any data that is because there is non or you do not have access.

  you can use the dropdowns to select what you want to do.

  ![Apps](https://github.com/bramkn/ExactOnline/blob/master/Images/options1.png)

  when retrieving data you can add filters and choose what fields you want to include. You can both name field to be included and excluded. Some Api endpoints allow you to retrieve all fields when not selecting any and some require you to select the fields you want to include. By setting the slider to exclude the selected fields and not selecting any fields the node will automatically fetch all fields available.

  ![Apps](https://github.com/bramkn/ExactOnline/blob/master/Images/options3.png)


  when you want to create a new record or edit it, you will be able to add fields and select fields from a list of options for that specific resource.

  ![Apps](https://github.com/bramkn/ExactOnline/blob/master/Images/options2.png)

  ## Using the scraper

  - You do not need an account for the scraper.
  - Paste the JSON into an n8n workflow.
  - Set the Github Authorization
  - The first time you might want to set the Github node to create the file.
  - Start
  - Done -> make sure to format the output file as this will improve the readability ;-)

  ## More info on the API

  [Exact Online ref](https://start.exactonline.nl/docs/HlpRestAPIResources.aspx?SourceAction=10)

  ## License

  [ChickenDance](https://github.com/bramkn/ExactOnline/blob/master/n8n-nodes-exact-online/LICENSE.md)

ai_documentation_summary:
  {"purpose":"Provides an n8n community node to connect to Exact Online (ERP) and perform CRUD operations against Exact Online APIs, enabling automation and data retrieval across divisions.","capabilities":["Create, Read, Update, Delete (basic CRUD) operations against Exact Online resources","Access most Exact Online API endpoints (config generated from ~396 scraped API pages)","Select which Exact Online division to operate on","Retrieve/list data with filter support","Include or exclude specific fields when retrieving data; option to auto-fetch all available fields","OAuth2-based connection flow (supports developer/testing and production app setups)","Provides a sample workflow used to scrape and generate the API config"],"authentication":"OAuth2 (Exact Online app credentials required; HTTPS callback URL required)","commonUseCases":["Sync Exact Online ERP records (customers, invoices, contacts, etc.) into other systems","Automate create/update/delete operations on Exact Online data","Retrieve filtered subsets of ERP data for reporting or downstream processing","Develop and test integrations using an Exact Online developer account before connecting production"],"limitations":["v1: basic CRUD only (feature set is initial/basic)","Distributed as community node 'as-is' — no commercial support included","Requires HTTPS callback URL (Exact Online rejects HTTP callbacks)","Some endpoints require explicit field selection; behavior differs per endpoint","May return no data if the account has no access or no data for the selected division"],"relatedNodes":[]}


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

updated_at: 2026-02-19 14:41:52
author_name: level-dev
author_github_url: https://github.com/levelrmm/n8n-nodes-level.git
npm_package_name: @levelrmm/n8n-nodes-level
npm_version: 0.2.8
community_fetched_at: 2026-02-19T14:41:52.656Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "devices",
      "options": [
        {
          "name": "Alert",
          "value": "alerts"
        },
        {
          "name": "Automation",
          "value": "automation"
        },
        {
          "name": "Device",
          "value": "devices"
        },
        {
          "name": "Group",
          "value": "groups"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get an alert",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/alerts/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "List",
          "value": "list",
          "action": "List alerts",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/alerts",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "alerts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "triggerWebhook",
      "options": [
        {
          "name": "Trigger Webhook",
          "value": "triggerWebhook",
          "action": "Trigger a webhook automation",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/automations/webhooks/{{$parameter[\"token\"]}}",
              "method": "POST"
            }
          },
          "description": "Invoke a Level automation webhook by token"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "automation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List devices",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/devices",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a device",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/devices",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "devices"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a group",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/groups/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "List",
          "value": "list",
          "action": "List groups",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/groups",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "groups"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get an alert",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/alerts/{{$parameter[\"id\"]}}",
          "method": "GET"
        }
      }
    },
    {
      "name": "List",
      "value": "list",
      "action": "List alerts",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/alerts",
          "method": "GET"
        }
      }
    },
    {
      "name": "Trigger Webhook",
      "value": "triggerWebhook",
      "action": "Trigger a webhook automation",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/automations/webhooks/{{$parameter[\"token\"]}}",
          "method": "POST"
        }
      },
      "description": "Invoke a Level automation webhook by token"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List devices",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/devices",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a device",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/devices",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a group",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/groups/{{$parameter[\"id\"]}}",
          "method": "GET"
        }
      }
    },
    {
      "name": "List",
      "value": "list",
      "action": "List groups",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/groups",
          "method": "GET"
        }
      }
    }
  ]

npm_readme:
  ![Level Logo](https://media.level.io/i/logo/logo-bg.jpg)
  # n8n-nodes-level

  Official [n8n](https://n8n.io) community nodes for [Level.io](https://level.io), the RMM and automation platform for modern MSPs. These nodes let you orchestrate Level alerts, devices, groups, automations, and webhook events directly from your n8n workflows.

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

  ## Installation

  Follow the [community node installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) to add `n8n-nodes-level` to your n8n instance. Once installed, the Level nodes appear in the n8n editor under **Level**.

  ## Operations

  ### Level node

  | Resource | Operations |
  | --- | --- |
  | Alert | Get alert by ID, List alerts |
  | Automation | Trigger webhook |
  | Device | Get device by ID, List devices |
  | Group | Get group by ID, List groups |

  ### Level Trigger node

  The trigger node listens for signed webhook events from Level and emits them into your workflows. Supported event types include alert, device, group, and automation lifecycle notifications.

  ## Credentials

  Create the following credentials in n8n:

  - **Level API** – Generate an API key from the Level dashboard (**Settings → API Keys**) and store it in this credential. Assign it to the Level node (and to the trigger if you enrich incoming events with REST calls).
  - **Level Webhook Secret** – Copy the signing secret from **Settings → Webhooks** in Level and store it in this credential. Assign it to the Level Trigger node to verify incoming webhook signatures.

  ## Compatibility

  These nodes target `n8nNodesApiVersion` 1 and are developed against n8n v1.60.0 and later. Earlier releases of n8n might not expose all required node features.

  ## Usage

  1. **Add credentials** – In n8n, open *Settings → Credentials* and create both a **Level API** credential (API key) and a **Level Webhook Secret** credential (webhook signing secret).
  2. **Automate API calls** – Place the **Level** node in a workflow to query alerts, devices, or groups, or to invoke an automation webhook by token. Use the *Response Property Name* parameter to reshape the API response when needed.
  3. **React to webhooks** – Add the **Level Trigger** node, select the event types you want to handle, and copy the webhook URL generated by n8n. Configure this URL and the shared secret in Level so events flow into your workflow securely.
  4. **Chain actions** – Combine Level data with other n8n nodes to notify teams, update tickets, or enrich records in downstream systems.

  Refer to the [Level API reference](https://levelapi.readme.io/reference/getting-started-with-your-api) for endpoint details, pagination behavior, and payload schemas when building workflows.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Level API reference](https://levelapi.readme.io/reference/getting-started-with-your-api)
  - [Level help center](https://help.level.io/)

  ## Version history

  | Version | Changes |
  | --- | --- |
  | 0.1.0 | Initial release of the Level community nodes for n8n. |

ai_documentation_summary:
  {"purpose":"Provide n8n nodes to interact with the Level RMM API so you can query alerts, devices, and groups, trigger automations, and handle signed webhook events from Level within n8n workflows.","capabilities":["Get alert by ID","List alerts","Trigger automation webhook (by token)","Get device by ID","List devices","Get group by ID","List groups","Listen for and verify signed webhook events (alert, device, group, automation lifecycle) via Level Trigger","Reshape API responses using the Response Property Name parameter"],"authentication":"API key required for Level API (Level API credential). Webhook signing secret required for verifying incoming webhook events (Level Webhook Secret credential).","commonUseCases":["Automate retrieval of alerts, devices, and groups for monitoring, reporting, or inventory workflows","Trigger Level automations from n8n by invoking automation webhooks","React to Level webhook events (alerts, device/group lifecycle, automation notifications) to start workflows","Enrich downstream systems or notify teams by chaining Level data with other n8n nodes (e.g., ticketing, messaging, databases)"],"limitations":["Operations are limited to get/list for alerts/devices/groups and trigger webhook for automations — no create/update/delete actions exposed in this node","Requires n8n v1.60.0 or later (earlier n8n releases may not expose necessary node features)","Webhook handling requires correct signing secret configuration to verify incoming events","Pagination behavior and payload schemas follow the Level API — consult Level API docs for details"],"relatedNodes":["Level Trigger"]}


node_type: n8n-nodes-linkupapi.linkup
package_name: n8n-nodes-linkupapi
display_name: Linkup API for LinkedIn
description: Connect your AI agent to LinkedIn and other B2B channels
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: linkup_eliott
author_github_url: https://github.com/Eliott-89/
npm_package_name: n8n-nodes-linkupapi
npm_version: 4.0.65
community_fetched_at: 2026-02-19T14:41:52.656Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "profile",
      "options": [
        {
          "name": "Profiles",
          "value": "profile"
        },
        {
          "name": "Companies",
          "value": "company"
        },
        {
          "name": "Network",
          "value": "network"
        },
        {
          "name": "Messages",
          "value": "message"
        },
        {
          "name": "Posts",
          "value": "post"
        },
        {
          "name": "Recruiter",
          "value": "recruiter"
        },
        {
          "name": "Company API",
          "value": "company api"
        },
        {
          "name": "Person API",
          "value": "person api"
        },
        {
          "name": "Mail API",
          "value": "mail api"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get my profile",
      "options": [
        {
          "name": "Get My Profile",
          "value": "get my profile",
          "action": "Get my LinkedIn profile",
          "description": "Get your LinkedIn profile information"
        },
        {
          "name": "Get Profile Information",
          "value": "get profile info",
          "action": "Get a profile's information",
          "description": "Get profile information (profile/info)"
        },
        {
          "name": "Search Profile",
          "value": "search profile",
          "action": "Search for profiles",
          "description": "Search LinkedIn profiles"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "profile"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search companies",
      "options": [
        {
          "name": "Search Companies",
          "value": "search companies",
          "action": "Search for companies",
          "description": "Search for companies on LinkedIn"
        },
        {
          "name": "Get Company Information",
          "value": "get company info",
          "action": "Get company information",
          "description": "Get detailed information about a company"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "company"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send connection request",
      "options": [
        {
          "name": "Send Connection Request",
          "value": "send connection request",
          "action": "Send a connection request",
          "description": "Send a connection request to a profile"
        },
        {
          "name": "Get Connections",
          "value": "get connections",
          "action": "Get connections",
          "description": "Get your LinkedIn connections"
        },
        {
          "name": "Accept Connection Invitation",
          "value": "accept connection invitation",
          "action": "Accept connection invitation",
          "description": "Accept a received connection invitation"
        },
        {
          "name": "Get Received Invitations",
          "value": "get received invitations",
          "action": "Get received invitations",
          "description": "Get received connection invitations"
        },
        {
          "name": "Get Sent Invitations",
          "value": "get sent invitations",
          "action": "Get sent invitations",
          "description": "Get sent connection invitations"
        },
        {
          "name": "Withdraw Invitation",
          "value": "withdraw invitation",
          "action": "Withdraw an invitation",
          "description": "Withdraw a sent invitation"
        },
        {
          "name": "Get Network Recommendations",
          "value": "get network recommendations",
          "action": "Get network recommendations",
          "description": "Get network recommendations"
        },
        {
          "name": "Get Invitation Status",
          "value": "get invitation status",
          "action": "Check invitation status",
          "description": "Check invitation status for a profile"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "network"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send message",
      "options": [
        {
          "name": "Send Message",
          "value": "send message",
          "action": "Send a message",
          "description": "Send a message to a connection"
        },
        {
          "name": "Get Message Inbox",
          "value": "get message inbox",
          "action": "Get message inbox",
          "description": "Get your message inbox"
        },
        {
          "name": "Get Conversation Messages",
          "value": "get conversation messages",
          "action": "Get conversation messages",
          "description": "Get messages from a conversation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get post reactions",
      "options": [
        {
          "name": "Get Post Reactions",
          "value": "get post reactions",
          "action": "Get post reactions",
          "description": "Get reactions on a post"
        },
        {
          "name": "React To Post",
          "value": "react to post",
          "action": "React to a post",
          "description": "React to a post"
        },
        {
          "name": "Repost Content",
          "value": "repost content",
          "action": "Repost content",
          "description": "Repost content"
        },
        {
          "name": "Add Comment To Post",
          "value": "add comment to post",
          "action": "Add comment to post",
          "description": "Add a comment to a post"
        },
        {
          "name": "Get Comments",
          "value": "get comments",
          "action": "Get post comments",
          "description": "Get comments on a post"
        },
        {
          "name": "Answer Comment",
          "value": "answer comment",
          "action": "Answer a comment",
          "description": "Answer a comment"
        },
        {
          "name": "Search Posts",
          "value": "search posts",
          "action": "Search for posts",
          "description": "Search for posts"
        },
        {
          "name": "Create Post",
          "value": "create post",
          "action": "Create a post",
          "description": "Create a new post"
        },
        {
          "name": "Get LinkedIn Feed",
          "value": "get linkedin feed",
          "action": "Get LinkedIn feed",
          "description": "Get your LinkedIn feed"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "post"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get candidates",
      "options": [
        {
          "name": "Get Candidates",
          "value": "get candidates",
          "action": "Get candidates",
          "description": "Get candidate list"
        },
        {
          "name": "Get Candidate CV",
          "value": "get candidate cv",
          "action": "Get candidate CV",
          "description": "Get candidate CV"
        },
        {
          "name": "Get Job Posts",
          "value": "get job posts",
          "action": "Get job posts",
          "description": "Get job posts"
        },
        {
          "name": "Publish Job",
          "value": "publish job",
          "action": "Publish a job",
          "description": "Publish a job"
        },
        {
          "name": "Close Job",
          "value": "close job",
          "action": "Close a job",
          "description": "Close a job"
        },
        {
          "name": "Create Job",
          "value": "create job",
          "action": "Create a job",
          "description": "Create a new job"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "recruiter"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search companies",
      "options": [
        {
          "name": "Search Companies",
          "value": "search companies",
          "action": "Search for companies",
          "description": "Search for companies"
        },
        {
          "name": "Get Company Information",
          "value": "get company info",
          "action": "Get company information",
          "description": "Get company information"
        },
        {
          "name": "Get Company Information By Domain",
          "value": "get company info by domain",
          "action": "Get company information by domain",
          "description": "Get company information by domain"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "company api"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search profiles",
      "options": [
        {
          "name": "Search Profiles",
          "value": "search profiles",
          "action": "Search for profiles",
          "description": "Search for profiles"
        },
        {
          "name": "Extract Profile Information",
          "value": "extract profile info",
          "action": "Extract profile information",
          "description": "Extract profile information (data/profil/info)"
        },
        {
          "name": "Profile Enrichment",
          "value": "profile enrichment",
          "action": "Enrich profile information",
          "description": "Enrich profile information"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "person api"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "email finder",
      "options": [
        {
          "name": "Email Finder",
          "value": "email finder",
          "action": "Find email addresses",
          "description": "Find email addresses from LinkedIn profiles"
        },
        {
          "name": "Email Reverse",
          "value": "email reverse",
          "action": "Reverse lookup email",
          "description": "Reverse lookup email to get LinkedIn profile information"
        },
        {
          "name": "Email Validate",
          "value": "email validate",
          "action": "Validate email address",
          "description": "Validate if an email address is valid and deliverable"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "mail api"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get My Profile",
      "value": "get my profile",
      "action": "Get my LinkedIn profile",
      "description": "Get your LinkedIn profile information"
    },
    {
      "name": "Get Profile Information",
      "value": "get profile info",
      "action": "Get a profile's information",
      "description": "Get profile information (profile/info)"
    },
    {
      "name": "Search Profile",
      "value": "search profile",
      "action": "Search for profiles",
      "description": "Search LinkedIn profiles"
    },
    {
      "name": "Search Companies",
      "value": "search companies",
      "action": "Search for companies",
      "description": "Search for companies on LinkedIn"
    },
    {
      "name": "Get Company Information",
      "value": "get company info",
      "action": "Get company information",
      "description": "Get detailed information about a company"
    },
    {
      "name": "Send Connection Request",
      "value": "send connection request",
      "action": "Send a connection request",
      "description": "Send a connection request to a profile"
    },
    {
      "name": "Get Connections",
      "value": "get connections",
      "action": "Get connections",
      "description": "Get your LinkedIn connections"
    },
    {
      "name": "Accept Connection Invitation",
      "value": "accept connection invitation",
      "action": "Accept connection invitation",
      "description": "Accept a received connection invitation"
    },
    {
      "name": "Get Received Invitations",
      "value": "get received invitations",
      "action": "Get received invitations",
      "description": "Get received connection invitations"
    },
    {
      "name": "Get Sent Invitations",
      "value": "get sent invitations",
      "action": "Get sent invitations",
      "description": "Get sent connection invitations"
    },
    {
      "name": "Withdraw Invitation",
      "value": "withdraw invitation",
      "action": "Withdraw an invitation",
      "description": "Withdraw a sent invitation"
    },
    {
      "name": "Get Network Recommendations",
      "value": "get network recommendations",
      "action": "Get network recommendations",
      "description": "Get network recommendations"
    },
    {
      "name": "Get Invitation Status",
      "value": "get invitation status",
      "action": "Check invitation status",
      "description": "Check invitation status for a profile"
    },
    {
      "name": "Send Message",
      "value": "send message",
      "action": "Send a message",
      "description": "Send a message to a connection"
    },
    {
      "name": "Get Message Inbox",
      "value": "get message inbox",
      "action": "Get message inbox",
      "description": "Get your message inbox"
    },
    {
      "name": "Get Conversation Messages",
      "value": "get conversation messages",
      "action": "Get conversation messages",
      "description": "Get messages from a conversation"
    },
    {
      "name": "Get Post Reactions",
      "value": "get post reactions",
      "action": "Get post reactions",
      "description": "Get reactions on a post"
    },
    {
      "name": "React To Post",
      "value": "react to post",
      "action": "React to a post",
      "description": "React to a post"
    },
    {
      "name": "Repost Content",
      "value": "repost content",
      "action": "Repost content",
      "description": "Repost content"
    },
    {
      "name": "Add Comment To Post",
      "value": "add comment to post",
      "action": "Add comment to post",
      "description": "Add a comment to a post"
    },
    {
      "name": "Get Comments",
      "value": "get comments",
      "action": "Get post comments",
      "description": "Get comments on a post"
    },
    {
      "name": "Answer Comment",
      "value": "answer comment",
      "action": "Answer a comment",
      "description": "Answer a comment"
    },
    {
      "name": "Search Posts",
      "value": "search posts",
      "action": "Search for posts",
      "description": "Search for posts"
    },
    {
      "name": "Create Post",
      "value": "create post",
      "action": "Create a post",
      "description": "Create a new post"
    },
    {
      "name": "Get LinkedIn Feed",
      "value": "get linkedin feed",
      "action": "Get LinkedIn feed",
      "description": "Get your LinkedIn feed"
    },
    {
      "name": "Get Candidates",
      "value": "get candidates",
      "action": "Get candidates",
      "description": "Get candidate list"
    },
    {
      "name": "Get Candidate CV",
      "value": "get candidate cv",
      "action": "Get candidate CV",
      "description": "Get candidate CV"
    },
    {
      "name": "Get Job Posts",
      "value": "get job posts",
      "action": "Get job posts",
      "description": "Get job posts"
    },
    {
      "name": "Publish Job",
      "value": "publish job",
      "action": "Publish a job",
      "description": "Publish a job"
    },
    {
      "name": "Close Job",
      "value": "close job",
      "action": "Close a job",
      "description": "Close a job"
    },
    {
      "name": "Create Job",
      "value": "create job",
      "action": "Create a job",
      "description": "Create a new job"
    },
    {
      "name": "Search Companies",
      "value": "search companies",
      "action": "Search for companies",
      "description": "Search for companies"
    },
    {
      "name": "Get Company Information",
      "value": "get company info",
      "action": "Get company information",
      "description": "Get company information"
    },
    {
      "name": "Get Company Information By Domain",
      "value": "get company info by domain",
      "action": "Get company information by domain",
      "description": "Get company information by domain"
    },
    {
      "name": "Search Profiles",
      "value": "search profiles",
      "action": "Search for profiles",
      "description": "Search for profiles"
    },
    {
      "name": "Extract Profile Information",
      "value": "extract profile info",
      "action": "Extract profile information",
      "description": "Extract profile information (data/profil/info)"
    },
    {
      "name": "Profile Enrichment",
      "value": "profile enrichment",
      "action": "Enrich profile information",
      "description": "Enrich profile information"
    },
    {
      "name": "Email Finder",
      "value": "email finder",
      "action": "Find email addresses",
      "description": "Find email addresses from LinkedIn profiles"
    },
    {
      "name": "Email Reverse",
      "value": "email reverse",
      "action": "Reverse lookup email",
      "description": "Reverse lookup email to get LinkedIn profile information"
    },
    {
      "name": "Email Validate",
      "value": "email validate",
      "action": "Validate email address",
      "description": "Validate if an email address is valid and deliverable"
    }
  ]

npm_readme:
  # @linkupapi/n8n-nodes

  Official n8n integration for LinkupAPI - Give your AI agents access to LinkedIn, WhatsApp, and real-time web data through a single powerful API


  ## Installation
  ```bash
  npm install n8n-nodes-linkupapi
  ```

  ## Quick Start

  ### 1. Get API Credentials

  Sign up at [linkupapi.com](https://www.linkupapi.com) and get your API key.

  ### 2. Configure in n8n

  Add your LinkupAPI credentials in n8n:
  - **Credential Type**: LinkupAPI
  - **API Key**: Your API key from the dashboard

  ### 3. Use in Workflows

  Drag and drop LinkupAPI nodes into your workflow and start automating.



  ## Features

  ### LinkedIn Automation
  - **Connection Requests**: Send personalized invitations programmatically
  - **Messaging**: Automate DM campaigns with text and media
  - **Engagement**: Post comments and interact with content at scale

  ### WhatsApp Integration
  - **Messaging**: Send WhatsApp messages
  - **Automation**: Build conversational workflows

  ### Email Intelligence
  - **Email Finder**: Discover professional email addresses
  - **Email Verifier**: Validate deliverability in real-time
  - **Reverse Lookup**: Get profile data from email addresses

  ### Web Crawler API
  - **People Search**: Find professionals with advanced filters (title, company, location, skills)
  - **Company Intelligence**: Get complete company data from any domain
  - **Company Search**: Filter companies by industry, size, funding, and location
  - **Hiring Signals**: Track companies actively recruiting
  - **Funding Data**: Source companies raising capital
  - **Sales Automation**: Prospect on LinkedIn, find emails, track hiring signals
  - **Recruitment**: Source candidates, monitor job postings, enrich profiles
  - **Lead Generation**: Search companies, enrich data, detect buying intent
  - **AI Agents**: Build autonomous workflows for outreach and intelligence

  ## API Endpoints

  | Category | Endpoints | Description |
  |----------|-----------|-------------|
  | **LinkedIn** | Invitations, Messages, Comments and more | Automate LinkedIn outreach |
  | **WhatsApp** | Messages | Send WhatsApp messages |
  | **Email** | Finder, Verifier, Reverse | Email intelligence tools |
  | **Web Crawler** | People Search, Company Search, Job Postings, Funding | Real-time B2B intelligence |

  ## Documentation

  - **Full API Docs**: [docs.linkupapi.com](https://docs.linkupapi.com/api-reference/introduction)
  - **Support**: support@linkupapi.com

  ## Compliance & Security

  - ✅ GDPR & CCPA compliant
  - ✅ Zero-storage architecture
  - ✅ Real-time processing only
  - ✅ Enterprise-grade security

  ## Requirements

  - Node.js: >= 18.10
  - n8n: Latest version
  - Valid Linkup API credentials

  ## License

  Proprietary - See [terms of use](https://www.linkupapi.com/legal/terms-of-use)


  ## Support

  - Website: [linkupapi.com](https://www.linkupapi.com)
  - Email: support@linkupapi.com
  - Documentation: [docs.linkupapi.com](https://docs.linkupapi.com/api-reference/introduction)

ai_documentation_summary:
  {"purpose":"Provide an n8n node that connects AI agents and workflows to LinkedIn, WhatsApp, email intelligence and real-time web (B2B) data through the LinkupAPI, enabling automation of outreach, prospecting, and enrichment across channels.","capabilities":["LinkedIn: send connection requests with personalized invites","LinkedIn: send direct messages and media-based DM campaigns","LinkedIn: post comments and interact with content at scale","WhatsApp: send messages and build conversational workflows","Email intelligence: find professional emails (Email Finder)","Email intelligence: verify email deliverability in real-time (Email Verifier)","Email intelligence: reverse lookup profile data from email addresses","Web Crawler / People Search: search professionals with filters (title, company, location, skills)","Company intelligence: retrieve complete company data from a domain","Company Search: filter companies by industry, size, funding, location"],"authentication":"API key required (Credential Type: LinkupAPI). No OAuth2 mentioned.","commonUseCases":["Automated LinkedIn outreach campaigns (connection requests, DMs, comment engagement)","Multi-channel B2B outreach combining LinkedIn, WhatsApp, and email","Lead generation and enrichment: find companies/people, enrich profiles, validate emails","Sales prospecting using hiring and funding signals to prioritize targets","Recruiting workflows: source candidates, monitor job postings, enrich profiles"],"limitations":["Proprietary license (not open-source)","Requires a valid LinkupAPI API key (no alternative auth method documented)","Zero-storage architecture / real-time processing only — the API does not persist data long-term","Platform requirements: Node.js >= 18.10 and latest n8n","README does not document OAuth-based LinkedIn auth or granular per-account OAuth flows"],"relatedNodes":[]}


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

updated_at: 2026-02-19 14:41:52
author_name: bryantgillespie
author_github_url: https://github.com/directus/n8n-nodes-directus.git
npm_package_name: @directus/n8n-nodes-directus
npm_version: 1.0.3
community_fetched_at: 2026-02-19T14:41:52.657Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "item",
      "options": [
        {
          "name": "Item",
          "value": "item"
        },
        {
          "name": "User",
          "value": "user"
        },
        {
          "name": "File",
          "value": "file"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an item",
          "description": "Create a new item"
        },
        {
          "name": "Create (Raw JSON)",
          "value": "createRaw",
          "action": "Create an item with raw JSON",
          "description": "Create a new item using raw JSON data"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an item",
          "description": "Delete an item"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an item",
          "description": "Get a single item"
        },
        {
          "name": "Get (Raw JSON)",
          "value": "getRaw",
          "action": "Get an item with raw JSON",
          "description": "Get a single item using raw JSON query parameters"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many items",
          "description": "Get many items from a collection"
        },
        {
          "name": "Get Many (Raw JSON)",
          "value": "getAllRaw",
          "action": "Get many items with raw JSON",
          "description": "Get many items using raw JSON query parameters"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an item",
          "description": "Update an existing item"
        },
        {
          "name": "Update (Raw JSON)",
          "value": "updateRaw",
          "action": "Update an item with raw JSON",
          "description": "Update an existing item using raw JSON data"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "item"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "invite",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a user",
          "description": "Delete a user"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a user",
          "description": "Get a single user"
        },
        {
          "name": "Get (Raw JSON)",
          "value": "getRaw",
          "action": "Get a user with raw JSON",
          "description": "Get a single user using raw JSON query parameters"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many users",
          "description": "Get many users"
        },
        {
          "name": "Get Many (Raw JSON)",
          "value": "getAllRaw",
          "action": "Get many users with raw JSON",
          "description": "Get many users using raw JSON query parameters"
        },
        {
          "name": "Invite User",
          "value": "invite",
          "action": "Invite a user",
          "description": "Invite a new user via email"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a user",
          "description": "Update an existing user"
        },
        {
          "name": "Update (Raw JSON)",
          "value": "updateRaw",
          "action": "Update a user with raw JSON",
          "description": "Update an existing user using raw JSON data"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "import",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a file",
          "description": "Delete a file"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a file",
          "description": "Get a single file"
        },
        {
          "name": "Get (Raw JSON)",
          "value": "getRaw",
          "action": "Get a file with raw JSON",
          "description": "Get a single file using raw JSON query parameters"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many files",
          "description": "Get many files"
        },
        {
          "name": "Get Many (Raw JSON)",
          "value": "getAllRaw",
          "action": "Get many files with raw JSON",
          "description": "Get many files using raw JSON query parameters"
        },
        {
          "name": "Import a File",
          "value": "import",
          "action": "Import a file from URL",
          "description": "Import a file from a URL"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a file",
          "description": "Update file metadata"
        },
        {
          "name": "Update (Raw JSON)",
          "value": "updateRaw",
          "action": "Update a file with raw JSON",
          "description": "Update file metadata using raw JSON data"
        },
        {
          "name": "Upload a File",
          "value": "upload",
          "action": "Upload a file",
          "description": "Upload a file using binary data from a previous node"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create an item",
      "description": "Create a new item"
    },
    {
      "name": "Create (Raw JSON)",
      "value": "createRaw",
      "action": "Create an item with raw JSON",
      "description": "Create a new item using raw JSON data"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an item",
      "description": "Delete an item"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an item",
      "description": "Get a single item"
    },
    {
      "name": "Get (Raw JSON)",
      "value": "getRaw",
      "action": "Get an item with raw JSON",
      "description": "Get a single item using raw JSON query parameters"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many items",
      "description": "Get many items from a collection"
    },
    {
      "name": "Get Many (Raw JSON)",
      "value": "getAllRaw",
      "action": "Get many items with raw JSON",
      "description": "Get many items using raw JSON query parameters"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an item",
      "description": "Update an existing item"
    },
    {
      "name": "Update (Raw JSON)",
      "value": "updateRaw",
      "action": "Update an item with raw JSON",
      "description": "Update an existing item using raw JSON data"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a user",
      "description": "Delete a user"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a user",
      "description": "Get a single user"
    },
    {
      "name": "Get (Raw JSON)",
      "value": "getRaw",
      "action": "Get a user with raw JSON",
      "description": "Get a single user using raw JSON query parameters"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many users",
      "description": "Get many users"
    },
    {
      "name": "Get Many (Raw JSON)",
      "value": "getAllRaw",
      "action": "Get many users with raw JSON",
      "description": "Get many users using raw JSON query parameters"
    },
    {
      "name": "Invite User",
      "value": "invite",
      "action": "Invite a user",
      "description": "Invite a new user via email"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a user",
      "description": "Update an existing user"
    },
    {
      "name": "Update (Raw JSON)",
      "value": "updateRaw",
      "action": "Update a user with raw JSON",
      "description": "Update an existing user using raw JSON data"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a file",
      "description": "Delete a file"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a file",
      "description": "Get a single file"
    },
    {
      "name": "Get (Raw JSON)",
      "value": "getRaw",
      "action": "Get a file with raw JSON",
      "description": "Get a single file using raw JSON query parameters"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many files",
      "description": "Get many files"
    },
    {
      "name": "Get Many (Raw JSON)",
      "value": "getAllRaw",
      "action": "Get many files with raw JSON",
      "description": "Get many files using raw JSON query parameters"
    },
    {
      "name": "Import a File",
      "value": "import",
      "action": "Import a file from URL",
      "description": "Import a file from a URL"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a file",
      "description": "Update file metadata"
    },
    {
      "name": "Update (Raw JSON)",
      "value": "updateRaw",
      "action": "Update a file with raw JSON",
      "description": "Update file metadata using raw JSON data"
    },
    {
      "name": "Upload a File",
      "value": "upload",
      "action": "Upload a file",
      "description": "Upload a file using binary data from a previous node"
    }
  ]

npm_readme:
  # n8n-nodes-directus

  A comprehensive n8n community node package for integrating with Directus CMS.

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

  ### Package Name

  The package is published as `@directus/n8n-nodes-directus` on npm.

  ### From npm (when published)

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

  ## Usage

  ### Getting Started

  1. **Install the package** (when published):

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

     # Or using pnpm
     pnpm add @directus/n8n-nodes-directus
     ```

  2. **Configure credentials** in n8n:
     - Add your Directus URL (e.g., `https://your-directus.app`)
     - Add your Directus API token with appropriate permissions

  3. **Use the nodes** in your workflows:
     - **Directus Node**: For CRUD operations on items, users, and files
     - **Directus Trigger Node**: For webhook-based automation

  ### Available Operations

  #### Directus Node

  - **Items**:
    - Create, Create (Raw JSON)
    - Get, Get (Raw JSON)
    - Get Many, Get Many (Raw JSON)
    - Update, Update (Raw JSON)
    - Delete
  - **Users**:
    - Invite
    - Get, Get (Raw JSON)
    - Get Many, Get Many (Raw JSON) with Simplify option
    - Update, Update (Raw JSON)
    - Delete
  - **Files**:
    - Upload a File (using binary data from a previous node)
    - Import a File (from a URL)
    - Get, Get (Raw JSON)
    - Get Many, Get Many (Raw JSON) with Simplify option
    - Update, Update (Raw JSON)
    - Delete

  #### Directus Trigger Node

  - **Item Events**: Trigger on create, update, delete operations in collections
  - **User Events**: Trigger on user creation, updates, and deletions
  - **File Events**: Trigger on file uploads and updates

  ## Features

  - **Dynamic Field Loading**: Automatically loads available collections and fields from your Directus instance
  - **Smart Field Processing**: Handles complex field types and relationships
  - **Simplify Option**: Returns essential fields only for Users and Files "Get Many" operations
  - **Raw JSON Operations**: Full support for raw JSON data/query parameters for advanced use cases (available for all CRUD operations)
  - **Robust Error Handling**: Comprehensive error handling with detailed error messages
  - **Webhook Management**: Automatic webhook creation and cleanup for trigger nodes
  - **Type Safety**: Full TypeScript support with proper type definitions
  - **UX Compliance**: Follows n8n community node UX guidelines with proper naming and placeholders

  ## Credentials

  ### Directus API

  Configure your Directus instance connection:

  - **Directus URL**: Your Directus instance URL (e.g., `https://your-directus.app`)
  - **Token**: Your Directus API token with appropriate permissions

  ## Compatibility

  - **Directus Cloud**: Fully supported
  - **Self-hosted Directus**: Fully supported
  - **Directus Versions**: Compatible with Directus 10.0+

  ## Development

  This project uses the official n8n-node CLI tool for development and follows n8n community node standards.

  ### Prerequisites

  - **Node.js 22+**
  - **npm 10+**
  - **Directus instance** for testing (cloud or self-hosted)
  - **ngrok** (for webhook testing) - install from [ngrok.com](https://ngrok.com/)

  ### Setup

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

  # Install dependencies
  npm install

  # Build the project
  npm run build
  ```

  ### Quick Start

  1. **Start n8n with your node loaded**:

     ```bash
     npm run dev:n8n
     ```

     This will:
     - Link your custom node to n8n
     - Start n8n development server
     - Make your Directus nodes available in n8n

  2. **Access n8n**: Open http://localhost:5678 in your browser

  3. **Configure credentials**:
     - Add your Directus API credentials
     - Test the connection

  4. **Create workflows**: Use the Directus nodes in your workflows

  ### Testing

  #### Webhook Testing (Requires ngrok)

  For testing the **Directus Trigger** node, you need to expose n8n via a public URL since Directus cannot reach localhost:

  1. **Install ngrok** (if not already installed):

     ```bash
     # macOS with Homebrew
     brew install ngrok

     # Or download from https://ngrok.com/
     ```

  2. **Start n8n** (in one terminal):

     ```bash
     npm run dev:n8n
     ```

  3. **Start ngrok** (in another terminal):

     ```bash
     ngrok http 5678
     ```

     This will give you a public URL like `https://abc123.ngrok-free.dev`

  4. **Create a webhook workflow**:
     - Add a **Directus Trigger** node
     - Configure the trigger (resource, event, collection)
     - Activate the workflow
     - Copy the webhook URL from n8n

  5. **Update Directus webhook**:
     - In Directus, go to **Settings → Flows**
     - Find the created flow and edit it
     - Replace `localhost:5678` with your ngrok URL
     - Save the flow

  6. **Test the webhook**:
     - Create/update items in Directus
     - Check if the webhook triggers in n8n

  **Note**: The manual URL replacement step is required because Directus cannot reach localhost URLs directly.

  ### Getting Help

  - Check the [GitHub Issues](https://github.com/directus/n8n-nodes-directus/issues) for known problems
  - Run `pnpm test` to verify everything works
  - Use `pnpm test:coverage` to see test coverage

  ## Contributing

  We welcome feedback and suggestions! Please help us improve this community node:

  ### Reporting Issues

  - **Bug Reports**: Use the [GitHub Issues](https://github.com/directus/n8n-nodes-directus/issues) page to report bugs
  - **Feature Requests**: Submit enhancement ideas through GitHub Issues
  - **Documentation**: Help improve our documentation by reporting unclear sections

  ### Issue Guidelines

  When reporting issues, please provide:

  - Detailed description of the problem or feature request
  - Steps to reproduce (for bugs)
  - Expected vs actual behavior
  - Your Directus version and n8n version
  - Any relevant error messages or logs

  ### Code Contributions

  While we appreciate community interest, we maintain this node internally to ensure:

  - Consistent code quality and style
  - Proper testing and validation
  - Alignment with Directus and n8n best practices
  - Timely maintenance and updates

  If you have specific code improvements or bug fixes, please:

  1. **Open an issue first** describing the problem or improvement
  2. **Wait for our team to review** and potentially implement the change
  3. **Provide detailed information** to help us understand the requirement

  This approach ensures the node remains reliable, well-tested, and follows n8n community node verification guidelines.

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/installation/)
  - [Directus API Documentation](https://directus.io/docs/api)

  ## License

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

  ## Support

  For issues and questions:

  - [GitHub Issues](https://github.com/directus/n8n-nodes-directus/issues)
  - [Directus Community](https://community.directus.io/)
  - [n8n Community](https://community.n8n.io/)

ai_documentation_summary:
  {"purpose":"Provides n8n integration with Directus CMS to perform CRUD operations on collections, users and files, and to trigger workflows from Directus events via webhooks.","capabilities":["Items: Create, Create (Raw JSON), Get, Get (Raw JSON), Get Many, Get Many (Raw JSON), Update, Update (Raw JSON), Delete","Users: Invite, Get, Get (Raw JSON), Get Many (with Simplify option), Get Many (Raw JSON), Update, Update (Raw JSON), Delete","Files: Upload (from binary data), Import (from URL), Get, Get (Raw JSON), Get Many (with Simplify option), Get Many (Raw JSON), Update, Update (Raw JSON), Delete","Trigger node: Item events (create/update/delete), User events (create/update/delete), File events (upload/update)","Dynamic field loading for collections and fields","Smart field processing for complex field types and relationships","Simplify option to return essential fields for Get Many on Users and Files","Raw JSON operations and query parameter support for advanced use cases","Automatic webhook creation and cleanup for trigger nodes","Robust error handling with detailed messages"],"authentication":"API token required (Directus API token) plus Directus instance URL (no OAuth described)","commonUseCases":["Automate content workflows by creating, updating, or deleting collection items in Directus","Trigger n8n workflows when items, users, or files are created or changed in Directus","Manage Directus users (invite, update, list) and simplify user lists for downstream processing","Upload or import files into Directus from previous node binary data or external URLs","Sync Directus content/files with other systems and handle complex field relationships via smart field processing"],"limitations":["Requires Directus 10.0+ (may not be compatible with earlier versions)","Trigger/webhook testing requires a publicly reachable URL (Directus cannot reach localhost); manual ngrok/public URL replacement is needed for local dev","Directus API token must have appropriate permissions for the chosen operations (credential scope dependency)"],"relatedNodes":["Directus (CRUD) node","Directus Trigger node"]}


node_type: @deutschlandgpt/n8n-nodes-deutschlandgpt.deutschlandgpt
package_name: @deutschlandgpt/n8n-nodes-deutschlandgpt
display_name: DeutschlandGPT
description: Work with the DeutschlandGPT API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: alexanderberkov
author_github_url: https://github.com/deutschlandgpt/deutschlandgpt-n8n.git
npm_package_name: @deutschlandgpt/n8n-nodes-deutschlandgpt
npm_version: 0.1.2
community_fetched_at: 2026-02-19T14:41:52.658Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "chat",
      "options": [
        {
          "name": "Model",
          "value": "model"
        },
        {
          "name": "Chat",
          "value": "chat"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "fetch_models",
      "options": [
        {
          "name": "Fetch Models",
          "value": "fetch_models",
          "action": "Fetch models",
          "routing": {
            "request": {
              "url": "v1/models",
              "method": "GET"
            }
          },
          "description": "Fetch Models from DeutschlandGPT"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "model"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send_chat_message",
      "options": [
        {
          "name": "Send Chat Message",
          "value": "send_chat_message",
          "action": "Send chat message",
          "routing": {
            "request": {
              "url": "v1/chat/completions",
              "body": {
                "model": "={{$parameter[\"model\"]}}",
                "messages": [
                  {
                    "role": "user",
                    "content": "={{$parameter[\"user_message\"]}}"
                  }
                ]
              },
              "json": true,
              "method": "POST"
            }
          },
          "description": "Send a message to the chat"
        },
        {
          "name": "Send Chat Message with System Prompt",
          "value": "send_chat_message_with_system_prompt",
          "action": "Send chat message with system prompt",
          "routing": {
            "request": {
              "url": "v1/chat/completions",
              "body": {
                "model": "={{$parameter[\"model\"]}}",
                "messages": [
                  {
                    "role": "system",
                    "content": "={{$parameter[\"system_prompt\"]}}"
                  },
                  {
                    "role": "user",
                    "content": "={{$parameter[\"user_message\"]}}"
                  }
                ]
              },
              "json": true,
              "method": "POST"
            }
          },
          "description": "Send a message to the chat with a system prompt"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chat"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Fetch Models",
      "value": "fetch_models",
      "action": "Fetch models",
      "routing": {
        "request": {
          "url": "v1/models",
          "method": "GET"
        }
      },
      "description": "Fetch Models from DeutschlandGPT"
    },
    {
      "name": "Send Chat Message",
      "value": "send_chat_message",
      "action": "Send chat message",
      "routing": {
        "request": {
          "url": "v1/chat/completions",
          "body": {
            "model": "={{$parameter[\"model\"]}}",
            "messages": [
              {
                "role": "user",
                "content": "={{$parameter[\"user_message\"]}}"
              }
            ]
          },
          "json": true,
          "method": "POST"
        }
      },
      "description": "Send a message to the chat"
    },
    {
      "name": "Send Chat Message with System Prompt",
      "value": "send_chat_message_with_system_prompt",
      "action": "Send chat message with system prompt",
      "routing": {
        "request": {
          "url": "v1/chat/completions",
          "body": {
            "model": "={{$parameter[\"model\"]}}",
            "messages": [
              {
                "role": "system",
                "content": "={{$parameter[\"system_prompt\"]}}"
              },
              {
                "role": "user",
                "content": "={{$parameter[\"user_message\"]}}"
              }
            ]
          },
          "json": true,
          "method": "POST"
        }
      },
      "description": "Send a message to the chat with a system prompt"
    }
  ]

npm_readme:
  # n8n-nodes-deutschlandgpt

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

  DeutschlandGPT is an AI Platform where different LLMs can be used GDPR compliant without risks of losing data.

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

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

  ## Installation

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

  ## Operations

  - Fetch Models: Query all available models in the DeutschlandGPT API.
  - Send Chat Message: Send a chat message to a certain model.
  - Send Chat Message with System Prompt: Send a chat message to a certain model with a defined system prompt.

  ## Credentials

  To register the node you'll need an API Key. You can create an API Key at the [DeutschlandGPT Platform](https://platform.deutschlandgpt.de/). For this you'll need to sign up and provide a payment method. You can then set up the credentials inside of n8n.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [DeutschlandGPT documentation](https://platform.deutschlandgpt.de/docs)

ai_documentation_summary:
  {"purpose":"Provides an n8n community node to interact with the DeutschlandGPT API so you can use GDPR-compliant LLMs inside n8n workflows for chat and model management.","capabilities":["Fetch Models — query all available models in the DeutschlandGPT API","Send Chat Message — send a chat message to a selected model","Send Chat Message with System Prompt — send a chat message including a defined system prompt"],"authentication":"API key required (create an API key on the DeutschlandGPT Platform; signup and payment method required)","commonUseCases":["List and choose available DeutschlandGPT models from within a workflow","Send conversational prompts to a model to generate responses or automate chat-based tasks","Include system prompts to control model behavior/role instructions in automated workflows","Integrate GDPR-compliant LLM responses into larger automation pipelines (e.g., notifications, data processing)"],"limitations":["Requires signup on DeutschlandGPT Platform and a payment method to obtain an API key","README documents only model listing and chat message operations — no other features (e.g., streaming, embeddings, file uploads) are described","Community node (not core n8n), so support/maintenance may follow community node guidelines"],"relatedNodes":[]}


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-02-19 14:41:52
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-02-19T14:41:52.658Z
ai_summary_generated_at: 2026-02-19 16:43:57
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":"Generate visual and content captures of web pages (screenshots, full-page images, PDFs, videos) and scrape page HTML or Markdown from within n8n workflows using the Urlbox API.","capabilities":["Take Screenshot (PNG) of visible area","Full Page Screenshot (PNG)","Mobile Full Page Screenshot (PNG)","Convert a website to PDF","Record smooth-scrolling full-page MP4 video","Scrape HTML of a page","Scrape Markdown of a page","Toggle Clean Shot to remove ads/cookie banners and auto-accept cookies","Optional Proxy URL to bypass regional blocking","Download output as a file (raw image/video/pdf) or return a render URL"],"authentication":"API key required (Urlbox Secret Key)","commonUseCases":["Automated website screenshots for monitoring, reporting, or thumbnails","Archiving or exporting pages as PDF","Recording website behavior or walkthroughs as MP4 videos","Extracting page content as HTML or Markdown for processing or indexing","Generating downloadable assets (images/videos/PDFs) within workflows"],"limitations":["Requires a Urlbox account and Secret API key","Compatible only with n8n version 1.60.0 or later"],"relatedNodes":[]}


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-02-19 14:41:52
author_name: linked-api
author_github_url: https://github.com/Linked-API/
npm_package_name: n8n-nodes-linked-api
npm_version: 1.0.3
community_fetched_at: 2026-02-19T14:41:52.659Z
ai_summary_generated_at: 2026-02-19 16:43:57
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":"Connect LinkedIn accounts to n8n to automate prospecting, messaging, connection management, and real-time LinkedIn data extraction within visual workflows.","capabilities":["Search for prospects or profiles by criteria","Send connection requests","Send messages and personalized follow-ups","Send InMails via Sales Navigator","Manage connections (accept/track/organize)","Monitor target accounts and posts (detect new posts)","React to or comment on posts","Extract profile and LinkedIn data for enrichment","Wait/trigger workflow branches on events (e.g., acceptance)","Integrate LinkedIn actions with CRMs, ATS, email, Slack, and other tools"],"authentication":"API token (API key) required — create Linked API credentials and supply the token in n8n","commonUseCases":["Lead generation pipeline: find prospects, send connection requests, follow up, sync to CRM","CRM synchronization: enrich leads with LinkedIn data and update records automatically","Content engagement: monitor target accounts, react/comment on posts, log engagement","Recruitment workflows: search candidates, send InMails, track responses in ATS, follow up","Multi-channel outreach: combine LinkedIn triggers with email, Slack, and task automation"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-joggai.joggAiNode
package_name: n8n-nodes-joggai
display_name: JoggAI
description: Interact with the JoggAI API to create and manage AI videos
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: joggai
author_github_url: https://github.com/joggaiteam/
npm_package_name: n8n-nodes-joggai
npm_version: 1.0.10
community_fetched_at: 2026-02-19T14:41:52.660Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "video",
      "options": [
        {
          "name": "Video",
          "value": "video"
        },
        {
          "name": "Avatar",
          "value": "avatar"
        },
        {
          "name": "Voice",
          "value": "voice"
        },
        {
          "name": "Template",
          "value": "template"
        },
        {
          "name": "Product",
          "value": "product"
        },
        {
          "name": "AI Script",
          "value": "aiScript"
        },
        {
          "name": "File",
          "value": "file"
        },
        {
          "name": "Music",
          "value": "music"
        },
        {
          "name": "Visual Style",
          "value": "visualStyle"
        },
        {
          "name": "Webhook",
          "value": "webhook"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create from Avatar",
          "value": "createFromAvatar",
          "action": "Create a video from an avatar and a script",
          "description": "Creates a new video using an avatar and a script"
        },
        {
          "name": "Create from Product",
          "value": "createFromProduct",
          "action": "Create a video from a product",
          "description": "Creates a new video by summarizing a product like a product details page"
        },
        {
          "name": "Create from Template",
          "value": "createFromTemplate",
          "action": "Create a video from a template",
          "description": "Creates a new video from a pre-defined template"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a generated video",
          "description": "Retrieves information about a generated video"
        },
        {
          "name": "Generate Preview",
          "value": "generatePreview",
          "action": "Generate a video preview from a product",
          "description": "Generates a video preview from a product without creating the final video"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "video"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getLibraryAvatars",
      "options": [
        {
          "name": "Get Library Avatars",
          "value": "getLibraryAvatars",
          "action": "Get Library Avatars",
          "description": "Retrieves a list of public available avatars"
        },
        {
          "name": "Get Instant Avatars",
          "value": "getInstantAvatars",
          "action": "Get Instant Avatars",
          "description": "Retrieves a list of your clone avatars"
        },
        {
          "name": "Get Photo Avatars",
          "value": "getPhotoAvatars",
          "action": "Get Photo Avatars",
          "description": "Retrieves a list of your photo avatars"
        },
        {
          "name": "Generate AI Photo",
          "value": "generateAiPhoto",
          "action": "Generate AI Photo",
          "description": "Generates four new AI photos based on a description"
        },
        {
          "name": "Check Photo Generation Status",
          "value": "checkPhotoStatus",
          "action": "Check Photo Generation Status",
          "description": "Checks the generation status of the AI photo"
        },
        {
          "name": "Create Photo Avatar",
          "value": "createPhotoAvatar",
          "action": "Create Photo Avatar",
          "description": "Create a photo avatar based on the specified description"
        },
        {
          "name": "Check Photo Avatar Generation Status",
          "value": "checkPhotoAvatarStatus",
          "action": "Check Photo Avatar Generation Status",
          "description": "Checks the generation status of an avatar task"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "avatar"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getLibraryVoices",
      "options": [
        {
          "name": "Get Library Voices",
          "value": "getLibraryVoices",
          "action": "Get a list of Library voices",
          "description": "Retrieves a list of all public available voices"
        },
        {
          "name": "Get My Voices",
          "value": "getMyVoices",
          "action": "Get my voices",
          "description": "Retrieves a list of your custom voices"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "voice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMyTemplates",
      "options": [
        {
          "name": "Get Library Templates",
          "value": "getLibraryTemplates",
          "action": "Get template list from library",
          "description": "Retrieves a list of all public templates voices"
        },
        {
          "name": "Get My Templates",
          "value": "getMyTemplates",
          "action": "Get my templates",
          "description": "Retrieves a list of your custom templates"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "template"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "uploadProduct",
      "options": [
        {
          "name": "Upload product",
          "value": "uploadProduct",
          "action": "Upload a product for video creation",
          "description": "Uploads and processes a product to be used for video creation"
        },
        {
          "name": "Update product",
          "value": "updateProduct",
          "action": "Update a product",
          "description": "Update the information of a product"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "product"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate",
          "value": "generate",
          "action": "Generate an AI script",
          "description": "Generates a script from a product or description using AI"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "aiScript"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload a file",
          "description": "Uploads a file for use in video generation"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get music",
          "description": "Retrieves a list of available background music"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "music"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get visual styles",
          "description": "Retrieves a list of available visual styles for use in video generation"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "visualStyle"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "webhook:list",
      "options": [
        {
          "name": "List of Webhook Endpoints",
          "value": "webhook:list",
          "action": "List of Webhook Endpoints",
          "description": "Get a list of configured webhook endpoints"
        },
        {
          "name": "Add a Webhook Endpoint",
          "value": "webhook:add",
          "action": "Add a Webhook Endpoint",
          "description": "Add a new webhook endpoint configuration"
        },
        {
          "name": "Update a Webhook Endpoint",
          "value": "webhook:update",
          "action": "Update a Webhook Endpoint",
          "description": "Update an existing webhook endpoint configuration"
        },
        {
          "name": "Delete a Webhook Endpoint",
          "value": "webhook:delete",
          "action": "Delete a Webhook Endpoint",
          "description": "Delete an existing webhook endpoint"
        },
        {
          "name": "List of Available Webhook Events",
          "value": "webhook:events",
          "action": "List of Available Webhook Events",
          "description": "Get a list of available webhook events"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhook"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create from Avatar",
      "value": "createFromAvatar",
      "action": "Create a video from an avatar and a script",
      "description": "Creates a new video using an avatar and a script"
    },
    {
      "name": "Create from Product",
      "value": "createFromProduct",
      "action": "Create a video from a product",
      "description": "Creates a new video by summarizing a product like a product details page"
    },
    {
      "name": "Create from Template",
      "value": "createFromTemplate",
      "action": "Create a video from a template",
      "description": "Creates a new video from a pre-defined template"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a generated video",
      "description": "Retrieves information about a generated video"
    },
    {
      "name": "Generate Preview",
      "value": "generatePreview",
      "action": "Generate a video preview from a product",
      "description": "Generates a video preview from a product without creating the final video"
    },
    {
      "name": "Get Library Avatars",
      "value": "getLibraryAvatars",
      "action": "Get Library Avatars",
      "description": "Retrieves a list of public available avatars"
    },
    {
      "name": "Get Instant Avatars",
      "value": "getInstantAvatars",
      "action": "Get Instant Avatars",
      "description": "Retrieves a list of your clone avatars"
    },
    {
      "name": "Get Photo Avatars",
      "value": "getPhotoAvatars",
      "action": "Get Photo Avatars",
      "description": "Retrieves a list of your photo avatars"
    },
    {
      "name": "Generate AI Photo",
      "value": "generateAiPhoto",
      "action": "Generate AI Photo",
      "description": "Generates four new AI photos based on a description"
    },
    {
      "name": "Check Photo Generation Status",
      "value": "checkPhotoStatus",
      "action": "Check Photo Generation Status",
      "description": "Checks the generation status of the AI photo"
    },
    {
      "name": "Create Photo Avatar",
      "value": "createPhotoAvatar",
      "action": "Create Photo Avatar",
      "description": "Create a photo avatar based on the specified description"
    },
    {
      "name": "Check Photo Avatar Generation Status",
      "value": "checkPhotoAvatarStatus",
      "action": "Check Photo Avatar Generation Status",
      "description": "Checks the generation status of an avatar task"
    },
    {
      "name": "Get Library Voices",
      "value": "getLibraryVoices",
      "action": "Get a list of Library voices",
      "description": "Retrieves a list of all public available voices"
    },
    {
      "name": "Get My Voices",
      "value": "getMyVoices",
      "action": "Get my voices",
      "description": "Retrieves a list of your custom voices"
    },
    {
      "name": "Get Library Templates",
      "value": "getLibraryTemplates",
      "action": "Get template list from library",
      "description": "Retrieves a list of all public templates voices"
    },
    {
      "name": "Get My Templates",
      "value": "getMyTemplates",
      "action": "Get my templates",
      "description": "Retrieves a list of your custom templates"
    },
    {
      "name": "Upload product",
      "value": "uploadProduct",
      "action": "Upload a product for video creation",
      "description": "Uploads and processes a product to be used for video creation"
    },
    {
      "name": "Update product",
      "value": "updateProduct",
      "action": "Update a product",
      "description": "Update the information of a product"
    },
    {
      "name": "Generate",
      "value": "generate",
      "action": "Generate an AI script",
      "description": "Generates a script from a product or description using AI"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload a file",
      "description": "Uploads a file for use in video generation"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get music",
      "description": "Retrieves a list of available background music"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get visual styles",
      "description": "Retrieves a list of available visual styles for use in video generation"
    },
    {
      "name": "List of Webhook Endpoints",
      "value": "webhook:list",
      "action": "List of Webhook Endpoints",
      "description": "Get a list of configured webhook endpoints"
    },
    {
      "name": "Add a Webhook Endpoint",
      "value": "webhook:add",
      "action": "Add a Webhook Endpoint",
      "description": "Add a new webhook endpoint configuration"
    },
    {
      "name": "Update a Webhook Endpoint",
      "value": "webhook:update",
      "action": "Update a Webhook Endpoint",
      "description": "Update an existing webhook endpoint configuration"
    },
    {
      "name": "Delete a Webhook Endpoint",
      "value": "webhook:delete",
      "action": "Delete a Webhook Endpoint",
      "description": "Delete an existing webhook endpoint"
    },
    {
      "name": "List of Available Webhook Events",
      "value": "webhook:events",
      "action": "List of Available Webhook Events",
      "description": "Get a list of available webhook events"
    }
  ]

npm_readme:
  # n8n-nodes-joggai

  Automate the creation of digital human and marketing videos in your n8n workflows via API.

  ---

  JoggAI transforms the days-long manual process of video creation into an automated task that takes just a few minutes. Whether you're batch-producing personalized marketing videos or automatically converting blog posts into videos, you can do it all effortlessly within n8n.

  ## ✨ Features

  - ✅ **Create Video from Digital Human:** Generate talking head videos using Avatars you've created in your JoggAI dashboard or free ones from the public library.
  - ✅ **Create Video from Template:** Dynamically populate content into preset templates from your JoggAI dashboard to generate videos.
  - ✅ **URL to Video:** Instantly convert any product link into a marketing video.
  - ✅ **Create Digital Human:** Supports various digital human likenesses and voice cloning.
  - ✅ **Check Video Status:** Asynchronously fetch video generation progress, suitable for long rendering tasks.

  ## Prerequisites

  Before using this node, please ensure you have:

  - A running n8n instance.
  - A JoggAI account. If you don't have one, you can [register for free here](https://app.jogg.ai/register).

  ## 🚀 Quick Start

  1.  **Install the Node in n8n:**
      - Go to `Settings > Community Nodes`.
      - Click `Install` and search for `n8n-nodes-jogg-ai`.

  2.  **Configure JoggAI Credentials:**
      - In the `Credentials` section of n8n, click `Add Credential`.
      - Search for and select `JoggAI API`.
      - Go to your [JoggAI API settings page](https://app.jogg.ai/home) to copy your API Key and paste it.
        ![Find your JoggAI API Key](https://res.jogg.ai/upload/sam/2025-07-11/292683374000458e91c7a55c4a3915b5.png)

  ## 💡 Example: Automatically Generate Videos from Google Sheets Content

  This workflow automatically creates an Talking avatar video using data from n8n Form.
  ![N8N Form to JoggAI Workflow Example](https://res.jogg.ai/upload/sam/2025-07-11/3be2a12eb38a468594af1e9dd474a917.png)

  1.  Use the `N8N Form Trigger` node to monitor for new rows.
  2.  Connect the `JoggAI` node.
  3.  In the "Text Script" field of the JoggAI node, use an expression to reference column data from the N8N Form, for example: `{{ $json.script }} welcome to joggAI`.
  4.  Execute the workflow, and the video will be created automatically.

  > Want to use this template directly? [Click here to copy the workflow in one click](https://gist.githubusercontent.com/joggaiteam/ab4065803111fd860584deb3dd245689/raw/ef28aa8d6c85bd2213c7c9a177b0c8c3d9e953b0/joggai-example.json).

  ## 🔗 Resources

  - ⚙️ **Full JoggAI API Documentation:** [docs.jogg.ai](https://docs.jogg.ai/api-reference/QuickStart/GettingStarted)

  ## 💬 Support & Feedback

  - For any bugs or feature requests, please raise them in [GitHub Issues](https://github.com/joggaiteam/n8n-nodes-joggai/issues).
  - If you have questions about usage, feel free to ask and @mention us on the [n8n Community Forum](https://community.n8n.io/).

ai_documentation_summary:
  {"purpose":"Provide n8n workflow actions to create and manage AI-generated videos (digital humans, templates, and marketing videos) via the JoggAI API.","capabilities":["Create video from a digital human/avatar (using private or public avatars)","Create video from a dashboard template with dynamic content population","Convert a URL (product link) into a marketing video","Create digital humans (supports various likenesses and voice cloning)","Check video generation status asynchronously (polling for progress)"],"authentication":"API key required (JoggAI API credentials configured in n8n Credentials)","commonUseCases":["Batch-produce personalized marketing videos using spreadsheet or form data","Automatically convert blog posts or product pages into videos","Generate talking-head avatar videos from form or CRM data","Dynamically populate and render template-based videos in automated workflows"],"limitations":["Requires an active JoggAI account and API key","Video rendering can be long-running; use the node's asynchronous status checks to poll progress","Node must be installed from n8n Community Nodes before use"],"relatedNodes":["N8N Form Trigger","Google Sheets"]}


node_type: n8n-nodes-onenote.onenote
package_name: n8n-nodes-onenote
display_name: OneNote
description: Work with the Microsoft OneNote (Microsoft Graph) API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: weilchen
author_github_url: https://github.com/Elliotes/
npm_package_name: n8n-nodes-onenote
npm_version: 0.2.1
community_fetched_at: 2026-02-19T14:41:52.660Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "page",
      "options": [
        {
          "name": "Page",
          "value": "page"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a page",
          "description": "Get a page"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many pages",
          "description": "Get many pages"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "page"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get a page",
      "description": "Get a page"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many pages",
      "description": "Get many pages"
    }
  ]

npm_readme:
  # n8n-nodes-onenote

  This package provides nodes for **n8n** that enable full integration with **Microsoft OneNote** through the **Microsoft Graph API**.  
  It allows automation, integration, and orchestration of note-related operations directly within n8n workflows.

  ---

  ## About the Author

  This community node was created and shared by **Liam Chen** for the n8n community.  
  It was designed to simplify the complexity of using Microsoft Graph OneNote APIs by providing a clean and easy-to-use interface.

  ---

  ## Table of Contents

  - [Features](#features)
  - [Available Resources](#available-resources)
  - [Authentication Methods](#authentication-methods)
  - [Setting up the Application in Microsoft Entra ID (Azure AD)](#setting-up-the-application-in-microsoft-entra-id-azure-ad)
  - [Using the Node](#using-the-node)
  - [Limitations and Troubleshooting](#limitations-and-troubleshooting)
  - [Additional Resources](#additional-resources)
  - [License](#license)

  ---

  ## Features

  This package provides a simple **OneNote** node with flexible authentication and OneNote functionality.

  ### OneNote Node

  Comprehensive node supporting two authentication methods:

  1. **OAuth2 Authentication** – Secure connection through Microsoft Entra ID (formerly Azure AD).  
  2. **Bearer Token Authentication** – Direct token-based integration for advanced users.

  #### Available Features

  - Notebook, Section, and Page listing  
  - Page creation with plain text or HTML  
  - Retrieve page metadata and content  
  - Dynamic dropdowns for Notebook → Section → Page (list search with pagination)  
  - Optional support for multiple scopes (e.g., `/me`, `/users/{id}`, `/sites/{id}`)

  ---

  ## Available Resources

  ### Notebook Resources
  - **List Notebooks** – Retrieves all available notebooks for the authenticated user  
  - **Get Notebook Details** – Retrieves information about a specific notebook  

  ### Section Resources
  - **List Sections** – Retrieves all sections within a notebook  
  - **Get Section Details** – Retrieves metadata for a specific section  

  ### Page Resources
  - **List Pages** – Lists all pages within a section  
  - **Get Page** – Retrieves a specific page by ID  
  - **Create Page** – Creates a new page under the selected section  
  - **Get Page Content** – Retrieves the full HTML content of a page  

  ---

  ## Authentication Methods

  The OneNote node supports two authentication types:

  ### 1. OAuth2 Authentication

  **Use case:**  
  Recommended for most scenarios — enables secure, refreshable access via Microsoft Entra ID.

  **Credential type:**  
  `OneNote OAuth2 API`

  **Token management:**  
  Automatically refreshed when tokens expire.

  ### 2. Bearer Token Authentication

  **Use case:**  
  For advanced integrations or quick API testing.

  **Credential type:**  
  `OneNote API`

  **Token management:**  
  Manual — you must refresh the token periodically.

  ### Selecting Authentication Method

  1. In the node configuration, choose **Authentication** (OAuth2 or Bearer Token).  
  2. The appropriate credential type will automatically appear.  
  3. Fill in the corresponding credential fields.

  ---

  ## Setting up the Application in Microsoft Entra ID (Azure AD)

  To use OAuth2 authentication, you must register your application in **Microsoft Entra ID (Azure AD)**.

  ### 1. Register a New Application

  1. Go to the [Azure Portal](https://portal.azure.com).  
  2. Navigate to **Microsoft Entra ID → App registrations → New registration**.  
  3. Enter a name, e.g., `n8n OneNote Integration`.  
  4. Under **Supported account types**, choose your desired access scope (e.g., single organization).  
  5. Under **Redirect URI**, select **Web** and enter:  
     - For cloud-hosted n8n:  
       `https://your-n8n-domain/rest/oauth2-credential/callback`  
     - For local development:  
       `http://localhost:5678/rest/oauth2-credential/callback`  
  6. Click **Register**.

  ### 2. Configure API Permissions

  1. In your app’s menu, select **API Permissions → Add a permission → Microsoft Graph**.  
  2. Select **Delegated permissions**, then add:
     - `Notes.Read` or `Notes.ReadWrite` (required)
     - `offline_access`, `openid`, `profile` (recommended for OAuth2)
     - If you plan to access other users’ notebooks: `Sites.Read.All`, `Users.Read.All`
  3. Click **Add permissions**, and request **Admin consent** if necessary.

  ### 3. Create a Client Secret

  1. Go to **Certificates & secrets → New client secret**.  
  2. Add a description and choose an expiration period.  
  3. Click **Add**, and **copy the secret value immediately** (you cannot see it again).

  ### 4. Gather Required Values

  You’ll need the following for n8n configuration:

  - **Client ID** – Found under **Overview → Application (client) ID**  
  - **Client Secret** – The value you just copied  
  - **Tenant ID** – Found under **Overview → Directory (tenant) ID**

  ---

  #### For Bearer Token Authentication:
  - **Credential type:** OneNote API  
  - **Access Token:** Paste your Microsoft Graph access token manually.  
  - Select **Resource** (Notebook, Section, Page) and **Operation**.  
  - Configure operation-specific parameters (Notebook ID, Section ID, etc.).  
  - Execute the node and verify the output.

  ---

  ## Limitations and Troubleshooting

  ### Microsoft Graph OneNote API Limitations

  - **Rate limits:** Standard Graph API rate limits apply. Reduce frequency or use pagination for large queries.  
  - **Permissions:** Ensure your app has `Notes.ReadWrite` and admin consent if required.  
  - **HTML format requirements:** For `Create Page`, your content must include valid HTML (`<html><head>...</head><body>...</body></html>`).  
  - **Access scope:** To access shared notebooks or other users’ data, proper delegated permissions and consent are required.  
  - **Bearer Token expiry:** Tokens expire unless obtained via OAuth2 refresh flow.

  ---

  ## Additional Resources

  - [Microsoft Graph – OneNote API Overview](https://learn.microsoft.com/graph/onenote-concept-overview)  
  - [Microsoft Graph Explorer](https://developer.microsoft.com/graph/graph-explorer)  
  - [Microsoft Graph Permissions Reference](https://learn.microsoft.com/graph/permissions-reference)  
  - [n8n Custom Node Development Guide](https://docs.n8n.io/integrations/creating-nodes/)  

  ---

  ## License

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

ai_documentation_summary:
  {"purpose":"Provides n8n workflow nodes to interact with Microsoft OneNote via the Microsoft Graph API, enabling automation of notebook/section/page operations such as listing, retrieving, and creating pages.","capabilities":["List Notebooks","Get Notebook Details","List Sections within a Notebook","Get Section Details","List Pages within a Section","Get Page by ID","Create Page (accepts plain text or full HTML; HTML must be valid <html> structure)","Get Page Content (full HTML)","Dynamic dropdowns for Notebook → Section → Page with pagination","Support for different resource scopes (e.g., /me, /users/{id}, /sites/{id})"],"authentication":"Supports OAuth2 (OneNote OAuth2 API with automatic token refresh via Microsoft Entra ID/Azure AD) and manual Bearer Token (OneNote API) authentication","commonUseCases":["Automatically create OneNote pages from form submissions, webhooks, or other workflow data","Retrieve page content or metadata for processing, indexing, or analysis","List notebooks/sections/pages to build dynamic selections in workflows","Sync or backup notes between systems or export OneNote content","Access other users' or site notebooks when delegated permissions are configured"],"limitations":["Subject to Microsoft Graph API rate limits; use pagination and reduce request frequency for large queries","Requires appropriate Graph permissions (e.g., Notes.Read/Notes.ReadWrite) and admin consent when accessing other users' or shared notebooks","Create Page requires well-formed HTML (<html><head>...</head><body>...</body></html>)","Bearer Token auth requires manual token refresh (no automatic refresh)","Access to shared or other users' notebooks requires additional delegated permissions and consent"],"relatedNodes":[]}


node_type: @jetbrains/n8n-nodes-youtrack.youtrack
package_name: @jetbrains/n8n-nodes-youtrack
display_name: YouTrack
description: Get data from YouTrack API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: jetbrains-admin
author_github_url: https://github.com/JetBrains/n8n-nodes-youtrack.git
npm_package_name: @jetbrains/n8n-nodes-youtrack
npm_version: 0.1.8
community_fetched_at: 2026-02-19T14:41:52.661Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "issue",
      "options": [
        {
          "name": "Command",
          "value": "command",
          "description": "Execute YouTrack commands on issues (tags, assignees, comments, work items, votes, etc.)"
        },
        {
          "name": "Comment",
          "value": "comment",
          "description": "Add and manage comments on issues"
        },
        {
          "name": "Issue",
          "value": "issue",
          "description": "Create and manage issues in YouTrack"
        },
        {
          "name": "Issue Draft",
          "value": "issueDraft",
          "description": "Create and manage issue drafts"
        },
        {
          "name": "Project",
          "value": "project",
          "description": "Access project information"
        },
        {
          "name": "Saved Query",
          "value": "savedQueries",
          "description": "Get many and create saved searches"
        },
        {
          "name": "Tag",
          "value": "tag",
          "description": "Add and manage tags on issues"
        },
        {
          "name": "User",
          "value": "user",
          "description": "Find and manage users"
        },
        {
          "name": "User Group",
          "value": "userGroup",
          "description": "Find user groups and get group members"
        },
        {
          "name": "Work Item",
          "value": "workItem",
          "description": "Track time spent on issues"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "add",
      "options": [
        {
          "name": "Add",
          "value": "add",
          "action": "Add a comment",
          "routing": {
            "request": {
              "url": "=/issues/{{$parameter.issueId}}/comments",
              "method": "POST"
            }
          },
          "description": "Add a comment to an issue"
        },
        {
          "name": "Get Many",
          "value": "list",
          "action": "Get many comments",
          "routing": {
            "request": {
              "url": "=/issues/{{$parameter.issueId}}/comments",
              "method": "GET"
            }
          },
          "description": "Get many comments on an issue"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "comment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "execute",
      "options": [
        {
          "name": "Execute",
          "value": "execute",
          "action": "Execute a command",
          "routing": {
            "request": {
              "url": "/commands",
              "method": "POST"
            }
          },
          "description": "Execute a YouTrack command on one or more issues (bulk operations supported). Supports all YouTrack commands: tags, assignees, comments, work items, votes, watchers, links, custom fields, and more. For star/watcher commands, use \"star username\" or \"watcher username\"."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "command"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an issue",
          "routing": {
            "request": {
              "url": "=/admin/projects/{{$parameter.project}}/issues",
              "method": "POST"
            }
          },
          "description": "Create a new issue"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an issue",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/issues/{{$parameter.issueId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete an issue"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an issue",
          "routing": {
            "request": {
              "url": "=/issues/{{$parameter.issueId}}",
              "method": "GET"
            }
          },
          "description": "Get an issue by ID"
        },
        {
          "name": "Get Many",
          "value": "list",
          "action": "Get many issues",
          "routing": {
            "request": {
              "url": "/issues",
              "method": "GET"
            }
          },
          "description": "Get many issues"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an issue",
          "routing": {
            "request": {
              "url": "=/issues/{{$parameter.issueId}}",
              "method": "POST"
            }
          },
          "description": "Update an issue"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "issue"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an issue draft",
          "routing": {
            "request": {
              "url": "/users/me/drafts",
              "method": "POST"
            }
          },
          "description": "Create a new issue draft"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an issue draft",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/users/me/drafts/{{$parameter.draftId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete an issue draft"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an issue draft",
          "routing": {
            "request": {
              "url": "=/users/me/drafts/{{$parameter.draftId}}",
              "method": "GET"
            }
          },
          "description": "Get an issue draft by ID"
        },
        {
          "name": "Get Many",
          "value": "list",
          "action": "Get many issue drafts",
          "routing": {
            "request": {
              "url": "/users/me/drafts",
              "method": "GET"
            }
          },
          "description": "Get many issue drafts"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an issue draft",
          "routing": {
            "request": {
              "url": "=/users/me/drafts/{{$parameter.draftId}}",
              "method": "POST"
            }
          },
          "description": "Update an issue draft"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "issueDraft"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a project",
          "routing": {
            "request": {
              "url": "=/admin/projects/{{$parameter.projectId}}",
              "method": "GET"
            }
          },
          "description": "Get a specific project"
        },
        {
          "name": "Get Fields Schema",
          "value": "getFieldsSchema",
          "action": "Get issue fields schema",
          "routing": {
            "request": {
              "url": "=/admin/projects/{{$parameter.projectId}}/customFields",
              "method": "GET"
            }
          },
          "description": "Get the JSON schema for custom fields in the specified project"
        },
        {
          "name": "Get Issues",
          "value": "getIssues",
          "action": "Get project issues",
          "routing": {
            "request": {
              "url": "=/admin/projects/{{$parameter.projectId}}/issues",
              "method": "GET"
            }
          },
          "description": "Get issues for a specific project"
        },
        {
          "name": "Get Many",
          "value": "list",
          "action": "Get many projects",
          "routing": {
            "request": {
              "url": "/admin/projects",
              "method": "GET"
            }
          },
          "description": "Get many projects"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "addToIssue",
      "options": [
        {
          "name": "Add to Issue",
          "value": "addToIssue",
          "action": "Add tag to issue",
          "routing": {
            "request": {
              "url": "=/issues/{{$parameter.issueId}}/tags",
              "method": "POST"
            }
          },
          "description": "Add a tag to an issue"
        },
        {
          "name": "Get Issue Tags",
          "value": "getIssueTags",
          "action": "Get issue tags",
          "routing": {
            "request": {
              "url": "=/issues/{{$parameter.issueId}}/tags",
              "method": "GET"
            }
          },
          "description": "Get all tags on a specific issue"
        },
        {
          "name": "Get Many",
          "value": "list",
          "action": "Get many tags",
          "routing": {
            "request": {
              "url": "/tags",
              "method": "GET"
            }
          },
          "description": "Get many available tags"
        },
        {
          "name": "Remove From Issue",
          "value": "removeFromIssue",
          "action": "Remove tag from issue",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/issues/{{$parameter.issueId}}/tags/{{$parameter.tagId}}",
              "method": "DELETE"
            }
          },
          "description": "Remove a tag from an issue"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tag"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "add",
      "options": [
        {
          "name": "Add",
          "value": "add",
          "action": "Add a work item",
          "routing": {
            "request": {
              "url": "=/issues/{{$parameter.issueId}}/timeTracking/workItems",
              "method": "POST"
            }
          },
          "description": "Add a work item (time tracking) to an issue"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "workItem"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a user",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter.userId}}",
              "method": "GET"
            }
          },
          "description": "Get a specific user by ID or login"
        },
        {
          "name": "Get Current",
          "value": "getCurrent",
          "action": "Get current user",
          "routing": {
            "request": {
              "url": "/users/me",
              "method": "GET"
            }
          },
          "description": "Get current authenticated user"
        },
        {
          "name": "Get General Profile",
          "value": "getGeneralProfile",
          "action": "Get user general profile",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter.userId}}/profiles/general",
              "method": "GET"
            }
          },
          "description": "Get general profile settings for a specific user"
        },
        {
          "name": "Get Many",
          "value": "list",
          "action": "Get many users",
          "routing": {
            "request": {
              "url": "/users",
              "method": "GET"
            }
          },
          "description": "Get many users"
        },
        {
          "name": "Get Notifications Profile",
          "value": "getNotificationsProfile",
          "action": "Get user notifications profile",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter.userId}}/profiles/notifications",
              "method": "GET"
            }
          },
          "description": "Get notification settings for a specific user"
        },
        {
          "name": "Get Saved Queries",
          "value": "getSavedQueries",
          "action": "Get user saved queries",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter.userId}}/savedQueries",
              "method": "GET"
            }
          },
          "description": "Get saved queries for a specific user"
        },
        {
          "name": "Get Tags",
          "value": "getTags",
          "action": "Get user tags",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter.userId}}/tags",
              "method": "GET"
            }
          },
          "description": "Get tags for a specific user"
        },
        {
          "name": "Get Time Tracking Profile",
          "value": "getTimeTrackingProfile",
          "action": "Get user time tracking profile",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter.userId}}/profiles/timetracking",
              "method": "GET"
            }
          },
          "description": "Get time tracking settings for a specific user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get Many",
          "value": "list",
          "action": "Get many user groups",
          "routing": {
            "request": {
              "url": "/groups",
              "method": "GET"
            }
          },
          "description": "Get many user groups"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a user group",
          "routing": {
            "request": {
              "url": "=/groups/{{$parameter.groupId}}",
              "method": "GET"
            }
          },
          "description": "Get a specific user group by ID"
        },
        {
          "name": "Get Members",
          "value": "getMembers",
          "action": "Get user group members",
          "routing": {
            "request": {
              "url": "=/groups/{{$parameter.groupId}}",
              "method": "GET"
            }
          },
          "description": "Get members of a user group"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "userGroup"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get Many",
          "value": "list",
          "action": "Get many saved queries",
          "routing": {
            "request": {
              "url": "/savedQueries",
              "method": "GET"
            }
          },
          "description": "Get many saved queries visible to the current user"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create saved query",
          "routing": {
            "request": {
              "url": "/savedQueries",
              "method": "POST"
            }
          },
          "description": "Create a new saved query"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "savedQueries"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Add",
      "value": "add",
      "action": "Add a comment",
      "routing": {
        "request": {
          "url": "=/issues/{{$parameter.issueId}}/comments",
          "method": "POST"
        }
      },
      "description": "Add a comment to an issue"
    },
    {
      "name": "Get Many",
      "value": "list",
      "action": "Get many comments",
      "routing": {
        "request": {
          "url": "=/issues/{{$parameter.issueId}}/comments",
          "method": "GET"
        }
      },
      "description": "Get many comments on an issue"
    },
    {
      "name": "Execute",
      "value": "execute",
      "action": "Execute a command",
      "routing": {
        "request": {
          "url": "/commands",
          "method": "POST"
        }
      },
      "description": "Execute a YouTrack command on one or more issues (bulk operations supported). Supports all YouTrack commands: tags, assignees, comments, work items, votes, watchers, links, custom fields, and more. For star/watcher commands, use \"star username\" or \"watcher username\"."
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an issue",
      "routing": {
        "request": {
          "url": "=/admin/projects/{{$parameter.project}}/issues",
          "method": "POST"
        }
      },
      "description": "Create a new issue"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an issue",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/issues/{{$parameter.issueId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete an issue"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an issue",
      "routing": {
        "request": {
          "url": "=/issues/{{$parameter.issueId}}",
          "method": "GET"
        }
      },
      "description": "Get an issue by ID"
    },
    {
      "name": "Get Many",
      "value": "list",
      "action": "Get many issues",
      "routing": {
        "request": {
          "url": "/issues",
          "method": "GET"
        }
      },
      "description": "Get many issues"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an issue",
      "routing": {
        "request": {
          "url": "=/issues/{{$parameter.issueId}}",
          "method": "POST"
        }
      },
      "description": "Update an issue"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an issue draft",
      "routing": {
        "request": {
          "url": "/users/me/drafts",
          "method": "POST"
        }
      },
      "description": "Create a new issue draft"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an issue draft",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/users/me/drafts/{{$parameter.draftId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete an issue draft"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an issue draft",
      "routing": {
        "request": {
          "url": "=/users/me/drafts/{{$parameter.draftId}}",
          "method": "GET"
        }
      },
      "description": "Get an issue draft by ID"
    },
    {
      "name": "Get Many",
      "value": "list",
      "action": "Get many issue drafts",
      "routing": {
        "request": {
          "url": "/users/me/drafts",
          "method": "GET"
        }
      },
      "description": "Get many issue drafts"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an issue draft",
      "routing": {
        "request": {
          "url": "=/users/me/drafts/{{$parameter.draftId}}",
          "method": "POST"
        }
      },
      "description": "Update an issue draft"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a project",
      "routing": {
        "request": {
          "url": "=/admin/projects/{{$parameter.projectId}}",
          "method": "GET"
        }
      },
      "description": "Get a specific project"
    },
    {
      "name": "Get Fields Schema",
      "value": "getFieldsSchema",
      "action": "Get issue fields schema",
      "routing": {
        "request": {
          "url": "=/admin/projects/{{$parameter.projectId}}/customFields",
          "method": "GET"
        }
      },
      "description": "Get the JSON schema for custom fields in the specified project"
    },
    {
      "name": "Get Issues",
      "value": "getIssues",
      "action": "Get project issues",
      "routing": {
        "request": {
          "url": "=/admin/projects/{{$parameter.projectId}}/issues",
          "method": "GET"
        }
      },
      "description": "Get issues for a specific project"
    },
    {
      "name": "Get Many",
      "value": "list",
      "action": "Get many projects",
      "routing": {
        "request": {
          "url": "/admin/projects",
          "method": "GET"
        }
      },
      "description": "Get many projects"
    },
    {
      "name": "Add to Issue",
      "value": "addToIssue",
      "action": "Add tag to issue",
      "routing": {
        "request": {
          "url": "=/issues/{{$parameter.issueId}}/tags",
          "method": "POST"
        }
      },
      "description": "Add a tag to an issue"
    },
    {
      "name": "Get Issue Tags",
      "value": "getIssueTags",
      "action": "Get issue tags",
      "routing": {
        "request": {
          "url": "=/issues/{{$parameter.issueId}}/tags",
          "method": "GET"
        }
      },
      "description": "Get all tags on a specific issue"
    },
    {
      "name": "Get Many",
      "value": "list",
      "action": "Get many tags",
      "routing": {
        "request": {
          "url": "/tags",
          "method": "GET"
        }
      },
      "description": "Get many available tags"
    },
    {
      "name": "Remove From Issue",
      "value": "removeFromIssue",
      "action": "Remove tag from issue",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/issues/{{$parameter.issueId}}/tags/{{$parameter.tagId}}",
          "method": "DELETE"
        }
      },
      "description": "Remove a tag from an issue"
    },
    {
      "name": "Add",
      "value": "add",
      "action": "Add a work item",
      "routing": {
        "request": {
          "url": "=/issues/{{$parameter.issueId}}/timeTracking/workItems",
          "method": "POST"
        }
      },
      "description": "Add a work item (time tracking) to an issue"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a user",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter.userId}}",
          "method": "GET"
        }
      },
      "description": "Get a specific user by ID or login"
    },
    {
      "name": "Get Current",
      "value": "getCurrent",
      "action": "Get current user",
      "routing": {
        "request": {
          "url": "/users/me",
          "method": "GET"
        }
      },
      "description": "Get current authenticated user"
    },
    {
      "name": "Get General Profile",
      "value": "getGeneralProfile",
      "action": "Get user general profile",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter.userId}}/profiles/general",
          "method": "GET"
        }
      },
      "description": "Get general profile settings for a specific user"
    },
    {
      "name": "Get Many",
      "value": "list",
      "action": "Get many users",
      "routing": {
        "request": {
          "url": "/users",
          "method": "GET"
        }
      },
      "description": "Get many users"
    },
    {
      "name": "Get Notifications Profile",
      "value": "getNotificationsProfile",
      "action": "Get user notifications profile",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter.userId}}/profiles/notifications",
          "method": "GET"
        }
      },
      "description": "Get notification settings for a specific user"
    },
    {
      "name": "Get Saved Queries",
      "value": "getSavedQueries",
      "action": "Get user saved queries",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter.userId}}/savedQueries",
          "method": "GET"
        }
      },
      "description": "Get saved queries for a specific user"
    },
    {
      "name": "Get Tags",
      "value": "getTags",
      "action": "Get user tags",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter.userId}}/tags",
          "method": "GET"
        }
      },
      "description": "Get tags for a specific user"
    },
    {
      "name": "Get Time Tracking Profile",
      "value": "getTimeTrackingProfile",
      "action": "Get user time tracking profile",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter.userId}}/profiles/timetracking",
          "method": "GET"
        }
      },
      "description": "Get time tracking settings for a specific user"
    },
    {
      "name": "Get Many",
      "value": "list",
      "action": "Get many user groups",
      "routing": {
        "request": {
          "url": "/groups",
          "method": "GET"
        }
      },
      "description": "Get many user groups"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a user group",
      "routing": {
        "request": {
          "url": "=/groups/{{$parameter.groupId}}",
          "method": "GET"
        }
      },
      "description": "Get a specific user group by ID"
    },
    {
      "name": "Get Members",
      "value": "getMembers",
      "action": "Get user group members",
      "routing": {
        "request": {
          "url": "=/groups/{{$parameter.groupId}}",
          "method": "GET"
        }
      },
      "description": "Get members of a user group"
    },
    {
      "name": "Get Many",
      "value": "list",
      "action": "Get many saved queries",
      "routing": {
        "request": {
          "url": "/savedQueries",
          "method": "GET"
        }
      },
      "description": "Get many saved queries visible to the current user"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create saved query",
      "routing": {
        "request": {
          "url": "/savedQueries",
          "method": "POST"
        }
      },
      "description": "Create a new saved query"
    }
  ]

npm_readme:
  # @jetbrains/n8n-nodes-youtrack

  [![official JetBrains project](https://jb.gg/badges/official-flat-square.svg)](https://github.com/JetBrains#jetbrains-on-github)

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

  YouTrack is a project management and issue tracking tool by JetBrains that helps teams manage projects, track issues, and collaborate effectively.

  [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

  This node provides two components: the YouTrack node for API operations and the YouTrack Trigger node for webhook-based automation.

  ### YouTrack Node

  The YouTrack node supports the following resources and operations:

  ### Command
  - **Execute** - Execute YouTrack commands on one or more issues (bulk operations supported). Supports all YouTrack commands: tags, assignees, comments, work items, votes, watchers, links, custom fields, and more.

  ### Comment
  - **Add** - Add a comment to an issue
  - **List** - List all comments on an issue

  ### Issue
  - **Create** - Create a new issue
  - **Delete** - Delete an issue
  - **Get** - Get an issue by ID
  - **List** - List issues
  - **Update** - Update an issue

  ### Issue Draft
  - **Create** - Create a new issue draft
  - **Delete** - Delete an issue draft
  - **Get** - Get an issue draft by ID
  - **List** - List issue drafts
  - **Update** - Update an issue draft

  ### Project
  - **Get** - Get a specific project
  - **Get Fields Schema** - Get the JSON schema for custom fields in the specified project
  - **Get Issues** - Get issues for a specific project
  - **List** - List all projects

  ### Saved Query
  - **Create** - Create a new saved query
  - **List** - List all saved queries visible to the current user

  ### Tag
  - **Add to Issue** - Add a tag to an issue
  - **Get Issue Tags** - Get all tags on a specific issue
  - **List** - List all available tags
  - **Remove From Issue** - Remove a tag from an issue

  ### User
  - **Get** - Get a specific user by ID or login
  - **Get Current** - Get current authenticated user
  - **Get General Profile** - Get general profile settings for a specific user
  - **Get Notifications Profile** - Get notification settings for a specific user
  - **Get Saved Queries** - Get saved queries for a specific user
  - **Get Tags** - Get tags for a specific user
  - **Get Time Tracking Profile** - Get time tracking settings for a specific user
  - **List** - List users

  ### User Group
  - **Get** - Get a specific user group by ID
  - **Get Members** - Get members of a user group
  - **List** - List user groups

  ### Work Item
  - **Add** - Add a work item (time tracking) to an issue

  ### YouTrack Trigger Node

  The YouTrack Trigger node allows you to start workflows automatically when events occur in YouTrack.

  **Supported Events:**
  - Issue Created
  - Issue Updated
  - Issue Deleted
  - Comment Added
  - Comment Updated
  - Comment Deleted
  - Work Item Added
  - Work Item Updated
  - Work Item Deleted
  - Issue Attachment Added
  - Issue Attachment Deleted

  ## Credentials

  This node uses permanent token authentication to connect to YouTrack.

  ### Prerequisites

  1. Access to a YouTrack instance (cloud or self-hosted)
  2. A YouTrack account with appropriate permissions

  ### Authentication Setup

  1. **Generate a Permanent Token:**
     - Log in to your YouTrack instance
     - Navigate to your Hub profile under **Authentication > Tokens**
     - Create a new permanent token

  2. **Configure Credentials in n8n:**
     - In n8n, go to **Credentials** > **New Credential**
     - Select **YouTrack API**
     - Enter your **YouTrack URL** (e.g., `https://your-instance.myjetbrains.com/youtrack` for cloud
        - **Important:** Enter the base URL without `/api` at the end
     - Enter your **Permanent Token**
     - Click **Save**

  ## Compatibility

  - **Minimum n8n version:** Requires n8n version that supports community nodes with API version 1
  - **YouTrack API:** Compatible with YouTrack REST API (cloud and self-hosted instances)

  ## Usage

  ### Command Execute

  The **Command Execute** operation allows you to apply YouTrack commands to issues using natural language syntax:

  - `tag MyTag for me` - Adds the tag "MyTag" to an issue and assigns it to you
  - `tag To Deploy for jane.doe` - Adds the "To Deploy" tag to an issue and assigns to jane.doe
  - `work 2h Fixed bug` - Logs 2 hours of work on the issue with a comment

  **Note:** The `vote+1` command cannot be used on your own issues, and usernames must be valid YouTrack logins.

  ### Custom Fields

  To discover available custom fields for a project, use the **Project > Get Fields Schema** operation, which returns the JSON schema for all custom fields in the specified project.

  ### Issue Queries

  When listing or filtering issues, YouTrack uses its own query language. See the [YouTrack Query Syntax documentation](https://www.jetbrains.com/help/youtrack/incloud/Search-and-Command-Attributes.html) for details.

  ### Webhooks

  For webhook triggers, configure the Webhook Triggers app in your YouTrack instance. The YouTrack Trigger node will provide the webhook URL during setup.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [YouTrack REST API documentation](https://www.jetbrains.com/help/youtrack/devportal/youtrack-rest-api.html)
  * [YouTrack documentation](https://www.jetbrains.com/help/youtrack/)

  ## License
  [MIT License](http://www.opensource.org/licenses/MIT)

ai_documentation_summary:
  {"purpose":"Provides access to the YouTrack REST API from n8n workflows to read and modify issues, projects, users, tags, work items and to start workflows from YouTrack events.","capabilities":["Command: Execute (bulk operations; supports tags, assignees, comments, work items, votes, watchers, links, custom fields, etc.)","Comment: Add, List","Issue: Create, Delete, Get (by ID), List, Update","Issue Draft: Create, Delete, Get (by ID), List, Update","Project: Get, Get Fields Schema (JSON schema for custom fields), Get Issues, List","Saved Query: Create, List","Tag: Add to Issue, Get Issue Tags, List, Remove From Issue","User: Get (by ID or login), Get Current, Get General Profile, Get Notifications Profile, Get Saved Queries, Get Tags, Get Time Tracking Profile, List","User Group: Get (by ID), Get Members, List","Work Item: Add (time tracking entry)"],"authentication":"API key required (YouTrack permanent token). Configure YouTrack base URL (without /api) and permanent token in n8n credentials.","commonUseCases":["Create or update YouTrack issues from external systems or automation workflows","Run bulk issue modifications using YouTrack command language (tags, assignees, comments, work items, etc.)","Trigger n8n workflows automatically from YouTrack events (issue/comment/work item changes, attachments)","Log time/work items on issues programmatically","List or query issues and projects and retrieve project custom field schemas for form population or validation"],"limitations":["Authentication requires a permanent YouTrack token (no OAuth flow supported)","You must provide the YouTrack base URL without a trailing /api","The 'vote+1' command cannot be used on your own issues","Usernames used in commands must be valid YouTrack logins","Webhook triggers require configuring the Webhook Triggers app in your YouTrack instance"],"relatedNodes":["YouTrack Trigger (webhook-based trigger node for YouTrack events)","n8n Webhook (generic webhook node — used for custom webhook setups)"]}


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-02-19 14:41:52
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-02-19T14:41:52.662Z
ai_summary_generated_at: 2026-02-19 16:43:57
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":"Provides n8n workflow access to the Taddy Podcast GraphQL API to search millions of podcasts and episodes, retrieve detailed podcast/episode metadata and transcripts, and discover popular/latest/top-chart content.","capabilities":["Full-text Search across podcasts and episodes with advanced filtering (language, country, genre, date ranges, duration, etc.)","Field selection to include only requested fields in results (content-type aware)","Content type filtering (podcasts, episodes, or both) and exclude-terms filtering","Sorting options and match types (exact phrase, all terms, most terms)","Podcast Details retrieval by UUID, name, iTunes ID, or RSS URL (includes episode list, metadata, genres, statistics)","Episode Details retrieval by UUID, GUID, or name (includes series info, transcripts, chapters)","Popular Content discovery with optional language/genre filters and pagination","Latest Episodes retrieval by podcast UUIDs or RSS URLs with pagination","Transcript retrieval in multiple formats (text, SRT, VTT, JSON) and on-demand transcript generation","Top Charts (Apple Podcasts) by country and by genre, with filtering and support for podcast or episode chart types"],"authentication":"Header-based API key authentication (requires X-USER-ID and X-API-KEY headers / API key required)","commonUseCases":["Content discovery: search and extract podcast/episode metadata for subscription or cataloging","Content analysis: fetch episodes and transcripts for NLP, sentiment or topic analysis","Monitoring and alerts: search for topics and detect new episodes to trigger notifications","Trend analysis: fetch top charts by country/genre to track podcast popularity trends"],"limitations":["Requires a Taddy API account and API credentials (X-USER-ID and X-API-KEY).","This is a community node and must be installed via the community package (n8n-nodes-taddy).","Minimum n8n version 0.174.0 and Node.js 16+ are required.","README does not document API rate limits or quotas (not specified)."],"relatedNodes":[]}


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

updated_at: 2026-02-19 14:41:52
author_name: gr33ndev
author_github_url: https://github.com/Gr33ndev/
npm_package_name: n8n-nodes-teamupcalendar
npm_version: 0.4.2
community_fetched_at: 2026-02-19T14:41:52.662Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "event",
      "options": [
        {
          "name": "Event",
          "value": "event",
          "description": "Work with calendar events"
        },
        {
          "name": "Subcalendar",
          "value": "subcalendar",
          "description": "Work with subcalendars"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an event",
          "description": "Create a new event"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an event",
          "description": "Delete an event"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an event",
          "description": "Retrieve a single event by ID"
        },
        {
          "name": "Get Auxiliary Info",
          "value": "getAuxiliaryInfo",
          "action": "Get auxiliary event info",
          "description": "Get an event's history, comments, and signups"
        },
        {
          "name": "Get Changed Events",
          "value": "getChanged",
          "action": "Get changed events",
          "description": "Get events that changed since a timestamp"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many events",
          "description": "Retrieve multiple events"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search events",
          "description": "Search events by keyword"
        },
        {
          "name": "Undo",
          "value": "undo",
          "action": "Undo an event action",
          "description": "Undo the last action on an event"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an event",
          "description": "Update an existing event"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "event"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an subcalendar",
          "description": "Create a new subcalendar"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a subcalendar",
          "description": "Delete a subcalendar"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a subcalendar",
          "description": "Retrieve a single subcalendar by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many subcalendars",
          "description": "Retrieve all subcalendars"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a subcalendar",
          "description": "Update an existing subcalendar"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "subcalendar"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create an event",
      "description": "Create a new event"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an event",
      "description": "Delete an event"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an event",
      "description": "Retrieve a single event by ID"
    },
    {
      "name": "Get Auxiliary Info",
      "value": "getAuxiliaryInfo",
      "action": "Get auxiliary event info",
      "description": "Get an event's history, comments, and signups"
    },
    {
      "name": "Get Changed Events",
      "value": "getChanged",
      "action": "Get changed events",
      "description": "Get events that changed since a timestamp"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many events",
      "description": "Retrieve multiple events"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search events",
      "description": "Search events by keyword"
    },
    {
      "name": "Undo",
      "value": "undo",
      "action": "Undo an event action",
      "description": "Undo the last action on an event"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an event",
      "description": "Update an existing event"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an subcalendar",
      "description": "Create a new subcalendar"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a subcalendar",
      "description": "Delete a subcalendar"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a subcalendar",
      "description": "Retrieve a single subcalendar by ID"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many subcalendars",
      "description": "Retrieve all subcalendars"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a subcalendar",
      "description": "Update an existing subcalendar"
    }
  ]

npm_readme:
  # n8n-nodes-teamupcalendar

  This is a n8n community node. It lets you use [Teamup Calendar](https://teamup.com) in your n8n workflows.

  Teamup Calendar is a collaborative calendar platform that allows teams to share calendars, manage events, and coordinate
  schedules. It offers powerful features like subcalendars and flexible access controls.

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

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

  ## Installation

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

  ## Operations

  ### Event Operations

  - **Create**: Create a new calendar event with title, dates, subcalendar assignment, and optional fields like location,
    notes, and attendees
  - **Delete**: Remove events from the calendar
  - **Get**: Retrieve details of a specific event by its ID
  - **Get Auxiliary Info**: Fetch additional information related to an event
  - **Get Changed Events**: Retrieve events that have changed since a specified timestamp (max 30 days ago)
  - **Get Many**: Retrieve multiple events with filtering options by date range, subcalendar, and result limits
  - **Search events**: Find events based on keywords in titles or notes
  - **Undo**: Undo an event action
  - **Update**: Modify existing events including changing dates, titles, subcalendars, and other properties

  ### Subcalendar Operations

  - **Create**: Add a new subcalendar to the Teamup calendar
  - **Delete**: Remove a subcalendar from the Teamup calendar
  - **Get**: Retrieve details of a specific subcalendar by its ID
  - **Get Many**: Fetch all available subcalendars for the connected Teamup calendar
  - **Update**: Change properties of an existing subcalendar such as name and color

  ## Credentials

  To use this node, you need:

  1. **Teamup Calendar Account**: Sign up at [Teamup Calendar](https://teamup.com/register) and get your API key from
     there
  2. **Calendar Key**: The unique identifier for your Teamup calendar (found in your share calendar URL, Settings >
     Sharing > Create Link)

  ### Setting up credentials:

  1. Create a Teamup calendar or use an existing one
  2. Share your calendar via Settings > Sharing > Create Link
  3. Note your calendar key from that sharing URL (e.g., `https://teamup.com/ks1234567890` → key is `ks1234567890`)
  4. In n8n, create new "Teamup API" credentials with your calendar key and API token

  ## Compatibility

  - **Minimum n8n version**: 1.117.3
  - **Tested with**: n8n version 1.117.3 & 1.123.5

  ## Usage

  ### Basic Event Creation

  1. Select "Event" as resource and "Create" as operation
  2. Choose the target subcalendar
  3. Set event title, start date/time, and end date/time
  4. Optionally add location, notes, attendees, or mark as all-day event

  ### Filtering Events

  When using "Get Many" for events:

  - **Start Date**: Events starting on or after this date (defaults to today)
  - **End Date**: Events starting before this date (defaults to today's end of the day)
  - **Subcalendar**: Filter by specific subcalendar (optional)
  - **Limit**: Maximum number of events to return (default: 50, max: 1000)

  ### Date/Time Handling

  - All dates are automatically formatted for the Teamup API
  - Supports both date-only and full datetime values
  - Timezone handling follows your n8n instance settings

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Teamup Calendar API Documentation](https://apidocs.teamup.com/)
  * [Teamup Calendar Help Center](https://support.teamup.com/)

ai_documentation_summary:
  {"purpose":"Provide n8n workflow access to Teamup Calendar to create, read, update, delete, search and sync calendar events and to manage subcalendars.","capabilities":["Create event (title, start/end, subcalendar, location, notes, attendees, all-day)","Get event by ID","Get auxiliary info for an event","Get changed events since timestamp (sync)","Get many events with filters (date range, subcalendar, limit)","Search events by keywords (title/notes)","Update event (modify dates, title, subcalendar, properties)","Delete event","Undo event action","Create subcalendar"],"authentication":"API key required (Teamup API token) plus Calendar Key (calendar identifier from share URL)","commonUseCases":["Create scheduled events in a Teamup calendar from another system","Synchronize changed events (pull changes since a timestamp) for incremental sync","Query and filter events by date range or subcalendar for reporting or downstream processing","Search events by keywords to trigger workflows based on matching titles/notes","Manage calendar structure by adding/updating/deleting subcalendars"],"limitations":["Get Changed Events supports lookback only up to 30 days","Get Many default limit is 50 and maximum allowed is 1000 results","Requires both a Teamup API token and the calendar share key (from the sharing URL)","Minimum n8n version required: 1.117.3"],"relatedNodes":[]}


node_type: n8n-nodes-upload-post.uploadPost
package_name: n8n-nodes-upload-post
display_name: Upload Post
description: Upload content to social media via Upload-Post API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: upload-post
author_github_url: https://github.com/Upload-Post/
npm_package_name: n8n-nodes-upload-post
npm_version: 0.1.42
community_fetched_at: 2026-02-19T14:41:52.663Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "uploads",
      "options": [
        {
          "name": "Upload",
          "value": "uploads"
        },
        {
          "name": "Status & History",
          "value": "monitoring"
        },
        {
          "name": "User",
          "value": "users"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "uploadPhotos",
      "options": [
        {
          "name": "Upload Document",
          "value": "uploadDocument",
          "action": "Upload a document",
          "description": "Upload a document (PDF, PPT, PPTX, DOC, DOCX) as a native carousel/viewer (Supports: LinkedIn only)"
        },
        {
          "name": "Upload Photo(s)",
          "value": "uploadPhotos",
          "action": "Upload photos",
          "description": "Upload one or more photos (Supports: TikTok, Instagram, LinkedIn, Facebook, X, Threads)"
        },
        {
          "name": "Upload Text",
          "value": "uploadText",
          "action": "Upload a text post",
          "description": "Upload a text-based post (Supports: X, LinkedIn, Facebook, Threads)"
        },
        {
          "name": "Upload Video",
          "value": "uploadVideo",
          "action": "Upload a video",
          "description": "Upload a single video (Supports: TikTok, Instagram, LinkedIn, YouTube, Facebook, X, Threads)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "uploads"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getStatus",
      "options": [
        {
          "name": "Cancel Scheduled Post",
          "value": "cancelScheduled",
          "action": "Cancel scheduled post",
          "description": "Cancel a scheduled post by its job ID"
        },
        {
          "name": "Edit Scheduled Post",
          "value": "editScheduled",
          "action": "Edit scheduled post",
          "description": "Edit schedule details (like date/time) by job ID"
        },
        {
          "name": "Get Analytics",
          "value": "getAnalytics",
          "action": "Get analytics",
          "description": "Retrieve aggregated analytics for uploads"
        },
        {
          "name": "Get Upload History",
          "value": "getHistory",
          "action": "Get upload history",
          "description": "List past uploads with optional filters"
        },
        {
          "name": "Get Upload Status",
          "value": "getStatus",
          "action": "Get upload status",
          "description": "Check the status of an upload using the request_id"
        },
        {
          "name": "List Scheduled Posts",
          "value": "listScheduled",
          "action": "List scheduled posts",
          "description": "List your scheduled (future) posts"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "monitoring"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listUsers",
      "options": [
        {
          "name": "Create User",
          "value": "createUser",
          "action": "Create user",
          "description": "Create a new Upload-Post user (profile name)"
        },
        {
          "name": "Delete User",
          "value": "deleteUser",
          "action": "Delete user",
          "description": "Delete an existing Upload-Post user by profile name"
        },
        {
          "name": "Generate JWT (for Platform Integration)",
          "value": "generateJwt",
          "action": "Generate jwt for platform integration",
          "description": "Generate a connection URL (JWT) for a profile. Only needed when integrating Upload-Post into your own platform."
        },
        {
          "name": "List Users",
          "value": "listUsers",
          "action": "List users",
          "description": "List Upload-Post users (profiles)"
        },
        {
          "name": "Validate JWT (for Platform Integration)",
          "value": "validateJwt",
          "action": "Validate jwt for platform integration",
          "description": "Validate a connection token from your backend. Only needed for custom platform integration."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "users"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Upload Document",
      "value": "uploadDocument",
      "action": "Upload a document",
      "description": "Upload a document (PDF, PPT, PPTX, DOC, DOCX) as a native carousel/viewer (Supports: LinkedIn only)"
    },
    {
      "name": "Upload Photo(s)",
      "value": "uploadPhotos",
      "action": "Upload photos",
      "description": "Upload one or more photos (Supports: TikTok, Instagram, LinkedIn, Facebook, X, Threads)"
    },
    {
      "name": "Upload Text",
      "value": "uploadText",
      "action": "Upload a text post",
      "description": "Upload a text-based post (Supports: X, LinkedIn, Facebook, Threads)"
    },
    {
      "name": "Upload Video",
      "value": "uploadVideo",
      "action": "Upload a video",
      "description": "Upload a single video (Supports: TikTok, Instagram, LinkedIn, YouTube, Facebook, X, Threads)"
    },
    {
      "name": "Cancel Scheduled Post",
      "value": "cancelScheduled",
      "action": "Cancel scheduled post",
      "description": "Cancel a scheduled post by its job ID"
    },
    {
      "name": "Edit Scheduled Post",
      "value": "editScheduled",
      "action": "Edit scheduled post",
      "description": "Edit schedule details (like date/time) by job ID"
    },
    {
      "name": "Get Analytics",
      "value": "getAnalytics",
      "action": "Get analytics",
      "description": "Retrieve aggregated analytics for uploads"
    },
    {
      "name": "Get Upload History",
      "value": "getHistory",
      "action": "Get upload history",
      "description": "List past uploads with optional filters"
    },
    {
      "name": "Get Upload Status",
      "value": "getStatus",
      "action": "Get upload status",
      "description": "Check the status of an upload using the request_id"
    },
    {
      "name": "List Scheduled Posts",
      "value": "listScheduled",
      "action": "List scheduled posts",
      "description": "List your scheduled (future) posts"
    },
    {
      "name": "Create User",
      "value": "createUser",
      "action": "Create user",
      "description": "Create a new Upload-Post user (profile name)"
    },
    {
      "name": "Delete User",
      "value": "deleteUser",
      "action": "Delete user",
      "description": "Delete an existing Upload-Post user by profile name"
    },
    {
      "name": "Generate JWT (for Platform Integration)",
      "value": "generateJwt",
      "action": "Generate jwt for platform integration",
      "description": "Generate a connection URL (JWT) for a profile. Only needed when integrating Upload-Post into your own platform."
    },
    {
      "name": "List Users",
      "value": "listUsers",
      "action": "List users",
      "description": "List Upload-Post users (profiles)"
    },
    {
      "name": "Validate JWT (for Platform Integration)",
      "value": "validateJwt",
      "action": "Validate jwt for platform integration",
      "description": "Validate a connection token from your backend. Only needed for custom platform integration."
    }
  ]

npm_readme:
  # n8n-nodes-upload-post

  This is an n8n community node package for [Upload Post](https://www.upload-post.com/). It allows you to automate uploading photos, videos, and text posts to various social media platforms supported by the Upload Post API.

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

  ## Installation

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

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

  After installing the node, you can use it in your n8n workflows.

  ## Credentials

  To use this node, you need to configure the Upload Post API credentials:

  1.  Create an API key from your [Upload Post dashboard](https://www.upload-post.com/).
  2.  In n8n, go to **Credentials > New**.
  3.  Search for **Upload Post API** and select it.
  4.  Enter a **Credential Name**.
  5.  Paste your Upload Post API key into the **API Key** field.
  6.  Select **Save**.

  ## Operations

  The node provides the following operations grouped for clarity:

  ### Upload Actions
  - **Upload Photo(s)**: Upload one or more photos to supported platforms.
    - Supports file uploads and photo URLs (comma-separated list).
    - Common parameters: User Identifier, Platform Names or IDs, Title / Main Content, Description (optional), Photos (Files or URLs), Scheduled Date (optional).
    - Title/Description overrides per platform: `instagram_title`, `facebook_title`, `tiktok_title`, `linkedin_title`, `x_title`, `youtube_title`, `pinterest_title`, `threads_title`.
    - Platform-specific parameters available for: Facebook, Instagram, LinkedIn, Pinterest, TikTok, X (Twitter).
    - **Pinterest**: Requires Board selection via dynamic selector.
    - **Instagram**: Media Type (Image/Stories), TikTok: Auto-add music, disable comments, brand content toggles.
    - **Facebook**: Page selection via dynamic selector.
    - **LinkedIn**: Visibility settings (Photos only), Page selection via dynamic selector.
    - **X (Twitter)**: Tagged user IDs, reply settings, geo place ID.

  - **Upload Video**: Upload a single video to supported platforms.
    - Supports file uploads and video URLs.
    - Common parameters: User Identifier, Platform Names or IDs, Title / Main Content, Description (optional), Video (File or URL), Scheduled Date (optional).
    - Title/Description overrides per platform: `instagram_title`, `facebook_title`, `tiktok_title`, `linkedin_title`, `x_title`, `youtube_title`, `pinterest_title`.
    - Platform-specific parameters available for: Facebook, Instagram, LinkedIn, Pinterest, Threads, TikTok, X (Twitter), YouTube.
    - **YouTube**: Custom thumbnail (URL/binary), tags, category, privacy, embeddable, license, public stats, made for kids, synthetic media declaration, geo-restrictions, paid product placement, recording date, default language/audio language.
    - **Facebook**: Page selection, video state (Published/Draft), media type (Reels/Stories).
    - **Instagram**: Media type (Reels/Stories), share to feed, collaborators, cover URL, audio name, user tags, location ID, thumb offset.
    - **TikTok**: Privacy level, disable duet/stitch/comments, cover timestamp, brand content toggles, AI-generated content flag, post mode.
    - **LinkedIn**: Visibility settings, Page selection, video description.
    - **Pinterest**: Board selection, cover image options (URL/base64/keyframe).
    - **X (Twitter)**: Tagged user IDs, reply settings, nullcast, place ID, long text handling.

  - **Upload Text**: Upload a text-based post to supported platforms.
    - Common parameters: User Identifier, Platform Names or IDs, Title / Main Content (used as post content), Scheduled Date (optional).
    - Platform-specific parameters available for: Facebook, LinkedIn, Reddit, Threads, X (Twitter).
    - **Facebook**: Page selection, link URL for preview.
    - **LinkedIn**: Page selection ("Me" for personal profile).
    - **X (Twitter)**: Reply settings, poll options (2-4 options, 5-10080 min duration), post URL, quote tweet ID, geo place ID, super followers exclusivity, community ID, sharing options, direct message deep link, card URI, long text handling.
    - **Threads**: Long text as single post option.
    - **Reddit**: Subreddit selection, flair ID.

  ### Status & History Actions
  - **Get Upload Status**: Check the status/result of an async upload by `request_id`.
    - Parameters: Request ID.
  - **Get Upload History**: List past uploads.
    - Parameters: Page (default 1), Limit (default 20). Limit can be 20, 50, or 100.
  - **Get Analytics**: Retrieve aggregated analytics for uploads.
    - Optional filters: From Date, To Date, User Filter, Platforms.

  ### Scheduled Posts
  - **List Scheduled Posts**: Lists future scheduled jobs.
  - **Cancel Scheduled Post**: Cancels a scheduled job by its Job ID.
  - **Edit Scheduled Post**: Updates a scheduled job (e.g., new scheduled date/time).
    - Tip: You can schedule any Upload action by providing the `Scheduled Date` during upload.

  ### Platform Selectors (Dynamic)
  - **Facebook Pages**: Dynamic picker for Facebook pages, or enter ID via expression. Required for all Facebook operations.
  - **LinkedIn Pages**: Dynamic picker for organization pages with "Me (Personal Profile)" option, or enter ID via expression.
  - **Pinterest Boards**: Dynamic picker for Pinterest boards, or enter ID via expression. Required for all Pinterest operations.

  ### User Actions (incl. JWT for custom platform integration)
  - ⚠️ **JWT endpoints are only needed if you integrate Upload-Post into your own platform** and want end-users to link their social accounts via your UI.
  - **List Users**: Retrieve Upload-Post profiles created under your API key.
  - **Create User**: Create a new user profile.
    - Parameters: New User Identifier (username).
  - **Delete User**: Delete an existing user profile.
    - Parameters: Username to delete.
  - **Generate JWT (for platform integration)**: Generate a connection URL (JWT) for a given profile so the user can link social accounts.
    - Parameters: User Identifier, optional redirect URL, logo image URL, redirect button text, platform restrictions.
  - **Validate JWT (for platform integration)**: Validate a connection token from your backend.
    - Parameters: JWT token (password field).

  Refer to the [Upload Post API Documentation](https://docs.upload-post.com) for detailed information on parameters and platform requirements.

  ### Waiting for asynchronous uploads

  Some uploads are processed asynchronously and the API returns immediately with a `request_id`. This happens when:
  - You enable "Upload Asynchronously" in the node, or
  - The upload takes longer than ~59 seconds and the API switches to async mode automatically.

  You have two ways to handle this in n8n:

  1) Best-effort polling inside the node
  - In Upload operations (Photos/Video/Text), enable "Wait for Completion".
  - Configure "Poll Interval (Seconds)" (default 10) and "Timeout (Seconds)".
  - The node sleeps between checks (using n8n's `sleep`) and calls `GET /api/uploadposts/status?request_id=...` until success/failure or timeout.
  - Note: This does not guarantee completion in hosted environments with strict execution limits.

  2) Workflow-level polling (recommended for reliability)
  - Use the Upload operation, read `request_id` from its output.
  - Add a Wait node (e.g., 10s), then call "Get Upload Status" passing the `request_id`.
  - Loop with an IF node until the status is final (success/failed) or a max attempts limit is reached.

  ### Platform-Specific Options

  #### Facebook
  - **Page Selection**: Dynamic picker for Facebook pages (required for all operations).
  - **Media Type (Video)**: Reels or Stories.
  - **Video State**: Published or Draft.
  - **Link (Text)**: URL for link preview in text posts.

  #### LinkedIn
  - **Page Selection**: Dynamic picker for organization pages ("Me" option for personal profiles).
  - **Visibility (Photos/Video)**: Public, Connections, Logged In, Container (video only).
  - **Video Description**: User commentary for video posts.

  #### Instagram
  - **Media Type**: Image (feed photos), Stories, Reels (video).
  - **Video Options**: Share to feed, collaborators (comma-separated usernames), cover URL, audio name, user tags (comma-separated), location ID, thumb offset.
  - **Photo Cover Index**: Which photo to use as cover (0-based index).

  #### TikTok
  - **Photo Options**: Auto-add music, disable comments, photo cover index, brand content toggles (paid partnerships/third-party brands vs own business).
  - **Video Options**: Privacy level (Public/Mutual Friends/Followers/Self), disable duet/stitch/comments, cover timestamp (ms), brand content toggles, AI-generated content flag, post mode (Direct Post/Media Upload).
  - **Brand Content**: Separate toggles for paid partnerships and own business promotion.

  #### YouTube
  - **Video Metadata**: Tags (comma-separated), category ID, privacy status (public/unlisted/private), embeddable, license, public stats viewable.
  - **Compliance**: Made for kids declaration, self-declared made for kids (COPPA), contains synthetic media (AI transparency), has paid product placement (FTC).
  - **Geo-Restrictions**: Allowed/blocked countries (ISO 3166-1 alpha-2 codes, mutually exclusive).
  - **Language Settings**: Default language (title/description), default audio language.
  - **Recording Date**: ISO 8601 timestamp.
  - **Thumbnail**: Custom thumbnail via URL or binary file.

  #### X (Twitter)
  - **Common Options**: Tagged user IDs (comma-separated), reply settings (everyone/following/mentioned/verified/subscribers), geo place ID, long text as single post.
  - **Video/Photo Options**: Nullcast (promoted-only posts), place ID.
  - **Text Options**: Poll options (2-4 options, 25 chars max each, 5-10080 min duration), poll reply settings, post URL, quote tweet ID, card URI, direct message deep link.
  - **Community Features**: Community ID, share with followers.
  - **Super Followers**: Exclusive content for super followers.
  - **Validation**: Poll options mutually exclusive with card URI, quote tweet ID, and direct message deep link.

  #### Threads
  - **Text Options**: Long text as single post (otherwise creates thread if >500 chars).
  - **Video Options**: Description override support.

  #### Pinterest
  - **Board Selection**: Dynamic picker for Pinterest boards (required).
  - **Link**: Optional link attachment.
  - **Video Cover**: URL, base64 data with content type, or keyframe timestamp.

  #### Reddit
  - **Text Options**: Subreddit (without r/), flair ID for post categorization.

  ### Validation Rules & Restrictions

  #### X (Twitter) Poll Validation
  - **Options Count**: Must contain 2-4 non-empty options.
  - **Option Length**: Each option cannot exceed 25 characters.
  - **Duration**: Must be between 5 and 10080 minutes (5 minutes to 7 days).
  - **Mutually Exclusive**: Poll options cannot be used with Card URI, Quote Tweet ID, or Direct Message Deep Link.

  #### Platform-Specific Requirements
  - **Facebook**: Page selection is required for all operations.
  - **Pinterest**: Board selection is required for all operations.
  - **LinkedIn Photos**: Only supports PUBLIC visibility (API limitation).
  - **YouTube**: Allowed/blocked countries are mutually exclusive.
  - **Instagram Video**: Media type automatically defaults to REELS if invalid, IMAGE for photos.
  - **TikTok Photos**: Media type automatically defaults to IMAGE if invalid.

  #### File Handling
  - **Photos**: Comma-separated list supporting both file paths and URLs.
  - **Videos**: Single file path or URL.
  - **YouTube Thumbnails**: Supports both URL and binary file uploads.
  - **Pinterest Covers**: Multiple options (URL, base64 data with content type, or keyframe timestamp).

  #### Scheduling
  - **Date Format**: Automatic conversion to ISO 8601 with UTC timezone if not provided.
  - **Asynchronous Processing**: Automatic fallback to async mode if upload exceeds 59 seconds.

  ### Title & Description Overrides
  - **`Title / Main Content`**: Generic title used across platforms.
  - **Platform Title Overrides**: `[platform]_title` (e.g., `x_title`, `pinterest_title`, `threads_title`).
    - Available for: instagram, facebook, tiktok, linkedin, x, youtube, pinterest, threads
  - **`Description (Optional)`**: Generic description used for LinkedIn, Facebook, YouTube, Pinterest, TikTok when supported.
  - **Platform Description Overrides**: `[platform]_description` (e.g., `youtube_description`, `linkedin_description`).
    - Available for: facebook, tiktok, linkedin, youtube, pinterest

  **⚠️ Runtime Validations**: The node performs automatic validations at runtime including poll constraints, mutually exclusive field checks, and platform-specific requirements. Invalid configurations will throw descriptive error messages.

  Related docs:
  - Profiles & JWT reference (context): [User Profiles API](https://docs.upload-post.com/api/user-profiles#create-user-profile)

  ## Resources

  *   [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  *   [Upload Post Website](https://www.upload-post.com/)
  *   [Upload Post API Documentation](https://docs.upload-post.com)

  ## Compatibility

  Tested with n8n version 1.x.
  Requires Node.js version 20.15 or later.

  ## Development

  If you want to contribute to this node or run it locally for development:

  1.  Clone this repository: `git clone https://github.com/Upload-Post/n8n-nodes-upload-post` (replace `your-github-username`)
  2.  Install dependencies: `npm i`
  3.  Build the node: `npm run build`
  4.  Link the package to your n8n instance for testing. Refer to [Run your node locally](https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally/).

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Upload-Post n8n node lets you automate uploading photos, videos, and text posts to multiple social platforms via the Upload Post API, with scheduling, status/history checks, and analytics retrieval.","capabilities":["Upload Photo(s) (multiple photos via file upload or comma-separated URLs)","Upload Video (single video via file upload or URL)","Upload Text posts to supported platforms","Schedule uploads by providing a Scheduled Date","Get Upload Status by request_id (check async upload results)","Get Upload History (paged list with configurable limit)","Get Analytics (aggregated analytics with optional filters)","List / Cancel / Edit Scheduled Posts (manage scheduled jobs)","Platform-specific controls (Facebook Pages, LinkedIn Pages, Pinterest Boards selectors)","Platform-specific parameters for Instagram, Facebook, LinkedIn, Pinterest, TikTok, X/Twitter, YouTube, Reddit, Threads (titles, descriptions, visibility, tags, geo, polls, brand content flags, thumbnails, etc.)"],"authentication":"API key required (Upload Post API key configured in n8n Credentials)","commonUseCases":["Cross-posting a photo gallery or single-image posts to multiple social platforms simultaneously","Uploading and scheduling video content (with platform-specific metadata) to platforms including YouTube, Facebook, Instagram, TikTok, X","Posting text updates, replies, or polls to X, Reddit, LinkedIn, Facebook, Threads","Scheduling future posts and later editing or canceling scheduled jobs","Checking async upload status and pulling upload history or aggregated analytics for reporting"],"limitations":["Authentication is via API key only (no OAuth2 flow described in README)","Pinterest operations require selecting a Board (dynamic selector) and Facebook operations require selecting a Page","Upload Video operation supports a single video per upload (photos support multiple)","Upload history pagination limit restricted to allowed values (20, 50, or 100)","Some advanced platform-specific features and selectors are required for certain operations (e.g., board/page selection) — missing selections will block those platform uploads"],"relatedNodes":[]}


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

updated_at: 2026-02-19 14:41:52
author_name: nexlevanalytics
author_github_url: https://github.com/alge-soft/n8n-nodes-nexlev.git
npm_package_name: @nexlev/n8n-nodes-nexlev
npm_version: 0.2.5
community_fetched_at: 2026-02-19T14:41:52.664Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "similarVideos",
      "options": [
        {
          "name": "Channel Analysis",
          "value": "channelAnalysis"
        },
        {
          "name": "Channel Analytic",
          "value": "channelAnalytics"
        },
        {
          "name": "Channel Content",
          "value": "channelContent"
        },
        {
          "name": "Niche Overview",
          "value": "nicheOverview"
        },
        {
          "name": "Similar Channel",
          "value": "similarChannels"
        },
        {
          "name": "Similar Thumbnail",
          "value": "similarThumbnails"
        },
        {
          "name": "Similar Video",
          "value": "similarVideos"
        },
        {
          "name": "Videos and Short",
          "value": "videosAndShorts"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAnalytics",
      "options": [
        {
          "name": "Get Analytics",
          "value": "getAnalytics",
          "action": "Get channel analytics",
          "routing": {
            "request": {
              "url": "/external/analytics/channel-analytics",
              "method": "POST"
            }
          },
          "description": "Get analytics data for a YouTube channel"
        },
        {
          "name": "Get Geography Demographics Revenue",
          "value": "getGeoDemoRev",
          "action": "Get geography demographics revenue",
          "routing": {
            "request": {
              "url": "/external/analytics/channel-analytics/geography-revenue",
              "method": "POST"
            }
          },
          "description": "Get geography, demographics, and revenue data for a YouTube channel"
        },
        {
          "name": "Get Short vs Long Views",
          "value": "getShortVsLongViews",
          "action": "Get short vs long views",
          "routing": {
            "request": {
              "method": "GET"
            }
          },
          "description": "Get short and long video views for a YouTube channel"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "channelAnalytics"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createJob",
      "options": [
        {
          "name": "Create Job",
          "value": "createJob",
          "action": "Create channel analysis job",
          "routing": {
            "request": {
              "url": "/external/channels/analysis/job/create",
              "method": "GET"
            }
          },
          "description": "Create a new channel analysis job"
        },
        {
          "name": "Get Result",
          "value": "getResult",
          "action": "Get channel analysis result",
          "routing": {
            "request": {
              "url": "/external/channels/analysis/job/status",
              "method": "GET"
            }
          },
          "description": "Get the status and results of a channel analysis job"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "channelAnalysis"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getVideos",
      "options": [
        {
          "name": "Get About",
          "value": "getAbout",
          "action": "Get channel about",
          "routing": {
            "request": {
              "url": "/external/channels/about",
              "method": "GET"
            }
          },
          "description": "Get about information for a YouTube channel"
        },
        {
          "name": "Get Outliers",
          "value": "getOutliers",
          "action": "Get channel outliers",
          "routing": {
            "request": {
              "url": "/external/channels/outliers",
              "method": "GET"
            }
          },
          "description": "Get outlier videos from a YouTube channel"
        },
        {
          "name": "Get Playlists",
          "value": "getPlaylists",
          "action": "Get channel playlists",
          "routing": {
            "request": {
              "url": "/external/channels/playlists",
              "method": "GET"
            }
          },
          "description": "Get playlists from a YouTube channel"
        },
        {
          "name": "Get Shorts",
          "value": "getShorts",
          "action": "Get channel shorts",
          "routing": {
            "request": {
              "url": "/external/channels/shorts",
              "method": "GET"
            }
          },
          "description": "Get short videos from a YouTube channel"
        },
        {
          "name": "Get Videos",
          "value": "getVideos",
          "action": "Get channel videos",
          "routing": {
            "request": {
              "url": "/external/channels/videos",
              "method": "GET"
            }
          },
          "description": "Get videos from a YouTube channel"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "channelContent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "analyze",
      "options": [
        {
          "name": "Analyze",
          "value": "analyze",
          "action": "Analyze channel niche overview",
          "routing": {
            "request": {
              "url": "/external/niche-overview/analyze",
              "method": "POST"
            }
          },
          "description": "Analyze and get niche overview for a YouTube channel"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "nicheOverview"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getSimilar",
      "options": [
        {
          "name": "Get Similar Videos",
          "value": "getSimilar",
          "action": "Get similar videos",
          "routing": {
            "request": {
              "url": "/external/similar-videos/videos",
              "method": "POST"
            }
          },
          "description": "Find similar videos based on a YouTube video"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "similarVideos"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search Similar Thumbnails",
          "value": "search",
          "action": "Search similar thumbnails",
          "routing": {
            "request": {
              "url": "/external/similar-thumbnails/search",
              "method": "POST"
            }
          },
          "description": "Find similar thumbnails based on text or image URL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "similarThumbnails"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search Similar Channels",
          "value": "search",
          "action": "Search similar channels",
          "routing": {
            "request": {
              "url": "/external/similar-channels/search",
              "method": "POST"
            }
          },
          "description": "Find similar channels based on a YouTube channel"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "similarChannels"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getDetails",
      "options": [
        {
          "name": "Get Bulk Subtitle",
          "value": "getBulkSubtitle",
          "action": "Get bulk video subtitles",
          "routing": {
            "request": {
              "url": "/external/videos/bulk-subtitle",
              "method": "POST"
            }
          },
          "description": "Get subtitles for multiple YouTube videos at once"
        },
        {
          "name": "Get Bulk Transcript",
          "value": "getBulkTranscript",
          "action": "Get bulk video transcripts",
          "routing": {
            "request": {
              "url": "/external/videos/bulk-transcript",
              "method": "POST"
            }
          },
          "description": "Get transcripts for multiple YouTube videos at once"
        },
        {
          "name": "Get Comments",
          "value": "getComments",
          "action": "Get video comments",
          "routing": {
            "request": {
              "url": "/external/videos/comments",
              "method": "GET"
            }
          },
          "description": "Get comments for a YouTube video"
        },
        {
          "name": "Get Details",
          "value": "getDetails",
          "action": "Get video details",
          "routing": {
            "request": {
              "url": "/external/videos/details",
              "method": "GET"
            }
          },
          "description": "Get detailed information for a YouTube video"
        },
        {
          "name": "Get RPM",
          "value": "getRPM",
          "action": "Get video RPM",
          "routing": {
            "request": {
              "url": "/external/videos/rpm",
              "method": "GET"
            }
          },
          "description": "Get RPM (Revenue Per Mille) for a YouTube video"
        },
        {
          "name": "Get Shorts Details",
          "value": "getShortsDetails",
          "action": "Get shorts details",
          "routing": {
            "request": {
              "url": "/external/shorts/details",
              "method": "GET"
            }
          },
          "description": "Get detailed information for a YouTube shorts video"
        },
        {
          "name": "Get Subtitle",
          "value": "getSubtitle",
          "action": "Get video subtitle",
          "routing": {
            "request": {
              "url": "/external/videos/subtitle",
              "method": "GET"
            }
          },
          "description": "Get subtitle for a YouTube video"
        },
        {
          "name": "Get Transcript",
          "value": "getTranscript",
          "action": "Get video transcript",
          "routing": {
            "request": {
              "url": "/external/videos/transcript",
              "method": "GET"
            }
          },
          "description": "Get transcript for a YouTube video"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "videosAndShorts"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Analytics",
      "value": "getAnalytics",
      "action": "Get channel analytics",
      "routing": {
        "request": {
          "url": "/external/analytics/channel-analytics",
          "method": "POST"
        }
      },
      "description": "Get analytics data for a YouTube channel"
    },
    {
      "name": "Get Geography Demographics Revenue",
      "value": "getGeoDemoRev",
      "action": "Get geography demographics revenue",
      "routing": {
        "request": {
          "url": "/external/analytics/channel-analytics/geography-revenue",
          "method": "POST"
        }
      },
      "description": "Get geography, demographics, and revenue data for a YouTube channel"
    },
    {
      "name": "Get Short vs Long Views",
      "value": "getShortVsLongViews",
      "action": "Get short vs long views",
      "routing": {
        "request": {
          "method": "GET"
        }
      },
      "description": "Get short and long video views for a YouTube channel"
    },
    {
      "name": "Create Job",
      "value": "createJob",
      "action": "Create channel analysis job",
      "routing": {
        "request": {
          "url": "/external/channels/analysis/job/create",
          "method": "GET"
        }
      },
      "description": "Create a new channel analysis job"
    },
    {
      "name": "Get Result",
      "value": "getResult",
      "action": "Get channel analysis result",
      "routing": {
        "request": {
          "url": "/external/channels/analysis/job/status",
          "method": "GET"
        }
      },
      "description": "Get the status and results of a channel analysis job"
    },
    {
      "name": "Get About",
      "value": "getAbout",
      "action": "Get channel about",
      "routing": {
        "request": {
          "url": "/external/channels/about",
          "method": "GET"
        }
      },
      "description": "Get about information for a YouTube channel"
    },
    {
      "name": "Get Outliers",
      "value": "getOutliers",
      "action": "Get channel outliers",
      "routing": {
        "request": {
          "url": "/external/channels/outliers",
          "method": "GET"
        }
      },
      "description": "Get outlier videos from a YouTube channel"
    },
    {
      "name": "Get Playlists",
      "value": "getPlaylists",
      "action": "Get channel playlists",
      "routing": {
        "request": {
          "url": "/external/channels/playlists",
          "method": "GET"
        }
      },
      "description": "Get playlists from a YouTube channel"
    },
    {
      "name": "Get Shorts",
      "value": "getShorts",
      "action": "Get channel shorts",
      "routing": {
        "request": {
          "url": "/external/channels/shorts",
          "method": "GET"
        }
      },
      "description": "Get short videos from a YouTube channel"
    },
    {
      "name": "Get Videos",
      "value": "getVideos",
      "action": "Get channel videos",
      "routing": {
        "request": {
          "url": "/external/channels/videos",
          "method": "GET"
        }
      },
      "description": "Get videos from a YouTube channel"
    },
    {
      "name": "Analyze",
      "value": "analyze",
      "action": "Analyze channel niche overview",
      "routing": {
        "request": {
          "url": "/external/niche-overview/analyze",
          "method": "POST"
        }
      },
      "description": "Analyze and get niche overview for a YouTube channel"
    },
    {
      "name": "Get Similar Videos",
      "value": "getSimilar",
      "action": "Get similar videos",
      "routing": {
        "request": {
          "url": "/external/similar-videos/videos",
          "method": "POST"
        }
      },
      "description": "Find similar videos based on a YouTube video"
    },
    {
      "name": "Search Similar Thumbnails",
      "value": "search",
      "action": "Search similar thumbnails",
      "routing": {
        "request": {
          "url": "/external/similar-thumbnails/search",
          "method": "POST"
        }
      },
      "description": "Find similar thumbnails based on text or image URL"
    },
    {
      "name": "Search Similar Channels",
      "value": "search",
      "action": "Search similar channels",
      "routing": {
        "request": {
          "url": "/external/similar-channels/search",
          "method": "POST"
        }
      },
      "description": "Find similar channels based on a YouTube channel"
    },
    {
      "name": "Get Bulk Subtitle",
      "value": "getBulkSubtitle",
      "action": "Get bulk video subtitles",
      "routing": {
        "request": {
          "url": "/external/videos/bulk-subtitle",
          "method": "POST"
        }
      },
      "description": "Get subtitles for multiple YouTube videos at once"
    },
    {
      "name": "Get Bulk Transcript",
      "value": "getBulkTranscript",
      "action": "Get bulk video transcripts",
      "routing": {
        "request": {
          "url": "/external/videos/bulk-transcript",
          "method": "POST"
        }
      },
      "description": "Get transcripts for multiple YouTube videos at once"
    },
    {
      "name": "Get Comments",
      "value": "getComments",
      "action": "Get video comments",
      "routing": {
        "request": {
          "url": "/external/videos/comments",
          "method": "GET"
        }
      },
      "description": "Get comments for a YouTube video"
    },
    {
      "name": "Get Details",
      "value": "getDetails",
      "action": "Get video details",
      "routing": {
        "request": {
          "url": "/external/videos/details",
          "method": "GET"
        }
      },
      "description": "Get detailed information for a YouTube video"
    },
    {
      "name": "Get RPM",
      "value": "getRPM",
      "action": "Get video RPM",
      "routing": {
        "request": {
          "url": "/external/videos/rpm",
          "method": "GET"
        }
      },
      "description": "Get RPM (Revenue Per Mille) for a YouTube video"
    },
    {
      "name": "Get Shorts Details",
      "value": "getShortsDetails",
      "action": "Get shorts details",
      "routing": {
        "request": {
          "url": "/external/shorts/details",
          "method": "GET"
        }
      },
      "description": "Get detailed information for a YouTube shorts video"
    },
    {
      "name": "Get Subtitle",
      "value": "getSubtitle",
      "action": "Get video subtitle",
      "routing": {
        "request": {
          "url": "/external/videos/subtitle",
          "method": "GET"
        }
      },
      "description": "Get subtitle for a YouTube video"
    },
    {
      "name": "Get Transcript",
      "value": "getTranscript",
      "action": "Get video transcript",
      "routing": {
        "request": {
          "url": "/external/videos/transcript",
          "method": "GET"
        }
      },
      "description": "Get transcript for a YouTube video"
    }
  ]

npm_readme:
  # n8n-nodes-nexlev

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

  Nexlev is a YouTube analytics and similarity discovery platform that helps content creators analyze channel performance and discover similar content across YouTube.

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

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

  ## Installation

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

  ## Operations

  The Nexlev node supports the following operations:

  ### Channel Analysis

  - **Create Job**: Create a new channel analysis job
  - **Get Result**: Get the status and results of a channel analysis job

  ### Channel Analytics

  - **Get Analytics**: Retrieve comprehensive analytics data for a YouTube channel
  - **Get Geography Demographics Revenue**: Get geographic distribution, demographic breakdown, and revenue data
  - **Get Short vs Long Views**: Compare short-form vs long-form content performance

  ### Channel Content

  - **Get About**: Get about information for a YouTube channel
  - **Get Playlists**: Get playlists from a YouTube channel
  - **Get Videos**: Get videos from a YouTube channel
  - **Get Shorts**: Get short videos from a YouTube channel

  ### Niche Overview

  - **Analyze**: Analyze and get niche overview for a YouTube channel

  ### Similar Channels

  - **Search Similar Channels**: Find similar YouTube channels based on content type and audience

  ### Similar Thumbnails

  - **Search Similar Thumbnails**: Discover similar video thumbnails for content inspiration

  ### Similar Videos

  - **Get Similar Videos**: Find videos similar to a given video with similarity scores

  ### Videos and Shorts

  - **Get Bulk Transcript**: Get transcripts for multiple YouTube videos
  - **Get Comments**: Get comments for a YouTube video
  - **Get Details**: Get detailed information for a YouTube video
  - **Get Shorts Details**: Get detailed information for a YouTube shorts video
  - **Get Transcript**: Get transcript for a YouTube video

  ## Credentials

  To use this node, you need to obtain an API key from Nexlev.

  ### Prerequisites

  - Sign up for a Nexlev account and get your API key at [dashboard.nexlev.io/n8n-youtube](https://dashboard.nexlev.io/n8n-youtube)
  - The dashboard provides everything you need to get started with the n8n integration

  ### Authentication Method

  - **API Key**: Enter your Nexlev API key in the credential configuration
  - The API key is sent via the `x-api-key` header in all requests

  ## Compatibility

  - **Minimum n8n version**: 1.0.0
  - **Tested with**: n8n 1.x
  - **Node version**: 0.2.0

  ## Usage

  ### Basic Setup

  1. **Install the node** following the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/)
  2. **Create credentials** with your Nexlev API key
  3. **Add the Nexlev node** to your workflow
  4. **Select a resource** (Channel Analytics, Similar Videos, Similar Thumbnails, or Similar Channels)
  5. **Choose an operation** and fill in the required parameters

  ### Example: Getting Similar Videos

  1. Add the Nexlev node to your workflow
  2. Select "Similar Videos" as the Resource
  3. Select "Get Similar Videos" as the Operation
  4. Enter a YouTube video ID (e.g., `gpyYCTgJO88`)
  5. The node will return a list of similar videos with similarity scores and metadata

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Nexlev n8n Integration Dashboard](https://dashboard.nexlev.io/n8n-youtube) - Get your API key and documentation

  ## Version history

  ### 0.2.0

  - Added support for getting playlists from YouTube channels
  - Added bulk transcript API for processing multiple videos
  - Added sub API support
  - Added support for videoURL parameter in similar videos operations
  - Fixed channel analysis job creation endpoint to use GET method

  ### 0.1.10

  - Fixed channel analysis job creation endpoint to use GET method

  ### 0.1.9

  - Added comprehensive operations documentation for all resources
  - Improved .gitignore with best practices
  - Better repository structure

  ### 0.1.8

  - Updated documentation with correct Nexlev dashboard links
  - Improved getting started experience

  ### 0.1.7

  - Bug fixes and improvements
  - Enhanced stability

  ### 0.1.6

  - Improvements and updates

  ### 0.1.0

  - Initial release
  - Support for Channel Analytics operations (Get Analytics, Geography/Demographics/Revenue, Short vs Long Views)
  - Support for Similar Videos discovery
  - Support for Similar Thumbnails search
  - Support for Similar Channels discovery
  - API key authentication
  - Multi-environment support (local, dev, prod)

ai_documentation_summary:
  {"purpose":"Provides access to Nexlev's YouTube analytics and similarity-discovery APIs from n8n workflows, enabling channel analysis, content analytics, similarity searches, and transcript/comment retrieval.","capabilities":["Create channel analysis job","Get channel analysis job result/status","Get channel analytics (comprehensive channel metrics)","Get geographic, demographic, and revenue breakdowns","Compare short-form vs long-form view performance","Get channel About information","Get playlists from a YouTube channel","Get videos from a YouTube channel","Get shorts from a YouTube channel","Analyze channel for niche overview"],"authentication":"API key required (provide Nexlev API key; sent in requests via the x-api-key header)","commonUseCases":["Analyze a YouTube channel's performance and demographic/revenue breakdowns","Discover similar channels, videos, or thumbnails for content inspiration or competitor research","Fetch transcripts and comments for one or many videos for content analysis or NLP workflows","Compare short vs long content performance to inform content strategy","Create and poll channel analysis jobs to run longer or asynchronous analyses"],"limitations":[],"relatedNodes":[]}


node_type: @tehw0lf/n8n-nodes-toon.toon
package_name: @tehw0lf/n8n-nodes-toon
display_name: TOON
description: Convert between TOON and JSON formats with zero external dependencies
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: tehw0lf
author_github_url: https://github.com/tehw0lf/n8n-nodes-toon.git
npm_package_name: @tehw0lf/n8n-nodes-toon
npm_version: 1.1.8
community_fetched_at: 2026-02-19T14:41:52.667Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "jsonToToon",
      "options": [
        {
          "name": "JSON to TOON",
          "value": "jsonToToon",
          "action": "Convert JSON to TOON",
          "description": "Convert JSON data to TOON format"
        },
        {
          "name": "TOON to JSON",
          "value": "toonToJson",
          "action": "Convert TOON to JSON",
          "description": "Parse TOON format to JSON"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "JSON to TOON",
      "value": "jsonToToon",
      "action": "Convert JSON to TOON",
      "description": "Convert JSON data to TOON format"
    },
    {
      "name": "TOON to JSON",
      "value": "toonToJson",
      "action": "Convert TOON to JSON",
      "description": "Parse TOON format to JSON"
    }
  ]

npm_readme:
  # @tehw0lf/n8n-nodes-toon

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

  This is an n8n community node that provides bidirectional conversion between **TOON (Token-Oriented Object Notation)** and JSON formats. TOON is a line-oriented, indentation-based format optimized for LLM prompts and structured data interchange.

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

  ## Table of Contents

  - [What is TOON?](#what-is-toon)
  - [Installation](#installation)
  - [Operations](#operations)
  - [Configuration Options](#configuration-options)
  - [Usage Examples](#usage-examples)
  - [Use Cases](#use-cases)
  - [Compatibility](#compatibility)
  - [Zero Dependencies](#zero-dependencies)
  - [Resources](#resources)

  ## What is TOON?

  **TOON (Token-Oriented Object Notation)** is a compact text format that encodes the JSON data model with explicit structure and minimal quoting. It's particularly efficient for arrays of uniform objects — common in data exports, API responses, and LLM prompts.

  ### Key Features

  - **Line-oriented and indentation-based** — similar to YAML but more deterministic
  - **Minimal quoting** — strings are quoted only when necessary
  - **Explicit array lengths** — detect truncation and malformed data
  - **Tabular arrays** — declare field lists once, then list values row by row
  - **Multiple delimiters** — comma, tab, or pipe for different use cases
  - **Zero external dependencies** — pure Node.js implementation

  ### Quick Example

  **JSON:**
  ```json
  {
    "users": [
      {"id": 1, "name": "Alice", "role": "admin"},
      {"id": 2, "name": "Bob", "role": "user"}
    ]
  }
  ```

  **TOON:**
  ```
  users[2]{id,name,role}:
    1,Alice,admin
    2,Bob,user
  ```

  The TOON format is **50% more compact** than JSON for tabular data, making it ideal for:
  - **LLM prompts** — fit more context in token limits
  - **Data serialization** — compact representation of structured data
  - **API responses** — human-readable but machine-parseable
  - **Configuration files** — cleaner syntax than JSON

  ## Installation

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

  ### npm

  ```bash
  npm install @tehw0lf/n8n-nodes-toon
  ```

  ### n8n Cloud

  In n8n Cloud or self-hosted n8n (v0.200+):

  1. Go to **Settings** → **Community Nodes**
  2. Select **Install**
  3. Enter `@tehw0lf/n8n-nodes-toon` and agree to the risks
  4. Click **Install**

  The TOON node will appear in your node palette under the **Transform** category.

  ## Operations

  The TOON node supports two operations:

  ### 1. JSON to TOON

  Convert JSON data to TOON format.

  **Input:** JSON object or array
  **Output:** TOON formatted text

  **Use case:** Prepare data for LLM prompts, compact serialization

  ### 2. TOON to JSON

  Parse TOON formatted text back to JSON.

  **Input:** TOON formatted text
  **Output:** JSON object or array

  **Use case:** Parse LLM responses, deserialize TOON data

  ## Configuration Options

  ### Encoding Options (JSON→TOON)

  | Option | Type | Default | Description |
  |--------|------|---------|-------------|
  | **Indent Size** | Number | `2` | Spaces per indentation level |
  | **Delimiter** | Choice | `comma` | Delimiter for array values (`comma`, `tab`, `pipe`) |
  | **Key Folding** | Choice | `off` | Collapse single-key chains (`off`, `safe`) |
  | **Flatten Depth** | Number | `999` | Maximum segments to fold (999 = unlimited) |
  | **Include Token Metrics** | Boolean | `false` | Add token count comparison to output |

  ### Decoding Options (TOON→JSON)

  | Option | Type | Default | Description |
  |--------|------|---------|-------------|
  | **Expected Indent Size** | Number | `2` | Expected indentation for validation |
  | **Strict Mode** | Boolean | `true` | Enforce array counts and indentation |
  | **Expand Paths** | Choice | `off` | Split dotted keys (`off`, `safe`) |

  ### Input/Output Configuration

  | Option | Type | Default | Description |
  |--------|------|---------|-------------|
  | **Input Data** | String | `={{ $json }}` | Data to convert. Supports drag-and-drop, field names, dot notation, and expressions. Auto-detects input type. |
  | **Output Field** | String | `data` | Field name for output |

  #### Input Data Details

  The **Input Data** field auto-detects the input type:
  - **Drag-and-drop**: Drag fields from the left panel - automatically evaluated by n8n
  - **Field names**: Simple field access (e.g., `data`)
  - **Dot notation**: Nested access (e.g., `users[0].name`)
  - **Expressions**: Full n8n expressions (e.g., `={{ $json.users.filter(u => u.active) }}`)
  - **Literal TOON** (for decoding): If a string doesn't match a field path, treated as TOON data

  ### Token Metrics Output

  When **Include Token Metrics** is enabled for JSON→TOON conversion, the output includes a `tokenMetrics` object:

  ```json
  {
    "data": "users[2]{id,name}:\n  1,Alice\n  2,Bob",
    "tokenMetrics": {
      "json": 123,
      "toon": 58,
      "saved": 65,
      "reduction": 0.5285
    }
  }
  ```

  - **json**: Estimated token count for JSON input
  - **toon**: Estimated token count for TOON output
  - **saved**: Number of tokens saved
  - **reduction**: Reduction ratio (0.5285 = 52.85% reduction)

  ## Usage Examples

  ### Example 1: LLM Context Preparation

  **Workflow:** Fetch Users → JSON to TOON → Send to LLM

  Use TOON to fit more context into LLM token limits while maintaining readability.

  **Input (JSON):**
  ```json
  {
    "users": [
      {"id": 1, "name": "Alice", "role": "admin", "active": true},
      {"id": 2, "name": "Bob", "role": "user", "active": true},
      {"id": 3, "name": "Charlie", "role": "user", "active": false}
    ]
  }
  ```

  **Output (TOON - comma delimiter):**
  ```
  users[3]{id,name,role,active}:
    1,Alice,admin,true
    2,Bob,user,true
    3,Charlie,user,false
  ```

  **Token Savings:** ~40-50% fewer tokens than equivalent JSON for structured data.

  ### Example 2: Parse LLM Structured Output

  **Workflow:** Send Prompt to LLM → TOON to JSON → Process Data

  LLMs can generate TOON format more reliably than JSON due to simpler syntax.

  **LLM Output (TOON):**
  ```
  result:
    tasks[3]{name,priority,status}:
      "Update docs",high,pending
      "Fix bug #123",high,done
      "Refactor code",low,pending
    summary: "3 tasks identified"
  ```

  **Parsed JSON:**
  ```json
  {
    "result": {
      "tasks": [
        {"name": "Update docs", "priority": "high", "status": "pending"},
        {"name": "Fix bug #123", "priority": "high", "status": "done"},
        {"name": "Refactor code", "priority": "low", "status": "pending"}
      ],
      "summary": "3 tasks identified"
    }
  }
  ```

  ### Example 3: Working with CSV Data

  n8n has excellent built-in CSV support via the "Extract from File" node. Use TOON for transformations:

  **Workflow:** Read File → Extract from CSV → JSON to TOON → Transform → TOON to JSON → Use Data

  1. Use n8n's "Extract from File" (CSV) node to parse CSV files
  2. The extracted data is already JSON (one item per row)
  3. Use "JSON to TOON" to convert to TOON format for LLM processing
  4. Use "TOON to JSON" to convert back to JSON for further processing

  ### Example 4: Key Folding for Nested Data

  **Workflow:** API Request → JSON to TOON (Key Folding: Safe) → Transform

  Simplify deeply nested JSON structures.

  **Input:**
  ```json
  {
    "user": {
      "profile": {
        "name": "Alice",
        "email": "alice@example.com"
      }
    }
  }
  ```

  **Output (with Key Folding):**
  ```
  user.profile.name: Alice
  user.profile.email: alice@example.com
  ```

  ### Example 5: Different Delimiters

  Use tab delimiters for data with commas in values.

  **TOON (tab delimiter):**
  ```
  products[2]{id	name	price}:
    1	"Widget, Small"	9.99
    2	"Gadget, Large"	19.99
  ```

  ## Use Cases

  ### 1. LLM Integration

  **Problem:** JSON wastes tokens on quotes, brackets, and redundant keys.

  **Solution:** TOON reduces token usage by 40-50% for structured data.

  ```
  Workflow: Data Source → JSON to TOON → LLM → TOON to JSON → Process
  ```

  ### 2. API Response Transformation

  **Problem:** API responses are verbose JSON that's hard to read in logs.

  **Solution:** Convert to TOON for compact, human-readable logging.

  ```
  Workflow: API Request → JSON to TOON → Log/Store → TOON to JSON → Use
  ```

  ### 3. Data Format Conversion

  **Problem:** Need to transform data between different formats for different systems.

  **Solution:** Use TOON as an intermediate format for transformations.

  ```
  Workflow: Extract from CSV → JSON to TOON → Transform → TOON to JSON → Send to API
  ```

  ### 4. Configuration Management

  **Problem:** JSON config files are verbose and don't support comments well.

  **Solution:** Store configs in TOON format for better readability.

  ```
  Workflow: Read TOON Config → TOON to JSON → Apply Settings
  ```

  ### 5. Report Generation

  **Problem:** Need to generate readable reports from structured data.

  **Solution:** Convert to TOON for human-friendly text representation.

  ```
  Workflow: Fetch Data → JSON to TOON → Format Report → Send Email
  ```

  ## Compatibility

  - **n8n version:** 0.200.0 or later
  - **Node.js:** 18.x or later
  - **TOON Specification:** v3.0

  ## Specification Compliance

  This node implements **TOON Specification v3.0** with comprehensive coverage of all core features and major optional features.

  ### Implemented Features

  ✅ **Core Features (100%)**
  - All JSON data types (objects, arrays, primitives)
  - Indentation-based structure with configurable spacing
  - Array length declarations `[N]`
  - Tabular arrays for uniform objects `[N]{field1,field2}:`
  - All three delimiters: comma (default), tab, pipe
  - Deterministic string quoting and escaping
  - Strict mode validation with array count and width checking

  ✅ **Optional Features**
  - **Key Folding** (`keyFolding: "safe"`) - Collapse nested single-key objects into dotted paths (e.g., `{a: {b: {c: 1}}}` → `a.b.c: 1`)
  - **Path Expansion** (`expandPaths: "safe"`) - Expand dotted keys back into nested objects during decoding

  ### Not Implemented

  ❌ **Hyphen Syntax for List-Item Objects (§10)** - Optional YAML-style compact notation for objects in arrays. This is a purely cosmetic encoding optimization that doesn't affect functionality or data compatibility. Our implementation uses standard object indentation instead, which is equally spec-compliant and easier to maintain.

  ### Round-Trip Guarantee

  All JSON data can be encoded to TOON and decoded back to JSON with full fidelity. The implementation passes all conformance requirements for encoders and decoders per the specification.

  ## Advanced Features

  ### Strict Mode

  When enabled (default), the decoder validates:
  - Array element counts match declared length
  - Indentation multiples match expected indent size
  - Proper structure and syntax

  Disable for lenient parsing of hand-written TOON.

  ### Path Expansion

  Convert dotted keys into nested objects:

  **TOON:**
  ```
  user.name: Alice
  user.email: alice@example.com
  ```

  **JSON (with expandPaths: safe):**
  ```json
  {
    "user": {
      "name": "Alice",
      "email": "alice@example.com"
    }
  }
  ```

  ### Round-Trip Guarantees

  TOON guarantees lossless round-trip conversion:

  - **JSON → TOON → JSON** preserves all data and structure
  - Works with any valid JSON input
  - Maintains data types (strings, numbers, booleans, null)

  ## Zero Dependencies

  This node has **zero production dependencies**:
  - Pure Node.js implementation
  - No external libraries required
  - Minimal package size
  - No security vulnerabilities from dependencies

  **Note:** There is another package called `n8n-nodes-toon` (non-scoped) that wraps the official `@toon-format/toon` library. This package (`@tehw0lf/n8n-nodes-toon`) implements the TOON specification directly, resulting in zero production dependencies and full control over the implementation.

  ## Troubleshooting

  ### Issue: "Input must be a string" error

  **Cause:** TOON to JSON operation expects string input.

  **Solution:** Ensure input field contains TOON text, not a JSON object.

  ### Issue: Strict mode validation errors

  **Cause:** TOON data doesn't match expected structure.

  **Solution:** Disable strict mode or fix indentation/counts in TOON data.

  ### Issue: Key folding conflicts

  **Cause:** Both `user.name` and `user` keys exist in same object.

  **Solution:** Use `keyFolding: "safe"` which only folds when safe, or disable key folding.

  ### Issue: Round-trip doesn't match exactly

  **Cause:** TOON normalizes data (e.g., -0 → 0, sorts object keys).

  **Solution:** This is expected — TOON preserves semantic meaning, not exact formatting.

  ## Automated Monitoring

  This repository includes automated workflows for continuous monitoring:

  ### Specification Monitoring

  Monitors the official TOON specification for updates:

  - **Frequency:** Checks run every Monday at 9:00 AM UTC
  - **Automatic Detection:** Compares local `SPEC.md` against the upstream repository
  - **Issue Creation:** Automatically opens a GitHub issue when updates are detected
  - **Manual Trigger:** Can be triggered manually via GitHub Actions

  When a specification update is detected, the workflow:
  1. Creates a labeled issue (`spec-update`, `enhancement`) with version details
  2. Includes a diff summary showing the changes
  3. Provides links to the official specification
  4. Avoids duplicate issues for the same version

  See [`.github/workflows/monitor-spec.yml`](.github/workflows/monitor-spec.yml) for implementation details.

  ### Security Monitoring

  Performs comprehensive security scanning to detect vulnerabilities:

  - **Frequency:** Runs daily at 2:00 AM UTC
  - **Source Code Scanning:** Semgrep analysis for security issues (OWASP Top 10, etc.)
  - **Dependency Scanning:** npm audit on dependencies
  - **Published Package Scanning:** Checks the live npm package for newly disclosed vulnerabilities
  - **Automatic Trigger:** Also runs on changes to `package.json` or `package-lock.json`

  When vulnerabilities are detected, the workflow:
  1. Creates a labeled issue (`security`, `vulnerability`, `dependencies`)
  2. Includes severity levels and full audit report
  3. Provides remediation guidance with specific commands
  4. Updates existing issues instead of creating duplicates

  See [`.github/workflows/security-scan.yml`](.github/workflows/security-scan.yml) for implementation details.

  ## Resources

  - **TOON Specification v3.0:** Official spec at [github.com/toon-format/spec](https://github.com/toon-format/spec) or see [SPEC.md](SPEC.md) in this repository
  - **n8n Documentation:** https://docs.n8n.io/
  - **Community Nodes Guide:** https://docs.n8n.io/integrations/community-nodes/
  - **GitHub Repository:** https://github.com/tehw0lf/n8n-nodes-toon
  - **Issues & Support:** https://github.com/tehw0lf/n8n-nodes-toon/issues

  ## License

  MIT © [tehw0lf](https://github.com/tehw0lf)

  ## Author

  **tehw0lf** <tehwolf@protonmail.com>

  ## Contributing

  Contributions are welcome! Please open an issue or pull request on GitHub.

  ---

  **Note:** This node implements the [TOON Specification v3.0](https://github.com/toon-format/spec). See `SPEC.md` for complete format documentation or visit the official spec repository.

ai_documentation_summary:
  {"purpose":"Bidirectionally convert between TOON (Token-Oriented Object Notation) and JSON to produce a compact, line-oriented representation ideal for LLM prompts and compact data interchange. Provides configurable encoding/decoding options and optional token-metrics output.","capabilities":["Convert JSON object or array to TOON formatted text (JSON → TOON)","Parse TOON formatted text back to JSON object or array (TOON → JSON)","Encoding options: indent size, delimiter choice (comma/tab/pipe), key folding, flatten depth, include token metrics","Decoding options: expected indent size validation, strict mode (enforce array counts/indentation), expand dotted paths","Auto-detect input type and accept drag-and-drop fields, simple field names, dot notation, and full n8n expressions","Output tokenMetrics (estimated json/toon token counts, saved tokens, reduction ratio) when enabled","Support for tabular arrays, explicit array lengths, and multiple delimiters","Zero external dependencies (pure Node.js implementation)"],"authentication":"None","commonUseCases":["Prepare compact context for LLM prompts (fit more context into token limits)","Serialize/export tabular or uniform-object data in a compact, human-readable form","Deserialize TOON responses from LLMs back into JSON for downstream workflow steps","Produce compact API responses or configuration files where JSON is verbose"],"limitations":["Strict mode enforces indentation and declared array counts and may reject or error on malformed TOON input","Delimiter options are limited to comma, tab, or pipe (no arbitrary custom delimiter)","Token metrics are estimated values (not guaranteed exact token counts)","As a community node, n8n Cloud installation notes require n8n v0.200+ for cloud installs"],"relatedNodes":["Transform nodes"]}


node_type: n8n-nodes-shortio.Shortio
package_name: n8n-nodes-shortio
display_name: Short.io
description: Short.io Node for shortening and managing links
category: Community
development_style: declarative
version: 1.0.2
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: liammcgarrigle
author_github_url: https://github.com/liamdmcgarrigle/
npm_package_name: n8n-nodes-shortio
npm_version: 1.0.2
community_fetched_at: 2026-02-19T14:41:52.667Z
ai_summary_generated_at: 2026-02-19 16:43:57
npm_readme:
  # Table of Contents

  - [Table of Contents](#table-of-contents)
  - [Overview of Community Short.io n8n Node](#overview-of-community-shortio-n8n-node)
  - [Bugs/Contributing/Feature Request](#bugscontributingfeature-request)
  - [Documentation](#documentation)
    - [Installation](#installation)
    - [Credentials](#credentials)
    - [Links](#links)
      - [List Links](#list-links)
      - [Get Link Info](#get-link-info)
      - [Create Link](#create-link)
      - [Update Existing Link](#update-existing-link)
      - [Delete Link](#delete-link)
      - [Generate QR For Link](#generate-qr-for-link)
    - [Statistics](#statistics)
      - [Get Link Statistics](#get-link-statistics)
      - [Get Domain Statistics](#get-domain-statistics)

  # Overview of Community Short.io n8n Node

  I have no affiliation with short.io beyond being a user. I work for n8n but this is not an official node.

  # Bugs/Contributing/Feature Request

  If you have a bug to report or a feature request, please [submit a GitHub issue](https://github.com/liamdmcgarrigle/n8n-nodes-shortio/issues/new) with as much detail as you're able to give.

  # Documentation

  ## Installation

  This is now available on cloud as a verified community node. Simply search for shortio in the node panel.

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

  ## Credentials

  To use this node you will need to set up short.io credentials with a key from short.io. You also will need an account and may need a paid account.

  1. Go to https://app.short.io/settings/integrations/api-key and click on "Create API Key"
     ![Screenshot1](/readme_files/step-1.jpeg)

  2. Add a description, pick the domain to use, and press "Create"
     ![Screenshot2](/readme_files/step-2.jpeg)

  3. Copy your new token. It will only be shown once

  4. Go to the credential page in n8n, in add credentials add "Short.io API", then paste in your token. Then add the domain you chose in the previous step and press save
     ![Screenshot3](/readme_files/step-3.png)

  ## Links

  ### List Links

  Get a list of your short links. These will only be links from the domain in your credential.

  You will need to choose how many results are returned. Anything over 150 is automatically paginationed.

  You can filter the results by adding:

  - **Before date**: returns links before the listed date
  - **After date**: returns links after the listed date
  - **Date Sort Order**: changes the order the links are in based on the date

  ### Get Link Info

  Get link details from the domain in your credential and the path.

  ### Create Link

  Create a link. There are many options available in the additional fields:

  - **Path**: Custom path for the short link
  - **Folder**: Assign the link to a folder (select from list or enter folder ID)
  - **Allow Duplicates**: Allow multiple links with the same original URL
  - **Title**: Title shown in the short.io admin panel
  - **Expiration settings**: Set expiry date and redirect URL for expired links
  - **Device-specific URLs**: Separate URLs for iPhone and Android users
  - **Cloaking**: Hide the original URL in the browser address bar
  - **Redirect Type**: Choose HTTP redirect code (301, 302, etc.)
  - **Password**: Password-protect the link (requires Personal plan)
  - **UTM Parameters**: Add tracking parameters (source, medium, campaign, term, content)
  - **Tags**: Add tags to organize your links

  ### Update Existing Link

  You can update an existing short link by using the path or the link `idString`.
  You can change anything about the link including the full long URL and folder assignment.

  ### Delete Link

  You can delete an existing short link by using the path or the link `idString`.

  ### Generate QR For Link

  Generate a QR code image for any short link. You can identify the link by path or `idString`.

  Options available:

  - **Color**: QR code foreground color
  - **Background Color**: QR code background color
  - **Size**: QR code size (1-99)
  - **Type**: Image format (PNG or SVG)

  The operation returns binary data that can be used with other n8n nodes (e.g., save to file, send via email, upload to cloud storage).

  ## Statistics

  Get detailed analytics for your links and domain.

  ### Get Link Statistics

  Get detailed statistics for a specific link. Identify the link by path or `idString`.

  **Period options:**

  - Today
  - Yesterday
  - Last 7 Days
  - Last 30 Days
  - Last Month
  - All Time
  - Custom (specify start and end dates)

  **Additional options:**

  - **Clicks Chart Interval**: Data granularity for the clicks chart (hour, day, week, month)
  - **Skip Top Records**: Skip top records like referer, browser, and country breakdowns

  Returns detailed statistics including total clicks, human clicks, click trends, and breakdowns by referer, browser, country, and more.

  ### Get Domain Statistics

  Get detailed statistics for your entire domain (as configured in your credentials).

  **Period options:**

  - Today
  - Yesterday
  - Last 7 Days
  - Last 30 Days
  - Last Month
  - All Time
  - Custom (specify start and end dates)

  **Additional options:**

  - **Clicks Chart Interval**: Data granularity for the clicks chart (hour, day, week, month)

  Returns domain-wide statistics including total clicks, link counts, clicks per link averages, and breakdowns by referer, browser, country, and more.

ai_documentation_summary:
  {"purpose":"Provides actions to shorten, manage, and analyze short.io links from n8n workflows — create, update, delete links, generate QR codes, list links, and retrieve link or domain analytics.","capabilities":["List Links (with date filtering, sort order and automatic pagination for large result sets)","Get Link Info (by domain + path)","Create Link (options: custom path, folder assignment, allow duplicates, title, expiry and expired redirect, device-specific URLs, cloaking, redirect type, password protection, UTM parameters, tags)","Update Existing Link (by path or idString; modify long URL, folder, and all link settings)","Delete Link (by path or idString)","Generate QR For Link (identify by path or idString; options: foreground/background color, size, PNG or SVG; returns binary data)","Get Link Statistics (period presets and custom range, clicks chart interval, skip top records, detailed breakdowns: referer, browser, country, human vs total clicks)","Get Domain Statistics (period presets and custom range, clicks chart interval, domain-wide breakdowns and aggregates)"],"authentication":"API key required (Short.io API key + domain configured in node credentials).","commonUseCases":["Create short links with UTM tags for marketing campaigns","Generate QR codes for short links for prints or emails","Automate creation, update, or deletion of short links in bulk workflows","Fetch link or domain analytics for reporting or triggers based on performance","Enforce link organization via folders and tags, and manage expiration or device-specific redirects"],"limitations":["Node only accesses links for the domain specified in the Short.io credentials","Some features (e.g., password protection) require a paid Short.io plan","You must have a Short.io account and create an API key; some capabilities may be limited to paid accounts","List results paginate automatically when requesting more than 150 items","Community node (not an official n8n-built integration)"],"relatedNodes":[]}


node_type: n8n-nodes-contentdrips.contentdrips
package_name: n8n-nodes-contentdrips
display_name: Contentdrips
description: Create carousels and static graphics using the Contentdrips API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: contentdrips
author_github_url: https://github.com/CONTENTDRIPS/
npm_package_name: n8n-nodes-contentdrips
npm_version: 1.3.2
community_fetched_at: 2026-02-19T14:41:52.667Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "graphic",
      "options": [
        {
          "name": "Graphic",
          "value": "graphic",
          "description": "Generate static graphics"
        },
        {
          "name": "Carousel",
          "value": "carousel",
          "description": "Generate carousel content"
        },
        {
          "name": "Job",
          "value": "job",
          "description": "Check job status and retrieve results"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generateGraphic",
      "options": [
        {
          "name": "Generate",
          "value": "generateGraphic",
          "action": "Start creating a graphic and get a job ID to check later",
          "description": "Start creating a graphic and get a job ID to check later"
        },
        {
          "name": "1-Click Generate",
          "value": "generateGraphicSync",
          "action": "Create a graphic in one step - we handle everything automatically",
          "description": "Create a graphic in one step - we handle everything automatically"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "graphic"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generateCarousel",
      "options": [
        {
          "name": "Generate",
          "value": "generateCarousel",
          "action": "Start creating a carousel and get a job ID to check later",
          "description": "Start creating a carousel and get a job ID to check later"
        },
        {
          "name": "1-Click Generate",
          "value": "generateCarouselSync",
          "action": "Create a carousel in one step - we handle everything automatically",
          "description": "Create a carousel in one step - we handle everything automatically"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "carousel"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "checkJobStatus",
      "options": [
        {
          "name": "Check Status",
          "value": "checkJobStatus",
          "action": "Check the status of a processing job",
          "description": "Check the status of a processing job"
        },
        {
          "name": "Get Result",
          "value": "getJobResult",
          "action": "Get the result of a completed job",
          "description": "Get the result of a completed job"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "job"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate",
      "value": "generateGraphic",
      "action": "Start creating a graphic and get a job ID to check later",
      "description": "Start creating a graphic and get a job ID to check later"
    },
    {
      "name": "1-Click Generate",
      "value": "generateGraphicSync",
      "action": "Create a graphic in one step - we handle everything automatically",
      "description": "Create a graphic in one step - we handle everything automatically"
    },
    {
      "name": "Generate",
      "value": "generateCarousel",
      "action": "Start creating a carousel and get a job ID to check later",
      "description": "Start creating a carousel and get a job ID to check later"
    },
    {
      "name": "1-Click Generate",
      "value": "generateCarouselSync",
      "action": "Create a carousel in one step - we handle everything automatically",
      "description": "Create a carousel in one step - we handle everything automatically"
    },
    {
      "name": "Check Status",
      "value": "checkJobStatus",
      "action": "Check the status of a processing job",
      "description": "Check the status of a processing job"
    },
    {
      "name": "Get Result",
      "value": "getJobResult",
      "action": "Get the result of a completed job",
      "description": "Get the result of a completed job"
    }
  ]

npm_readme:
  # n8n-nodes-contentdrips

  An n8n community node for the [Contentdrips API](https://app.contentdrips.com) that enables you to create carousels and static graphics for social media content automation.

  ## Features

  - **Generate Static Graphics**: Create PNG or PDF graphics from templates
  - **Generate Carousels**: Create multi-slide carousels with intro, content slides, and ending slides
  - **Template-based**: Use your existing Contentdrips templates
  - **Content Updates**: Update text and images using labeled elements
  - **Branding Support**: Apply consistent branding (name, handle, bio, website, avatar)
  - **Job Management**: Check status and retrieve results from asynchronous jobs

  ## Installation

  ### n8n Cloud

  For n8n Cloud users:

  1. Go to **Settings > Community Nodes** in your n8n Cloud instance
  2. Click **Install a community node**  
  3. Enter `n8n-nodes-contentdrips`
  4. Click **Install**

  The node will be automatically installed and available in your workflow editor.

  ### Self-hosted n8n

  For self-hosted installations, you have several options:

  #### Option 1: Community Nodes UI (Easiest)
  1. Go to **Settings > Community Nodes** in your n8n instance
  2. Click **Install a community node**
  3. Enter `n8n-nodes-contentdrips`
  4. Click **Install**

  #### Option 2: Docker Compose

  Add the following to your `docker-compose.yml` environment variables:
  ```yaml
  environment:
    - NODE_FUNCTION_ALLOW_EXTERNAL=*
  ```

  Then modify your Dockerfile or create a custom image:
  ```dockerfile
  FROM n8nio/n8n:latest
  USER root
  RUN npm install -g n8n-nodes-contentdrips
  USER node
  ```

  #### Option 3: Manual Installation

  ```bash
  # Navigate to your n8n installation directory
  cd ~/.n8n

  # Install the node
  npm install n8n-nodes-contentdrips

  # Restart n8n
  ```

  ## Prerequisites

  1. **Contentdrips Account**: Sign up at [Contentdrips](https://app.contentdrips.com)
  2. **API Token**: Generate your API token from [API Management](https://app.contentdrips.com/api-management)
  3. **Templates**: Create and configure templates in Contentdrips editor

  ## Configuration

  ### Credentials Setup

  1. In n8n, go to **Credentials** 
  2. Click **+ Add Credential**
  3. Search for **Contentdrips API**
  4. Enter your API token from Contentdrips

  ### Template Preparation

  1. Create templates in Contentdrips editor
  2. Add labels to text boxes and images you want to update:
     - Right-click on element → "Add Label" → Enter label name
  3. Note your template ID from the URL or template settings

  ## Operations

  ### Generate Graphic

  Create static graphics (PNG/PDF) from templates:

  ```json
  {
    "operation": "generateGraphic",
    "templateId": "126130",
    "output": "png",
    "branding": {
      "name": "Jane Doe",
      "handle": "@janedoe",
      "bio": "Content Creator",
      "website_url": "https://janedoe.com",
      "avatar_image_url": "https://example.com/avatar.jpg"
    },
    "contentUpdates": [
      {
        "type": "textbox",
        "label": "title_1", 
        "value": "New Post Title"
      }
    ]
  }
  ```

  ### Generate Carousel

  Create multi-slide carousels:

  ```json
  {
    "operation": "generateCarousel",
    "templateId": "126130",
    "output": "pdf",
    "carousel": {
      "intro_slide": {
        "heading": "Start Here",
        "description": "Tips that work",
        "image": "https://example.com/intro.jpg"
      },
      "slides": [
        {
          "heading": "Tip 1",
          "description": "Post daily content",
          "image": "https://example.com/slide1.jpg"
        }
      ],
      "ending_slide": {
        "heading": "Follow for more", 
        "description": "New tips weekly",
        "image": "https://example.com/end.jpg"
      }
    }
  }
  ```

  ### Check Job Status

  Monitor background job processing:

  ```json
  {
    "operation": "checkJobStatus",
    "jobId": "15bf4a39-876a-4780-aaa9-4be6fe2c61b4"
  }
  ```

  ### Get Job Result

  Retrieve completed job results:

  ```json
  {
    "operation": "getJobResult", 
    "jobId": "15bf4a39-876a-4780-aaa9-4be6fe2c61b4"
  }
  ```

  ## Example Workflows

  ### Blog to Carousel Automation

  1. **RSS Trigger** → Get new blog posts
  2. **Code Node** → Extract title, summary, and key points
  3. **Contentdrips Node** → Generate carousel with:
     - Intro slide: Blog title and summary
     - Content slides: Key points
     - Ending slide: Call-to-action

  ### Social Media Graphics

  1. **Schedule Trigger** → Daily at 9 AM
  2. **Google Sheets** → Get daily quote and image
  3. **Contentdrips Node** → Generate quote graphic
  4. **Social Media Node** → Post to platforms

  ## API Response Examples

  ### Successful Job Creation
  ```json
  {
    "job_id": "15bf4a39-876a-4780-aaa9-4be6fe2c61b4",
    "status": "queued",
    "message": "Job has been queued for processing",
    "estimated_time": "2-5 minutes"
  }
  ```

  ### Completed Job Result
  ```json
  {
    "date": "2025-06-02T16:31:18.633Z",
    "type": "carousel", 
    "export_url": "https://contentdrips2.s3.amazonaws.com/server/104017/uploads/carousel-output.pdf"
  }
  ```

  ## Troubleshooting

  ### Common Issues

  1. **Authentication Error**: Verify your API token in credentials
  2. **Template Not Found**: Check template ID exists and is accessible
  3. **Label Not Found**: Ensure labels are properly set in template editor
  4. **Job Timeout**: Large carousels may take longer to process

  ### Error Handling

  The node supports n8n's **Continue on Fail** option. When enabled, errors are returned as data instead of stopping the workflow.

  ## Support

  - **Documentation**: [Contentdrips API Docs](https://app.contentdrips.com/api-management)
  - **GitHub Issues**: Report bugs and feature requests
  - **Community Forum**: Get help from other users

  ## License

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

  ## Contributing

  Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.

ai_documentation_summary:
  {"purpose":"Create static graphics and multi-slide carousels for social media by driving the Contentdrips API from n8n, using existing templates and configurable branding and content updates.","capabilities":["Generate static graphics (PNG or PDF) from Contentdrips templates","Generate multi-slide carousels (intro, content slides, ending) and export as PDF/PNG","Update template text and images via labeled elements (contentUpdates)","Apply branding fields (name, handle, bio, website, avatar)","Create asynchronous jobs for generation (job creation returns job_id)","Check job status (checkJobStatus)","Retrieve completed job results and export URLs (getJobResult)","Supports n8n error handling (Continue on Fail) to return errors as data"],"authentication":"API key required (Contentdrips API token)","commonUseCases":["Convert blog posts (RSS) into multi-slide carousels automatically","Generate scheduled social media graphics (e.g., daily quote images) from spreadsheet data","Batch/generate branded post graphics from templates with dynamic text/images","Automate creation and retrieval of assets via asynchronous job polling"],"limitations":["Requires an active Contentdrips account and pre-built templates with labeled elements","Labels must be set in the template editor for text/image updates to work","Processing is asynchronous — large carousels can take longer or may time out (need to poll job status)","Output formats are limited to PNG/PDF as documented"],"relatedNodes":["RSS Trigger","Code","Google Sheets","Social media/publishing nodes (e.g., Twitter, Facebook, LinkedIn integrations)"]}


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

updated_at: 2026-02-19 14:41:52
author_name: getlatedev
author_github_url: https://github.com/getlatedev/
npm_package_name: n8n-nodes-late
npm_version: 0.0.12
community_fetched_at: 2026-02-19T14:41:52.668Z
ai_summary_generated_at: 2026-02-19 16:43:57
description:
  Schedule and manage social media posts across multiple platforms with LATE - the professional social media management platform supporting Twitter/X, Instagram, Facebook, LinkedIn, TikTok, YouTube, and Threads

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "profiles",
      "options": [
        {
          "name": "Profiles",
          "value": "profiles",
          "description": "Organize your social media accounts into profiles for managing multiple brands, clients, or personal accounts separately"
        },
        {
          "name": "Posts",
          "value": "posts",
          "description": "Create, schedule, and manage social media posts across multiple platforms with advanced features like threads, stories, and platform-specific settings"
        },
        {
          "name": "Media",
          "value": "media",
          "description": "Upload images and videos up to 5GB for use in your social media posts with automatic optimization"
        },
        {
          "name": "Social Accounts",
          "value": "accounts",
          "description": "Manage connected social media accounts, view their status, and disconnect accounts when needed"
        },
        {
          "name": "Connect Platform",
          "value": "connect",
          "description": "Initiate OAuth flows to connect new social media platforms (Twitter/X, Instagram, Facebook, LinkedIn, TikTok, YouTube, Threads)"
        },
        {
          "name": "Usage Statistics",
          "value": "usage",
          "description": "Monitor your current usage against plan limits including uploads, profiles, and billing information"
        },
        {
          "name": "Facebook Management",
          "value": "facebook",
          "description": "Manage Facebook pages, select which page to post to, and handle Facebook-specific settings"
        },
        {
          "name": "LinkedIn Management",
          "value": "linkedin",
          "description": "Switch between personal and company posting, manage LinkedIn organization settings"
        },
        {
          "name": "Clone Connection",
          "value": "clone",
          "description": "Reuse OAuth connections across multiple profiles while targeting different pages or organizations"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List profiles",
          "routing": {
            "request": {
              "url": "/profiles",
              "method": "GET"
            }
          }
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create profile",
          "routing": {
            "request": {
              "url": "/profiles",
              "body": {
                "name": "={{ $parameter.name }}",
                "color": "={{ $parameter.color || '' }}",
                "description": "={{ $parameter.description || '' }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update profile",
          "routing": {
            "request": {
              "url": "=/profiles/{{ $parameter.profileId }}",
              "body": {
                "name": "={{ $parameter.name || undefined }}",
                "color": "={{ $parameter.color || undefined }}",
                "description": "={{ $parameter.description || undefined }}"
              },
              "method": "PUT"
            }
          }
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete profile",
          "routing": {
            "request": {
              "url": "=/profiles/{{ $parameter.profileId }}",
              "method": "DELETE"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "profiles"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List posts",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.page || 1 }}",
                "limit": "={{ $parameter.limit || 10 }}",
                "status": "={{ $parameter.status || undefined }}",
                "platform": "={{ $parameter.platform || undefined }}"
              },
              "url": "/posts",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get post",
          "routing": {
            "request": {
              "url": "=/posts/{{ $parameter.postId }}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create post",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/posts",
              "method": "POST"
            }
          }
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update post",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/posts/{{ $parameter.postId }}",
              "method": "PUT"
            }
          }
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete post",
          "routing": {
            "request": {
              "url": "=/posts/{{ $parameter.postId }}",
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Retry",
          "value": "retry",
          "action": "Retry failed post",
          "routing": {
            "request": {
              "url": "=/posts/{{ $parameter.postId }}/retry",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "posts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload media",
          "routing": {
            "request": {
              "url": "/media",
              "body": "={{ $parameter.files?.items?.reduce((acc, item) => { acc[`file_${Date.now()}_${Math.random()}`] = { value: item.data, options: { filename: item.filename || 'upload', contentType: item.mimeType || 'application/octet-stream' } }; return acc; }, {}) || {} }}",
              "method": "POST",
              "headers": {
                "Content-Type": "multipart/form-data"
              }
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "media"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List social accounts",
          "routing": {
            "request": {
              "qs": {
                "profileId": "={{ $parameter.profileId || undefined }}"
              },
              "url": "/accounts",
              "method": "GET"
            }
          }
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Disconnect account",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}",
              "method": "DELETE"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "accounts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "connect",
      "options": [
        {
          "name": "Connect Platform",
          "value": "connect",
          "action": "Connect social platform",
          "routing": {
            "request": {
              "qs": {
                "profileId": "={{ $parameter.profileId }}",
                "redirect_url": "={{ $parameter.redirectUrl || undefined }}"
              },
              "url": "=/connect/{{ $parameter.platform }}",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "connect"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getStats",
      "options": [
        {
          "name": "Get Stats",
          "value": "getStats",
          "action": "Get usage statistics",
          "routing": {
            "request": {
              "url": "/usage-stats",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "usage"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listPages",
      "options": [
        {
          "name": "List Pages",
          "value": "listPages",
          "action": "List Facebook pages",
          "routing": {
            "request": {
              "qs": {
                "profileId": "={{ $parameter.profileId }}",
                "tempToken": "={{ $parameter.tempToken }}"
              },
              "url": "/connect/facebook/select-page",
              "method": "GET"
            }
          }
        },
        {
          "name": "Select Page",
          "value": "selectPage",
          "action": "Select Facebook page",
          "routing": {
            "request": {
              "url": "/connect/facebook/select-page",
              "body": {
                "pageId": "={{ $parameter.pageId }}",
                "profileId": "={{ $parameter.profileId }}",
                "tempToken": "={{ $parameter.tempToken }}",
                "userProfile": "={{ { id: $parameter.userProfileId || '', name: $parameter.userProfileName || '', email: $parameter.userProfileEmail || '', picture: $parameter.userProfilePicture || '', accessToken: $parameter.userProfileAccessToken || '' } }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Update Page",
          "value": "updatePage",
          "action": "Update Facebook page",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}/facebook-page",
              "body": {
                "selectedPageId": "={{ $parameter.selectedPageId }}"
              },
              "method": "PUT"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "facebook"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "updateOrganization",
      "options": [
        {
          "name": "Update Organization",
          "value": "updateOrganization",
          "action": "Update LinkedIn organization",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}/linkedin-organization",
              "body": {
                "accountType": "={{ $parameter.accountType }}",
                "selectedOrganization": "={{ { id: $parameter.organizationId || '', urn: $parameter.organizationUrn || '', name: $parameter.organizationName || '', logoUrl: $parameter.organizationLogoUrl || '', description: $parameter.organizationDescription || '' } }}"
              },
              "method": "PUT"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "linkedin"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "cloneConnection",
      "options": [
        {
          "name": "Clone Connection",
          "value": "cloneConnection",
          "action": "Clone connection to profile",
          "routing": {
            "request": {
              "url": "=/profiles/{{ $parameter.profileId }}/clone-connection",
              "body": {
                "targetPageId": "={{ $parameter.targetPageId || undefined }}",
                "targetPageName": "={{ $parameter.targetPageName || undefined }}",
                "sourceAccountId": "={{ $parameter.sourceAccountId }}",
                "targetAccountType": "={{ $parameter.targetAccountType || undefined }}",
                "targetOrganizationId": "={{ $parameter.targetOrganizationId || undefined }}",
                "targetOrganizationUrn": "={{ $parameter.targetOrganizationUrn || undefined }}",
                "targetPageAccessToken": "={{ $parameter.targetPageAccessToken || undefined }}",
                "targetOrganizationName": "={{ $parameter.targetOrganizationName || undefined }}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "clone"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "List",
      "value": "list",
      "action": "List profiles",
      "routing": {
        "request": {
          "url": "/profiles",
          "method": "GET"
        }
      }
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create profile",
      "routing": {
        "request": {
          "url": "/profiles",
          "body": {
            "name": "={{ $parameter.name }}",
            "color": "={{ $parameter.color || '' }}",
            "description": "={{ $parameter.description || '' }}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update profile",
      "routing": {
        "request": {
          "url": "=/profiles/{{ $parameter.profileId }}",
          "body": {
            "name": "={{ $parameter.name || undefined }}",
            "color": "={{ $parameter.color || undefined }}",
            "description": "={{ $parameter.description || undefined }}"
          },
          "method": "PUT"
        }
      }
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete profile",
      "routing": {
        "request": {
          "url": "=/profiles/{{ $parameter.profileId }}",
          "method": "DELETE"
        }
      }
    },
    {
      "name": "List",
      "value": "list",
      "action": "List posts",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.page || 1 }}",
            "limit": "={{ $parameter.limit || 10 }}",
            "status": "={{ $parameter.status || undefined }}",
            "platform": "={{ $parameter.platform || undefined }}"
          },
          "url": "/posts",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get post",
      "routing": {
        "request": {
          "url": "=/posts/{{ $parameter.postId }}",
          "method": "GET"
        }
      }
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create post",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/posts",
          "method": "POST"
        }
      }
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update post",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/posts/{{ $parameter.postId }}",
          "method": "PUT"
        }
      }
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete post",
      "routing": {
        "request": {
          "url": "=/posts/{{ $parameter.postId }}",
          "method": "DELETE"
        }
      }
    },
    {
      "name": "Retry",
      "value": "retry",
      "action": "Retry failed post",
      "routing": {
        "request": {
          "url": "=/posts/{{ $parameter.postId }}/retry",
          "method": "POST"
        }
      }
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload media",
      "routing": {
        "request": {
          "url": "/media",
          "body": "={{ $parameter.files?.items?.reduce((acc, item) => { acc[`file_${Date.now()}_${Math.random()}`] = { value: item.data, options: { filename: item.filename || 'upload', contentType: item.mimeType || 'application/octet-stream' } }; return acc; }, {}) || {} }}",
          "method": "POST",
          "headers": {
            "Content-Type": "multipart/form-data"
          }
        }
      }
    },
    {
      "name": "List",
      "value": "list",
      "action": "List social accounts",
      "routing": {
        "request": {
          "qs": {
            "profileId": "={{ $parameter.profileId || undefined }}"
          },
          "url": "/accounts",
          "method": "GET"
        }
      }
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Disconnect account",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}",
          "method": "DELETE"
        }
      }
    },
    {
      "name": "Connect Platform",
      "value": "connect",
      "action": "Connect social platform",
      "routing": {
        "request": {
          "qs": {
            "profileId": "={{ $parameter.profileId }}",
            "redirect_url": "={{ $parameter.redirectUrl || undefined }}"
          },
          "url": "=/connect/{{ $parameter.platform }}",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get Stats",
      "value": "getStats",
      "action": "Get usage statistics",
      "routing": {
        "request": {
          "url": "/usage-stats",
          "method": "GET"
        }
      }
    },
    {
      "name": "List Pages",
      "value": "listPages",
      "action": "List Facebook pages",
      "routing": {
        "request": {
          "qs": {
            "profileId": "={{ $parameter.profileId }}",
            "tempToken": "={{ $parameter.tempToken }}"
          },
          "url": "/connect/facebook/select-page",
          "method": "GET"
        }
      }
    },
    {
      "name": "Select Page",
      "value": "selectPage",
      "action": "Select Facebook page",
      "routing": {
        "request": {
          "url": "/connect/facebook/select-page",
          "body": {
            "pageId": "={{ $parameter.pageId }}",
            "profileId": "={{ $parameter.profileId }}",
            "tempToken": "={{ $parameter.tempToken }}",
            "userProfile": "={{ { id: $parameter.userProfileId || '', name: $parameter.userProfileName || '', email: $parameter.userProfileEmail || '', picture: $parameter.userProfilePicture || '', accessToken: $parameter.userProfileAccessToken || '' } }}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Update Page",
      "value": "updatePage",
      "action": "Update Facebook page",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}/facebook-page",
          "body": {
            "selectedPageId": "={{ $parameter.selectedPageId }}"
          },
          "method": "PUT"
        }
      }
    },
    {
      "name": "Update Organization",
      "value": "updateOrganization",
      "action": "Update LinkedIn organization",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}/linkedin-organization",
          "body": {
            "accountType": "={{ $parameter.accountType }}",
            "selectedOrganization": "={{ { id: $parameter.organizationId || '', urn: $parameter.organizationUrn || '', name: $parameter.organizationName || '', logoUrl: $parameter.organizationLogoUrl || '', description: $parameter.organizationDescription || '' } }}"
          },
          "method": "PUT"
        }
      }
    },
    {
      "name": "Clone Connection",
      "value": "cloneConnection",
      "action": "Clone connection to profile",
      "routing": {
        "request": {
          "url": "=/profiles/{{ $parameter.profileId }}/clone-connection",
          "body": {
            "targetPageId": "={{ $parameter.targetPageId || undefined }}",
            "targetPageName": "={{ $parameter.targetPageName || undefined }}",
            "sourceAccountId": "={{ $parameter.sourceAccountId }}",
            "targetAccountType": "={{ $parameter.targetAccountType || undefined }}",
            "targetOrganizationId": "={{ $parameter.targetOrganizationId || undefined }}",
            "targetOrganizationUrn": "={{ $parameter.targetOrganizationUrn || undefined }}",
            "targetPageAccessToken": "={{ $parameter.targetPageAccessToken || undefined }}",
            "targetOrganizationName": "={{ $parameter.targetOrganizationName || undefined }}"
          },
          "method": "POST"
        }
      }
    }
  ]

npm_readme:
  # n8n-nodes-late

  <img src="https://raw.githubusercontent.com/getlatedev/n8n-nodes-late/master/late/late-logo.png" alt="LATE Logo" width="200"/>

  An n8n community node for the [LATE API](https://getlate.dev) - the professional social media management platform.

  **Schedule and manage social media posts across multiple platforms:**
  - 🐦 **Twitter/X** - Posts, threads, and automation
  - 📸 **Instagram** - Posts, Stories, Reels with Business account support
  - 👤 **Facebook** - Page management and posting
  - 💼 **LinkedIn** - Personal and company page posting
  - 🎵 **TikTok** - Direct video posting with privacy controls
  - 📹 **YouTube** - Videos and Shorts with custom thumbnails
  - 🧵 **Threads** - Meta's social platform

  ## Version History

  - **1.0.0** - Initial release with comprehensive LATE API integration

  ## Installation

  ### From n8n Community Nodes Panel (Recommended)

  1. Go to **Settings** → **Community Nodes** in your n8n instance
  2. Select **Install** and enter `n8n-nodes-late`
  3. Click **Install** and restart n8n
  4. The LATE node will appear in your node palette

  ### From npm

  ```bash
  npm install n8n-nodes-late
  ```

  ### From Source

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

  ## Prerequisites

  1. **LATE Account**: Sign up at [getlate.dev](https://getlate.dev)
  2. **API Key**: Generate an API key from your LATE dashboard
  3. **Social Accounts**: Connect your social media accounts to LATE profiles

  ## Credentials Setup

  1. Add a new credential in n8n
  2. Search for "LATE API"
  3. Enter your API key from the LATE dashboard

  ## Quick Start

  ### 1. Create a Profile

  Profiles organize your social media accounts by brand, client, or purpose.

  ```json
  {
    "resource": "profiles",
    "operation": "create",
    "name": "Personal Brand",
    "description": "My personal social media accounts",
    "color": "#4ade80"
  }
  ```

  ### 2. Connect Social Accounts

  Connect your social media platforms to the profile:

  ```json
  {
    "resource": "connect",
    "operation": "connect",
    "platform": "twitter",
    "profileId": "profile_123_abc"
  }
  ```

  ### 3. Schedule a Post

  Create posts across multiple platforms:

  ```json
  {
    "resource": "posts",
    "operation": "create",
    "content": "Hello, world! 🌍 #automation",
    "platforms": [
      {"platform": "twitter", "accountId": "twitter_account_123"},
      {"platform": "linkedin", "accountId": "linkedin_account_456"}
    ],
    "scheduledFor": "2024-01-15T16:00:00",
    "timezone": "America/New_York"
  }
  ```

  ## Supported Operations

  ### Profiles
  - **List** - Get all profiles
  - **Create** - Create new profile (subject to plan limits)
  - **Update** - Update profile details
  - **Delete** - Delete profile (must be empty)

  ### Posts
  - **List** - Get posts with pagination and filters
  - **Get** - Get specific post details
  - **Create** - Schedule or publish posts
  - **Update** - Edit draft/scheduled posts
  - **Delete** - Delete posts (published posts cannot be deleted)
  - **Retry** - Retry failed posts

  ### Media
  - **Upload** - Upload images/videos up to 5GB

  ### Social Accounts
  - **List** - View connected accounts
  - **Delete** - Disconnect accounts

  ### Connect Platform
  - **Connect** - Initiate OAuth for new platforms

  ### Usage Statistics
  - **Get Stats** - Monitor usage against plan limits

  ### Facebook Management
  - **List Pages** - Get available Facebook pages
  - **Select Page** - Connect specific page
  - **Update Page** - Change active page

  ### LinkedIn Management
  - **Update Organization** - Switch between personal/company posting

  ### Clone Connection
  - **Clone Connection** - Reuse OAuth across profiles

  ## Advanced Features

  ### Platform-Specific Settings

  #### Twitter/X Threads
  Create multi-tweet threads:

  ```json
  {
    "platforms": [
      {
        "platform": "twitter",
        "accountId": "twitter_account_123",
        "platformSpecificData": {
          "threadItems": [
            {"content": "Tweet 1 - Introduction 🧵"},
            {"content": "Tweet 2 - Details"},
            {"content": "Tweet 3 - Conclusion"}
          ]
        }
      }
    ]
  }
  ```

  #### Instagram Stories
  Post to Instagram Stories:

  ```json
  {
    "platforms": [
      {
        "platform": "instagram", 
        "accountId": "instagram_account_123",
        "platformSpecificData": {
          "contentType": "story"
        }
      }
    ],
    "mediaItems": [
      {"type": "image", "url": "https://your-story-image.jpg"}
    ]
  }
  ```

  #### TikTok Privacy Settings
  Control TikTok post privacy:

  ```json
  {
    "platforms": [
      {
        "platform": "tiktok",
        "accountId": "tiktok_account_123", 
        "platformSpecificData": {
          "tiktokSettings": {
            "privacy_level": "PUBLIC_TO_EVERYONE",
            "allow_comment": true,
            "allow_duet": true,
            "allow_stitch": true
          }
        }
      }
    ]
  }
  ```

  #### YouTube Settings
  Add custom thumbnails and first comments:

  ```json
  {
    "platforms": [
      {
        "platform": "youtube",
        "accountId": "youtube_account_123",
        "platformSpecificData": {
          "firstComment": "Thanks for watching! Don't forget to like and subscribe! 🎥"
        }
      }
    ],
    "mediaItems": [
      {
        "type": "video", 
        "url": "https://your-video.mp4",
        "thumbnail": "https://your-custom-thumbnail.jpg"
      }
    ],
    "tags": ["tutorial", "automation", "n8n"]
  }
  ```

  ### Media Upload

  Upload files before using in posts:

  ```json
  {
    "resource": "media",
    "operation": "upload",
    "files": [
      {
        "filename": "image.jpg",
        "data": "base64_encoded_data"
      }
    ]
  }
  ```

  For large files (>4MB), use the `@vercel/blob` client-upload method as described in the [LATE API documentation](https://getlate.dev/docs).

  ## Platform Requirements

  - **Instagram**: Business account required (Personal/Creator accounts not supported)
  - **Facebook**: Must be admin of Facebook pages
  - **LinkedIn**: Company pages require admin access
  - **TikTok**: Creator account recommended
  - **YouTube**: Channel access required
  - **Twitter/X**: Standard account
  - **Threads**: Standard account

  ## Plan Limits

  LATE enforces usage limits based on your plan:

  - **Free**: 10 uploads/month, 2 profiles
  - **Basic**: 120 uploads/month, 10 profiles  
  - **Professional**: Unlimited uploads, 50 profiles
  - **Advanced**: Unlimited uploads, 150 profiles
  - **Enterprise**: Unlimited uploads, 250 profiles

  Monitor usage with the Usage Statistics operation.

  ## Error Handling

  The node handles various error scenarios:

  - **403**: Plan limits exceeded
  - **401**: Invalid API key
  - **400**: Invalid request data
  - **404**: Resource not found

  Check the node output for detailed error messages and upgrade suggestions.

  ## Development

  ### Prerequisites
  - Node.js 18+
  - TypeScript
  - n8n development environment

  ### Setup
  ```bash
  git clone https://github.com/getlatedev/n8n-nodes-late.git
  cd n8n-nodes-late
  npm install
  npm run build
  ```

  ### Linting
  ```bash
  npm run lint        # Check for issues
  npm run lintfix     # Fix automatically
  ```

  ## Support

  - **Documentation**: [LATE API Docs](https://getlate.dev/docs)
  - **Dashboard**: [getlate.dev/dashboard](https://getlate.dev/dashboard)
  - **Email**: [miki@getlate.dev](mailto:miki@getlate.dev)
  - **Issues**: [GitHub Issues](https://github.com/getlatedev/n8n-nodes-late/issues)

  ## License

  MIT

  ## Contributing

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

  ---

  **Made with ❤️ by the LATE team**

  [Website](https://getlate.dev) • [Documentation](https://getlate.dev/docs) • [Dashboard](https://getlate.dev/dashboard)

ai_documentation_summary:
  {"purpose":"Provide n8n integration for the LATE social media management API to schedule, publish and manage posts, media, and connected social accounts across multiple platforms (Twitter/X, Instagram, Facebook, LinkedIn, TikTok, YouTube, Threads).","capabilities":["Create, list, get, update, delete, and retry posts (schedule or publish)","Schedule posts across multiple platforms with per-platform settings and timezones","Create and manage Profiles (group social accounts by brand/client)","Upload media (images/videos) — supports files up to 5GB","Support for platform-specific post types: Twitter/X threads, Instagram posts/stories/reels, TikTok videos, YouTube videos/shorts","Platform-specific settings: Twitter thread items, Instagram content type (story), TikTok privacy/comment/duet/stitch controls, YouTube thumbnails and first comment, tags","List and delete connected social accounts","Initiate OAuth connect flow for platforms (Connect Platform)","Clone OAuth connections across profiles","Facebook page management (list, select, update pages)"],"authentication":"API key required (LATE API key configured in n8n credentials)","commonUseCases":["Schedule and publish the same post across multiple social platforms at a scheduled time","Automate creation of Twitter/X threads","Post Instagram Stories or Reels (Business accounts) with media","Upload large video files and publish to TikTok or YouTube with custom thumbnails and privacy settings","Manage brand/client profiles and connected social accounts (connect/disconnect accounts, select Facebook pages, switch LinkedIn org)"],"limitations":["Published posts cannot be deleted (only drafts/scheduled posts can be deleted)","Profiles must be empty before they can be deleted","Profile creation and some features are subject to plan limits","Instagram features note: Business account support required for some actions","Large media uploads (>4MB) require special client-upload (@vercel/blob) workflow per LATE API docs"],"relatedNodes":[]}


