# nodes

node_type: @decisionrules/n8n-nodes-decisionrules.decisionRules
package_name: @decisionrules/n8n-nodes-decisionrules
display_name: DecisionRules
description: DecisionRules Actions
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: decisionrules
author_github_url: https://github.com/decisionrules/n8n-nodes-decisionrules.git
npm_package_name: @decisionrules/n8n-nodes-decisionrules
npm_version: 1.0.5
community_fetched_at: 2026-07-14T14:40:33.308Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "solveRes",
      "options": [
        {
          "name": "Job",
          "value": "jobRes"
        },
        {
          "name": "Management Folder",
          "value": "managementFolderRes"
        },
        {
          "name": "Management Rule",
          "value": "managementRuleRes"
        },
        {
          "name": "Management Tag",
          "value": "managementTagRes"
        },
        {
          "name": "Management Tool",
          "value": "managementToolsRes"
        },
        {
          "name": "Solve",
          "value": "solveRes"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "solve",
      "options": [
        {
          "name": "Solve Rule",
          "value": "solve",
          "action": "Solve rule",
          "description": "Takes the node input, sends it as data to the defined host, and solves a rule"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "solveRes"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "startJob",
      "options": [
        {
          "name": "Start Job",
          "value": "startJob",
          "action": "Start a job",
          "description": "Takes the node input, sends it as data to the defined host, and starts a job for an integration flow rule"
        },
        {
          "name": "Cancel Job",
          "value": "cancelJob",
          "action": "Cancel a job",
          "description": "Cancels a running job"
        },
        {
          "name": "Get Job Info",
          "value": "jobInfo",
          "action": "Get job info",
          "description": "Retrieves information about a job's status (e.g., success, failure, or in process) based on its ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "jobRes"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getRule",
      "options": [
        {
          "name": "Create New Rule Version",
          "value": "createNewRuleVersion",
          "action": "Create a new rule version",
          "description": "Creates a new version of an existing rule"
        },
        {
          "name": "Create Rule",
          "value": "createRule",
          "action": "Create a rule",
          "description": "Creates a new rule"
        },
        {
          "name": "Delete Rule",
          "value": "deleteRule",
          "action": "Delete a rule",
          "description": "Deletes a specific rule or a version of a rule"
        },
        {
          "name": "Get Rule",
          "value": "getRule",
          "action": "Get a rule",
          "description": "Retrieves a specific rule by its ID or alias"
        },
        {
          "name": "Get Rules for Space",
          "value": "getRulesForSpace",
          "action": "Get all rules for a space",
          "description": "Retrieves all rules within the configured space"
        },
        {
          "name": "Lock Rule",
          "value": "lockRule",
          "action": "Lock or unlock a rule",
          "description": "Locks or unlocks a rule to prevent edits"
        },
        {
          "name": "Update Rule",
          "value": "updateRule",
          "action": "Update a rule",
          "description": "Updates the content or properties of a rule"
        },
        {
          "name": "Update Rule Status",
          "value": "updateRuleStatus",
          "action": "Update a rule s status",
          "description": "Changes a rule's status (e.g., to published or pending)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "managementRuleRes"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getTags",
      "options": [
        {
          "name": "Delete Tags",
          "value": "deleteTags",
          "action": "Delete tags from a rule",
          "description": "Removes one or more tags from a rule"
        },
        {
          "name": "Get Rules by Tags",
          "value": "getTags",
          "action": "Get tags for a rule",
          "description": "Retrieves all tags associated with a rule"
        },
        {
          "name": "Update Tags",
          "value": "updateTags",
          "action": "Update tags for a rule",
          "description": "Adds or overwrites tags for a rule"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "managementTagRes"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getFolderStructure",
      "options": [
        {
          "name": "Create Folder",
          "value": "createFolder",
          "action": "Create a folder",
          "description": "Creates a new folder at a specified location"
        },
        {
          "name": "Delete Folder",
          "value": "deleteFolder",
          "action": "Delete a folder",
          "description": "Deletes a folder and optionally all its contents"
        },
        {
          "name": "Export Folder",
          "value": "exportFolder",
          "action": "Export a folder",
          "description": "Exports the contents of a folder as a JSON object"
        },
        {
          "name": "Find Folder or Rule",
          "value": "findFolderOrRule",
          "action": "Find a folder or rule",
          "description": "Finds a folder or rule by various attributes"
        },
        {
          "name": "Get Folder Structure",
          "value": "getFolderStructure",
          "action": "Get the folder structure",
          "description": "Retrieves the folder and rule hierarchy"
        },
        {
          "name": "Import Folder",
          "value": "importFolder",
          "action": "Import a folder",
          "description": "Imports a folder structure from a JSON object"
        },
        {
          "name": "Move Folder",
          "value": "moveFolder",
          "action": "Move a folder or rule",
          "description": "Moves a folder or rule to a different location"
        },
        {
          "name": "Rename Folder",
          "value": "renameFolder",
          "action": "Rename a folder",
          "description": "Renames an existing folder"
        },
        {
          "name": "Update Node Folder Structure",
          "value": "updateNodeFolderStructure",
          "action": "Update a node folder structure",
          "description": "Updates the structure of a folder or node"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "managementFolderRes"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "findDependencies",
      "options": [
        {
          "name": "Find Dependencies",
          "value": "findDependencies",
          "action": "Find rule dependencies",
          "description": "Finds all dependencies for a given rule"
        },
        {
          "name": "Find Duplicates",
          "value": "findDuplicates",
          "action": "Find duplicates in a rule",
          "description": "Finds duplicate conditions within a rule"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "managementToolsRes"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Solve Rule",
      "value": "solve",
      "action": "Solve rule",
      "description": "Takes the node input, sends it as data to the defined host, and solves a rule",
      "resource": "solveRes"
    },
    {
      "name": "Start Job",
      "value": "startJob",
      "action": "Start a job",
      "description": "Takes the node input, sends it as data to the defined host, and starts a job for an integration flow rule",
      "resource": "jobRes"
    },
    {
      "name": "Cancel Job",
      "value": "cancelJob",
      "action": "Cancel a job",
      "description": "Cancels a running job",
      "resource": "jobRes"
    },
    {
      "name": "Get Job Info",
      "value": "jobInfo",
      "action": "Get job info",
      "description": "Retrieves information about a job's status (e.g., success, failure, or in process) based on its ID",
      "resource": "jobRes"
    },
    {
      "name": "Create New Rule Version",
      "value": "createNewRuleVersion",
      "action": "Create a new rule version",
      "description": "Creates a new version of an existing rule",
      "resource": "managementRuleRes"
    },
    {
      "name": "Create Rule",
      "value": "createRule",
      "action": "Create a rule",
      "description": "Creates a new rule",
      "resource": "managementRuleRes"
    },
    {
      "name": "Delete Rule",
      "value": "deleteRule",
      "action": "Delete a rule",
      "description": "Deletes a specific rule or a version of a rule",
      "resource": "managementRuleRes"
    },
    {
      "name": "Get Rule",
      "value": "getRule",
      "action": "Get a rule",
      "description": "Retrieves a specific rule by its ID or alias",
      "resource": "managementRuleRes"
    },
    {
      "name": "Get Rules for Space",
      "value": "getRulesForSpace",
      "action": "Get all rules for a space",
      "description": "Retrieves all rules within the configured space",
      "resource": "managementRuleRes"
    },
    {
      "name": "Lock Rule",
      "value": "lockRule",
      "action": "Lock or unlock a rule",
      "description": "Locks or unlocks a rule to prevent edits",
      "resource": "managementRuleRes"
    },
    {
      "name": "Update Rule",
      "value": "updateRule",
      "action": "Update a rule",
      "description": "Updates the content or properties of a rule",
      "resource": "managementRuleRes"
    },
    {
      "name": "Update Rule Status",
      "value": "updateRuleStatus",
      "action": "Update a rule s status",
      "description": "Changes a rule's status (e.g., to published or pending)",
      "resource": "managementRuleRes"
    },
    {
      "name": "Delete Tags",
      "value": "deleteTags",
      "action": "Delete tags from a rule",
      "description": "Removes one or more tags from a rule",
      "resource": "managementTagRes"
    },
    {
      "name": "Get Rules by Tags",
      "value": "getTags",
      "action": "Get tags for a rule",
      "description": "Retrieves all tags associated with a rule",
      "resource": "managementTagRes"
    },
    {
      "name": "Update Tags",
      "value": "updateTags",
      "action": "Update tags for a rule",
      "description": "Adds or overwrites tags for a rule",
      "resource": "managementTagRes"
    },
    {
      "name": "Create Folder",
      "value": "createFolder",
      "action": "Create a folder",
      "description": "Creates a new folder at a specified location",
      "resource": "managementFolderRes"
    },
    {
      "name": "Delete Folder",
      "value": "deleteFolder",
      "action": "Delete a folder",
      "description": "Deletes a folder and optionally all its contents",
      "resource": "managementFolderRes"
    },
    {
      "name": "Export Folder",
      "value": "exportFolder",
      "action": "Export a folder",
      "description": "Exports the contents of a folder as a JSON object",
      "resource": "managementFolderRes"
    },
    {
      "name": "Find Folder or Rule",
      "value": "findFolderOrRule",
      "action": "Find a folder or rule",
      "description": "Finds a folder or rule by various attributes",
      "resource": "managementFolderRes"
    },
    {
      "name": "Get Folder Structure",
      "value": "getFolderStructure",
      "action": "Get the folder structure",
      "description": "Retrieves the folder and rule hierarchy",
      "resource": "managementFolderRes"
    },
    {
      "name": "Import Folder",
      "value": "importFolder",
      "action": "Import a folder",
      "description": "Imports a folder structure from a JSON object",
      "resource": "managementFolderRes"
    },
    {
      "name": "Move Folder",
      "value": "moveFolder",
      "action": "Move a folder or rule",
      "description": "Moves a folder or rule to a different location",
      "resource": "managementFolderRes"
    },
    {
      "name": "Rename Folder",
      "value": "renameFolder",
      "action": "Rename a folder",
      "description": "Renames an existing folder",
      "resource": "managementFolderRes"
    },
    {
      "name": "Update Node Folder Structure",
      "value": "updateNodeFolderStructure",
      "action": "Update a node folder structure",
      "description": "Updates the structure of a folder or node",
      "resource": "managementFolderRes"
    },
    {
      "name": "Find Dependencies",
      "value": "findDependencies",
      "action": "Find rule dependencies",
      "description": "Finds all dependencies for a given rule",
      "resource": "managementToolsRes"
    },
    {
      "name": "Find Duplicates",
      "value": "findDuplicates",
      "action": "Find duplicates in a rule",
      "description": "Finds duplicate conditions within a rule",
      "resource": "managementToolsRes"
    }
  ]

npm_readme:
  # n8n-nodes-decisionrules

  This is an n8n community node that integrates DecisionRules with your n8n workflows, so you can execute business rules, run integration flows, and automate complex logic-based tasks.

  [DecisionRules](https://www.decisionrules.io) is a no-code business rules engine that allows you to manage and execute complex logic without programming. n8n is a fair-code licensed tool for workflow automation that allows you to connect various services.

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

  ---

  ## Table of contents

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

  ---

  ## Installation (self-hosted)

  To install the DecisionRules 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: `@decisionrules/n8n-nodes-decisionrules` to install the latest version. To install a specific version (e.g 0.4.4) enter `@decisionrules/n8n-nodes-decisionrules@0.4.4`. All versions are available [here](https://www.npmjs.com/package/@decisionrules/n8n-nodes-decisionrules?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 **DecisionRules** in the community node registry.
  3. Click **Install node** to add the decisionrules 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 DecisionRules node, make sure the installation of verified community nodes is enabled. 


  ## Installation (development and contributing) 
  To contribute to our DecisionRules node, you can install the node and link it to your n8n instance. Follow the steps below:

  ### ⚙️ Prerequisites

  - Node.js (recommended: v18.10+)
  - pnpm installed globally

  ---

  ### 1. Initialize n8n locally

  Begin by installing and running n8n to create the necessary configuration directory (`~/.n8n`):

  ```bash
  npm install -g n8n # Skip this step if you already have n8n installed globally
  n8n start # This will generate the ~/.n8n directory
  ```

  ### 2. Clone and build the Node Package

  Install dependencies and build the node:

  ```bash
  pnpm install
  pnpm run build
  ```

  ### 3. Link the custom node to n8n

  Create the `custom` directory inside `~/.n8n` (if it doesn't exist), then symlink your local node package:

  ```bash
  mkdir -p ~/.n8n/custom
  ln -s /full/path/to/n8n-nodes-decisionrules ~/.n8n/custom/n8n-nodes-decisionrules # replace full/path/to with the path to your n8n-nodes-decisionrules directory
  ```

  > **Note:** Use the absolute path in the symlink for compatibility.

  ### 4. Restart n8n

  Now that your custom node is linked, start n8n again:

  ```bash
  n8n start
  ```

  ---

  ### 🔁 Making changes

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

  ```bash
  pnpm run build
  n8n start
  ```

  ---

  ## Operations

  This node supports the following operations:
  ### Rules
  - Solve Rule
  Takes the input data from a previous node and sends it to the DecisionRules API to solve a rule (e.g., decision table, decision tree). The node then outputs the result from the API.
  ### Integration Flows
  - Start Job:
  Takes the input data from a previous node to start a new asynchronous job for a specific Integration Flow rule. The node outputs the job initiation details.
  - Get Job Info:
  Retrieves the status and information (e.g., success, failure, in-process) for a specific job using its Job ID.
  - Cancel Job:
  Cancels a running or waiting job using its Job ID.

  ### Management
  The Management operations allow you to programmatically manage your DecisionRules rules, folders, and tags.

  #### Rule Management
  - **Get Rule**: Retrieves all information about a rule, including its content, version, input/output schemas. Can fetch by rule ID, alias, or path.
  - **Create Rule**: Creates a new rule based on the request body.
  - **Create New Rule Version**: Creates a new version of an existing rule with modifications.
  - **Update Rule**: Modifies an existing rule (cannot change rule ID, version, alias, or last update date).
  - **Update Rule Status**: Changes rule status between 'pending' and 'published'.
  - **Delete Rule**: Deletes a rule by ID, alias, or path.
  - **Lock Rule**: Locks or unlocks a rule to prevent/allow modifications.
  - **Get Rules For Space**: Retrieves all rules and rule flows in the current space.

  #### Rule Analysis
  - **Find Dependencies**: Identifies all dependencies for a specific rule.
  - **Find Duplicates**: Finds duplicate rules in decision tables.

  #### Tag Management
  - **Get Tags**: Retrieves all rules/rule flows with specific tags.
  - **Update Tags**: Adds tags to a rule (all versions or specific version).
  - **Delete Tags**: Removes tags from a rule (all versions or specific version).

  #### Folder Management
  - **Get Folder Structure**: Retrieves the folder hierarchy and contents by node ID or path.
  - **Create Folder**: Creates a new folder structure under a target location.
  - **Update Node Folder Structure**: Modifies existing folder structure and moves rules.
  - **Delete Folder**: Deletes a folder and optionally all its contents.
  - **Rename Folder**: Changes the name of a folder.
  - **Move Folder**: Moves folders and/or rules to a different parent location.
  - **Export Folder**: Exports a folder with all its rules.
  - **Import Folder**: Imports a folder structure with rules into a target location.
  - **Find Folder or Rule**: Searches for folders and rules by various attributes (name, ID, tags, type, etc.).

  ---

  ## Credentials

  To use this node, you will need to authenticate with the DecisionRules Solve API and specify host URL.

  To configure your credentials:
  1.  Log in to your DecisionRules account.
  2.  To specify the host correctly you can use the URL that you logged in by and you change app to api.
  (app.decisionrules.io -> api.decisionrules.io)
  2.  Navigate to **Space > API Keys > Solver** to find your API Token.
  3.  In n8n, go to the Credentials section and add new credentials for the 'DecisionRules API'.
  4.  Enter your API Token and host in the respective field.

  ### For Management API (Management Operations)

  To configure your Management API credentials:
  1. Log in to your DecisionRules account.
  2. Use the same host format as above (e.g., `api.decisionrules.io`).
  3. Navigate to **Space > API Keys > Management** to find your Management API Token.
  4. In n8n, add the Management API credentials.
  5. Enter your Management API Token and host in the respective fields.


  ---

  ## Compatibility

  This node has been tested with n8n version 1.16.3.

  ---

  ## Usage

  This node is designed to integrate your n8n workflows with the DecisionRules engine. Here's how to understand its behavior:

  ### Operations Using Input Data (`Solve Rule`, `Start Job`, `Create Rule`, `Create New Rule Version`, `Update Rule`, `Create Folder`, `Update Node Folder Structure`, `Import Folder`)

  These operations process data from previous nodes in your workflow. The JSON output of a preceding node will be used as the input payload for the DecisionRules API call.

  **Example:** You can have an 'HTTP Request' node that fetches user data. When you connect it to the DecisionRules node and select the `Solve Rule` operation, the fetched user data is sent to your rule for evaluation. The result of that rule is then available as the output of the DecisionRules node for the next steps in your workflow.

  **Management Example:** You can prepare a rule definition in JSON format in a previous node, then use `Create Rule` to add it to your DecisionRules space.

  ### Operations Using Node Parameters (All other operations)

  Operations like `Get Job Info`, `Cancel Job`, `Get Rule`, `Delete Rule`, etc. do **not** use the data from previous nodes. Instead, they rely on parameters you configure directly in the node's properties panel in the n8n UI, such as `Job ID`, `Rule ID`, `Node ID`, or `Path`.

  **Example:** After using a `Start Job` operation, you can use a 'Wait' node and then a `Get Job Info` node to check the status of that job. You would pass the `jobId` from the `Start Job` output into the 'Job ID' field of the `Get Job Info` node.

  ---

  ## Troubleshooting

  ### Common issues

  ---

  ### Authentication errors
  - Verify your **Host** is correct (e.g., `https://api.decisionrules.io`).
  - Verify your **Solver API Key** is correct.
  - Verify your **Management API Key** is correct for Management operations.

  ---

  ### Resource Not Found
  - Verify the **Rule ID**, **rule alias**, or **Job ID** is correct.
  - Check if the resource exists in the **DecisionRules space** associated with your API key.
  - Ensure you have access to the resource with the provided key.

  ---

  ### Operation failures
  - Check that the **input parameters** from the previous node are a valid JSON object.
  - For **Solve Rule** and **Start Job**, ensure the incoming data structure matches the expected input model for your rule in DecisionRules.
  - For **Create Rule**, **Update Rule**, and **Create New Rule Version**, ensure the rule definition follows the correct format.
  - For **Folder operations**, verify the folder structure and node IDs are valid.
  - Review the **error message** in the n8n output panel for detailed error messages from the DecisionRules API.

  ---

  ## Resources

  * [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [DecisionRules Documentation](https://docs.decisionrules.io/doc)

  ---

ai_documentation_summary:
  {"purpose":"A community node that integrates the DecisionRules business rules engine into n8n workflows to execute logic, manage rules, and automate complex decision-making tasks.","capabilities":["Execute decision rules (decision tables, decision trees)","Start asynchronous integration flow jobs","Retrieve job status and information","Cancel running or waiting jobs","Create, update, and delete rules","Manage rule versions and statuses (pending/published)","Lock and unlock rules","Find rule dependencies and duplicates","Manage rule tags and folders","Import and export folder structures with rules"],"authentication":"API key required (implied by 'DecisionRules API' references; specific credential setup not detailed in README)","commonUseCases":["Automating business logic decisions within n8n workflows","Managing and organizing business rules without coding","Monitoring the status of asynchronous rule execution jobs","Organizing rules into folders and applying tags for version control"],"limitations":["Community node (requires agreement to risks)","Requires external DecisionRules API access","Some rule updates cannot change rule ID, version, alias, or last update date"],"relatedNodes":["HTTP Request","Code","JSON"]}


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

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

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

npm_readme:
  # n8n-nodes-hedy

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

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

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

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

  ## 🚀 Installation

  ### Community Nodes (Recommended)

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

  ### Manual Installation

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

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

  ### Docker Installation

  Add the following to your docker-compose.yml:

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

  ## 🔑 Authentication

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

  2. In n8n:
     - Go to Credentials
     - Create new "Hedy" credential
     - Paste your API key
     - Select your **Region** (US or EU) if your account uses EU data residency
     - Click "Save"

  ## 📦 Nodes Included

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

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

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

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

  - **Todos**
    - Get Todo - Retrieve a specific todo by ID
    - Get Many Todos - List all todo items
    - Get Todos by Session - Get todos for a specific session

  - **Topics**
    - Create Topic - Create a new topic
    - Get Topic - Retrieve a specific topic
    - Get Many Topics - List all topics
    - Get Topic Sessions - Get sessions for a topic
    - Update Topic - Modify a topic
    - Delete Topic - Remove a topic

  - **Contexts**
    - Create, Get, Get Many, Update, Delete session contexts

  ## 🎯 Example Workflows

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

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

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

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

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

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

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

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

  ## 📊 Data Structures

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

  > **Note:** `cleaned_transcript` and `cleaned_at` are `null` when the transcript has not yet been cleaned. `session_notes` contains rich text in Parchment JSON (Delta) format.

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

  > **Note:** The list endpoint (`Get Many`) returns summary fields only (`highlightId`, `sessionId`, `timestamp`, `title`). The detail endpoint (`Get`) returns all fields.

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

  ## ⚙️ Configuration

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

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

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

  ## 🔒 Security

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

  1. The signature is an HMAC SHA-256 hash of the request body
  2. Each webhook has a unique signing secret
  3. Signature verification is disabled by default (enable in Options when signing secrets are available)

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

  ## 🐛 Troubleshooting

  ### Common Issues

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

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

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

  ## 📚 Resources

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

  ## 💬 Support

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

  ## 🤝 Contributing

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

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

  ## 📄 License

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

  ## 🙏 Acknowledgments

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

  ## 📈 Version History

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

  ---

  Made with ❤️ by the Hedy team

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


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

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

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

npm_readme:
  # n8n-nodes-camino

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

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

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

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

  ## Installation

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

  ## Operations

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

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

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

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

  ## Credentials

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

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

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

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

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

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

  camino_search
  Structured address-based search

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

  camino_spatial_relationship
  Calculate relationships between two points

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

  camino_place_context
  Get contextual information about a location

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

  camino_journey_planning
  Multi-waypoint route optimization

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

  camino_route_planning
  Point-to-point routing

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

  Interaction Style
  When Users Ask About Places

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

  When Users Need Navigation

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

  When Users Compare Locations

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

  When Users Want Area Information

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

  Response Guidelines
  Location Discovery

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

  Providing Directions

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

  Contextual Advice

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

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

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

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

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

  Never

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

  Tool Selection Strategy

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

  Keep It Helpful

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

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

  ## Compatibility

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

  ## Resources

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

  ## License

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

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


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

updated_at: 2026-07-14 14:40:33
author_name: razorpay-dev
author_github_url: https://github.com/razorpay/n8n-nodes-razorpay.git
npm_package_name: @razorpay/n8n-nodes-razorpay
npm_version: 0.3.0
community_fetched_at: 2026-07-14T14:40:33.311Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Order",
          "value": "order",
          "description": "Work with Razorpay Orders"
        },
        {
          "name": "Payment Link",
          "value": "paymentLink",
          "description": "Work with Razorpay Payment Links"
        },
        {
          "name": "Payment",
          "value": "payment",
          "description": "Work with Razorpay Payments"
        },
        {
          "name": "Refund",
          "value": "refund",
          "description": "Work with Razorpay Refunds"
        },
        {
          "name": "Settlement",
          "value": "settlement",
          "description": "Work with Razorpay Settlements"
        },
        {
          "name": "Invoice",
          "value": "invoice",
          "description": "Work with Razorpay Invoices"
        },
        {
          "name": "Dispute",
          "value": "dispute",
          "description": "Work with Razorpay Disputes"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "cre",
      "options": [
        {
          "name": "Fetch All",
          "value": "fetchAllOrders",
          "action": "Fetch all orders",
          "description": "Retrieve details of all orders with optional filters"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "order"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createPaymentLink",
      "options": [
        {
          "name": "Create",
          "value": "createPaymentLink",
          "action": "Create a payment link",
          "description": "Create a payment link for customers"
        },
        {
          "name": "Fetch",
          "value": "fetchPaymentLink",
          "action": "Fetch a payment link",
          "description": "Fetch payment link details by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "paymentLink"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "fetchPayment",
      "options": [
        {
          "name": "Fetch Payment",
          "value": "fetchPayment",
          "action": "Fetch a payment",
          "description": "Fetch payment details by payment ID"
        },
        {
          "name": "Fetch All",
          "value": "fetchAllPayments",
          "action": "Fetch all payments",
          "description": "Retrieve details of all payments with optional filters"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "payment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "fetchAllRefunds",
      "options": [
        {
          "name": "Fetch All",
          "value": "fetchAllRefunds",
          "action": "Fetch all refunds",
          "description": "Retrieve details of all refunds with optional filters"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "refund"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Fetch Settlement",
          "value": "fetchSettlement",
          "action": "Fetch a settlement",
          "description": "Fetch settlement details by settlement ID"
        },
        {
          "name": "Fetch All",
          "value": "fetchAllSettlements",
          "action": "Fetch all settlements",
          "description": "Retrieve details of all settlements with optional filters"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "settlement"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "fetchInvoicesForSubscription",
      "options": [
        {
          "name": "Fetch Invoices for Subscription",
          "value": "fetchInvoicesForSubscription",
          "action": "Fetch invoices for a subscription",
          "description": "Retrieve all invoices of a subscription"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "invoice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "fetchAllDisputes",
      "options": [
        {
          "name": "Fetch All",
          "value": "fetchAllDisputes",
          "action": "Fetch all disputes",
          "description": "Retrieve all disputes raised by customers"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dispute"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Fetch All",
      "value": "fetchAllOrders",
      "action": "Fetch all orders",
      "description": "Retrieve details of all orders with optional filters",
      "resource": "order"
    },
    {
      "name": "Create",
      "value": "createPaymentLink",
      "action": "Create a payment link",
      "description": "Create a payment link for customers",
      "resource": "paymentLink"
    },
    {
      "name": "Fetch",
      "value": "fetchPaymentLink",
      "action": "Fetch a payment link",
      "description": "Fetch payment link details by ID",
      "resource": "paymentLink"
    },
    {
      "name": "Fetch Payment",
      "value": "fetchPayment",
      "action": "Fetch a payment",
      "description": "Fetch payment details by payment ID",
      "resource": "payment"
    },
    {
      "name": "Fetch All",
      "value": "fetchAllPayments",
      "action": "Fetch all payments",
      "description": "Retrieve details of all payments with optional filters",
      "resource": "payment"
    },
    {
      "name": "Fetch All",
      "value": "fetchAllRefunds",
      "action": "Fetch all refunds",
      "description": "Retrieve details of all refunds with optional filters",
      "resource": "refund"
    },
    {
      "name": "Fetch Settlement",
      "value": "fetchSettlement",
      "action": "Fetch a settlement",
      "description": "Fetch settlement details by settlement ID",
      "resource": "settlement"
    },
    {
      "name": "Fetch All",
      "value": "fetchAllSettlements",
      "action": "Fetch all settlements",
      "description": "Retrieve details of all settlements with optional filters",
      "resource": "settlement"
    },
    {
      "name": "Fetch Invoices for Subscription",
      "value": "fetchInvoicesForSubscription",
      "action": "Fetch invoices for a subscription",
      "description": "Retrieve all invoices of a subscription",
      "resource": "invoice"
    },
    {
      "name": "Fetch All",
      "value": "fetchAllDisputes",
      "action": "Fetch all disputes",
      "description": "Retrieve all disputes raised by customers",
      "resource": "dispute"
    }
  ]

npm_readme:
  # n8n-nodes-razorpay

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

  Razorpay is a comprehensive payment solution that allows businesses to accept, process and disburse payments with its product suite. It gives you access to all payment modes including credit card, debit card, netbanking, UPI and popular wallets including JioMoney, Mobikwik, Airtel Money, FreeCharge, Ola Money and PayZapp.

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

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

  ## Installation

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

  ## Operations

  This node supports the following operations across different Razorpay resources:

  ### Orders
  - **Fetch All Orders** - Retrieve details of all orders with optional filters (authorization status, date range, receipt number, etc.)

  ### Payment Links
  - **Create Payment Link** - Create a payment link for customers with customizable options (amount, currency, customer details, expiry, etc.)
  - **Fetch Payment Link** - Fetch payment link details by ID

  ### Payments
  - **Fetch Payment** - Fetch payment details by payment ID with optional expansion of card, EMI, offer, and UPI details
  - **Fetch All Payments** - Retrieve details of all payments with optional filters (date range, pagination)

  ### Refunds
  - **Fetch All Refunds** - Retrieve details of all refunds with optional filters (date range, pagination)

  ### Settlements
  - **Fetch Settlement** - Fetch settlement details by settlement ID
  - **Fetch All Settlements** - Retrieve details of all settlements with optional filters (date range, pagination)

  ### Invoices
  - **Fetch Invoices for Subscription** - Retrieve all invoices of a subscription

  ### Disputes
  - **Fetch All Disputes** - Retrieve all disputes raised by customers with optional expansion of payment and settlement details

  ## Credentials

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

  ### Prerequisites

  1. **Sign up for a Razorpay account**: If you don't have one already, create an account at [razorpay.com](https://razorpay.com)
  2. **Complete your KYC**: Ensure your account is activated and KYC is completed to access live mode

  ### Getting Your API Credentials

  1. Log in to your Razorpay Dashboard at [https://dashboard.razorpay.com](https://dashboard.razorpay.com)
  2. Navigate to **Settings** → **API Keys** or directly visit [https://dashboard.razorpay.com/#/app/keys](https://dashboard.razorpay.com/#/app/keys)
  3. You'll find two types of keys:
     - **Test Keys**: For testing and development (starts with `rzp_test_`)
     - **Live Keys**: For production use (starts with `rzp_live_`)

  ### Setting up Credentials in n8n

  1. In n8n, create a new **Razorpay API** credential
  2. Enter your credentials:
     - **Key ID**: Your Razorpay Key ID (e.g., `rzp_test_1234567890` or `rzp_live_1234567890`)
     - **Key Secret**: Your Razorpay Key Secret
  3. **Test the connection** to ensure your credentials are working correctly


  ### Authentication Methods

  This node supports the standard Razorpay API authentication method using:
  - **Key ID and Key Secret**: The primary authentication method for most API operations

  ## Compatibility

  Tested locally against n8n v1.104.2.

  ## Usage

  ### Installing the Razorpay Community Node in n8n

  There are several ways to install this community node in your n8n instance:

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

  1. **Open n8n**: Access your n8n instance
  2. **Go to Settings**: Click on "Settings" in the left sidebar
  3. **Navigate to Community Nodes**: Click on "Community Nodes" in the settings menu
  4. **Install the Node**: 
     - Click "Install a community node"
     - Enter the package name: `@razorpay/n8n-nodes-razorpay`
     - Click "Install"
  5. **Restart n8n**: The node will be available after n8n restarts

  #### Method 2: Install via npm (Self-hosted)

  If you're running n8n in a self-hosted environment:

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

  # Install the community node
  npm install @razorpay/n8n-nodes-razorpay

  # Restart your n8n instance
  ```

  #### Method 3: Install via Docker

  If you're using n8n with Docker, add the package to your Docker setup:

  ```dockerfile
  # In your Dockerfile or docker-compose.yml
  FROM n8nio/n8n:latest
  USER root
  RUN npm install -g @razorpay/n8n-nodes-razorpay
  USER node
  ```

  ### Using the Razorpay Node

  Once installed:

  1. **Create a new workflow** or open an existing one
  2. **Add the Razorpay node**: Search for "Razorpay" in the node panel and drag it into your workflow
  3. **Configure credentials**: Set up your Razorpay API credentials (see [Credentials](#credentials) section)
  4. **Select operation**: Choose the operation you want to perform (Create Order, Fetch Payment, etc.)
  5. **Configure parameters**: Fill in the required parameters for your selected operation
  6. **Test and execute**: Test your workflow to ensure everything works correctly

  ### Getting Started Tips

  - **Start with Test Mode**: Always use test credentials when setting up and testing your workflows
  - **Check API Documentation**: Refer to [Razorpay's API documentation](https://docs.razorpay.com) for detailed parameter information
  - **Use Webhooks**: Consider setting up Razorpay webhooks for real-time payment updates in your workflows

  If you're new to n8n, check out the [Try it out](https://docs.n8n.io/try-it-out/) documentation to help you get started with workflow automation.

  ## Resources

  * [Razorpay API Documentation](https://docs.razorpay.com)
  * [Razorpay Dashboard](https://dashboard.razorpay.com)
  * [Getting Started with Razorpay](https://docs.razorpay.com/docs/getting-started)

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Razorpay payment gateway API to manage orders, payments, refunds, settlements, invoices, disputes, and payment links.","capabilities":["Fetch all orders with optional filters","Create payment links with customizable options","Fetch payment link details by ID","Fetch payment details by payment ID","Fetch all payments with optional filters","Fetch all refunds with optional filters","Fetch settlement details by ID","Fetch all settlements with optional filters","Fetch invoices for a subscription","Fetch all disputes with optional expansions"],"authentication":"API Key (Key ID and Key Secret)","commonUseCases":["Retrieve order history for accounting","Generate dynamic payment links for customers","Monitor payment status and fetch transaction details","Process refunds and track settlement status","Manage subscription invoices and disputes"],"limitations":["Requires Razorpay account with completed KYC for live mode","Test mode keys start with 'rzp_test_' and live keys start with 'rzp_live_'","Must restart n8n after installation via npm or Docker methods"],"relatedNodes":["Webhook node","HTTP Request node","Code node"]}


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

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

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

npm_readme:
  # n8n Nodes - Gyazo integration

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

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

  ## Table of contents

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

  ## Installation (self-hosted)

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

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

  After installation restart n8n to register the community node.

  ## Installation on n8n cloud

  For n8n cloud users:

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

  n8n cloud will automatically restart and register the community node.

  ## Installation for development and contributing

  To install this node for development:

  1. Clone this repository:

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

  2. Install dependencies:

     ```bash
     npm install
     ```

  3. Build the node:

     ```bash
     npm run build
     ```

  4. Link the node locally:

     ```bash
     npm link
     ```

  5. Install the node into your local n8n instance:

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

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

  ## Operations

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

  ### Image Operations

  #### List

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

  **Parameters:**

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

  **Example output:**

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

  #### Get

  Retrieve a specific image by ID or URL.

  **Parameters:**

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

  **Example output:**

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

  #### Search

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

  **Parameters:**

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

  **Example usage:**

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

  #### Upload

  Upload an image to Gyazo.

  **Parameters:**

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

  **Example output:**

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

  #### Update

  Update an existing image's description and alt text.

  **Parameters:**

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

  **Example output:**

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

  ## Credentials

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

  ### Setting up Gyazo API Access

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

  ### Configuring credentials in n8n

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

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

  ## Compatibility

  This node is compatible with:

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

  ## Usage

  ### Basic Image Upload Workflow

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

  ### Search and Process Images

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

  ## Resources

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

  ## Release

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

  ### Publishing to npm

  To publish a new version:

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

  ## Version History

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

  ## Troubleshooting

  ### Authentication Issues

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

  **Solution**:

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

  ### Invalid Resource Format

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

  **Solution**:

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

  ### Upload Issues

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

  **Solution**:

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

  ### Rate Limiting

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

  **Solution**:

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

  ### Node Not Appearing

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

  **Solution**:

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

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

  ## License

  [MIT](LICENSE.md)

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


node_type: n8n-nodes-csvbox.csvboxTrigger
package_name: n8n-nodes-csvbox
display_name: CSVBox Trigger
description: Starts a workflow when a new row is imported to a CSVBox Sheet
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: sumit_yewale
author_github_url: https://github.com/csvbox-io/
npm_package_name: n8n-nodes-csvbox
npm_version: 0.1.7
community_fetched_at: 2026-07-14T14:40:33.313Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  ![CSVBox for n8n](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)

  # n8n-nodes-csvbox
  ## Overview

  This is an n8n community node. It lets you use [CSVBox](https://csvbox.io/) in your n8n workflows.

  CSVBox is a platform for importing CSV data into your applications with ease. This node allows you to trigger n8n workflows when new rows are imported into a CSVBox Importer.

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

  ---

  ## Table of Contents

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

  ---

  ## Installation

  You can install this node as a community package in your n8n instance.

  ### Steps

  1. Go to **Settings → Community Nodes** in your n8n instance.
  2. Click **Install a community node** and enter:
     ```
     n8n-nodes-csvbox
     ```
  3. Check the warning button.
  4. Click on the **Install** and wait for the installation to complete.
  4. Restart n8n if prompted.

  After installation, you’ll find the **CSVBox Trigger** node available in your n8n workflow editor.

  ---

  ## Operations

  This package provides the following node:

  - **CSVBox Trigger**: Starts a workflow when a new row is imported to a CSVBox Sheet.

  ---

  ## Credentials

  Create an API Key and Secret Key from the CSVBox API Key Page, then add them as a credential in n8n using the following fields:

  - **API Key:** Your CSVBox API Key.
  - **API Secret Key:** Your CSVBox Secret Key.

  ---

  ## Compatibility

  - **Minimum n8n version:** 1.x
  - **Node.js version:** >= 20.15
  - Tested on latest n8n and Node.js LTS.

  ---

  ## Usage

  1. In your n8n workflow editor, add the **CSVBox Trigger** node.
  2. Choose your CSVBox credential from the dropdown (set up your API Key and Secret in n8n Credentials first).
  3. Select the Sheet name you want to monitor for new imports.
  4. Click **Fetch and execute** to test the trigger and preview sample data from your sheet.
  5. Once you see the sample data, connect and map it to the next node in your workflow.
  6. Activate your workflow. Now, whenever new rows are imported into your selected CSVBox sheet, your workflow will run automatically.

  ---

  ## Resources

  - [CSVBox Documentation](https://help.csvbox.io/destinations/n8n)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)

  ---

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Triggers an n8n workflow automatically when a new row is imported into a specific CSVBox sheet.","capabilities":["Monitors a selected CSVBox sheet for new data","Automatically starts workflow execution upon row import","Fetches and previews sample data from the sheet","Connects imported data to subsequent workflow nodes"],"authentication":"API Key and Secret Key","commonUseCases":["Automated data processing from CSV imports","Real-time inventory updates","Order processing from external CSV sources","Data transformation pipelines triggered by file uploads"],"limitations":["Requires separate CSVBox account with API credentials","Minimum n8n version 1.x required","Node.js version >= 20.15 required"],"relatedNodes":["n8n-nodes-csvbox.csvboxTrigger","n8n-nodes-csvbox.csvbox"]}


node_type: n8n-nodes-google-search-console.googleSearchConsole
package_name: n8n-nodes-google-search-console
display_name: Google Search Console
description: Connect to Google Search Console API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: mrazari
author_github_url: https://github.com/mrazari/
npm_package_name: n8n-nodes-google-search-console
npm_version: 1.0.40
community_fetched_at: 2026-07-14T14:40:33.319Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "site",
      "options": [
        {
          "name": "Site",
          "value": "site"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getSites",
      "options": [
        {
          "name": "Get Sites",
          "value": "getSites",
          "action": "List verified sites"
        },
        {
          "name": "Get Page Insights",
          "value": "getPageInsights",
          "action": "Query search analytics"
        },
        {
          "name": "Inspect URL",
          "value": "inspectUrl",
          "action": "Url inspection index status"
        },
        {
          "name": "Compare Page Insights",
          "value": "comparePageInsights",
          "action": "Compare search analytics between two date ranges"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Sites",
      "value": "getSites",
      "action": "List verified sites",
      "resource": "site"
    },
    {
      "name": "Get Page Insights",
      "value": "getPageInsights",
      "action": "Query search analytics",
      "resource": "site"
    },
    {
      "name": "Inspect URL",
      "value": "inspectUrl",
      "action": "Url inspection index status",
      "resource": "site"
    },
    {
      "name": "Compare Page Insights",
      "value": "comparePageInsights",
      "action": "Compare search analytics between two date ranges",
      "resource": "site"
    }
  ]

npm_readme:
  # Google Search Console - n8n Custom Node

  This custom node for n8n allows you to connect to the official Google Search Console API and retrieve information about registered sites and their page performance.

  ## Features

  🔹 Fetch a list of sites registered under your Google Search Console account

  🔹 Retrieve performance insights for specific pages within a defined date range (clicks, impressions, CTR, and position)

  ## Operations

  ### 1. Get Sites

  Retrieves the list of sites registered in your Google Search Console account.

  ### 2. Get Page Insights

  Analyzes page performance based on the following parameters:

  * **Site URL**: Exact URL or domain property
  * **Start/End Date**: Define the time period
  * **Search Type**: Web / Image / Video / News
  * **Row Limit**: Number of rows to return
  * **Dimensions**: Choose from Page, Query, Country, or Device

  ## Requirements

  You must configure the following credentials to use this node:

  * **GoogleSearchConsoleOAuth2Api**

  Make sure to set up the credential using OAuth2 with the appropriate scopes for Google Search Console access.

  ## Notes

  * The `Site URL` must match the format of the property in your GSC account:

    * For domain property: `sc-domain:example.com`
    * For URL-prefix property: `https://www.example.com/`

  * An incorrect format or unregistered site will result in an "Invalid URL" error.

  ## Node Icon

  This node uses a simplified version of the official Google Search Console icon.

  ## Author

  Developed by [mrazari](https://mrazari.com), member of the [n8nir.ir](https://n8nir.ir) community — specializing in custom n8n nodes with TypeScript and official API integrations.

  ---

  Feel free to reach out for improvements, suggestions, or new feature requests.

ai_documentation_summary:
  {"purpose":"Connects to the Google Search Console API to retrieve registered sites and analyze page performance metrics within a specified date range.","capabilities":["Fetch list of sites registered under a Google Search Console account","Retrieve page performance insights including clicks, impressions, CTR, and position","Filter performance data by site URL, date range, search type (Web/Image/Video/News), and dimensions (Page/Query/Country/Device)","Limit returned results using row limit parameter"],"authentication":"OAuth2 (GoogleSearchConsoleOAuth2Api credential required)","commonUseCases":["Monitor website search performance over time","Analyze user engagement metrics for specific pages","Track keyword rankings and click-through rates","Compare performance across different devices or countries"],"limitations":["Site URL must match the exact format of the property in the GSC account (e.g., 'sc-domain:example.com' or 'https://www.example.com/')","Incorrect URL format or unregistered sites will result in 'Invalid URL' errors","Relies on official Google Search Console API availability and rate limits"],"relatedNodes":["Google Search Console","Google Sheets","HTTP Request"]}


node_type: n8n-nodes-tazzoai.tazzoAi
package_name: n8n-nodes-tazzoai
display_name: Tazzo.ai
description: Trigger a call via Tazzo.ai voice agent
category: Community
development_style: declarative
version: 1
operations:
  [
  {
  "name": "Trigger",
  "value": "trigger",
  "action": "Start a call"
  }
  ]

credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: np_tazzo
author_github_url: https://github.com/TazzoAI/
npm_package_name: n8n-nodes-tazzoai
npm_version: 0.2.1
community_fetched_at: 2026-07-14T14:40:33.320Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "call",
      "options": [
        {
          "name": "Call",
          "value": "call"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "trigger",
      "options": [
        {
          "name": "Trigger",
          "value": "trigger",
          "action": "Start a call"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

npm_readme:
  # n8n-nodes-tazzoai

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

  Tazzo.ai is a voice agent platform that enables automated outbound voice calls with AI-powered conversational agents.

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

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

  ## Installation

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

  Or install directly via npm:

  ```bash
  npm install n8n-nodes-tazzoai
  ```

  Or via the n8n UI:
  * Go to **Settings > Community Nodes**
  * Click **Install a Community Node**
  * Enter: `n8n-nodes-tazzoai`

  ## Operations

  * **Trigger Outbound Call** - Initiate outbound voice calls using Tazzo.ai's voice agents

  ## Credentials

  Before using the node, set up your Tazzo.ai login credentials:

  * Go to **Credentials > Create New**
  * Select: **Tazzo.ai API**
  * Fill in:
     * **Email** – your Tazzo.ai account email
     * **Password** – your Tazzo.ai account password
  * Click **Save**


  ## Usage

  ### Using the Node in a Workflow

  * Drag the **Tazzo.ai** node into your workflow
  * Select the credentials you just created
  * Provide the required input parameters:
     * **Agent ID** – ID of the agent who will make the call
     * **Contact Number** – the phone number to be dialed
  * (Optional) Connect it with a trigger node like Webhook or Schedule
  * Run the workflow

  ✅ This will trigger an outbound voice call via the Tazzo.ai platform.

  ### Sample Output

  ```json
  [
    {
      "message": "Call originated successfully",
      "data": {
        "channelId": "12345678-abcd-efgh-ijkl-9876543210ab",
        "callType": "Outbound",
        "outboundNumber": "9988776655",
        "extension": "1122334455",
        "agentId": "abcd1234-5678-90ef-ghij-klmnopqrstuv",
        "campaignBody": {
          "contactNumber": "9988776655",
          "agentId": "abcd1234-5678-90ef-ghij-klmnopqrstuv",
          "originateEndpoint": "1122334455"
        }
      }
    }
  ]
  ```

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Source Code](https://github.com/TazzoAI/n8n-nodes-tazzoai)
  * [npm Package](https://www.npmjs.com/package/n8n-nodes-tazzoai)

  **Maintainer**: Legitbytes  
  **License**: MIT © 2025 Legitbytes

ai_documentation_summary:
  {"purpose":"This n8n community node initiates outbound voice calls using Tazzo.ai's AI-powered conversational agents.","capabilities":["Trigger outbound voice calls","Select specific voice agents by ID","Dial contact numbers","Return call status and metadata in JSON format"],"authentication":"API key required (via Email and Password credentials)","commonUseCases":["Automated customer outreach","Appointment reminders via voice","Lead qualification calls","Scheduled follow-up calls"],"limitations":["Requires manual setup of Tazzo.ai credentials in n8n","Limited to outbound calls only (no inbound handling mentioned)","Requires valid Agent ID and Contact Number to function"],"relatedNodes":["Webhook","Schedule","HTTP Request","Email"]}


node_type: n8n-nodes-sourcegeek.sourcegeek
package_name: n8n-nodes-sourcegeek
display_name: SourceGeek for LinkedIn
description: Automate LinkedIn tasks and AI workflows with SourceGeek.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: daraseliya
author_github_url: https://github.com/sourcegeekinc/
npm_package_name: n8n-nodes-sourcegeek
npm_version: 1.1.0
community_fetched_at: 2026-07-14T14:40:33.321Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "linkedin",
      "options": [
        {
          "name": "",
          "value": "linkedin"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getProfileData",
      "options": [
        {
          "name": "AI People Search (Beta)",
          "value": "aiPeopleSearch",
          "action": "Search for people using AI"
        },
        {
          "name": "Check Connection Status",
          "value": "checkConnectionStatus",
          "action": "Check connection status with a profile"
        },
        {
          "name": "Get Company Data",
          "value": "getCompanyData",
          "action": "Get data from a linkedin company page"
        },
        {
          "name": "Get Company Jobs (Beta)",
          "value": "getCompanyJobs",
          "action": "Get job listings from a company"
        },
        {
          "name": "Get Company Posts (Beta)",
          "value": "getCompanyPosts",
          "action": "Get posts from a company page"
        },
        {
          "name": "Get Conversation Messages (Beta)",
          "value": "getConversationMessages",
          "action": "Get messages from a conversation"
        },
        {
          "name": "Get Data From A Linkedin Profile",
          "value": "getProfileData",
          "action": "Get data from a linkedin profile"
        },
        {
          "name": "Get Profile Posts (Beta)",
          "value": "getProfilePosts",
          "action": "Get posts from a profile"
        },
        {
          "name": "Get Recent Accepted Connection Requests",
          "value": "getRecentAcceptedConnectionRequests",
          "action": "Get recent accepted connection requests"
        },
        {
          "name": "Get Recent Messages",
          "value": "getRecentMessages",
          "action": "Get recent messages"
        },
        {
          "name": "Get Recent Recruiter Messages",
          "value": "getRecentRecruiterMessages",
          "action": "Get recent recruiter messages"
        },
        {
          "name": "Get Tool Run Result",
          "value": "getToolRun",
          "action": "Get tool run result by ID"
        },
        {
          "name": "Import Company Followers (Beta)",
          "value": "importCompanyFollowers",
          "action": "Import followers from a company page"
        },
        {
          "name": "Import Contacts - Basic Search",
          "value": "importContactsBasicSearch",
          "action": "Import contacts from basic search"
        },
        {
          "name": "Import Contacts - Recruiter Search",
          "value": "importContactsRecruiterSearch",
          "action": "Import contacts from recruiter search"
        },
        {
          "name": "Import Contacts - Sales Navigator Search",
          "value": "importContactsSalesNavSearch",
          "action": "Import contacts from sales navigator search"
        },
        {
          "name": "Import Group Members (Beta)",
          "value": "importGroupMembers",
          "action": "Import members from a linked in group"
        },
        {
          "name": "Import Post Comments (Beta)",
          "value": "importPostComments",
          "action": "Import users who commented on a post"
        },
        {
          "name": "Import Post Likes (Beta)",
          "value": "importPostLikes",
          "action": "Import users who liked a post"
        },
        {
          "name": "Import Profile Viewers (Beta)",
          "value": "importProfileViewers",
          "action": "Import users who viewed your profile"
        },
        {
          "name": "Send Connection Request",
          "value": "sendConnectionRequest",
          "action": "Send connection request"
        },
        {
          "name": "Send Message",
          "value": "sendMessage",
          "action": "Send message"
        },
        {
          "name": "Send Recruiter InMail Message",
          "value": "sendRecruiterInMailMessage",
          "action": "Send recruiter inmail message"
        },
        {
          "name": "Send Sales Navigator InMail Message",
          "value": "sendSalesNavInMailMessage",
          "action": "Send sales navigator inmail message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "linkedin"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "AI People Search (Beta)",
      "value": "aiPeopleSearch",
      "action": "Search for people using AI",
      "resource": "linkedin"
    },
    {
      "name": "Check Connection Status",
      "value": "checkConnectionStatus",
      "action": "Check connection status with a profile",
      "resource": "linkedin"
    },
    {
      "name": "Get Company Data",
      "value": "getCompanyData",
      "action": "Get data from a linkedin company page",
      "resource": "linkedin"
    },
    {
      "name": "Get Company Jobs (Beta)",
      "value": "getCompanyJobs",
      "action": "Get job listings from a company",
      "resource": "linkedin"
    },
    {
      "name": "Get Company Posts (Beta)",
      "value": "getCompanyPosts",
      "action": "Get posts from a company page",
      "resource": "linkedin"
    },
    {
      "name": "Get Conversation Messages (Beta)",
      "value": "getConversationMessages",
      "action": "Get messages from a conversation",
      "resource": "linkedin"
    },
    {
      "name": "Get Data From A Linkedin Profile",
      "value": "getProfileData",
      "action": "Get data from a linkedin profile",
      "resource": "linkedin"
    },
    {
      "name": "Get Profile Posts (Beta)",
      "value": "getProfilePosts",
      "action": "Get posts from a profile",
      "resource": "linkedin"
    },
    {
      "name": "Get Recent Accepted Connection Requests",
      "value": "getRecentAcceptedConnectionRequests",
      "action": "Get recent accepted connection requests",
      "resource": "linkedin"
    },
    {
      "name": "Get Recent Messages",
      "value": "getRecentMessages",
      "action": "Get recent messages",
      "resource": "linkedin"
    },
    {
      "name": "Get Recent Recruiter Messages",
      "value": "getRecentRecruiterMessages",
      "action": "Get recent recruiter messages",
      "resource": "linkedin"
    },
    {
      "name": "Get Tool Run Result",
      "value": "getToolRun",
      "action": "Get tool run result by ID",
      "resource": "linkedin"
    },
    {
      "name": "Import Company Followers (Beta)",
      "value": "importCompanyFollowers",
      "action": "Import followers from a company page",
      "resource": "linkedin"
    },
    {
      "name": "Import Contacts - Basic Search",
      "value": "importContactsBasicSearch",
      "action": "Import contacts from basic search",
      "resource": "linkedin"
    },
    {
      "name": "Import Contacts - Recruiter Search",
      "value": "importContactsRecruiterSearch",
      "action": "Import contacts from recruiter search",
      "resource": "linkedin"
    },
    {
      "name": "Import Contacts - Sales Navigator Search",
      "value": "importContactsSalesNavSearch",
      "action": "Import contacts from sales navigator search",
      "resource": "linkedin"
    },
    {
      "name": "Import Group Members (Beta)",
      "value": "importGroupMembers",
      "action": "Import members from a linked in group",
      "resource": "linkedin"
    },
    {
      "name": "Import Post Comments (Beta)",
      "value": "importPostComments",
      "action": "Import users who commented on a post",
      "resource": "linkedin"
    },
    {
      "name": "Import Post Likes (Beta)",
      "value": "importPostLikes",
      "action": "Import users who liked a post",
      "resource": "linkedin"
    },
    {
      "name": "Import Profile Viewers (Beta)",
      "value": "importProfileViewers",
      "action": "Import users who viewed your profile",
      "resource": "linkedin"
    },
    {
      "name": "Send Connection Request",
      "value": "sendConnectionRequest",
      "action": "Send connection request",
      "resource": "linkedin"
    },
    {
      "name": "Send Message",
      "value": "sendMessage",
      "action": "Send message",
      "resource": "linkedin"
    },
    {
      "name": "Send Recruiter InMail Message",
      "value": "sendRecruiterInMailMessage",
      "action": "Send recruiter inmail message",
      "resource": "linkedin"
    },
    {
      "name": "Send Sales Navigator InMail Message",
      "value": "sendSalesNavInMailMessage",
      "action": "Send sales navigator inmail message",
      "resource": "linkedin"
    }
  ]

npm_readme:
  ![Banner image](https://pub-9f6d72605bf54a19ab5a9a098f99e37c.r2.dev/sourcegeek-hero-github.png)

  # SourceGeek n8n node for LinkedIn

  This is an n8n community node. It lets you use SourceGeek and LinkedIn in your n8n workflows.

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

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

  ## Installation

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

  ## Operations

  * Get Data From A Linkedin Profile
  * Import Contacts - Basic Search
  * Import Contacts - Recruiter Search
  * Import Contacts - Sales Navigator Search
  * Send Connection Request
  * Send Message
  * Send Recruiter InMail Message

  ## Credentials

  To be able to use this SourceGeek n8n integration, you need to follow these steps:
  1. Sign up for a free SourceGeek account at [app.sourcegeek.com/login](https://app.sourcegeek.com/signup)
  2. Create n8n integration in SourceGeek Integrations settings [page](https://app.sourcegeek.com/settings/integrations) by pressing the "Add Integration" button and selecting "n8n"
  3. Click on "Copy API Key" button and paste it in the API Key field in the n8n credentials

  For more information, please refer to the [SourceGeek documentation](https://support.sourcegeek.com/en/articles/12441230-n8n-integration).

  ## Compatibility

  * Tested against: 1.112.6
  * Minimum n8n version: works with all recent n8n versions

  ## Usage

  For more information, please refer to the [SourceGeek documentation](https://support.sourcegeek.com/en/articles/12441230-n8n-integration).

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [SourceGeek documentation](https://support.sourcegeek.com/en/articles/12441230-n8n-integration)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of LinkedIn tasks by integrating SourceGeek's data scraping and outreach capabilities into n8n workflows.","capabilities":["Retrieve data from LinkedIn profiles","Import contacts via basic search","Import contacts via Recruiter search","Import contacts via Sales Navigator search","Send connection requests","Send direct messages","Send Recruiter InMail messages"],"authentication":"API Key required (SourceGeek integration key)","commonUseCases":["Automated lead generation and prospecting","Bulk LinkedIn profile data extraction","Automated cold outreach campaigns","Sales team prospecting workflows"],"limitations":["Requires separate SourceGeek account setup","Limited to SourceGeek's API rate limits and feature availability","Community node status may affect support priority"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.webhook","n8n-nodes-base.code"]}


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

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

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

npm_readme:
  # n8n-nodes-infranodus

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

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

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

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

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

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

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

  ## Installation

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

  ### For automatic installation

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

  ### For manual installation:

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

  0. Install the local version of n8n

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

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

  ```bash
  docker volume create n8n_data

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

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

  ```bash
  npx n8n
  ```

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

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

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

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

  1. Launch the local version of n8n

  - If it's installed globally:

  ```bash
  n8n start
  ```

  - If it's installed through Docker:

  Start the Docker n8n instsance:

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

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

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

  1. Install the node

  Change to the nodes folder:

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

  If it doesn't exist, create it first:

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

  2. Install the node into this folder:

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

  3. Then restart n8n

  ## Local Node Development

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

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

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

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

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

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

  ```bash
  npm install
  ```

  2. Make the necessary changes and build the node

  ```bash
  npm build
  ```

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

  ```bash
  npm link
  ```

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

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

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

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

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

  5. Then run the n8n instance locally using the

  ```bash
  n8n start
  ```

  ### To Update the Local Node in n8n

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

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

  ```bash
  npm run build
  ```

  2. Restart n8n:

  ```bash
  n8n start
  ```

  ## Operations

  The node supports the following operations:

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

  ## Credentials

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

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

  ## Compatibility

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

  ## Usage

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

  ## Resources

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

  ## Version history

  v 0.1.8 (2025-12-09)

  - better naming convention for create / update graph

  v 0.1.7 (2025-12-03)

  - bug fixes
  - improve installation instructions

  v 0.1.5 (2025-12-03)

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

  v 0.1.4 (2025-10-25)

  - Fix bugs with duplicate tool definitions

  v 0.1.3 (2025-09-17)

  - Fix bugs and incorrect tool settings

  v 0.1.0 (2025-09-11)

  - Initial release

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


node_type: n8n-nodes-docutray.docutray
package_name: n8n-nodes-docutray
display_name: Docutray
description: Process documents and search knowledge bases with Docutray services
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: rarce
author_github_url: https://github.com/docutray/
npm_package_name: n8n-nodes-docutray
npm_version: 0.5.2
community_fetched_at: 2026-07-14T14:40:33.323Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "document",
      "options": [
        {
          "name": "Document",
          "value": "document",
          "description": "Process documents with OCR and identification"
        },
        {
          "name": "Knowledge Base",
          "value": "knowledgeBase",
          "description": "Search knowledge bases using RAG technology"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "convert",
      "options": [
        {
          "name": "Convert",
          "value": "convert",
          "action": "Convert document to JSON",
          "routing": {
            "request": {
              "url": "/convert",
              "method": "POST"
            }
          },
          "description": "Extract text from document using OCR"
        },
        {
          "name": "Identify",
          "value": "identify",
          "action": "Identify document type",
          "routing": {
            "request": {
              "url": "/identify",
              "method": "POST"
            }
          },
          "description": "Identify document type from image"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search knowledge base",
          "routing": {
            "request": {
              "method": "POST"
            }
          },
          "description": "Search knowledge base using RAG"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "knowledgeBase"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Convert",
      "value": "convert",
      "action": "Convert document to JSON",
      "routing": {
        "request": {
          "url": "/convert",
          "method": "POST"
        }
      },
      "description": "Extract text from document using OCR",
      "resource": "document"
    },
    {
      "name": "Identify",
      "value": "identify",
      "action": "Identify document type",
      "routing": {
        "request": {
          "url": "/identify",
          "method": "POST"
        }
      },
      "description": "Identify document type from image",
      "resource": "document"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search knowledge base",
      "routing": {
        "request": {
          "method": "POST"
        }
      },
      "description": "Search knowledge base using RAG",
      "resource": "knowledgeBase"
    }
  ]

npm_readme:
  # n8n-nodes-docutray

  This is an n8n community node package that provides seamless integration with [Docutray](https://docutray.com/), a powerful document processing and OCR service. It includes a unified node with organized resource groups to automate document processing and knowledge base search workflows directly within your n8n automations.

  ## Features

  - **Document OCR**: Extract text from images and PDFs using advanced OCR technology
  - **Document Type Identification**: Automatically identify document types with confidence scores
  - **Knowledge Base Search**: RAG-based semantic search in knowledge bases for intelligent information retrieval
  - **Dynamic Knowledge Base Selector**: Dropdown selection from available knowledge bases with metadata
  - **Multiple Input Methods**: Support for file uploads, Base64 encoded images, and image URLs
  - **Wide Format Support**: JPEG, PNG, GIF, BMP, WebP, and PDF files (up to 100MB)

  ## Installation

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

  ## Credentials

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

  1. Sign up for a [Docutray account](https://docutray.com/)
  2. Navigate to your API settings in the dashboard
  3. Generate an API key
  4. Configure the "Docutray API" credentials in n8n with your API key

  ## Available Node

  This package includes a unified Docutray node with organized resource groups:

  ### Docutray Node

  A comprehensive node that provides access to all Docutray services through organized resource groups. Users first select a resource type, then choose from available operations for that resource.

  #### Document Resource

  Handles document OCR and type identification operations.

  #### Convert Operation
  Extract text from documents using OCR technology.

  **Supported Methods:**
  - Upload file directly
  - Provide Base64 encoded image
  - Specify image URL for automatic download

  **Parameters:**
  - Document type code (required)
  - Image content type (optional)
  - Document metadata (optional)

  #### Identify Operation
  Automatically identify document types from a list of options.

  **Supported Methods:**
  - Upload file directly
  - Provide Base64 encoded image
  - Specify image URL for automatic download

  **Parameters:**
  - Document type code options (array of possible document types)
  - Document metadata (optional)

  **Response includes:**
  - Primary document type with confidence score
  - Alternative document type suggestions

  #### Knowledge Base Resource

  Handles semantic search operations within knowledge bases using RAG technology.

  ##### Search Operation
  Perform semantic search within knowledge bases using RAG technology.

  **Parameters:**
  - Knowledge Base Name or ID (required) - Select from dropdown or enter ID manually
  - Query (required) - Search query text (max 1000 characters)
  - Limit (optional) - Maximum number of results (1-50, default: 50)
  - Similarity Threshold (optional) - Minimum similarity threshold (0-1, default: 0.7)
  - Include Metadata (optional) - Whether to include metadata in results (default: true)

  **Features:**
  - Dynamic knowledge base selector with dropdown showing available bases
  - Displays knowledge base name, description, and document count
  - Fallback to manual ID entry if API is unavailable

  **Response includes:**
  - Semantic search results with relevance scores
  - Document excerpts and content snippets
  - Optional metadata for each result

  ## Compatibility

  This node has been tested with n8n version 1.94.0 and newer.

  ## Resources

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

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Processes documents and searches knowledge bases using Docutray services, enabling OCR, document type identification, and RAG-based semantic search within n8n workflows.","capabilities":["Extract text from images and PDFs using OCR","Automatically identify document types with confidence scores","Perform RAG-based semantic search in knowledge bases","Support file uploads, Base64 encoded images, and image URLs as input","Handle JPEG, PNG, GIF, BMP, WebP, and PDF files up to 100MB","Dynamic knowledge base selection via dropdown with metadata"],"authentication":"API key required (Docutray API key configured in n8n credentials)","commonUseCases":["Automating document ingestion and text extraction","Classifying incoming documents by type","Retrieving relevant information from enterprise knowledge bases","Building document processing pipelines with OCR and search"],"limitations":["File size limit of 100MB for supported formats","Query length limit of 1000 characters for knowledge base search","Semantic search results limited to 50 entries maximum","Similarity threshold range restricted to 0-1"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.code","n8n-nodes-base.set"]}


node_type: n8n-nodes-yourtextguru.yourtextGuru
package_name: n8n-nodes-yourtextguru
display_name: Yourtext.Guru
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: web.waboo
author_github_url: https://github.com/webwaboo/n8n-yourtextguru-api.git
npm_package_name: n8n-nodes-yourtextguru
npm_version: 0.3.0
community_fetched_at: 2026-07-14T14:40:33.324Z
ai_summary_generated_at: 2026-03-25 22:51:43
description:
  Yourtext.Guru is an advanced SEO content optimization tool designed to help writers and marketers create high-performing content.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "project",
      "options": [
        {
          "name": "Group",
          "value": "group"
        },
        {
          "name": "Guide",
          "value": "guide"
        },
        {
          "name": "Project",
          "value": "project"
        },
        {
          "name": "SEO Txl",
          "value": "seotxl"
        },
        {
          "name": "Status",
          "value": "status"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listProjects",
      "options": [
        {
          "name": "Create",
          "value": "createProject",
          "action": "Create project",
          "routing": {
            "request": {
              "url": "=/projects",
              "body": {
                "host": "={{$parameter.host}}",
                "name": "={{$parameter.nameProject}}"
              },
              "method": "POST"
            }
          },
          "description": "Create a new project"
        },
        {
          "name": "Delete",
          "value": "deleteProject",
          "action": "Delete project",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter.projectId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete one project and all guides inside"
        },
        {
          "name": "Get",
          "value": "getProject",
          "action": "Get project information",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter.projectId}}",
              "method": "GET"
            }
          },
          "description": "Get a project's information"
        },
        {
          "name": "Get Many",
          "value": "listProjects",
          "action": "List all projects",
          "routing": {
            "request": {
              "url": "/projects",
              "method": "GET"
            }
          },
          "description": "List all the organization's projects"
        },
        {
          "name": "Update",
          "value": "updateProject",
          "action": "Update project",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter.projectId}}",
              "body": {
                "host": "={{$parameter.host}}",
                "name": "={{$parameter.nameProject}}"
              },
              "method": "POST"
            }
          },
          "description": "Delete one project and all guides inside"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listGuides",
      "options": [
        {
          "name": "Analyze Text",
          "value": "analyzeText",
          "action": "Analyze text",
          "routing": {
            "request": {
              "url": "=/guides/{{$parameter.guideId}}/brief/analyze",
              "body": {
                "text": "={{$parameter.text}}"
              },
              "method": "POST"
            }
          },
          "description": "Analyze a text to see if it meets the brief"
        },
        {
          "name": "Check",
          "value": "check",
          "action": "Check guide",
          "routing": {
            "request": {
              "url": "=/guides/{{$parameter.guideId}}/check",
              "body": {
                "text": "={{$parameter.text}}"
              },
              "method": "POST"
            }
          },
          "description": "Analyze a given text against the semantic and SEO recommendations of a specific guide"
        },
        {
          "name": "Create Guide",
          "value": "createGuide",
          "action": "Create guide",
          "routing": {
            "request": {
              "qs": {
                "lang": "={{$parameter.lang}}",
                "type": "={{$parameter.additionalFields.guideType}}",
                "query": "={{$parameter.query}}",
                "groupId": "={{$parameter.additionalFields.groupIdOptional}}",
                "projectId": "={{$parameter.additionalFields.projectIdOptional}}"
              },
              "url": "=/guides",
              "method": "POST"
            }
          },
          "description": "Create a new guide"
        },
        {
          "name": "Create Brief",
          "value": "createBrief",
          "action": "Create guide brief",
          "routing": {
            "request": {
              "url": "=/guides/{{$parameter.guideId}}/brief",
              "method": "POST"
            }
          },
          "description": "Create a new brief guide"
        },
        {
          "name": "Delete",
          "value": "deleteGuide",
          "action": "Delete guide",
          "routing": {
            "request": {
              "url": "=/guides/{{$parameter.guideId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a guide"
        },
        {
          "name": "Get",
          "value": "getGuide",
          "action": "Get guide",
          "routing": {
            "request": {
              "url": "=/guides/{{$parameter.guideId}}/{{$parameter.guideTypeSearch}}",
              "method": "GET"
            }
          },
          "description": "Get a specific guide"
        },
        {
          "name": "Get Many",
          "value": "listGuides",
          "action": "List all guides",
          "routing": {
            "request": {
              "qs": {
                "lang": "={{$parameter.additionalFields.langOptionnal}}",
                "lastId": "={{$parameter.lastId}}",
                "status": "={{$parameter.additionalFields.status}}",
                "apiOnly": "={{$parameter.additionalFields.apiOnly}}",
                "groupId": "={{$parameter.additionalFields.groupIdOptional}}",
                "projectId": "={{$parameter.projectIdOptional}}"
              },
              "url": "=/guides",
              "method": "GET"
            }
          },
          "description": "List all the organization's guide"
        },
        {
          "name": "Get Brief Analysis",
          "value": "getGuideBriefAnalysis",
          "action": "Get brief analysis",
          "routing": {
            "request": {
              "url": "=/guides/{{$parameter.guideId}}/brief/analyze/{{$parameter.analyzeId}}",
              "method": "GET"
            }
          },
          "description": "Get the last briefs analysis"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "guide"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getStatus",
      "options": [
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get status",
          "routing": {
            "request": {
              "url": "=/status",
              "method": "GET"
            }
          },
          "description": "Get the current status of the organization's account, including available tokens and guides in progress"
        },
        {
          "name": "Get Consumption",
          "value": "getTokenConsumption",
          "action": "Get consumption",
          "routing": {
            "request": {
              "url": "=/consumption/openai",
              "method": "GET"
            }
          },
          "description": "Get Token Consumption"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "status"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAllGroupsinProject",
      "options": [
        {
          "name": "Add List in Group",
          "value": "addListinGroup",
          "action": "Add list of guide in group",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter.projectId}}/groups/{{$parameter.groupId}}/guides/add",
              "body": {
                "guideId": "={{$parameter.guideIdCollection}}"
              },
              "method": "POST"
            }
          },
          "description": "Add a list of guide in a group"
        },
        {
          "name": "Create",
          "value": "createGroup",
          "action": "Create group",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter.projectId}}/groups",
              "body": {
                "name": "={{$parameter.nameGroup}}"
              },
              "method": "POST"
            }
          },
          "description": "Create a new group"
        },
        {
          "name": "Create Topical Mesh",
          "value": "createTopicalMesh",
          "action": "Create a topical mesh",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter.projectId}}/groups/{{$parameter.groupId}}/topicalMesh",
              "method": "POST"
            }
          },
          "description": "Create a thematic mesh from all the guides in the group"
        },
        {
          "name": "List All Groups in a Project",
          "value": "getAllGroupsinProject",
          "action": "List all groups in a project",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter.projectId}}/groups",
              "method": "GET"
            }
          },
          "description": "Get all groups in a project"
        },
        {
          "name": "Get Group Info",
          "value": "getGroupInfo",
          "action": "Get group info",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter.projectId}}/groups/{{$parameter.groupId}}",
              "method": "GET"
            }
          },
          "description": "Get info of a group"
        },
        {
          "name": "Get Topical Mesh",
          "value": "getTopicalMesh",
          "action": "Get topical mesh",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter.projectId}}/groups/{{$parameter.groupId}}/topicalMesh",
              "method": "GET"
            }
          },
          "description": "Get a group topical mesh"
        },
        {
          "name": "Get Topical Mesh Paa",
          "value": "getTopicalMeshPaa",
          "action": "Get topical mesh paa",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter.projectId}}/groups/{{$parameter.groupId}}/topicalMesh/paa",
              "method": "GET"
            }
          },
          "description": "Get a topical mesh paa"
        },
        {
          "name": "Get Topical Mesh Wordcloud",
          "value": "getTopicalMeshWordcloud",
          "action": "Get topical mesh wordcloud",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter.projectId}}/groups/{{$parameter.groupId}}/topicalMesh/wordcloud",
              "method": "GET"
            }
          },
          "description": "Get a topical mesh wordcloud"
        },
        {
          "name": "Update",
          "value": "updateGroup",
          "action": "Update group",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter.projectId}}/groups/{{$parameter.groupId}}",
              "body": {
                "name": "={{$parameter.nameGroup}}"
              },
              "method": "POST"
            }
          },
          "description": "Update a group"
        },
        {
          "name": "Delete Group",
          "value": "deleteGroup",
          "action": "Delete group",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter.projectId}}/groups/{{$parameter.groupId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a whole group"
        },
        {
          "name": "Delete Guide",
          "value": "removeGuideinGroup",
          "action": "Delete guide from group",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter.projectId}}/groups/{{$parameter.groupId}}/guides/remove",
              "body": {
                "guideId": "={{$parameter.guideIdCollection}}"
              },
              "method": "POST"
            }
          },
          "description": "Remove a list of guide from group"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "group"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generateOutlineTextBasedonGuideWords",
      "options": [
        {
          "name": "Generate Outline Text Based on Guide Words",
          "value": "generateOutlineTextBasedonGuideWords",
          "action": "Generate outline text based on guide words",
          "routing": {
            "request": {
              "url": "=/guides/{{$parameter.guideId}}/seotxl/outline",
              "body": {
                "text": "={{$parameter.text}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Generate Questions Based on Guide Words",
          "value": "generateQuestionsBasedonGuideWords",
          "action": "Generate questions based on guide words",
          "routing": {
            "request": {
              "url": "=/guides/{{$parameter.guideId}}/seotxl/questions",
              "method": "POST"
            }
          }
        },
        {
          "name": "Generate Text Based on Guide Words",
          "value": "generateTextBasedonGuideWords",
          "action": "Generate text based on guide words",
          "routing": {
            "request": {
              "url": "=/guides/{{$parameter.guideId}}/seotxl/auto",
              "body": {
                "text": "={{$parameter.text}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Generate Text From a Guide",
          "value": "generateTextfromGuide",
          "action": "Generate text from a guide",
          "routing": {
            "request": {
              "url": "=/guides/{{$parameter.guideId}}/seotxl/create",
              "body": {
                "text": "={{$parameter.text}}",
                "maxWords": "={{$parameter.maxWords}}",
                "temperature": "={{$parameter.temperature}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Rephrase Text Based on Guide Words",
          "value": "rephraseTextBasedonGuideWords",
          "action": "Rephrase text based on guide words",
          "routing": {
            "request": {
              "url": "=/guides/{{$parameter.guideId}}/seotxl/rephrase",
              "body": {
                "text": "={{$parameter.text}}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "seotxl"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "createProject",
      "action": "Create project",
      "routing": {
        "request": {
          "url": "=/projects",
          "body": {
            "host": "={{$parameter.host}}",
            "name": "={{$parameter.nameProject}}"
          },
          "method": "POST"
        }
      },
      "description": "Create a new project",
      "resource": "project"
    },
    {
      "name": "Delete",
      "value": "deleteProject",
      "action": "Delete project",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter.projectId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete one project and all guides inside",
      "resource": "project"
    },
    {
      "name": "Get",
      "value": "getProject",
      "action": "Get project information",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter.projectId}}",
          "method": "GET"
        }
      },
      "description": "Get a project's information",
      "resource": "project"
    },
    {
      "name": "Get Many",
      "value": "listProjects",
      "action": "List all projects",
      "routing": {
        "request": {
          "url": "/projects",
          "method": "GET"
        }
      },
      "description": "List all the organization's projects",
      "resource": "project"
    },
    {
      "name": "Update",
      "value": "updateProject",
      "action": "Update project",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter.projectId}}",
          "body": {
            "host": "={{$parameter.host}}",
            "name": "={{$parameter.nameProject}}"
          },
          "method": "POST"
        }
      },
      "description": "Delete one project and all guides inside",
      "resource": "project"
    },
    {
      "name": "Analyze Text",
      "value": "analyzeText",
      "action": "Analyze text",
      "routing": {
        "request": {
          "url": "=/guides/{{$parameter.guideId}}/brief/analyze",
          "body": {
            "text": "={{$parameter.text}}"
          },
          "method": "POST"
        }
      },
      "description": "Analyze a text to see if it meets the brief",
      "resource": "guide"
    },
    {
      "name": "Check",
      "value": "check",
      "action": "Check guide",
      "routing": {
        "request": {
          "url": "=/guides/{{$parameter.guideId}}/check",
          "body": {
            "text": "={{$parameter.text}}"
          },
          "method": "POST"
        }
      },
      "description": "Analyze a given text against the semantic and SEO recommendations of a specific guide",
      "resource": "guide"
    },
    {
      "name": "Create Guide",
      "value": "createGuide",
      "action": "Create guide",
      "routing": {
        "request": {
          "qs": {
            "lang": "={{$parameter.lang}}",
            "type": "={{$parameter.additionalFields.guideType}}",
            "query": "={{$parameter.query}}",
            "groupId": "={{$parameter.additionalFields.groupIdOptional}}",
            "projectId": "={{$parameter.additionalFields.projectIdOptional}}"
          },
          "url": "=/guides",
          "method": "POST"
        }
      },
      "description": "Create a new guide",
      "resource": "guide"
    },
    {
      "name": "Create Brief",
      "value": "createBrief",
      "action": "Create guide brief",
      "routing": {
        "request": {
          "url": "=/guides/{{$parameter.guideId}}/brief",
          "method": "POST"
        }
      },
      "description": "Create a new brief guide",
      "resource": "guide"
    },
    {
      "name": "Delete",
      "value": "deleteGuide",
      "action": "Delete guide",
      "routing": {
        "request": {
          "url": "=/guides/{{$parameter.guideId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a guide",
      "resource": "guide"
    },
    {
      "name": "Get",
      "value": "getGuide",
      "action": "Get guide",
      "routing": {
        "request": {
          "url": "=/guides/{{$parameter.guideId}}/{{$parameter.guideTypeSearch}}",
          "method": "GET"
        }
      },
      "description": "Get a specific guide",
      "resource": "guide"
    },
    {
      "name": "Get Many",
      "value": "listGuides",
      "action": "List all guides",
      "routing": {
        "request": {
          "qs": {
            "lang": "={{$parameter.additionalFields.langOptionnal}}",
            "lastId": "={{$parameter.lastId}}",
            "status": "={{$parameter.additionalFields.status}}",
            "apiOnly": "={{$parameter.additionalFields.apiOnly}}",
            "groupId": "={{$parameter.additionalFields.groupIdOptional}}",
            "projectId": "={{$parameter.projectIdOptional}}"
          },
          "url": "=/guides",
          "method": "GET"
        }
      },
      "description": "List all the organization's guide",
      "resource": "guide"
    },
    {
      "name": "Get Brief Analysis",
      "value": "getGuideBriefAnalysis",
      "action": "Get brief analysis",
      "routing": {
        "request": {
          "url": "=/guides/{{$parameter.guideId}}/brief/analyze/{{$parameter.analyzeId}}",
          "method": "GET"
        }
      },
      "description": "Get the last briefs analysis",
      "resource": "guide"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get status",
      "routing": {
        "request": {
          "url": "=/status",
          "method": "GET"
        }
      },
      "description": "Get the current status of the organization's account, including available tokens and guides in progress",
      "resource": "status"
    },
    {
      "name": "Get Consumption",
      "value": "getTokenConsumption",
      "action": "Get consumption",
      "routing": {
        "request": {
          "url": "=/consumption/openai",
          "method": "GET"
        }
      },
      "description": "Get Token Consumption",
      "resource": "status"
    },
    {
      "name": "Add List in Group",
      "value": "addListinGroup",
      "action": "Add list of guide in group",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter.projectId}}/groups/{{$parameter.groupId}}/guides/add",
          "body": {
            "guideId": "={{$parameter.guideIdCollection}}"
          },
          "method": "POST"
        }
      },
      "description": "Add a list of guide in a group",
      "resource": "group"
    },
    {
      "name": "Create",
      "value": "createGroup",
      "action": "Create group",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter.projectId}}/groups",
          "body": {
            "name": "={{$parameter.nameGroup}}"
          },
          "method": "POST"
        }
      },
      "description": "Create a new group",
      "resource": "group"
    },
    {
      "name": "Create Topical Mesh",
      "value": "createTopicalMesh",
      "action": "Create a topical mesh",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter.projectId}}/groups/{{$parameter.groupId}}/topicalMesh",
          "method": "POST"
        }
      },
      "description": "Create a thematic mesh from all the guides in the group",
      "resource": "group"
    },
    {
      "name": "List All Groups in a Project",
      "value": "getAllGroupsinProject",
      "action": "List all groups in a project",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter.projectId}}/groups",
          "method": "GET"
        }
      },
      "description": "Get all groups in a project",
      "resource": "group"
    },
    {
      "name": "Get Group Info",
      "value": "getGroupInfo",
      "action": "Get group info",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter.projectId}}/groups/{{$parameter.groupId}}",
          "method": "GET"
        }
      },
      "description": "Get info of a group",
      "resource": "group"
    },
    {
      "name": "Get Topical Mesh",
      "value": "getTopicalMesh",
      "action": "Get topical mesh",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter.projectId}}/groups/{{$parameter.groupId}}/topicalMesh",
          "method": "GET"
        }
      },
      "description": "Get a group topical mesh",
      "resource": "group"
    },
    {
      "name": "Get Topical Mesh Paa",
      "value": "getTopicalMeshPaa",
      "action": "Get topical mesh paa",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter.projectId}}/groups/{{$parameter.groupId}}/topicalMesh/paa",
          "method": "GET"
        }
      },
      "description": "Get a topical mesh paa",
      "resource": "group"
    },
    {
      "name": "Get Topical Mesh Wordcloud",
      "value": "getTopicalMeshWordcloud",
      "action": "Get topical mesh wordcloud",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter.projectId}}/groups/{{$parameter.groupId}}/topicalMesh/wordcloud",
          "method": "GET"
        }
      },
      "description": "Get a topical mesh wordcloud",
      "resource": "group"
    },
    {
      "name": "Update",
      "value": "updateGroup",
      "action": "Update group",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter.projectId}}/groups/{{$parameter.groupId}}",
          "body": {
            "name": "={{$parameter.nameGroup}}"
          },
          "method": "POST"
        }
      },
      "description": "Update a group",
      "resource": "group"
    },
    {
      "name": "Delete Group",
      "value": "deleteGroup",
      "action": "Delete group",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter.projectId}}/groups/{{$parameter.groupId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a whole group",
      "resource": "group"
    },
    {
      "name": "Delete Guide",
      "value": "removeGuideinGroup",
      "action": "Delete guide from group",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter.projectId}}/groups/{{$parameter.groupId}}/guides/remove",
          "body": {
            "guideId": "={{$parameter.guideIdCollection}}"
          },
          "method": "POST"
        }
      },
      "description": "Remove a list of guide from group",
      "resource": "group"
    },
    {
      "name": "Generate Outline Text Based on Guide Words",
      "value": "generateOutlineTextBasedonGuideWords",
      "action": "Generate outline text based on guide words",
      "routing": {
        "request": {
          "url": "=/guides/{{$parameter.guideId}}/seotxl/outline",
          "body": {
            "text": "={{$parameter.text}}"
          },
          "method": "POST"
        }
      },
      "resource": "seotxl"
    },
    {
      "name": "Generate Questions Based on Guide Words",
      "value": "generateQuestionsBasedonGuideWords",
      "action": "Generate questions based on guide words",
      "routing": {
        "request": {
          "url": "=/guides/{{$parameter.guideId}}/seotxl/questions",
          "method": "POST"
        }
      },
      "resource": "seotxl"
    },
    {
      "name": "Generate Text Based on Guide Words",
      "value": "generateTextBasedonGuideWords",
      "action": "Generate text based on guide words",
      "routing": {
        "request": {
          "url": "=/guides/{{$parameter.guideId}}/seotxl/auto",
          "body": {
            "text": "={{$parameter.text}}"
          },
          "method": "POST"
        }
      },
      "resource": "seotxl"
    },
    {
      "name": "Generate Text From a Guide",
      "value": "generateTextfromGuide",
      "action": "Generate text from a guide",
      "routing": {
        "request": {
          "url": "=/guides/{{$parameter.guideId}}/seotxl/create",
          "body": {
            "text": "={{$parameter.text}}",
            "maxWords": "={{$parameter.maxWords}}",
            "temperature": "={{$parameter.temperature}}"
          },
          "method": "POST"
        }
      },
      "resource": "seotxl"
    },
    {
      "name": "Rephrase Text Based on Guide Words",
      "value": "rephraseTextBasedonGuideWords",
      "action": "Rephrase text based on guide words",
      "routing": {
        "request": {
          "url": "=/guides/{{$parameter.guideId}}/seotxl/rephrase",
          "body": {
            "text": "={{$parameter.text}}"
          },
          "method": "POST"
        }
      },
      "resource": "seotxl"
    }
  ]

npm_readme:
  # n8n-nodes-yourtextguru

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

  This API enables developers to integrate SEO optimization tools into their applications, allowing for content analysis, keyword research, and more.

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

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

  ## Installation

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

  ## Operations

  Base URL : https://yourtext.guru/api/v2/

  1. Status Endpoints
  Endpoints for monitoring API availability and usage.
  ________________________________________
  GET /status
  Description:
  Check the current operational status of the API.
  Parameters:
  None
  ________________________________________
  GET /consumption/openai
  Description:
  Retrieve information about OpenAI-related usage and consumption.
  Parameters:
  •	lastId (integer) – Retrieve consumption entries after this ID (for pagination or incremental updates).

  2. Project Endpoints
  Endpoints for managing SEO projects, including creation, retrieval, and deletion.
  ________________________________________
  GET /projects
  Description:
  Retrieve a list of all projects associated with the authenticated user.
  Parameters:
  None
  ________________________________________
  POST /projects
  Description:
  Create a new project.
  Parameters:
  •	name (string) – Name of the project.
  •	host (string) – Associated domain or host (e.g., example.com).
  ________________________________________
  GET /projects/{projectId}
  Description:
  Retrieve detailed information about a specific project.
  Parameters:
  •	projectId (integer) – ID of the project to retrieve.
  ________________________________________
  POST /projects/{projectId}
  Description:
  Update the name or host of an existing project.
  Parameters:
  •	projectId (integer) – ID of the project to update.
  •	name (string) – New name for the project.
  •	host (string) – New host or domain for the project.
  ________________________________________
  DELETE /projects/{projectId}
  Description:
  Delete a specific project by its ID.
  Parameters:
  •	projectId (integer) – ID of the project to delete.

  3. Group Endpoints
  Endpoints for organizing guides into groups and generating topical meshes within a project.
  ________________________________________
  GET /projects/{projectId}/groups
  Description:
  Retrieve all groups within a specific project.
  Parameters:
  •	projectId (integer) – ID of the project.
  ________________________________________
  POST /projects/{projectId}/groups
  Description:
  Create a new group within a project.
  Parameters:
  •	projectId (integer) – ID of the project.
  •	name (string) – Name of the new group.
  ________________________________________
  GET /projects/{projectId}/groups/{groupId}
  Description:
  Retrieve details of a specific group.
  Parameters:
  •	projectId (integer) – ID of the project.
  •	groupId (integer) – ID of the group.
  ________________________________________
  POST /projects/{projectId}/groups/{groupId}
  Description:
  Update the name of a specific group.
  Parameters:
  •	projectId (integer) – ID of the project.
  •	groupId (integer) – ID of the group.
  •	name (string) – New name for the group.
  ________________________________________
  DELETE /projects/{projectId}/groups/{groupId}
  Description:
  Delete a specific group from a project.
  Parameters:
  •	projectId (integer) – ID of the project.
  •	groupId (integer) – ID of the group.
  ________________________________________
  POST /projects/{projectId}/groups/{groupId}/guides/add
  Description:
  Add a list of guide to a group.
  Parameters:
  •	projectId (integer) – ID of the project.
  •	groupId (integer) – ID of the group.
  •	guideId (integer) – ID of the guide to add.
  ________________________________________
  POST /projects/{projectId}/groups/{groupId}/guides/remove
  Description:
  Remove guides from a group.
  Parameters:
  •	projectId (integer) – ID of the project.
  •	groupId (integer) – ID of the group.
  •	guideId (integer) – ID of the guide to remove.
  ________________________________________
  GET /projects/{projectId}/groups/{groupId}/topicalMesh
  Description:
  Retrieve the topical mesh associated with a group.
  Parameters:
  •	projectId (integer) – ID of the project.
  •	groupId (integer) – ID of the group.
  ________________________________________
  POST /projects/{projectId}/groups/{groupId}/topicalMesh
  Description:
  Generate a topical mesh for a group.
  Parameters:
  •	projectId (integer) – ID of the project.
  •	groupId (integer) – ID of the group.
  ________________________________________
  GET /projects/{projectId}/groups/{groupId}/topicalMesh/wordcloud
  Description:
  Retrieve a word cloud visualization of the group's topical mesh.
  Parameters:
  •	projectId (integer) – ID of the project.
  •	groupId (integer) – ID of the group.
  ________________________________________
  GET /projects/{projectId}/groups/{groupId}/topicalMesh/paa
  Description:
  Retrieve "People Also Ask" questions related to the group's topical mesh.
  Parameters:
  •	projectId (integer) – ID of the project.
  •	groupId (integer) – ID of the group.

  4. Guide Endpoints
  Endpoints related to the creation, retrieval, and analysis of SEO guides.
  ________________________________________
  GET /guides
  Description:
  Retrieve a list of guides, optionally filtered by project, group, or other attributes.
  Parameters:
  •	projectId (integer) – ID of the associated project.
  •	lastId (integer) – Retrieve guides after this ID (for pagination).
  •	lang (string) – Language code (e.g., " en_GB", " fr_FR").
  •	apiOnly (integer) – If set to 1, only API-generated guides are returned.
  •	groupId (integer) – ID of the associated group.
  •	status (string) – Filter by guide status.
  ________________________________________
  POST /guides
  Description:
  Create a new SEO guide based on a query (keyword or phrase).
  Parameters:
  •	query (string) – Target keyword or phrase.
  •	lang (string) – Language code for the guide.
  •	projectId (integer) – ID of the project to associate the guide with.
  •	type (string) – Type of guide (, "google" or "bing").
  •	groupId (integer) – group ID to associate the guide with.
  ________________________________________
  GET /guides/{guideId}
  Description:
  Retrieve detailed information about a specific guide.
  Parameters:
  •	guideId (integer) – ID of the guide to retrieve.
  ________________________________________
  DELETE /guides/{guideId}
  Description:
  Delete a specific guide by its ID.
  Parameters:
  •	guideId (integer) – ID of the guide to delete.
  ________________________________________
  GET /guides/{guideId}/paa
  Description:
  Retrieve "People Also Ask" questions related to the guide's query.
  Parameters:
  •	guideId (integer) – ID of the guide.
  ________________________________________
  GET /guides/{guideId}/related
  Description:
  Retrieve keywords and topics related to the guide's query.
  Parameters:
  •	guideId (integer) – ID of the guide.
  ________________________________________
  POST /guides/{guideId}/check
  Description:
  Check the SEO quality of a given text against the guide.
  Parameters:
  •	guideId (integer) – ID of the guide.
  •	text (string) – The content to analyze.
  ________________________________________
  GET /guides/{guideId}/serp
  Description:
  Retrieve SERP (Search Engine Results Page) data related to the guide’s keyword.
  Parameters:
  •	guideId (integer) – ID of the guide.
  ________________________________________
  GET /guides/{guideId}/brief
  Description:
  Get the current brief associated with the guide.
  Parameters:
  •	guideId (integer) – ID of the guide.
  ________________________________________
  POST /guides/{guideId}/brief
  Description:
  Generate or update the brief for the guide.
  Parameters:
  •	guideId (integer) – ID of the guide.
  ________________________________________
  GET /guides/{guideId}/brief/analyze
  Description:
  Retrieve the result of the latest brief analysis.
  Parameters:
  •	guideId (integer) – ID of the guide.
  ________________________________________
  POST /guides/{guideId}/brief/analyze
  Description:
  Submit a brief for SEO analysis.
  Parameters:
  •	guideId (integer) – ID of the guide.
  •	requestBody (string) – Text content to analyze.
  ________________________________________
  GET /guides/{guideId}/brief/analyze/{analyzeId}
  Description:
  Retrieve a specific analysis result by its ID.
  Parameters:
  •	guideId (integer) – ID of the guide.
  •	analyzeId (integer) – ID of the analysis to retrieve.

  5. Seo Txl Endpoints
  Endpoints for generating and manipulating SEO-optimized text (TXL) based on guide data.
  ________________________________________
  POST /guides/{guideId}/seotxl/auto
  Description:
  Automatically generate SEO content based on the guide and input text.
  Parameters:
  •	guide (integer) – ID of the guide.
  •	text (string) – Input text to base the generation on.
  ________________________________________
  POST /guides/{guideId}/seotxl/outline
  Description:
  Generate a structured outline for SEO content.
  Parameters:
  •	guide (integer) – ID of the guide.
  •	text (string) – Input topic or content to guide the outline.
  ________________________________________
  POST /guides/{guideId}/seotxl/questions
  Description:
  Generate a list of relevant questions based on the guide’s topic.
  Parameters:
  •	guide (integer) – ID of the guide.
  ________________________________________
  POST /guides/{guideId}/seotxl/rephrase
  Description:
  Rephrase a given text to improve clarity or SEO performance.
  Parameters:
  •	guide (integer) – ID of the guide.
  •	text (string) – The text to rephrase.
  ________________________________________
  POST /guides/{guideId}/seotxl/create
  Description:
  Generate custom SEO text with configurable temperature and word limit.
  Parameters:
  •	guide (integer) – ID of the guide.
  •	text (string) – Input prompt or content base.
  •	temperature (integer) – Controls creativity (higher = more creative).
  •	maxWords (integer) – Maximum number of words in the output.


  ## Credentials

  To get your API key, please refer to [this page](https://yourtext.guru/en/pricing) for pricing and details.
  All API requests require authentication. You must include your API key in the request headers:

  ```
  Authorization: Bearer YOUR_API_KEY
  ```

  Replace `YOUR_API_KEY` with your actual API key.

  ## Compatibility

  Tested on n8n Version: 1.100.1

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * For more detailed information, refer to the [official API documentation](https://yourtext.guru/api/v2/documentation)
    If you encounter issues or have questions, please contact the YourText.Guru support team through their support portal.


  ## Version history

  version: 0.1.0

ai_documentation_summary:
  {"purpose":"This n8n community node integrates YourTextGuru, an SEO content optimization tool, to enable content analysis, keyword research, and project management within n8n workflows.","capabilities":["Monitor API status and OpenAI usage consumption","Create, retrieve, update, and delete SEO projects","Organize content into groups and manage guide associations","Generate and retrieve topical meshes for content groups","Create word cloud visualizations of topical data","Retrieve 'People Also Ask' questions for SEO analysis","Manage SEO guides with filtering by project, group, language, and API generation status"],"authentication":"API Key (implied by 'authenticated user' references in endpoints)","commonUseCases":["Automated SEO content planning and organization","Keyword research and topical authority mapping","Content gap analysis using People Also Ask data","Automated creation of SEO guide structures"],"limitations":["Authentication method not explicitly documented in the provided text","Full API documentation is truncated in the source material"],"relatedNodes":["n8n-nodes-http.request","n8n-nodes-http.response"]}


node_type: n8n-nodes-llmlayer.llmLayer
package_name: n8n-nodes-llmlayer
display_name: LLMLayer
description: Search and answer questions using LLMLayer API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: yassine.khazzan
author_github_url: https://github.com/YassKhazzan/
npm_package_name: n8n-nodes-llmlayer
npm_version: 1.0.3
community_fetched_at: 2026-07-14T14:40:33.326Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "answer",
      "options": [
        {
          "name": "Answer",
          "value": "answer",
          "description": "Search and generate AI answers"
        },
        {
          "name": "Web Search",
          "value": "webSearch",
          "description": "Search the web for information"
        },
        {
          "name": "Scrape",
          "value": "scrape",
          "description": "Scrape content from a URL"
        },
        {
          "name": "YouTube",
          "value": "youtube",
          "description": "Get YouTube video transcript"
        },
        {
          "name": "PDF",
          "value": "pdf",
          "description": "Extract content from PDF"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate",
          "value": "generate",
          "action": "Generate an answer",
          "description": "Generate an answer based on search results"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "answer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search the web",
          "description": "Search the web"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webSearch"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scrapeUrl",
      "options": [
        {
          "name": "Scrape URL",
          "value": "scrapeUrl",
          "action": "Scrape content from URL",
          "description": "Scrape content from a URL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "scrape"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getTranscript",
      "options": [
        {
          "name": "Get Transcript",
          "value": "getTranscript",
          "action": "Get YouTube transcript",
          "description": "Get YouTube video transcript"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "youtube"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "extractContent",
      "options": [
        {
          "name": "Extract Content",
          "value": "extractContent",
          "action": "Extract PDF content",
          "description": "Extract text from PDF"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdf"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate",
      "value": "generate",
      "action": "Generate an answer",
      "description": "Generate an answer based on search results",
      "resource": "answer"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search the web",
      "description": "Search the web",
      "resource": "webSearch"
    },
    {
      "name": "Scrape URL",
      "value": "scrapeUrl",
      "action": "Scrape content from URL",
      "description": "Scrape content from a URL",
      "resource": "scrape"
    },
    {
      "name": "Get Transcript",
      "value": "getTranscript",
      "action": "Get YouTube transcript",
      "description": "Get YouTube video transcript",
      "resource": "youtube"
    },
    {
      "name": "Extract Content",
      "value": "extractContent",
      "action": "Extract PDF content",
      "description": "Extract text from PDF",
      "resource": "pdf"
    }
  ]

npm_readme:
  # n8n-nodes-llmlayer

  An n8n **Community Node** for [LLMLayer](https://llmlayer.ai) — a Search & Answer API that combines web search with AI-generated, source-grounded responses.

  ---

  ## Features

  * **AI‑Powered Answers**: Generate comprehensive answers using popular models (GPT‑4o, Claude 3.5, Gemini, etc.).
  * **Web Search**: General, news, shopping, videos, images, and scholar search types.
  * **Content Extraction**: Scrape public pages and return Markdown/HTML, or request PDFs/screenshots.
  * **YouTube Transcripts**: Retrieve transcripts from YouTube videos.
  * **PDF Text**: Extract text and metadata from PDFs.

  > Availability of specific models/features depends on your LLMLayer account and current API support.

  ---

  ## Compatibility

  * **n8n**: 1.68+ recommended
  * **Node.js**: 20+ recommended (align with n8n’s LTS baseline)

  ---

  ## Installation

  ### A) n8n Cloud / In‑Editor Browse

  If/when this package is **verified by n8n**, you can install it directly from the editor:

  1. **Settings → Community Nodes → Browse**
  2. Search for `LLMLayer` or `n8n-nodes-llmlayer`
  3. Click **Install**

  > If it’s not yet verified, use the self‑hosted options below.

  ### B) Self‑Hosted n8n

  **From the UI**

  1. **Settings → Community Nodes → Install**
  2. Enter `n8n-nodes-llmlayer`
  3. Install and restart n8n if prompted

  **Using npm inside your instance**

  ```bash
  npm install n8n-nodes-llmlayer
  ```

  **Using Docker (inside the container)**

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

  Then restart your container.

  **Via environment variable (install at startup)**

  ```bash
  # Add to your n8n environment
  N8N_COMMUNITY_PACKAGES=n8n-nodes-llmlayer
  ```

  ---

  ## Authentication

  1. Sign up at **[https://app.llmlayer.ai](https://app.llmlayer.ai)** and create an API key.
  2. In n8n, go to **Credentials → New → LLMLayer**.
  3. Paste your API key and **Save**.

  > This node sends your queries/URLs to LLMLayer; review your privacy and data‑handling requirements before production use.

  ---

  ## Node Overview

  The node exposes the following **resources**:

  ### 1) Answer

  Generate AI answers grounded in real‑time search.

  * **Query** — Question/prompt
  * **Model** — Pick from supported models
  * **Answer Type** — `markdown` | `html` | `json`
  * **Search Type** — `general` | `news`
  * **System Prompt** — Optional instructions
  * **Location / Date Filter / Recency** — Tune search context
  * **Citations / Return Sources** — Include sources and documents
  * **Temperature / Max Tokens** — Output control

  ### 2) Web Search

  Perform targeted searches.

  * **Search Type** — `general`, `news`, `shopping`, `videos`, `images`, `scholar`
  * **Query**, **Location**, **Recency**
  * **Domain Filters** — Include/exclude specific domains

  ### 3) Scrape

  Extract content from public web pages.

  * **URL**
  * **Format** — `markdown`, `html`, `pdf`, `screenshot`
  * **Include Images / Links**

  ### 4) YouTube

  Fetch video transcripts.

  * **URL**
  * **Language** (optional)

  ### 5) PDF

  Extract text from a PDF URL.

  * **URL**

  ---

  ## Usage Examples

  ### Answer (Markdown)

  ```json
  {
    "resource": "answer",
    "query": "What are the latest developments in AI?",
    "model": "openai/gpt-4o-mini",
    "answer_type": "markdown",
    "citations": true,
    "return_sources": true
  }
  ```

  ### News Search (Past Week, US)

  ```json
  {
    "resource": "webSearch",
    "query": "artificial intelligence breakthroughs",
    "search_type": "news",
    "recency": "week",
    "location": "us"
  }
  ```

  ### Structured JSON Answer

  ```json
  {
    "resource": "answer",
    "query": "List top 5 programming languages",
    "model": "anthropic/claude-3-5-sonnet-latest",
    "answer_type": "json",
    "json_schema": {
      "type": "object",
      "properties": {
        "languages": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {"type": "string"},
              "rank": {"type": "number"},
              "use_cases": {"type": "array"}
            },
            "required": ["name", "rank"]
          }
        }
      },
      "required": ["languages"]
    }
  }
  ```

  ---

  ## Error Handling & Tips

  * Enable **Continue On Fail** to keep workflows running on non‑critical errors.
  * Common issues:

      * **401/403** → Invalid/expired API key
      * **429** → Rate limit exceeded (add a Wait node or retry)
      * **Network timeouts** → Increase node timeout or add retries
      * **Access‑restricted pages** (Scrape) → Paywalls/blocks/dynamic content may limit extraction

  ---

  ## Support

  * **Docs**: [https://docs.llmlayer.ai](https://docs.llmlayer.ai)
  * **Issues**: [https://github.com/YassKhazzan/n8n-nodes-llmlayer/issues](https://github.com/YassKhazzan/n8n-nodes-llmlayer/issues)
  * **Email**: [support@llmlayer.ai](mailto:support@llmlayer.ai)

  ---

  ## License

  MIT

  ---

  ## Author

  Yassine Khazzan — [LLMLayer](https://llmlayer.ai)

  ---

  ## Changelog

  ### 1.0.2

  * Polish: README, metadata, minor fixes

  ### 1.0.1

  * Passed security scan

  ### 1.0.0

  * Initial release with Answer, Web Search, Scrape, YouTube, PDF

ai_documentation_summary:
  {"purpose":"A community n8n node that integrates with the LLMLayer API to perform web search, scrape content, extract PDFs, and generate AI-powered answers grounded in real-time sources.","capabilities":["Generate AI answers with citations and source grounding","Perform web searches across multiple types (general, news, shopping, videos, images, scholar)","Scrape public web pages and extract content in Markdown, HTML, PDF, or screenshot formats","Retrieve YouTube video transcripts","Extract text and metadata from PDF URLs","Configure output formats (Markdown, HTML, JSON) with custom schemas","Filter search results by location, date, and domain","Control AI generation via temperature and token limits"],"authentication":"API key required (configured via n8n Credentials)","commonUseCases":["Researching current events with source citations","Extracting structured data from web pages","Analyzing YouTube content via transcripts","Processing PDF documents for text extraction","Generating grounded answers for RAG workflows"],"limitations":["Availability of specific models and features depends on the user's LLMLayer account and API support","Scraping may be limited by paywalls, access restrictions, or dynamic content on target pages","Rate limits may require retry logic or wait nodes to prevent 429 errors","Not yet verified by n8n for direct installation in n8n Cloud (may require self-hosted installation)"],"relatedNodes":["n8n-nodes-webhook.webhook","n8n-nodes-http.request","n8n-nodes.wait.wait","n8n-nodes.code.code"]}


node_type: @xano/n8n-nodes-xano.xano
package_name: @xano/n8n-nodes-xano
display_name: Xano
description: Interact with Xano API to manage workspaces, tables, and content.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: xanosean
author_github_url: https://github.com/xano-inc/n8n-nodes-xano.git
npm_package_name: @xano/n8n-nodes-xano
npm_version: 1.0.6
community_fetched_at: 2026-07-14T14:40:33.327Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "table",
      "options": [
        {
          "name": "Table",
          "value": "table"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getTableContent",
      "options": [
        {
          "name": "Create Row",
          "value": "createRow",
          "action": "Create a row",
          "description": "Add a new row to a table"
        },
        {
          "name": "Create Row Bulk",
          "value": "bulkCreateContent",
          "action": "Create bulk rows",
          "description": "Bulk create rows in a table"
        },
        {
          "name": "Delete a Row",
          "value": "deleteSingleContent",
          "action": "Delete a row",
          "description": "Delete a single row from a table"
        },
        {
          "name": "Get a Row",
          "value": "getSingleContent",
          "action": "Get a row",
          "description": "Get a single row from a table"
        },
        {
          "name": "Get Many Rows",
          "value": "getTableContent",
          "action": "Get many rows",
          "description": "Get all rows from a table"
        },
        {
          "name": "Search Row",
          "value": "searchRow",
          "action": "Search row",
          "description": "Search for a row in a table"
        },
        {
          "name": "Update Row by ID",
          "value": "updateRow",
          "action": "Update row by ID",
          "description": "Update a new row to a table"
        },
        {
          "name": "Update Rows in Bulk by ID",
          "value": "bulkUpdateContent",
          "action": "Update rows in bulk by ID",
          "description": "Bulk Update rows to a table"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "table"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Row",
      "value": "createRow",
      "action": "Create a row",
      "description": "Add a new row to a table",
      "resource": "table"
    },
    {
      "name": "Create Row Bulk",
      "value": "bulkCreateContent",
      "action": "Create bulk rows",
      "description": "Bulk create rows in a table",
      "resource": "table"
    },
    {
      "name": "Delete a Row",
      "value": "deleteSingleContent",
      "action": "Delete a row",
      "description": "Delete a single row from a table",
      "resource": "table"
    },
    {
      "name": "Get a Row",
      "value": "getSingleContent",
      "action": "Get a row",
      "description": "Get a single row from a table",
      "resource": "table"
    },
    {
      "name": "Get Many Rows",
      "value": "getTableContent",
      "action": "Get many rows",
      "description": "Get all rows from a table",
      "resource": "table"
    },
    {
      "name": "Search Row",
      "value": "searchRow",
      "action": "Search row",
      "description": "Search for a row in a table",
      "resource": "table"
    },
    {
      "name": "Update Row by ID",
      "value": "updateRow",
      "action": "Update row by ID",
      "description": "Update a new row to a table",
      "resource": "table"
    },
    {
      "name": "Update Rows in Bulk by ID",
      "value": "bulkUpdateContent",
      "action": "Update rows in bulk by ID",
      "description": "Bulk Update rows to a table",
      "resource": "table"
    }
  ]

npm_readme:
  # 📘 n8n-nodes-xano — Custom Node Documentation

  This is an n8n community node. It lets you use [Xano](https://www.xano.com/) in your n8n workflows, enabling workflow automation through custom API actions like managing rows, fetching table schemas, and more.

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

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

  ---

  ## Installation

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

  ## 🔧 Operations

  | Action                   | Value (operation)     | Description                              |
  | ------------------------ | --------------------- | ---------------------------------------- |
  | ✅ Create Row            | `createRow`           | Create a new row in a selected table     |
  | ✅ Update Row            | `updateRow`           | Update a row with specific field values  |
  | ✅ Delete Single Content | `deleteSingleContent` | Delete a single row by ID                |
  | ✅ Get a Row             | `getSingleContent`    | Fetch a row by ID                        |
  | ✅ Get Many Rows         | `getTableContent`     | Fetch multiple rows with pagination      |
  | ✅ Create Bulk Rows      | `bulkCreateContent`   | Insert multiple rows                     |
  | ✅ Update Bulk Rows      | `bulkUpdateContent`   | Bulk update multiple records             |
  | ✅ Search Rows           | `searchRow`           | Search using filter queries (JSON input) |

  ## Credentials

  To use this node in your workflows, you’ll need to authenticate your Xano account using the **Metadata API Access Token**.

  ### 🔑 Step 1: Get Your Xano Metadata API Access Token

  1. **Log in to your Xano account**
     Visit: [https://xano.com](https://xano.com)

  2. **Access your instance**
     In the lower-left corner of the dashboard, click **Instances**.

  3. **Open instance settings**
     Click the ⚙️ icon next to your instance name.

  4. **Select Metadata API**
     From the panel that opens, select **Metadata API**.

  5. **Generate an Access Token**
     Click on **➕ Create Token** and configure the following:
     - **Name**: Something descriptive like `n8n integration token`
     - **Expiry**: Set an expiry (e.g. 7 days, or "Never" if preferred)
     - **Scopes**: Select the necessary access:
       - ✅ `Database` (CRUD)

       - ✅ `Content`, `API Groups`, or other required scopes for your use case

     > ⚠️ Make sure to select `Read` and `Update` at a minimum for basic operations.

  6. **Copy the generated access token**
     This token will be shown only once. Store it securely.

  ### 🔌 Step 2: Add Credentials in n8n

  1. Open your n8n instance
  2. Go to **Credentials** and click **"New"**
  3. Search for **Xano API** (your node’s credential type)
  4. In the **Access Token** field, paste the token from Xano

  #### ✅ Successful connection will show:

  ![Connection Success](./assets/success.png)

  #### ❌ If token is invalid or expired:

  ![Connection Failed](./assets/error.png)

  > If the token is invalid, regenerate one from Xano and repeat the above steps.

  ### ✅ Final Step

  Once the connection is verified, you’re ready to start using Xano in your workflows via this custom node!

  ## Compatibility

  Tested on n8n v1.100.0 and above.

  ## Usage

  Note about the **Search Rows** operation. It uses a simplified version of the [external filtering search](https://docs.xano.com/xano-features/metadata-api/search#search) syntax.

  Here's a quick example where I'm searching for the record where id = 2.

  `[{"id|=":"2"}]`

  Simply add the JSON above to the Search field.

  **Pro tip**: Open Dev Tools in your browser then use the Xano UI filter in your table view to see what syntax gets generated by the /content API request, then copy the value from the search field in the payload and use that.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Xano Documentation](https://docs.xano.com/)

  ## Version history

  ### 1.0.1

  - Initial release

  ### 1.0.2

  - Minor updates

  ### 1.0.3

  - Minor updates

  ### 1.0.4

  - Minor updates

  ### 1.0.5

  - Minor updates

ai_documentation_summary:
  {"purpose":"This n8n community node enables workflow automation by interacting with the Xano API to manage workspaces, tables, and content through CRUD operations and search functionality.","capabilities":["Create a new row in a selected table","Update a row with specific field values","Delete a single row by ID","Fetch a row by ID","Fetch multiple rows with pagination","Insert multiple rows in bulk","Update multiple records in bulk","Search rows using filter queries (JSON input)"],"authentication":"API key required (Xano Metadata API Access Token with Database scope)","commonUseCases":["Automating data entry into Xano tables","Syncing data between n8n and Xano databases","Bulk data migration or updates","Searching and filtering Xano content dynamically"],"limitations":["Search Rows operation uses a simplified version of Xano's external filtering search syntax","Requires manual configuration of token scopes (Database, Content, API Groups) in Xano dashboard","Token must be generated with specific scopes and may expire based on configured settings"],"relatedNodes":["n8n community nodes","Xano API nodes"]}


node_type: n8n-nodes-simla.simlaTrigger
package_name: n8n-nodes-simla
display_name: Simla Trigger
description: Starts the workflow on a Simla mg event
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: retailcrm
author_github_url: https://github.com/retailcrm/
npm_package_name: n8n-nodes-simla
npm_version: 0.1.2
community_fetched_at: 2026-07-14T14:40:33.328Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-simla

  This is a n8n community node. It lets you use Simla API in your n8n workflows.

  Simla is a customer relationship management (CRM) platform that helps businesses manage sales, customer interactions, and messaging.

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

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

  ## Installation

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

  ## Operations

  This node supports the following resources and operations:

  ### Customer
  - **Get**: Get customers by filter
  - **Create**: Create customer
  - **Edit**: Edit customer

  ### Order
  - **Get**: Get orders by filter
  - **Create**: Create order
  - **Edit**: Edit order

  ### Message
  - **Send**: Send a message to chat

  ### Dialog
  - **Assign**: Assign a dialog to a user or bot
  - **Unassign**: Unassign a dialog
  - **Close**: Close a dialog

  ## Credentials

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

  1. You need a Simla account
  2. Create a Simla API key - [documentation](https://docs.simla.com/Users/Integration/APIEditing). Minimal required permissions:
  	- **Orders**: Read and write
  	- **Customers**: Read and write
  	- **Integration**: Read and write
  3. Provide:
  	- **Simla URL**: Your Simla instance URL
  	- **Simla API key**: Your API key for authentication

  The node uses API key authentication with the key sent in the X-Api-Key header.

  ## Compatibility

  This node has been tested with n8n version 1.109.1.

  ## Usage

  ### Customer and order operations:
  Fill in the necessary fields in the filter to search for a customer or order.

  #### Saving an order with a customer
  Select Simla Trigger with Trigger On: _Customer Message_.
  ![img.png](docs/customerOrderCreate.png)
  You can search for a customer by _customerMgId_:
  ![img.png](docs/customerGet.png)
  When creating an order, specify Customer -> ID:
  ![img.png](docs/orderWithCustomer.png)

  Choose the necessary fields from fixedCollection for creating and editing a customer or order.
  #### Order creation example:
  ![img.png](docs/orderCreate.png)

  #### Customer edition example:
  ![img.png](docs/customerEdit.png)

  ### Illustrative example of chat interactions:
  Select Simla Trigger with Trigger On: _Customer Message_.
  When a message is received in Simla, the message is passed to $json.body.payload[0].content. Depending on the message written by the client:
  - a greeting is sent to the client;
  - the dialog is assigned to the appropriate manager;
  - the dialog is unassigned from the responsible person;
  - the dialog is closed.

  ![img.png](docs/chatManipulation.png)

  To send a message, specify the Chat ID from INPUT. To manage the dialog, select dialogId in the corresponding field.

  ![img.png](docs/chatSendMessage.png)


  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Simla API Documentation](https://docs.simla.com/Developers/API/APIVersions/APIv5)

ai_documentation_summary:
  {"purpose":"A n8n community node that triggers workflows based on events from the Simla CRM platform, enabling automation of customer interactions, orders, and messaging.","capabilities":["Trigger workflow on Simla customer message events","Retrieve customers by filter","Create new customers","Edit existing customers","Retrieve orders by filter","Create new orders","Edit existing orders","Send messages to chat","Assign dialogs to users or bots","Unassign dialogs"],"authentication":"API key required (X-Api-Key header)","commonUseCases":["Automate customer onboarding when a new customer message is received","Create orders linked to specific customers","Route chat dialogues to appropriate managers or bots","Close or unassign completed customer dialogues"],"limitations":["Community node (not official n8n node)","Requires separate Simla account and API key setup","Minimum permissions required for Orders, Customers, and Integration resources","Tested only with n8n version 1.109.1"],"relatedNodes":["n8n-nodes-base.webhook","n8n-nodes-base.httpRequest"]}


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

updated_at: 2026-07-14 14:40:33
author_name: mjfk
author_github_url: https://github.com/moorcheh-ai/
npm_package_name: n8n-nodes-moorcheh
npm_version: 0.1.7
community_fetched_at: 2026-07-14T14:40:33.329Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "namespace",
      "options": [
        {
          "name": "Answer",
          "value": "answer"
        },
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "Namespace",
          "value": "namespace"
        },
        {
          "name": "Search",
          "value": "search"
        },
        {
          "name": "Vector",
          "value": "vector"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new namespace",
          "description": "Create a new namespace"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all namespaces",
          "description": "List all namespaces"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a namespace",
          "description": "Delete a namespace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "namespace"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload documents to a namespace",
          "description": "Upload documents to a namespace"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get documents from a namespace",
          "description": "Get documents from a namespace"
        },
        {
          "name": "Fetch Text Data",
          "value": "fetchTextData",
          "action": "Fetch text data from a text namespace",
          "description": "List text/summary chunks from a text-type namespace (max 100 per request)"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete documents from a namespace",
          "description": "Delete documents from a namespace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload vectors to a namespace",
          "description": "Upload vectors to a namespace"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete vectors from a namespace",
          "description": "Delete vectors from a namespace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "vector"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search across namespaces",
          "description": "Search across namespaces"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate",
          "value": "generate",
          "action": "Generate AI answer based on namespace content",
          "description": "Generate AI answer based on namespace content"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "answer"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a new namespace",
      "description": "Create a new namespace",
      "resource": "namespace"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all namespaces",
      "description": "List all namespaces",
      "resource": "namespace"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a namespace",
      "description": "Delete a namespace",
      "resource": "namespace"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload documents to a namespace",
      "description": "Upload documents to a namespace",
      "resource": "document"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get documents from a namespace",
      "description": "Get documents from a namespace",
      "resource": "document"
    },
    {
      "name": "Fetch Text Data",
      "value": "fetchTextData",
      "action": "Fetch text data from a text namespace",
      "description": "List text/summary chunks from a text-type namespace (max 100 per request)",
      "resource": "document"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete documents from a namespace",
      "description": "Delete documents from a namespace",
      "resource": "document"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload vectors to a namespace",
      "description": "Upload vectors to a namespace",
      "resource": "vector"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete vectors from a namespace",
      "description": "Delete vectors from a namespace",
      "resource": "vector"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search across namespaces",
      "description": "Search across namespaces",
      "resource": "search"
    },
    {
      "name": "Generate",
      "value": "generate",
      "action": "Generate AI answer based on namespace content",
      "description": "Generate AI answer based on namespace content",
      "resource": "answer"
    }
  ]

npm_readme:
  # n8n-nodes-moorcheh

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

  This is an [n8n](https://n8n.io/) Official node interfacing with [Moorcheh](https://moorcheh.ai).

  Moorcheh is a powerful vector store and AI platform that enables semantic search, document storage, and AI-powered question answering across your 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)  
  [Compatibility](#compatibility)  
  [Usage](#usage)  
  [Resources](#resources)  

  ## Installation

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

  ## Operations

  ### Namespace Operations
  - **[Create](https://docs.moorcheh.ai/api-reference/namespaces/create)**: Create a new namespace for storing documents or vectors
  - **[List](https://docs.moorcheh.ai/api-reference/namespaces/list)**: List all available namespaces
  - **[Delete](https://docs.moorcheh.ai/api-reference/namespaces/delete)**: Delete a namespace and all its contents

  ### Document Operations
  - **[Upload](https://docs.moorcheh.ai/api-reference/data/upload-text)**: Upload documents to a namespace for semantic search
  - **[Get](https://docs.moorcheh.ai/api-reference/data/get-documents)**: Retrieve specific documents by their IDs
  - **[Fetch Text Data](https://docs.moorcheh.ai/api-reference/data/fetch-text-data)**: List stored text and summary chunks from a **text-type** namespace (up to **100** items per request; vector-only namespaces are not supported)
  - **[Delete](https://docs.moorcheh.ai/api-reference/data/delete)**: Delete documents from a namespace

  ### Vector Operations
  - **[Upload](https://docs.moorcheh.ai/api-reference/data/upload-vector)**: Upload vector embeddings to a namespace
  - **[Delete](https://docs.moorcheh.ai/api-reference/data/delete)**: Delete vectors from a namespace

  ### Search Operations
  - **[Search](https://docs.moorcheh.ai/api-reference/search/query)**: Perform semantic search across namespaces using text queries or vector embeddings

  ### Answer Operations
  - **[Generate](https://docs.moorcheh.ai/api-reference/ai/generate)**: Generate AI-powered answers based on namespace content using various LLM models

  ## Credentials

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

  1. Sign up for a Moorcheh account (see [Quickstart](https://docs.moorcheh.ai/quickstart) on [docs.moorcheh.ai](https://docs.moorcheh.ai))
  2. Navigate to your API settings in the Moorcheh console
  3. Generate an API key
  4. Use the API key in the Moorcheh credentials in n8n ([Authentication](https://docs.moorcheh.ai/guides/authentication))

  ## Compatibility

  - **n8n version**: 1.0.0 or later
  - **Node.js version**: 20.15 or later

  ## Usage

  ### Creating a Namespace
  1. Select the "Namespace" resource
  2. Choose "Create" operation
  3. Enter a namespace name
  4. Select the type (Text or Vector)
  5. For vector namespaces, specify the vector dimension

  ### Uploading Documents
  1. Select the "Document" resource
  2. Choose "Upload" operation
  3. Enter the namespace name
  4. Add documents with ID, text content, and optional metadata

  ### Fetching text chunks (batch)
  1. Select the "Document" resource
  2. Choose **Fetch Text Data**
  3. Enter the **text-type** namespace name

  The API returns `items` (max 100), `statistics`, and metadata suited for display, export, or RAG. Authenticate with your Moorcheh API key (same as other operations).

  ### Searching Content
  1. Select the "Search" resource
  2. Choose "Search" operation
  3. Enter your query (text or comma-separated vector values)
  4. Specify target namespaces
  5. Set top_k and threshold parameters

  ### Generating AI Answers
  1. Select the "Answer" resource
  2. Choose "Generate" operation
  3. Enter the namespace name
  4. Provide your question
  5. Select an AI model and configure parameters

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Moorcheh Documentation](https://docs.moorcheh.ai) — API reference, guides, and [documentation index](https://docs.moorcheh.ai/llms.txt)
  * [Moorcheh n8n integration](https://docs.moorcheh.ai/integrations/n8n/overview)
  * [Moorcheh Console](https://console.moorcheh.ai) — account and API keys

ai_documentation_summary:
  {"purpose":"This n8n node enables interaction with the Moorcheh Vector Store API to manage namespaces, upload documents and vectors, perform semantic search, and generate AI-powered answers.","capabilities":["Create namespaces for storing documents or vectors","List all available namespaces","Delete namespaces and their contents","Upload text documents to namespaces","Retrieve specific documents by ID","Delete documents from namespaces","Upload vector embeddings to namespaces","Delete vectors from namespaces","Perform semantic search using text queries or vector embeddings","Generate AI-powered answers using various LLM models"],"authentication":"API key required","commonUseCases":["Building semantic search features for enterprise knowledge bases","Enabling AI-powered question and answer systems over custom data","Managing vector embeddings for machine learning pipelines","Creating document storage solutions with semantic indexing"],"limitations":["Requires a paid Moorcheh account with an API key","Requires n8n version 1.0.0 or later and Node.js 20.15 or later","Community node status may imply less official support than core nodes"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.code","n8n-nodes-base.function"]}


node_type: @infobip/n8n-nodes-infobip-api.infobipApi
package_name: @infobip/n8n-nodes-infobip-api
display_name: InfobipApi
description: Interact with Infobip SMS API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: infobip.mobile
author_github_url: https://github.com/infobip/n8n-nodes-infobip-api.git
npm_package_name: @infobip/n8n-nodes-infobip-api
npm_version: 0.2.1
community_fetched_at: 2026-07-14T14:40:33.330Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "sendSms",
      "options": [
        {
          "name": "Send an SMS",
          "value": "sendSms",
          "action": "Send an SMS"
        },
        {
          "name": "View SMS Delivery Report",
          "value": "smsDeliveryReport",
          "action": "View sms delivery report"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send an SMS",
      "value": "sendSms",
      "action": "Send an SMS"
    },
    {
      "name": "View SMS Delivery Report",
      "value": "smsDeliveryReport",
      "action": "View sms delivery report"
    }
  ]

npm_readme:
  # n8n-nodes-infobip-api

  **⚠️ Beta Version**: This node is currently in beta. Features and APIs may change.

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

  Infobip is a global cloud communications platform that enables businesses to send SMS messages, make voice calls, and engage with customers through various messaging channels.

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

  You can install this node using:

  ```bash
  npm install @infobip/n8n-nodes-infobip-api
  ```

  ## Operations

  * **Send SMS**: Send SMS messages to recipients via the Infobip SMS API
  * **View SMS Delivery Report**: Retrieve delivery reports for previously sent SMS messages

  ## Credentials

  To use this node, you need an Infobip account and API credentials:

  1. Sign up for an [Infobip account](https://www.infobip.com/)
  2. Obtain your API key from the Infobip Developer Hub
  3. In n8n, create new Infobip API credentials with:
     - **API Key**: Your Infobip API key
     - **Domain**: Your Infobip API domain (defaults to `https://api.infobip.com/`)

  ## Compatibility

  This node requires:
  - n8n version 1.0 or later
  - Node.js version 20 or higher

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Infobip SMS API documentation](https://www.infobip.com/docs/api/channels/sms)
  * [Infobip API authentication](https://www.infobip.com/docs/api#authentication)

ai_documentation_summary:
  {"purpose":"A community node that enables sending SMS messages and retrieving delivery reports through the Infobip SMS API within n8n workflows.","capabilities":["Send SMS messages to recipients","Retrieve SMS delivery reports"],"authentication":"API key required","commonUseCases":["Automated SMS notifications in workflows","Customer communication campaigns","Delivery status tracking for sent messages"],"limitations":["Currently in beta version with potential for feature/API changes","Requires n8n version 1.0 or later","Requires Node.js version 20 or higher"],"relatedNodes":["Infobip Voice Call node","Infobip WhatsApp node"]}


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-07-14 14:40:33
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-07-14T14:40:33.331Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "user",
      "options": [
        {
          "name": "User",
          "value": "user"
        },
        {
          "name": "Company",
          "value": "company"
        },
        {
          "name": "Lead",
          "value": "lead"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a user",
          "description": "Get the data of a single user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search companies",
          "description": "Search companies"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "company"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search leads",
          "description": "Search leads"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a lead",
          "description": "Get the data of a single lead"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new lead",
          "description": "Create a new lead"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a lead",
          "description": "Update an existing lead"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "lead"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

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

npm_readme:
  # n8n-nodes-kylas

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

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

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

  ## Table of Contents

  - [Installation](#installation)
  - [Operations](#operations)
  - [Credentials](#credentials)
  - [Compatibility](#compatibility)
  - [Usage](#usage)
  - [Advanced Features](#advanced-features)
  - [Examples](#examples)
  - [Troubleshooting](#troubleshooting)
  - [Resources](#resources)
  - [Version History](#version-history)

  ## Installation

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

  ### Manual Installation

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

  After installation restart n8n to register the community node.

  ## Operations

  The Kylas node supports the following operations:

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

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

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

  ## Credentials

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

  ### Prerequisites

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

  ### Setting up Authentication

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

  ### Authentication Method

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

  ## Compatibility

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

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

  ## Usage

  ### Basic Lead Creation

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

  ### Company Filtering

  The company "Get All" operation supports advanced filtering:

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

  ### Custom Fields

  The node provides dynamic custom field support for leads:

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

  ## Advanced Features

  ### Dynamic Custom Fields Loading

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

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

  ### Company Filtering System

  Advanced filtering capabilities for company data retrieval:

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

  ### Error Handling and Validation

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

  ## Examples

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

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

  ### Example 2: Filter Companies

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

  ### Example 3: Search Leads

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

  ## Troubleshooting

  ### Common Issues

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

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

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

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

  ### Debug Tips

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

  ## Resources

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

  ## Version History

  ### v0.1.0 (Current)

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

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

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

  ---

  ## Contributing

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

  ## License

  MIT License - see the LICENSE file for details.

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


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

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

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

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

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

  ## Features

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

  ## Prerequisites

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

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

  ## Installation

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

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


node_type: n8n-nodes-tallyforms.tallyTrigger
package_name: n8n-nodes-tallyforms
display_name: Tally Trigger
description: Starts the workflow on a Tally form submission
category: Community
development_style: declarative
version: 2
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: wouterds
author_github_url: https://github.com/tallyforms/
npm_package_name: n8n-nodes-tallyforms
npm_version: 1.3.3
community_fetched_at: 2026-07-14T14:40:33.333Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n trigger for Tally submissions

  This is an n8n community node that lets you trigger n8n workflows when your Tally form receives a new submission. You will be able to work with the submission data on trigger.

  ## Installation

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

  ## Usage

  1. Create an API key on https://tally.so/settings/api-keys
  2. Create the Tally Trigger
  3. Create a credential for the Tally Trigger using your API key
  4. Select the form for which you want to trigger workflows on submission

  ## Developers

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

ai_documentation_summary:
  {"purpose":"Triggers an n8n workflow automatically when a new submission is received on a Tally form.","capabilities":["Starts workflow execution on form submission","Accesses submission data on trigger","Configurable form selection"],"authentication":"API key required","commonUseCases":["Automated data processing after form submission","Email notifications upon form completion","Database updates triggered by form entries"],"limitations":["Community node (not official n8n package)"],"relatedNodes":["n8n-nodes-tallyforms.tallyForms","n8n-nodes-tallyforms.tallyForm"]}


node_type: @respond-io/n8n-nodes-respond-io.respondio
package_name: @respond-io/n8n-nodes-respond-io
display_name: Respond.io
description: Read, update, write and delete data from Respond.io
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: respond.io
author_github_url: https://github.com/respond-io/n8n-integration.git
npm_package_name: @respond-io/n8n-nodes-respond-io
npm_version: 1.7.0
community_fetched_at: 2026-07-14T14:40:33.334Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-respondio

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

  Respond.io is a customer conversation management platform that helps businesses manage customer conversations across multiple channels like WhatsApp, Facebook Messenger, Instagram, and more. This node provides comprehensive integration with the Respond.io API to automate customer communication workflows.

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

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

  ### Respond.io Actions Node

  The Respond.io Actions node supports the following operations:

  #### Channels

  - **Get All Channels** - Retrieve all channels connected to your workspace

  #### Closing Notes

  - **Get All Closing Notes** - Retrieve all closing notes templates

  #### Comments

  - **Add Comment** - Add a comment to a conversation

  #### Contacts

  - **Create Contact** - Create a new contact
  - **Create or Update Contact** - Create or update an existing contact
  - **Update Contact** - Update an existing contact's information
  - **Find Contact** - Find a specific contact by identifier
  - **Get Many Contacts** - Retrieve multiple contacts with search filtering
  - **Add Tags** - Add tags to a contact
  - **Remove Tags** - Remove tags from a contact
  - **Add Space Tag** - Add a space tag to a contact
  - **Delete Space Tag** - Delete a space tag
  - **Update Space Tag** - Update a space tag
  - **Delete Contact** - Delete a contact
  - **Find Contact Channels** - Find channels associated with a contact

  #### Contact Fields

  - **Get All Custom Fields** - Retrieve all custom fields
  - **Find Custom Field** - Find a specific custom field
  - **Create Custom Field** - Create a new custom field

  #### Conversations

  - **Assign or Unassign Conversation** - Assign or unassign a conversation to/from a user
  - **Open or Close Conversation** - Open or close a conversation

  #### Lifecycle

  - **Update Contact Lifecycle** - Update a contact's lifecycle stage
  - **Remove Contact Lifecycle** - Remove a contact's lifecycle stage

  #### Messages

  - **Send Message** - Send a message to a contact (supports text, email, attachments, quick replies, WhatsApp templates, and custom payloads)
  - **Find Message** - Find a specific message by ID

  #### Users

  - **Find User** - Find a specific user by ID
  - **Get All Users** - Retrieve all users in the workspace

  ## Triggers

  ### Respond.io Trigger Node

  The Respond.io Trigger node can listen for the following events:

  - **New Incoming Message** - Triggered when a new message is received
  - **New Outgoing Message** - Triggered when a new outgoing message is sent
  - **New Comment** - Triggered when a new comment is added to a conversation
  - **Conversation Opened** - Triggered when a conversation is opened
  - **Conversation Closed** - Triggered when a conversation is closed
  - **New Contact** - Triggered when a new contact is created
  - **Contact Updated** - Triggered when a contact is updated
  - **Contact Assignee Updated** - Triggered when a contact's assignee is changed
  - **Contact Tag Updated** - Triggered when a contact's tags are modified
  - **Contact Lifecycle Updated** - Triggered when a contact's lifecycle stage changes

  ## Credentials

  To use this node, you need to authenticate with Respond.io. You'll need:

  1. **API Key** - Your Respond.io API key

  ### How to get your API Key

  1. Log in to your Respond.io account
  2. Go to **Settings** → **Integrations** → **N8N**
  3. Generate a new API key
  4. Copy the API key and use it in the credentials

  ## Compatibility

  - **Minimum n8n version**: 1.0.0
  - **Tested with n8n versions**: 1.0.0+
  - **Node.js version**: >=18.0.0

  ## Usage

  ### Basic Workflow Example

  1. **Set up a trigger** - Use the Respond.io Trigger node to listen for new incoming messages
  2. **Process the message** - Use the Respond.io Actions node to find the contact and send a response
  3. **Add automation** - Create workflows that automatically assign conversations, update contact information, or send follow-up messages

  ### Advanced Workflow Example

  1. **New message trigger** → **Find contact** → **Check contact tags** → **Send automated response** → **Assign to team member**

  ### Message Types Supported

  The Send Message operation supports multiple message types:

  - **Text messages** - Simple text messages
  - **Email messages** - Rich email content with subject and body
  - **Attachments** - Send files and media
  - **Quick replies** - Interactive quick reply buttons
  - **WhatsApp templates** - Pre-approved WhatsApp message templates
  - **Custom payloads** - Custom message formats for specific channels

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Respond.io API Documentation](https://developers.respond.io/)
  - [Respond.io Platform](https://respond.io/)

  ## Version history

  ### Version 1.0.0

  - Initial release
  - Support for all major Respond.io API operations
  - Webhook triggers for real-time events
  - Comprehensive contact and conversation management
  - Multi-channel message sending capabilities

ai_documentation_summary:
  {"purpose":"This n8n community node enables full CRUD operations on Respond.io customer conversation management data, including contacts, conversations, messages, and channels, as well as real-time event triggering.","capabilities":["Get all channels","Retrieve and manage closing notes templates","Create, update, find, and delete contacts","Manage contact tags and space tags","Manage custom fields","Assign/unassign conversations to users","Open or close conversations","Update contact lifecycle stages","Send messages (text, email, attachments, quick replies, WhatsApp templates, custom payloads)","Find messages by ID"],"authentication":"API Key required (Respond.io API Key via Credentials)","commonUseCases":["Automated customer support responses across WhatsApp, Facebook Messenger, and Instagram","Real-time workflow triggers when new customer messages arrive","Automated contact enrichment and tagging based on incoming message content","Conversation assignment and routing to team members","Multi-channel message delivery with attachments and quick replies"],"limitations":["Community node (not official n8n node)","Requires Respond.io API key access"],"relatedNodes":["Respond.io Trigger","Respond.io Actions","Respond.io Credentials"]}


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-07-14 14:40:33
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-07-14T14:40:33.335Z
ai_summary_generated_at: 2026-03-25 22:51:43
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",
      "resource": "highlight"
    },
    {
      "name": "Get Many",
      "value": "getManyMeetings",
      "action": "Gets many meetings",
      "description": "Get list of meetings",
      "resource": "meeting"
    },
    {
      "name": "Get Meeting Details",
      "value": "getMeeting",
      "action": "Gets a meeting by ID",
      "description": "Get a meeting by ID",
      "resource": "meeting"
    },
    {
      "name": "Get Meeting Summary",
      "value": "getMeetingSummary",
      "action": "Gets meeting summary by ID",
      "description": "Get meeting summary by ID",
      "resource": "meeting"
    },
    {
      "name": "Upload",
      "value": "uploadRecording",
      "action": "Upload recording",
      "description": "Upload a recording for analysis",
      "resource": "recording"
    },
    {
      "name": "Get Many",
      "value": "getManyTeams",
      "action": "Get many teams",
      "description": "Get list of teams",
      "resource": "team"
    },
    {
      "name": "Get Team Meetings",
      "value": "getTeamMeetings",
      "action": "Gets team meetings",
      "resource": "team"
    },
    {
      "name": "Get Many",
      "value": "getManyTranscripts",
      "action": "Get many transcripts",
      "description": "Get list of transcripts for a meeting",
      "resource": "transcript"
    }
  ]

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":"This n8n community node enables interaction with the MeetGeek API to manage AI-powered meeting recordings, transcriptions, and summaries within n8n workflows.","capabilities":["Retrieve detailed information about a specific meeting","Upload recording files for analysis and transcription","Retrieve highlights from a specific meeting","Trigger workflow via webhook when a new highlight is created"],"authentication":"API token required (obtained from MeetGeek settings Integration Tab)","commonUseCases":["Automate meeting transcription workflows","Extract meeting highlights into structured data","Process meeting recordings with AI summarization"],"limitations":["Community node (not official n8n node)","Requires separate MeetGeek account and API token"],"relatedNodes":["n8n-nodes-base.webhook","n8n-nodes-base.httpRequest"]}


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

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

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

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

  # n8n-nodes-permitio

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

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

  ## Features

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

  ## Installation

  **Install via n8n UI:**

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

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

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

  ## Credentials

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

  **Prerequisites:**

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

  **Setting up credentials:**

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

  **For ABAC and ReBAC policies:**

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

  **Getting your API key:**

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

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

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

  ## Operations

  **Check**

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

  _Configuration:_

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

  _Response Sample:_

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

  **Get User Permissions**

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

  _Configuration:_

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

  _Response Sample:_

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

  **Get Authorized Users**

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

  _Configuration:_

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

  _Response Sample:_

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

  ## Basic Usage Example

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

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

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

  **Workflow:**

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

  **Result:**

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

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

  ## Compatibility

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

  ## Resources

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

  **Authorization Models:**

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

  **Infrastructure & Deployment:**

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

  **API Methods:**

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

  ## License

  [MIT](LICENSE.md)

  ## Contributing

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

  ---

  Built with ❤️ for the n8n community

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


node_type: n8n-nodes-sms-advert.smsAdvert
package_name: n8n-nodes-sms-advert
display_name: SMSAdvert
description: SMS Advert API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: apps_makeitfuture
author_github_url: https://github.com/makeitfutureDev/n8n-sms-advert.git
npm_package_name: n8n-nodes-sms-advert
npm_version: 1.0.21
community_fetched_at: 2026-07-14T14:40:33.337Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "sms",
      "options": [
        {
          "name": "SMS",
          "value": "sms"
        }
      ],
      "required": true,
      "description": "Send SMS through own devices",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getDevice",
      "options": [
        {
          "name": "Get Devices",
          "value": "getDevice",
          "action": "Get device list",
          "description": "Get all devices"
        },
        {
          "name": "Get Account Details",
          "value": "getAccountDetails",
          "action": "Get account details",
          "description": "Get your account details and available units"
        },
        {
          "name": "Get SMS Api Queue",
          "value": "getApiQueue",
          "action": "Get SMS API queue count",
          "description": "Get current count of messages in the API queue"
        },
        {
          "name": "Send a Message",
          "value": "textToPhoneNumber",
          "action": "Send text to phone number",
          "description": "Send a text to a phone number"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sms"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Devices",
      "value": "getDevice",
      "action": "Get device list",
      "description": "Get all devices",
      "resource": "sms"
    },
    {
      "name": "Get Account Details",
      "value": "getAccountDetails",
      "action": "Get account details",
      "description": "Get your account details and available units",
      "resource": "sms"
    },
    {
      "name": "Get SMS Api Queue",
      "value": "getApiQueue",
      "action": "Get SMS API queue count",
      "description": "Get current count of messages in the API queue",
      "resource": "sms"
    },
    {
      "name": "Send a Message",
      "value": "textToPhoneNumber",
      "action": "Send text to phone number",
      "description": "Send a text to a phone number",
      "resource": "sms"
    }
  ]

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

  # n8n-nodes-starter

  This repo contains example nodes to help you get started building your own custom integrations for [n8n](https://n8n.io). It includes the node linter and other dependencies.

  To make your custom node available to the community, you must create it as an npm package, and [submit it to the npm registry](https://docs.npmjs.com/packages-and-modules/contributing-packages-to-the-registry).

  If you would like your node to be available on n8n cloud you can also [submit your node for verification](https://docs.n8n.io/integrations/creating-nodes/deploy/submit-community-nodes/).

  ## Prerequisites

  You need the following installed on your development machine:

  * [git](https://git-scm.com/downloads)
  * Node.js and npm. Minimum version Node 20. You can find instructions on how to install both using nvm (Node Version Manager) for Linux, Mac, and WSL [here](https://github.com/nvm-sh/nvm). For Windows users, refer to Microsoft's guide to [Install NodeJS on Windows](https://docs.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-windows).
  * Install n8n with:
    ```
    npm install n8n -g
    ```
  * Recommended: follow n8n's guide to [set up your development environment](https://docs.n8n.io/integrations/creating-nodes/build/node-development-environment/).

  ## Using this starter

  These are the basic steps for working with the starter. For detailed guidance on creating and publishing nodes, refer to the [documentation](https://docs.n8n.io/integrations/creating-nodes/).

  1. [Generate a new repository](https://github.com/n8n-io/n8n-nodes-starter/generate) from this template repository.
  2. Clone your new repo:
     ```
     git clone https://github.com/<your organization>/<your-repo-name>.git
     ```
  3. Run `npm i` to install dependencies.
  4. Open the project in your editor.
  5. Browse the examples in `/nodes` and `/credentials`. Modify the examples, or replace them with your own nodes.
  6. Update the `package.json` to match your details.
  7. Run `npm run lint` to check for errors or `npm run lintfix` to automatically fix errors when possible.
  8. Test your node locally. Refer to [Run your node locally](https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally/) for guidance.
  9. Replace this README with documentation for your node. Use the [README_TEMPLATE](README_TEMPLATE.md) to get started.
  10. Update the LICENSE file to use your details.
  11. [Publish](https://docs.npmjs.com/packages-and-modules/contributing-packages-to-the-registry) your package to npm.

  ## More information

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

  ## License

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

  ## 📲 n8n-nodes-smsadvert
  * Official n8n node for SMSAdvert API — easily send SMS messages and manage your SMS accounts directly from your n8n workflows.

  ✉️ Features
  ✅ Send SMS messages to phone numbers using your own devices or the SMSAdvert network.
  ✅ Get a list of your registered devices.
  ✅ Check your current API message queue count.

  * ⚡ Fully integrated with n8n authentication.

  🚀 Installation
  npm install n8n-nodes-smsadvert
  After installation, restart n8n. The node will appear in your node list as SMSAdvert.

  🔐 Authentication
  The node uses API Key authentication.
  In n8n, create new credentials of type SMSAdvertAPI and add your API key from your SMSAdvert account.

  💬 Example Workflows
  Simple SMS blast
  Use an HTTP Request node to pull a list of numbers from a CRM or sheet.

  Connect to SMSAdvert node with Send a Message operation.

  Done! Bulk SMS to your audience.

  🧑‍💻 Contributing
  Pull requests are welcome!
  If you'd like to add new features or improve existing functionality, please open an issue first to discuss what you'd like to change.

ai_documentation_summary:
  {"purpose":"This n8n node enables users to send SMS messages, retrieve registered devices, and check API message queue counts via the SMSAdvert API.","capabilities":["Send SMS messages to phone numbers","Retrieve list of registered devices","Check current API message queue count","Supports sending via user's own devices or SMSAdvert network"],"authentication":"API Key","commonUseCases":["Bulk SMS marketing campaigns","Automated SMS notifications from CRM data","Managing SMS account status in n8n workflows"],"limitations":[],"relatedNodes":["HTTP Request","Credentials (SMSAdvertAPI)"]}


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

updated_at: 2026-07-14 14:40:33
author_name: gsharp-assemblyai
author_github_url: https://github.com/gsharp-aai/
npm_package_name: n8n-nodes-assemblyai
npm_version: 0.4.0
community_fetched_at: 2026-07-14T14:40:33.337Z
ai_summary_generated_at: 2026-03-25 22:51:43
description:
  Transcribe audio and video files using AssemblyAI's speech-to-text and speech understanding AI models.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "transcript",
      "options": [
        {
          "name": "File",
          "value": "file"
        },
        {
          "name": "LLM Gateway",
          "value": "llm_gateway"
        },
        {
          "name": "Transcript",
          "value": "transcript"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload a file",
          "description": "Upload a media file to AssemblyAI"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a transcription",
          "description": "Create a new transcription"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a transcription",
          "description": "Delete a transcription"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a transcription",
          "description": "Get a transcription by ID"
        },
        {
          "name": "Get Paragraphs",
          "value": "getParagraphs",
          "action": "Get paragraphs",
          "description": "Get paragraphs from transcription"
        },
        {
          "name": "Get Redacted Audio",
          "value": "getRedactedAudio",
          "action": "Get redacted audio",
          "description": "Get redacted audio URL"
        },
        {
          "name": "Get Sentences",
          "value": "getSentences",
          "action": "Get sentences",
          "description": "Get sentences from transcription"
        },
        {
          "name": "Get Subtitles",
          "value": "getSubtitles",
          "action": "Get subtitles",
          "description": "Get subtitles for a transcription"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List transcriptions",
          "description": "List all transcriptions"
        },
        {
          "name": "Word Search",
          "value": "wordSearch",
          "action": "Search words",
          "description": "Search for words in transcript"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transcript"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "chatCompletion",
      "options": [
        {
          "name": "Chat Completion",
          "value": "chatCompletion",
          "action": "Chat completion",
          "description": "Send chat completion request to LLM"
        },
        {
          "name": "Speech Understanding",
          "value": "speechUnderstanding",
          "action": "Speech understanding",
          "description": "Process speech understanding task on existing transcript"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "llm_gateway"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload a file",
      "description": "Upload a media file to AssemblyAI",
      "resource": "file"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a transcription",
      "description": "Create a new transcription",
      "resource": "transcript"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a transcription",
      "description": "Delete a transcription",
      "resource": "transcript"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a transcription",
      "description": "Get a transcription by ID",
      "resource": "transcript"
    },
    {
      "name": "Get Paragraphs",
      "value": "getParagraphs",
      "action": "Get paragraphs",
      "description": "Get paragraphs from transcription",
      "resource": "transcript"
    },
    {
      "name": "Get Redacted Audio",
      "value": "getRedactedAudio",
      "action": "Get redacted audio",
      "description": "Get redacted audio URL",
      "resource": "transcript"
    },
    {
      "name": "Get Sentences",
      "value": "getSentences",
      "action": "Get sentences",
      "description": "Get sentences from transcription",
      "resource": "transcript"
    },
    {
      "name": "Get Subtitles",
      "value": "getSubtitles",
      "action": "Get subtitles",
      "description": "Get subtitles for a transcription",
      "resource": "transcript"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List transcriptions",
      "description": "List all transcriptions",
      "resource": "transcript"
    },
    {
      "name": "Word Search",
      "value": "wordSearch",
      "action": "Search words",
      "description": "Search for words in transcript",
      "resource": "transcript"
    },
    {
      "name": "Chat Completion",
      "value": "chatCompletion",
      "action": "Chat completion",
      "description": "Send chat completion request to LLM",
      "resource": "llm_gateway"
    },
    {
      "name": "Speech Understanding",
      "value": "speechUnderstanding",
      "action": "Speech understanding",
      "description": "Process speech understanding task on existing transcript",
      "resource": "llm_gateway"
    }
  ]

npm_readme:
  # n8n-nodes-assemblyai
  <p align="center">
    <picture>
      <source media="(prefers-color-scheme: dark)" srcset="./images/AAI_Dark_Mode.svg">
      <source media="(prefers-color-scheme: light)" srcset="./images/AAI_Light_Mode.svg">
      <img src="./images/AAI_Light_Mode.svg" alt="AssemblyAI Logo">
    </picture>
  </p>
  <div align="center">

  [![npm version](https://badge.fury.io/js/n8n-nodes-assemblyai.svg)](https://www.npmjs.com/package/n8n-nodes-assemblyai)
  [![npm downloads](https://img.shields.io/npm/dm/n8n-nodes-assemblyai.svg)](https://www.npmjs.com/package/n8n-nodes-assemblyai)

  </div>

  This is an n8n community node. It lets you use [AssemblyAI](https://www.assemblyai.com/) in your n8n workflows.

  [AssemblyAI](https://www.assemblyai.com/) develops industry-leading Speech AI models for transcription and audio understanding, accessible through their API. It provides features like speaker diarization, sentiment analysis, entity detection, PII redaction, prompting (Universal-3 Pro), Medical Mode, and LLM Gateway capabilities for processing transcripts with AI.

  ## Resources
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [AssemblyAI API reference](https://www.assemblyai.com/docs/api-reference)
  - [AssemblyAI API documentation](https://www.assemblyai.com/docs)
    - [AssemblyAI Speech-to-Text guide](https://www.assemblyai.com/docs/getting-started/transcribe-an-audio-file)
    - [AssemblyAI LLM Gateway guide](https://www.assemblyai.com/docs/llm-gateway/apply-llms-to-audio-files)

  ## Quick links
  - [Installation](#installation)
  - [Credentials](#credentials)
  - [Operations](#operations)
  - [Development](#development)
  - [Support & Feedback](#support--feedback)

  ## Installation

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

  ## Credentials

  To use this node, you need an AssemblyAI API key.

  ### Prerequisites

  1. Sign up for a free account at [AssemblyAI](https://www.assemblyai.com/) and receive $50 in free credits.
  2. Navigate to your [API Keys page](https://www.assemblyai.com/dashboard/api-keys) in the dashboard.

  ### Setup in n8n

  1. In n8n, go to **Credentials** → **New**
  2. Search for **AssemblyAI API** and select it
  3. Enter your API key from the AssemblyAI dashboard
  4. Choose your **Data Region** — `US (Default)` or `EU (Data Residency)`. The EU region routes every request to `api.eu.assemblyai.com` / `llm-gateway.eu.assemblyai.com`, keeping audio and transcription data within the European Union.
  5. Click **Save**

  Learn more about API keys in the [AssemblyAI documentation](https://www.assemblyai.com/docs/deployment/account-management#api-keys).

  ## Operations

  ### File ([API Reference](https://www.assemblyai.com/docs/api-reference/files/upload))

  - **Upload**: Upload a media file to AssemblyAI for transcription

  ### Transcript ([API Reference](https://www.assemblyai.com/docs/api-reference/transcripts/submit))

  - **Create**: Start a new transcription job with support for:
    - **Speech models**: set `speech_models` (priority list, e.g. `universal-3-5-pro,universal-3-pro,universal-2`) to choose a model. The API routes per language and falls back through the list. Available models: Universal, Universal-2, Universal-3 Pro, Universal-3.5 Pro. **`speech_models` is now the only way to select a model** — the legacy singular `speech_model` field was removed in v0.4.0 (the API rejected pro models on it). Leave empty to let the API choose.
    - **Prompting** (Universal-3 Pro / Universal-3.5 Pro): pass a `prompt` (up to 1500 words) to steer transcription style and accuracy
    - **Temperature** (Universal-3 Pro / Universal-3.5 Pro): sampling temperature 0.0–1.0
    - **Medical Mode**: set `domain` to `medical-v1` for specialised medical-terminology accuracy
    - **Remove Audio Tags** (Universal-3 Pro): strip inline annotations like `[laughter]`, `[music]`, and speaker cues
    - **Language detection** with `expected_languages`, `fallback_language`, `code_switching` boolean (Universal-2), `code_switching_confidence_threshold`
    - **Code-switching transcription** via the top-level `language_codes` field
    - **Speaker diarization** with `speakers_expected` and `speaker_options` (min/max speakers)
    - **PII redaction** with `redact_pii_return_unredacted`, `override_audio_redaction_method` (silence), and **Redact Static Entities** (custom label → terms map for literal find-and-replace)
    - **Keyterm prompting** to boost recognition of domain-specific terminology
    - **Profanity filtering**, sentiment analysis, entity detection, content safety, IAB categories
    - **Speech Understanding** at create time: translation, speaker identification, custom formatting
    - `auto_chapters`, `summarization`, `summary_model`, `summary_type` are still available but **deprecated** — use the LLM Gateway resource instead.
  - **Get**: Retrieve a transcription by ID
  - **Delete**: Delete a transcription
  - **List**: List all your transcriptions, filtered by status, date, ID range, or `throttled_only`
  - **Get Sentences**: Get transcript broken into sentences
  - **Get Paragraphs**: Get transcript broken into paragraphs
  - **Get Subtitles**: Export subtitles in SRT or VTT format
  - **Get Redacted Audio**: Get redacted audio URL
  - **Word Search**: Search for specific words in the transcript

  ### LLM Gateway ([API Reference](https://www.assemblyai.com/docs/api-reference/llm-gateway/create-chat-completion))

  - **Chat Completion**: Send chat completion requests to LLMs (Claude, GPT, Gemini, Qwen, Kimi). See [available models](https://www.assemblyai.com/docs/llm-gateway/overview#available-models). Supports:
    - **Transcript injection**: pass `transcript_id` to substitute `{{ transcript }}` in your prompt with the transcript's text
    - **Tool calling**: provide a JSON `tools` array; force a specific function via `Tool Choice: Specific Function` and a function name; multi-turn round-trips via the `Tool` message role + `tool_call_id`
    - **JSON repair post-processing**: opt-in toggle that sends `post_processing_steps: [{ type: "json-repair" }]` to fix malformed JSON in tool-call arguments or structured outputs
  - **Speech Understanding**: Process speech understanding tasks on existing transcripts:
    - **Translation**: Translate transcripts into multiple languages
    - **Speaker Identification**: Identify speakers by name or role
    - **Custom Formatting**: Apply custom formatting to dates, phone numbers, and emails

  ## Development

  To work on this node locally, clone the repository and install dependencies:

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

  Build and run with linting:

  ```bash
  npm run dev:fresh
  ```

  The node will be available in n8n at http://localhost:5678

  ## Support & Feedback

  Need help or have feedback? Reach out to [support@assemblyai.com](mailto:support@assemblyai.com).

  Stay up to date with the latest features and improvements:
  - [AssemblyAI Product Changelog](https://www.assemblyai.com/changelog)
  - [AssemblyAI Product Roadmap](https://assemblyai.com/roadmap)

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

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Transcribes audio and video files using AssemblyAI's speech-to-text models and provides AI-powered speech understanding features like translation, speaker identification, and entity detection.","capabilities":["Upload media files for transcription","Create transcription jobs with language detection","Enable speaker diarization","Perform PII redaction and profanity filtering","Translate transcripts to multiple languages","Identify speakers by name or role","Detect entities and sentiment analysis","Generate subtitles in SRT or VTT format","Search for specific words in transcripts","Apply custom formatting to dates, phone numbers, and emails"],"authentication":"API key required (AssemblyAI API key)","commonUseCases":["Automated meeting transcription","Video content analysis and summarization","Automated subtitle generation","Speaker identification in audio files","PII redaction for privacy compliance"],"limitations":["LeMUR feature is deprecated and should be replaced with LLM Gateway","Requires AssemblyAI account and API key setup"],"relatedNodes":["n8n-nodes-assemblyai.assemblyAi","n8n-nodes-assemblyai.transcript","n8n-nodes-assemblyai.llmGateway","n8n-nodes-assemblyai.lemur"]}


node_type: n8n-nodes-famulor.famulor
package_name: n8n-nodes-famulor
display_name: Famulor
description: Make phone calls using AI assistants from Famulor platform
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: bekservice
author_github_url: https://github.com/bekservice/n8n-famulor.git
npm_package_name: n8n-nodes-famulor
npm_version: 1.8.0
community_fetched_at: 2026-07-14T14:40:33.338Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "call",
      "options": [
        {
          "name": "AI",
          "value": "ai"
        },
        {
          "name": "Assistant",
          "value": "assistant"
        },
        {
          "name": "Call",
          "value": "call"
        },
        {
          "name": "Campaign",
          "value": "campaign"
        },
        {
          "name": "Conversation",
          "value": "conversation"
        },
        {
          "name": "Lead",
          "value": "lead"
        },
        {
          "name": "SMS",
          "value": "sms"
        },
        {
          "name": "Tool",
          "value": "tool"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "make",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a call",
          "description": "Delete a specific call record"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a call",
          "description": "Get details of a specific call by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all calls",
          "description": "List all calls with filtering options"
        },
        {
          "name": "Make",
          "value": "make",
          "action": "Make a phone call",
          "description": "Make a phone call using an AI assistant"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "call"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAssistants",
      "options": [
        {
          "name": "Get Assistants",
          "value": "getAssistants",
          "action": "Get assistants",
          "description": "Get all assistants from your account"
        },
        {
          "name": "Get Languages",
          "value": "getLanguages",
          "action": "Get languages",
          "description": "Get all available languages for assistant configuration"
        },
        {
          "name": "Get Models",
          "value": "getModels",
          "action": "Get models",
          "description": "Get all available LLM models for assistant configuration"
        },
        {
          "name": "Get Phone Numbers",
          "value": "getPhoneNumbers",
          "action": "Get phone numbers",
          "description": "Get available phone numbers for assistant assignment"
        },
        {
          "name": "Get Voices",
          "value": "getVoices",
          "action": "Get voices",
          "description": "Get all available voices for assistant configuration"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "assistant"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List all campaigns",
          "description": "List all campaigns"
        },
        {
          "name": "Update Status",
          "value": "updateStatus",
          "action": "Update campaign status",
          "description": "Start or stop a campaign"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "campaign"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a lead",
          "description": "Delete a lead"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all leads",
          "description": "List all leads"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a lead",
          "description": "Update an existing lead"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "lead"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "action": "Send an SMS",
          "description": "Send an SMS message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sms"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a tool",
          "description": "Create a new mid call tool"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a tool",
          "description": "Delete a mid call tool"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a tool",
          "description": "Get a specific mid call tool by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all tools",
          "description": "List all mid call tools"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a tool",
          "description": "Update an existing mid call tool"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tool"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get current user",
          "description": "Get the authenticated user's profile information"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generateReply",
      "options": [
        {
          "name": "Generate Reply",
          "value": "generateReply",
          "action": "Generate AI reply",
          "description": "Generate an AI response using an assistant, identified by an external customer identifier"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a conversation",
          "description": "Create a new conversation session with an AI assistant"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a conversation",
          "description": "Retrieve the message history of a conversation"
        },
        {
          "name": "Send Message",
          "value": "sendMessage",
          "action": "Send a message",
          "description": "Send a message in an existing conversation and receive the assistant's response"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "conversation"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a call",
      "description": "Delete a specific call record",
      "resource": "call"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a call",
      "description": "Get details of a specific call by ID",
      "resource": "call"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all calls",
      "description": "List all calls with filtering options",
      "resource": "call"
    },
    {
      "name": "Make",
      "value": "make",
      "action": "Make a phone call",
      "description": "Make a phone call using an AI assistant",
      "resource": "call"
    },
    {
      "name": "Get Assistants",
      "value": "getAssistants",
      "action": "Get assistants",
      "description": "Get all assistants from your account",
      "resource": "assistant"
    },
    {
      "name": "Get Languages",
      "value": "getLanguages",
      "action": "Get languages",
      "description": "Get all available languages for assistant configuration",
      "resource": "assistant"
    },
    {
      "name": "Get Models",
      "value": "getModels",
      "action": "Get models",
      "description": "Get all available LLM models for assistant configuration",
      "resource": "assistant"
    },
    {
      "name": "Get Phone Numbers",
      "value": "getPhoneNumbers",
      "action": "Get phone numbers",
      "description": "Get available phone numbers for assistant assignment",
      "resource": "assistant"
    },
    {
      "name": "Get Voices",
      "value": "getVoices",
      "action": "Get voices",
      "description": "Get all available voices for assistant configuration",
      "resource": "assistant"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all campaigns",
      "description": "List all campaigns",
      "resource": "campaign"
    },
    {
      "name": "Update Status",
      "value": "updateStatus",
      "action": "Update campaign status",
      "description": "Start or stop a campaign",
      "resource": "campaign"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a lead",
      "description": "Delete a lead",
      "resource": "lead"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all leads",
      "description": "List all leads",
      "resource": "lead"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a lead",
      "description": "Update an existing lead",
      "resource": "lead"
    },
    {
      "name": "Send",
      "value": "send",
      "action": "Send an SMS",
      "description": "Send an SMS message",
      "resource": "sms"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a tool",
      "description": "Create a new mid call tool",
      "resource": "tool"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a tool",
      "description": "Delete a mid call tool",
      "resource": "tool"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a tool",
      "description": "Get a specific mid call tool by ID",
      "resource": "tool"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all tools",
      "description": "List all mid call tools",
      "resource": "tool"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a tool",
      "description": "Update an existing mid call tool",
      "resource": "tool"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get current user",
      "description": "Get the authenticated user's profile information",
      "resource": "user"
    },
    {
      "name": "Generate Reply",
      "value": "generateReply",
      "action": "Generate AI reply",
      "description": "Generate an AI response using an assistant, identified by an external customer identifier",
      "resource": "ai"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a conversation",
      "description": "Create a new conversation session with an AI assistant",
      "resource": "conversation"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a conversation",
      "description": "Retrieve the message history of a conversation",
      "resource": "conversation"
    },
    {
      "name": "Send Message",
      "value": "sendMessage",
      "action": "Send a message",
      "description": "Send a message in an existing conversation and receive the assistant's response",
      "resource": "conversation"
    }
  ]

npm_readme:
  # 🤖 Famulor for n8n

  <div align="center">

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

  **The most powerful AI calling automation for n8n workflows**

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

  [English](#english) • [Deutsch](#deutsch) • [Installation](#installation) • [Documentation](https://docs.famulor.de/)

  ---

  </div>

  ## English

  **Transform your n8n workflows with AI-powered phone calls**

  This official n8n community node integrates [Famulor](https://www.famulor.io/)'s cutting-edge AI calling platform directly into your automation workflows. Make intelligent phone calls, receive real-time call data, and automate complex communication processes with ease.

  ### Why Famulor?

  🎯 **AI-Powered Conversations** - Deploy intelligent virtual assistants that conduct natural phone conversations  
  📊 **Real-time Analytics** - Get instant call results, transcripts, and extracted data  
  🔄 **Seamless Integration** - Native n8n integration with no complex setup required  
  📱 **Global Reach** - Make calls worldwide with enterprise-grade reliability  

  ---

  ## Deutsch

  **Verwandeln Sie Ihre n8n-Workflows mit KI-gestützten Telefonanrufen**

  Dieser offizielle n8n-Community-Node integriert [Famulors](https://www.famulor.de/) hochmoderne KI-Anrufplattform direkt in Ihre Automatisierungs-Workflows. Führen Sie intelligente Telefonanrufe durch, erhalten Sie Echtzeit-Anrufdaten und automatisieren Sie komplexe Kommunikationsprozesse mit Leichtigkeit.

  ### Warum Famulor?

  🎯 **KI-gestützte Gespräche** - Setzen Sie intelligente virtuelle Assistenten ein, die natürliche Telefongespräche führen  
  📊 **Echtzeit-Analytik** - Erhalten Sie sofortige Anrufergebnisse, Transkripte und extrahierte Daten  
  🔄 **Nahtlose Integration** - Native n8n-Integration ohne komplexe Einrichtung  
  📱 **Globale Reichweite** - Führen Sie weltweit Anrufe mit Enterprise-Level-Zuverlässigkeit durch  

  ---

  ## Installation

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

  ### Deutsch
  Befolgen Sie die [Installationsanleitung](https://docs.n8n.io/integrations/community-nodes/installation/) in der n8n Community Nodes Dokumentation.

  ---

  ## Operations / Operationen

  ### English

  **Unified Node Interface** - One node, all capabilities

  When you add the **Famulor** node to your workflow, choose between:

  #### 🚀 Actions (Regular Node)
  **📞 Call Operations**
  - **Make Call**: Initiate AI-powered phone conversations
    - Select from your outbound assistants
    - Specify target phone numbers  
    - Add custom variables for personalized conversations
    - Get instant call results and data

  **🤖 Assistant Management**  
  - **Get Assistants**: Retrieve all your AI assistants
    - Fetch complete assistant configurations
    - Access assistant details (name, ID, status, capabilities)
    - Use in any workflow for dynamic assistant selection

  #### ⚡ Triggers (Webhook Node)
  **📋 Call Monitoring**
  - **Call Ended**: Real-time call completion notifications
    - Monitor specific assistants for call events
    - Receive comprehensive call data:
      - Full conversation transcripts
      - AI-extracted variables and insights
      - Call duration, status, and recordings
      - Lead and campaign information
      - Input/output variable mappings

  ### Deutsch

  **Einheitliche Node-Oberfläche** - Ein Node, alle Funktionen

  Wenn Sie den **Famulor**-Node zu Ihrem Workflow hinzufügen, wählen Sie zwischen:

  #### 🚀 Aktionen (Regulärer Node)
  **📞 Anruf-Operationen**
  - **Anruf tätigen**: KI-gestützte Telefongespräche initiieren
    - Auswahl aus Ihren ausgehenden Assistenten
    - Zieltelefonnummern angeben
    - Benutzerdefinierte Variablen für personalisierte Gespräche hinzufügen
    - Sofortige Anrufergebnisse und Daten erhalten

  **🤖 Assistenten-Verwaltung**
  - **Assistenten abrufen**: Alle Ihre KI-Assistenten abrufen
    - Vollständige Assistenten-Konfigurationen laden
    - Zugriff auf Assistenten-Details (Name, ID, Status, Fähigkeiten)
    - Verwendung in jedem Workflow für dynamische Assistenten-Auswahl

  #### ⚡ Trigger (Webhook-Node)
  **📋 Anruf-Überwachung**
  - **Anruf beendet**: Echtzeit-Benachrichtigungen bei Anrufabschluss
    - Überwachung spezifischer Assistenten für Anruf-Events
    - Umfassende Anrufdaten erhalten:
      - Vollständige Gesprächstranskripte
      - KI-extrahierte Variablen und Erkenntnisse
      - Anrufdauer, Status und Aufzeichnungen
      - Lead- und Kampagnen-Informationen
      - Input/Output-Variablen-Zuordnungen

  ---

  ## Credentials / Anmeldedaten

  ### English

  **Quick Setup in 3 Steps**

  1. **Get Your API Key**
     - Sign up at [Famulor](https://app.famulor.de/) (German) or [Famulor.io](https://www.famulor.io/) (English)
     - Navigate to your account settings
     - Generate a new API key

  2. **Configure n8n**
     - Create new credentials of type "Famulor API"
     - Enter your API key
     - Credentials are automatically validated upon save

  3. **Start Automating**
     - Your Famulor account is now connected
     - All assistants and settings sync automatically

  ### Deutsch

  **Schnelle Einrichtung in 3 Schritten**

  1. **API-Schlüssel erhalten**
     - Registrieren Sie sich bei [Famulor](https://app.famulor.de/) (Deutsch) oder [Famulor.io](https://www.famulor.io/) (Englisch)
     - Gehen Sie zu Ihren Kontoeinstellungen
     - Generieren Sie einen neuen API-Schlüssel

  2. **n8n konfigurieren**
     - Erstellen Sie neue Anmeldedaten vom Typ "Famulor API"
     - Geben Sie Ihren API-Schlüssel ein
     - Anmeldedaten werden beim Speichern automatisch validiert

  3. **Automatisierung starten**
     - Ihr Famulor-Konto ist jetzt verbunden
     - Alle Assistenten und Einstellungen synchronisieren automatisch

  ---

  ## Compatibility / Kompatibilität

  ### English
  - **Minimum n8n version**: 0.36.1
  - **Tested with**: n8n 1.0.0+
  - **Platform support**: All n8n deployment types

  ### Deutsch
  - **Minimale n8n-Version**: 0.36.1
  - **Getestet mit**: n8n 1.0.0+
  - **Plattform-Unterstützung**: Alle n8n-Deployment-Typen

  ---

  ## Usage / Verwendung

  ### English

  #### 🎯 Getting Started

  1. **Add the Famulor Node** to your workflow
  2. **Choose your mode**: Action (for outbound operations) or Trigger (for receiving data)
  3. **Configure credentials** using your Famulor API key
  4. **Start automating** your phone operations

  #### 📞 Making Phone Calls (Actions)

  **Quick Setup:**
  1. Select **Action** → **Call** → **Make**
  2. Choose your **outbound assistant** (loaded from your account)
  3. Enter the **target phone number**
  4. Add **custom variables** for personalized conversations:
     ```
     customer_name: "John Smith"
     order_id: "12345"
     appointment_time: "3 PM"
     ```
  5. **Execute** and receive instant results

  #### 🤖 Managing Assistants (Actions)

  **Retrieve All Assistants:**
  1. Select **Action** → **Assistant** → **Get Assistants**
  2. Fetches all assistants with complete configuration data
  3. Use for dynamic assistant selection in complex workflows

  #### ⚡ Real-time Call Monitoring (Triggers)

  **Setup Webhook Triggers:**
  1. Select **Trigger** → **Call** → **Call Ended**
  2. Choose which **assistant to monitor**
  3. Copy the **generated webhook URL**
  4. **Important**: Add this URL to your assistant settings in Famulor dashboard
  5. Enable webhook notifications in your assistant configuration

  **Data You Receive:**
  - 📋 Complete call transcripts and recordings
  - 📊 AI-extracted variables and insights
  - ⏱️ Call duration, timestamps, and status
  - 📱 Phone numbers and participant details
  - 🎯 Campaign and lead information (if applicable)

  ### Deutsch

  #### 🎯 Erste Schritte

  1. **Famulor-Node hinzufügen** zu Ihrem Workflow
  2. **Modus wählen**: Aktion (für ausgehende Operationen) oder Trigger (für Datenempfang)
  3. **Anmeldedaten konfigurieren** mit Ihrem Famulor-API-Schlüssel
  4. **Automatisierung starten** Ihrer Telefon-Operationen

  #### 📞 Telefonanrufe tätigen (Aktionen)

  **Schnelle Einrichtung:**
  1. Wählen Sie **Aktion** → **Call** → **Make**
  2. Wählen Sie Ihren **ausgehenden Assistenten** (aus Ihrem Konto geladen)
  3. Geben Sie die **Zieltelefonnummer** ein
  4. Fügen Sie **benutzerdefinierte Variablen** für personalisierte Gespräche hinzu:
     ```
     kundenname: "Max Mustermann"
     bestell_id: "12345"
     termin_zeit: "15 Uhr"
     ```
  5. **Ausführen** und sofortige Ergebnisse erhalten

  #### 🤖 Assistenten verwalten (Aktionen)

  **Alle Assistenten abrufen:**
  1. Wählen Sie **Aktion** → **Assistant** → **Get Assistants**
  2. Lädt alle Assistenten mit vollständigen Konfigurationsdaten
  3. Verwenden Sie für dynamische Assistenten-Auswahl in komplexen Workflows

  #### ⚡ Echtzeit-Anrufüberwachung (Trigger)

  **Webhook-Trigger einrichten:**
  1. Wählen Sie **Trigger** → **Call** → **Call Ended**
  2. Wählen Sie, welchen **Assistenten Sie überwachen** möchten
  3. Kopieren Sie die **generierte Webhook-URL**
  4. **Wichtig**: Fügen Sie diese URL in Ihre Assistenten-Einstellungen im Famulor-Dashboard hinzu
  5. Aktivieren Sie Webhook-Benachrichtigungen in Ihrer Assistenten-Konfiguration

  **Erhaltene Daten:**
  - 📋 Vollständige Anruftranskripte und Aufzeichnungen
  - 📊 KI-extrahierte Variablen und Erkenntnisse
  - ⏱️ Anrufdauer, Zeitstempel und Status
  - 📱 Telefonnummern und Teilnehmerdetails
  - 🎯 Kampagnen- und Lead-Informationen (falls zutreffend)

  ---

  ## Resources / Ressourcen

  ### English

  📚 **Documentation & Guides**
  - [Famulor Documentation](https://docs.famulor.de/) - Complete platform documentation  
  - [Famulor API Reference](https://docs.famulor.de/api-reference/) - Technical API documentation
  - [n8n Community Nodes Guide](https://docs.n8n.io/integrations/#community-nodes) - n8n integration docs

  🌐 **Platforms & Support**
  - [Famulor.io](https://www.famulor.io/) - English platform & signup
  - [Famulor.de](https://www.famulor.de/) - German platform & signup  
  - [Famulor App](https://app.famulor.de/) - Login to your dashboard

  ### Deutsch

  📚 **Dokumentation & Anleitungen**
  - [Famulor-Dokumentation](https://docs.famulor.de/) - Vollständige Plattform-Dokumentation
  - [Famulor-API-Referenz](https://docs.famulor.de/api-reference/) - Technische API-Dokumentation  
  - [n8n-Community-Nodes-Anleitung](https://docs.n8n.io/integrations/#community-nodes) - n8n-Integrations-Dokumentation

  🌐 **Plattformen & Support**
  - [Famulor.io](https://www.famulor.io/) - Englische Plattform & Anmeldung
  - [Famulor.de](https://www.famulor.de/) - Deutsche Plattform & Anmeldung
  - [Famulor App](https://app.famulor.de/) - Anmeldung zu Ihrem Dashboard

  ---

  ## About Famulor / Über Famulor

  ### English

  Famulor is the leading AI-powered calling platform that revolutionizes business communications. Our intelligent virtual assistants conduct natural phone conversations, extract meaningful data, and integrate seamlessly into your existing workflows.

  **Why Choose Famulor?**
  - 🧠 **Advanced AI** - GPT-powered conversations that sound human  
  - 🔒 **Enterprise Security** - GDPR-compliant with enterprise-grade encryption
  - 🌍 **Global Scale** - Make calls worldwide with local presence
  - 📈 **Proven Results** - Trusted by businesses across industries

  ### Deutsch

  Famulor ist die führende KI-gestützte Anrufplattform, die die Geschäftskommunikation revolutioniert. Unsere intelligenten virtuellen Assistenten führen natürliche Telefongespräche, extrahieren aussagekräftige Daten und integrieren sich nahtlos in Ihre bestehenden Workflows.

  **Warum Famulor wählen?**
  - 🧠 **Fortgeschrittene KI** - GPT-gestützte Gespräche, die menschlich klingen
  - 🔒 **Unternehmenssicherheit** - DSGVO-konform mit Enterprise-Level-Verschlüsselung  
  - 🌍 **Globale Reichweite** - Weltweite Anrufe mit lokaler Präsenz
  - 📈 **Bewährte Ergebnisse** - Vertrauen von Unternehmen aller Branchen

  ---

  <div align="center">

  **Ready to automate your phone calls? / Bereit, Ihre Telefonanrufe zu automatisieren?**

  [🚀 Get Started with Famulor](https://app.famulor.de/) • [📖 Read the Docs](https://docs.famulor.de/) • [💬 Get Support](https://www.famulor.io/support)

  *Built with ❤️ by the Famulor team*

  </div>

ai_documentation_summary:
  {"purpose":"This n8n node enables AI-powered phone call automation by integrating the Famulor platform, allowing users to make calls, manage virtual assistants, and monitor real-time call data within workflows.","capabilities":["Initiate AI-powered outbound phone calls","Retrieve and manage AI assistant configurations","Receive real-time call completion notifications via webhooks","Access full conversation transcripts","Extract AI-generated variables and insights from calls","Retrieve call duration, status, and recordings","Access lead and campaign information","Map input/output variables for personalized conversations"],"authentication":"API key required","commonUseCases":["Automated customer support calls","Lead generation and qualification","Appointment scheduling","Real-time call monitoring and analytics","Personalized outbound marketing campaigns"],"limitations":["Famulor platform is primarily available in German and English","No specific limitations mentioned in the provided README"],"relatedNodes":["n8n Webhook Node","n8n HTTP Request Node","n8n Function Item"]}


node_type: n8n-nodes-jaasai.jaasai
package_name: n8n-nodes-jaasai
display_name: JaaS AI
description: Evaluate AI Agents with JaaS
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: hljaasai
author_github_url: https://github.com/jaas-a1/
npm_package_name: n8n-nodes-jaasai
npm_version: 0.3.2
community_fetched_at: 2026-07-14T14:40:33.339Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "evaluate",
      "options": [
        {
          "name": "Evaluate",
          "value": "evaluate",
          "description": "Evaluate AI agents and outputs"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "evaluate",
      "options": [
        {
          "name": "Evaluate",
          "value": "evaluate",
          "action": "Evaluate AI agent responses",
          "description": "Evaluate AI agent responses"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "evaluate"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Evaluate",
      "value": "evaluate",
      "action": "Evaluate AI agent responses",
      "description": "Evaluate AI agent responses",
      "resource": "evaluate"
    }
  ]

npm_readme:
  ## JAAS AI 

  JaaS AI is a turnkey evaluationAI service that scores, analyzes, validates and monitors any AI-generated text in seconds. Plug JaaS AI into your workflow to ensure accuracy, consistency, and quality—without needing extra reviewers. The system evaluates responses based on customizable criteria and provides detailed scoring and reasoning.
  JaaS AI has been proven to detect Hallucination in AI Agents and chat bots.

  *Put your workflows and chat bots under the microscope and understand when they start to derail, hallucinate or degrade their accuracy.*

  ### Requirements

  To configure you n8n node, you need a JaaS API key. For that you have to register for the service at jaas-ai.net.You will also need a LLM Provider API key.


  ### Understanding the evaluation process

  The evaluation process is very simple. It compares an *answer* to a specific *question* to a *ground truth answer* in a *context* given. A *score* and *reasoning* is provided based on a *criteria* or criterion given to evaluate.

  #### Inputs to the evaluation
  - . **question:** The question that you want to evaluate. Example: *Which is capital of France?*

  - . **answer:** This is the answer that is going to be evaluated. Example: *Paris*.

  - . **ground_truth_answer**: This is the source of truth. It is used as rubric to for the evaluation process to score the criterion. Example: *The capital of France is Paris.*

  - . **context:** Additional information that is used to evaluate. The context becomes more relevant in non-direct comparison criterion. As an example in cases of **hallucination:** The context is key to understand if the evaluated answer related to the conversation that has been happening. Example: *Paris is the capital and largest city of France, with an estimated population of 2,048,472 in January 2025 in an area of more than 105 km2 (41 sq mi).*

  - . **criteria:** The criteria or criterion is the base of the scoring process. The evaluation tool scores the *answer* based on the criteria given. Example: *Accuracy, Hallucination.*

  - . **type:** This is the type of evaluation. There are 4 types: *Simple (S), Conversational Simple (D),
    -  The main differences are: *conversational or non-conversations*: the *conversational* types detect chit-chat conversations that are not evaluated. This is key when evaluating or monitoring *chat bots* or transcripts of *voice conversations*.  

  - . **cohort:** The *cohort* helps in the monitoring and analysis process. It does not intervene in the evaluation itself, while indicates a grouping of evaluation. As an example, if the tool is evaluating conversations from a chat bot, each conversation can have its own cohort for better tracking and monitoring.


  #### Example of a Information for an evaluation
  ```json

  From Input to the Node:	
    "question": "What is the capital of France?",
    "answer": "Paris.",
    "ground_truth_answer": "Paris is the capital of France.",
    "context": "",

  From Configuration:
  	"evaluation_criteria": ["Accuracy", "Hallucination"],
    "type": "S",
    "cohort":"ChatBot1"

  ```
  After the evaluation is completed almost in real time, the system returns the score for each of the metrics and the reasoning behind.


  ### Using the n8n JaaS Module

  ***Configuration:*** The module requires the corresponding configuration:
  	- JaaS API Key: linked to you account in jaas-ai.com
  	- Criteria: you can enter up to 3 criteria for each node. The criteria should be available in teh Criteria Database in jaas-ai.com.
  	- Type of Evaluation: S - Simple, or C- Conversational
  	- Cohort: to groupe the evaluations in groups for better tracking
    
  ***Input:*** You should provide the no de the fields needed for the evaluation:
  	- question: question to answer
  	- answer: answer that has to be evaluated
  	- ground_truth_answer: source of truth for the answer to be evaluated
  	- context: additional information to help the evaluation process
  The inputs should be in Json Format.

  Obtain the results and monitor what is going on with your tools!

  Look for more information and examples in our website!!

  support: support@jaas-ai.com
  website: jaas-ai.net

ai_documentation_summary:
  {"purpose":"Evaluates AI-generated text by scoring it against ground truth answers and customizable criteria to detect hallucinations and ensure quality.","capabilities":["Scoring AI responses based on accuracy, hallucination, and other criteria","Analyzing conversational vs. non-conversational inputs","Grouping evaluations into cohorts for tracking","Providing detailed reasoning for evaluation scores","Supporting Simple (S) and Conversational (C) evaluation types","Accepting context to improve evaluation accuracy"],"authentication":"JaaS API key required (registered at jaas-ai.net) and LLM Provider API key required","commonUseCases":["Monitoring chatbot accuracy and hallucination rates","Validating AI agent responses against known ground truth","Quality assurance for AI-generated content","Tracking performance degradation in AI systems"],"limitations":["Only up to 3 criteria can be configured per node","Criteria must be selected from the JaaS Criteria Database","Requires external API keys for both JaaS and LLM provider services"],"relatedNodes":["n8n-nodes-jaaai.jaasai"]}


node_type: n8n-nodes-solapi.solapi
package_name: n8n-nodes-solapi
display_name: Solapi
description: Send messages with Solapi
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: nurigo
author_github_url: https://github.com/solapi/
npm_package_name: n8n-nodes-solapi
npm_version: 0.2.8
community_fetched_at: 2026-07-14T14:40:33.340Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Message",
          "value": "message"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendText",
      "options": [
        {
          "name": "Send Kakao AlimTalk",
          "value": "sendKakaoATA",
          "action": "Send kakao alim talk a message",
          "description": "Send Kakao AlimTalk (template-based)"
        },
        {
          "name": "Send Kakao FriendTalk",
          "value": "sendKakaoCTA",
          "action": "Send kakao friend talk a message"
        },
        {
          "name": "Send Text Message",
          "value": "sendText",
          "action": "Send text message a message",
          "description": "Send SMS/LMS/MMS via Solapi"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send Kakao AlimTalk",
      "value": "sendKakaoATA",
      "action": "Send kakao alim talk a message",
      "description": "Send Kakao AlimTalk (template-based)",
      "resource": "message"
    },
    {
      "name": "Send Kakao FriendTalk",
      "value": "sendKakaoCTA",
      "action": "Send kakao friend talk a message",
      "resource": "message"
    },
    {
      "name": "Send Text Message",
      "value": "sendText",
      "action": "Send text message a message",
      "description": "Send SMS/LMS/MMS via Solapi",
      "resource": "message"
    }
  ]

npm_readme:
  # Solapi for n8n (Community Node)

  솔라피(Solapi) 메시지/카카오/커머스 웹훅을 n8n에서 쉽게 사용하기 위한 커뮤니티 노드입니다.

  ## 설치

  - n8n Community Nodes에서 설치
    - n8n UI → Settings → Community Nodes → Install → `n8n-nodes-solapi` 입력
  - 또는 수동 설치
    - 프로젝트에 패키지 설치 후 n8n 재기동

  ## 인증 설정 (OAuth2)
  1) n8n → Credentials → New → `Solapi OAuth2 API` 선택
  2) Solapi 콘솔에서 발급받은 Client ID/Secret 입력
  3) Scope 기본값 유지(권장):
  ```
  message:write message:read senderid:read storage:write storage:read webhook:read webhook:write kakao:write kakao:read users:read contacts:read contacts:write commerce:read commerce:write
  ```
  4) Save & Connect로 로그인 → 연결 성공 확인

  ## 인증 설정 (API Key)
  1) n8n → Credentials → New → `Solapi API Key` 선택
  2) Solapi 콘솔에서 발급받은 API Key / API Secret 입력
  3) 노드의 `Authentication`에서 `API Key (HMAC-SHA256)` 선택
  4) 사용 시 각 요청에는 문서에 따라 HMAC-SHA256 시그니처가 자동으로 포함됩니다. 상세: [Solapi API Key 인증 방식](https://developers.solapi.com/references/authentication/api-key)

  ## 사용 가능한 노드/오퍼레이션
  리소스 `Message`에서 아래 오퍼레이션을 제공합니다.

  - Send Text Message
    - SMS/LMS/MMS 발송
    - 필수: To, From, Text
    - 선택: Subject(LMS), Image ID(MMS), Country Code(기본 82)
    - 동적 옵션: From(발신번호), Image ID(MMS 스토리지)

  - Send Kakao AlimTalk (ATA)
    - 템플릿 기반 알림톡 발송
    - 필수: To, Kakao Channel, Kakao Template
    - 선택: Template Variables(JSON), From(문자 대체발신), Country Code
    - 동적 옵션: Kakao Channel, Kakao Template

  - Send Kakao FriendTalk (CTA)
    - 카카오 친구톡 발송(채널 친구 대상)
    - 필수: To, Kakao Channel, Text
    - 선택: AD Flag, CTA Image ID, Buttons(JSON Array), From(문자 대체발신), Country Code
    - 동적 옵션: Kakao Channel, Kakao Image

  - On Message Report (Single)
    - 단건 메시지 결과 웹훅 트리거(SINGLE-REPORT)
    - 워크플로우 활성화 시 Solapi Outgoing Webhook 자동 등록/해지

  - On Group Report
    - 메시지 그룹 결과 웹훅 트리거(GROUP-REPORT)
    - 워크플로우 활성화 시 Solapi Outgoing Webhook 자동 등록/해지

  - On Commerce Action
    - 커머스 액션 트리거(결제완료 등)
    - 필수: Commerce Hook (Solapi 콘솔에서 미리 생성)
    - 워크플로우 활성화 시 선택한 Hook에 웹훅 연결/해지

  ## 필드 설명 요약
  - To: 콤마/줄바꿈으로 여러 번호 입력 가능. 국가코드는 Country Code로 설정(기본 82)
  - From: Solapi에 등록된 발신번호만 사용 가능(동적 옵션)
  - Image ID: Solapi Storage에 업로드된 파일의 fileId(동적 옵션)
  - Kakao Channel: Solapi에 등록된 PFID(동적 옵션)
  - Kakao Template: 선택한 채널에서 발송 가능한 템플릿(동적 옵션)
  - Template Variables(JSON): 템플릿 변수 맵. 예) `{ "name": "홍길동" }`
  - Buttons(JSON Array): 친구톡 버튼 배열. 예)
  ```
  [
    { "buttonName": "홈", "buttonType": "WL", "linkMo": "https://example.com" }
  ]
  ```

  ## 권한(Scopes)
  - 기본 제공 스코프로 대부분의 기능 동작
  - 최소 필요 스코프 예시
    - 메시지 발송: `message:write`
    - 발신번호 조회: `senderid:read`
    - 스토리지 조회: `storage:read`
    - 카카오: `kakao:read kakao:write`
    - 웹훅: `webhook:read webhook:write`
    - 커머스: `commerce:read commerce:write`

  ## 트러블슈팅
  - 401/403 인증 오류
    - 크리덴셜 연결 상태 확인 및 재인증
    - Solapi 앱의 Redirect URI에 n8n 크리덴셜 리다이렉트 URL 등록 여부 확인
  - 템플릿/채널 목록 비어있음
    - Solapi 콘솔에서 채널/PFID 및 템플릿 등록 상태 확인
    - 해당 채널에 발송 가능한 템플릿인지 확인
  - 문자 대체발신 미동작
    - `From(문자 대체발신)`을 비워두면 대체발송 비활성화됨. 등록된 발신번호 선택 필요
  - 웹훅 미수신
    - 워크플로우 활성화 상태 확인
    - 방화벽/외부 접근 가능한 n8n 호스트인지 확인
    - Solapi 콘솔의 Outgoing Webhook 목록에 등록 여부 확인

  ## 라이선스
  MIT

ai_documentation_summary:
  {"purpose":"A community node that enables n8n to send messages via Solapi, supporting SMS/LMS/MMS, Kakao AlimTalk, Kakao FriendTalk, and commerce actions.","capabilities":["Send text messages (SMS/LMS/MMS)","Send Kakao AlimTalk (ATA) notifications","Send Kakao FriendTalk (CTA) messages","Trigger on single message reports via webhooks","Trigger on group message reports via webhooks","Trigger on commerce actions (e.g., payment completion) via webhooks","Dynamic options for sender number, image IDs, and Kakao channels/templates"],"authentication":"OAuth2 or API Key (HMAC-SHA256)","commonUseCases":["Automated customer notifications via Kakao templates","Transactional SMS/MMS delivery","Commerce order status updates","Message delivery monitoring and reporting"],"limitations":["Sender numbers must be pre-registered in Solapi","Image IDs must be uploaded to Solapi Storage first","Kakao channels and templates must be configured in Solapi console","Webhook triggers require workflow activation and proper firewall configuration"],"relatedNodes":["n8n-nodes-core.httpRequest","n8n-nodes-core.webhook","n8n-nodes-core.credentialManager"]}


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

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

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

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

  # n8n-nodes-videodb

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

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

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

  ## Table of Contents

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

  ## Installation

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

  ## Operations

  This node supports the following operations:

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

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

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

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

  ## Credentials

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

  ## Compatibility

  Tested locally against n8n v1.93.0.

  ## Usage

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

  ## Resources

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

  ## Development

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

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

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

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

  ## Version history

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

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


node_type: @postpulse/n8n-nodes-postpulse.postPulse
package_name: @postpulse/n8n-nodes-postpulse
display_name: PostPulse
description: Interact with PostPulse API to manage social media posts
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: alex97po
author_github_url: https://github.com/PostPulse/n8n-postpulse-node.git
npm_package_name: @postpulse/n8n-nodes-postpulse
npm_version: 0.2.5
community_fetched_at: 2026-07-14T14:40:33.345Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "post",
      "options": [
        {
          "name": "Account",
          "value": "account"
        },
        {
          "name": "Media",
          "value": "media"
        },
        {
          "name": "Post",
          "value": "post"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get connected accounts",
          "description": "Get connected social media accounts"
        },
        {
          "name": "Get Connected Chats",
          "value": "getConnectedChats",
          "action": "Get connected chats",
          "description": "Get connected chats for an account by platform"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload media",
          "description": "Upload media file"
        },
        {
          "name": "Get Upload Status",
          "value": "getUploadStatus",
          "action": "Get upload status",
          "description": "Get the status of a media import job"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "media"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "schedule",
      "options": [
        {
          "name": "Schedule",
          "value": "schedule",
          "action": "Schedule a post",
          "description": "Schedule a post"
        },
        {
          "name": "Schedule (Light)",
          "value": "scheduleLight",
          "action": "Schedule a light post",
          "description": "Schedule a post with simplified interface"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "post"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get connected accounts",
      "description": "Get connected social media accounts",
      "resource": "account"
    },
    {
      "name": "Get Connected Chats",
      "value": "getConnectedChats",
      "action": "Get connected chats",
      "description": "Get connected chats for an account by platform",
      "resource": "account"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload media",
      "description": "Upload media file",
      "resource": "media"
    },
    {
      "name": "Get Upload Status",
      "value": "getUploadStatus",
      "action": "Get upload status",
      "description": "Get the status of a media import job",
      "resource": "media"
    },
    {
      "name": "Schedule",
      "value": "schedule",
      "action": "Schedule a post",
      "description": "Schedule a post",
      "resource": "post"
    },
    {
      "name": "Schedule (Light)",
      "value": "scheduleLight",
      "action": "Schedule a light post",
      "description": "Schedule a post with simplified interface",
      "resource": "post"
    }
  ]

npm_readme:
  # PostPulse n8n Node

  > **Official n8n integration for [PostPulse](https://post-pulse.com)** — schedule and publish content to multiple social networks from your n8n workflows.

  - **Auth:** OAuth2 (auto refresh) 
  - **Core actions:** Accounts → Media Upload → Schedule Post(s) (+ Telegram Channels / Facebook Pages lookup)  
  - **Targets today:** Facebook, Instagram, TikTok, YouTube, Threads, LinkedIn, Telegram, X, Bluesky  
  - **Use cases:** One-click multi-destination posting, media pipeline, automated campaigns

  ---

  ## Table of contents

  - [Prerequisites](#prerequisites)
  - [Install](#install)
  - [Authenticate](#authenticate)
  - [Quick start](#quick-start)
  - [Operations](#operations)
  - [Data model](#data-model)
  - [Platform settings](#platform-settings)
  - [Media & text validations](#media--text-validations)
  - [Rate limits & API keys](#rate-limits--api-keys)
  - [Webhooks](#webhooks)
  - [Examples](#examples)
  - [FAQ](#faq)
  - [Support](#support)
  - [Versioning & License](#versioning--license)

  ---

  ## Prerequisites

  1. **Sign up** at https://post-pulse.com/login  
  2. **Connect your social accounts** in the web app: https://post-pulse.com/app/accounts  
  3. **Create OAuth client**: Visit https://developers.post-pulse.com and sign in using the email associated with your PostPulse account. Create a new OAuth client to obtain `client_id` and `client_secret`.
  4. (Telegram only) Add the official **PostPulse bot** to your channels you plan to post to.

  > Use the same email in n8n OAuth as your PostPulse account email.

  ---

  ## Install

  - **From npm (recommended):**
    ```bash
    npm install @postpulse/n8n-nodes-postpulse
    ```

  ---

  ## Authenticate

  Create **Credentials → PostPulse OAuth2 API** in n8n:

  - **OAuth Redirect URL:** Use this URL when creating your OAuth client at https://developers.post-pulse.com
  - **Client ID / Secret:** Obtained from the developer portal at https://developers.post-pulse.com

  This node extends n8n’s `oAuth2Api` so **tokens are refreshed automatically**.  

  ---

  ## Quick start

  ### Using Schedule (Light) - Recommended for simple workflows

  1. **Media → Upload** *(if posting media)*
     - **From File**: Upload binary file data (automatically confirmed for integrity)
       - Returns: `{ path }` — use this directly in attachment paths
     - **From Public URL**: Import media from a URL
       - With **Wait for Completion** enabled (recommended): polls until ready and returns `{ path }` — same shape as file upload
       - With **Wait for Completion** disabled: returns `{ id, state }` — use **Media → Get Upload Status** to poll manually
  2. **Posts → Schedule (Light)**
     - Choose **Schedule Mode**: "Post Now" (immediate) or "Schedule for Later" (pick a time)
     - Select your connected account from the dropdown (accounts loaded automatically)
     - UI automatically shows platform-specific fields (e.g., Instagram: Publication Type)
     - Facebook and Telegram accounts: select Page/Channel from dropdowns (loaded automatically)
     - Enter content and comma-separated attachment paths

  ### Using Schedule - Advanced workflows

  For multi-account posting or complex scenarios:

  1. **Accounts → Get Many**  
     Retrieve your connected accounts. Save the `id` of targets you'll post to.
  2. **Accounts → Get Connected Chats** *(only if posting to Telegram/Facebook manually)*  
     Input: Account ID and platform. Output contains chat/page IDs.
  3. **Media → Upload** *(same as above)*
  4. **Posts → Schedule**  
     Build one `PostSchedule` with one or more `Publication`s.  
     - Choose "Post Now" or "Schedule for Later" (with a specific time)
     - Manually construct `platformSettings` JSON
     - For now, prefer `isDraft: false` (update APIs will come later)

  ---

  ## Operations

  ### Accounts: **Get Many**
  - **Output:** Array of accounts: `{ id, platform, handle, ... }`
  - **Use:** Pick `id` for each destination.

  ### Telegram: **Get Connected Chats**
  - **Input:** `{ id }` (must be a Telegram account)
  - **Output:** Array: `{ id, title }` — pass `chatId` into Telegram posts.

  ### Media: **Upload**
  - **Input:** File or Public URL
  - **Output:** 
    - File upload: `{ path }` — use in `attachmentPaths` of posts (upload is automatically confirmed for integrity)
    - URL import (Wait for Completion ON): `{ path }` — same shape as file upload, ready to use
    - URL import (Wait for Completion OFF): `{ id, state }` — use `id` with "Get Upload Status" to monitor progress manually
  - **Upload Sources:**
    - **From File:** Upload binary file data
    - **From Public URL:** Import media from a public URL. Enable **Wait for Completion** to automatically poll until the import is ready (configurable polling interval and max wait time).

  ### Media: **Get Upload Status**
  - **Input:** `{ importId }` (from URL import response)
  - **Output:** Complete import status including `id`, `state`, `sourceUrl`, `bytesDownloaded`, `totalBytes`, `detectedMime`, `s3Key`, `errorCode`, `errorMessage`
  - **Use:** Monitor the progress of URL-based media imports

  ### Posts: **Schedule**
  - **Input:** `PostSchedule` (see [Data model](#data-model))
  - **Schedule Mode:** "Post Now" (publishes immediately, no `scheduledTime` needed) or "Schedule for Later" (pick a time)
  - **Behavior:** Schedules one or multiple publications for the same time.
  - **Recommended:** `isDraft: false` (until update endpoints are exposed in node).

  ### Posts: **Schedule (Light)**
  - **Purpose:** Simplified interface for scheduling a single post to one account
  - **Key Features:**
    - **Platform-specific dynamic fields** — The UI automatically shows relevant fields based on the selected account's platform
    - **Automatic platform settings** — No need to manually construct JSON; the node builds `platformSettings` automatically
    - **Smart chat selection** — Facebook Pages and Telegram Channels appear as dropdowns (loaded from API)
    - **Simple attachment paths** — Enter comma-separated media paths instead of managing collections
  - **Input Fields:**
    - `Schedule Mode` — "Post Now" (publishes immediately) or "Schedule for Later" (pick a time)
    - `Scheduled Time` — *(only when "Schedule for Later")* When to schedule the post. Interpreted using the workflow timezone (see Workflow Settings).
    - `Social Media Account` — Dropdown of your connected accounts
    - *Dynamic fields based on platform:*
      - **Instagram**: Publication Type (Feed/Reels/Story)
      - **Facebook**: Publication Type (Feed/Reels/Story) + Page dropdown
      - **YouTube**: Video Title
      - **TikTok**: Title
      - **Threads**: Topic Tag (optional)
      - **Telegram**: Channel dropdown
      - **X/Twitter, BlueSky, LinkedIn**: No additional fields
    - `Content` — Post text/caption (multi-line)
    - `Attachment Paths` — Comma-separated media paths from Media → Upload
  - **Output:** Same as Schedule operation
  - **Use Case:** Perfect for simple workflows and testing; for complex multi-account or multi-post scenarios, use Schedule operation

  ---

  ## Data model

  ### `PostSchedule`
  ```json
  {
    "scheduledTime": "2025-08-17T14:03:00",  // omit to post immediately
    "isDraft": false,
    "publications": [ /* Publication[] */ ]
  }
  ```

  ### `Publication`
  Represents “one publication in user’s mind” that may map to *one or many* platform posts.

  ```json
  {
    "socialMediaAccountId": 442,
    "posts": [ /* Post[] */ ],
    "platformSettings": { /* see below */ }
  }
  ```

  - **One publication → multiple posts** is useful when:
    - Telegram account posts to several **channels** (one post per channel)
    - Telegram account posts with large text or more than 10 media (one post per message that will be published)
    - Instagram **storyline** (multiple stories in one conceptual set)

  ### `Post`
  ```json
  {
    "attachmentPaths": [
      "6354d8d2-e0f1-702b-af6c-62e28e377ec7/c6c2b826-8aca-4eae-8549-515325012ab4.jpeg"
    ],
    "content": "Your caption or description",
    "chatId": "1234567890"   // Telegram only
    /* "thumbnailPath": "..." — coming soon */
  }
  ```

  > **Note:** For YouTube/TikTok, `content` is used as **description** (titles are set in `platformSettings`).

  ---

  ## Platform settings

  Each **Publication** must include `platformSettings` with a required discriminator: `type`.

  ```json
  { "type": "INSTAGRAM", "publicationType": "REELS" }
  ```

  Supported shapes:

  ### Instagram
  ```json
  {
    "type": "INSTAGRAM",
    "publicationType": "FEED" | "REELS" | "STORY"
  }
  ```

  ### LinkedIn
  ```json
  {
    "type": "LINKEDIN",
    "visibility": "PUBLIC" | "CONNECTIONS" | "GROUP"
  }
  ```

  ### Threads
  ```json
  {
    "type": "THREADS",
    "topicTag": "your-topic-tag"
  }
  ```

  ### TikTok
  ```json
  {
    "type": "TIK_TOK",
    "title": "My video title",
    "privacyLevel": "PUBLIC_TO_EVERYONE" | "FOLLOWER_OF_CREATOR" | "MUTUAL_FOLLOW_FRIENDS" | "SELF_ONLY",
    "disableDuet": false,
    "disableComments": false,
    "disableStitch": false,
    "brandContent": false,
    "brandOrganic": true,
    "hasUsageConfirmation": true
  }
  ```

  ### YouTube
  ```json
  {
    "type": "YOUTUBE",
    "title": "My video title",
    "privacyStatus": "PUBLIC" | "UNLISTED" | "PRIVATE",
    "category": "FILM_ANIMATION" | "AUTOS_VEHICLES" | "MUSIC" | "PETS_ANIMALS" | "SPORTS" | "TRAVEL_EVENTS" | "GAMING" | "PEOPLE_BLOGS" | "COMEDY" | "ENTERTAINMENT" | "NEWS_POLITICS" | "HOWTO_STYLE" | "EDUCATION" | "SCIENCE_TECHNOLOGY"
  }
  ```

  ---

  ## Media & text validations

  PostPulse Web enforces rich, platform-specific validations.  
  **API clients must currently validate themselves.** (Server-side validations for API clients are planned.)

  | Validation area | PostPulse Web | PostPulse API (current) |
  |---|---|---|
  | X: Standard users can post up to 280 characters per tweet | UI warning | **You must validate** |
  | X: Supported image formats are JPG, PNG, and WEBP | Enforced | **You must validate** |
  | X: Image size should be less than or equal 5MB | Enforced | **You must validate** |
  | X: Video size should be less than or equal 512MB | Enforced | **You must validate** |
  | X: Maximum 4 media attachments | Enforced | **You must validate** |
  | X: Video duration must be between 0.5 sec and 140 sec | Enforced | **You must validate** |
  | X: Media aspect ratio between 1:3 and 3:1 | Enforced | **You must validate** |
  | Threads: Users can post up to 500 characters | Enforced | **You must validate** |
  | Threads: Topic tag should be less than 100 characters | Enforced | **You must validate** |
  | Threads: When no topic tag is specified in the platform settings and the content contains a word with # - the first word with # will be used as a topic tag (expept cases with numbers, like #1) | UI warning | **You must validate** |
  | Threads: Image size should be less than or equal 8MB | Enforced | **You must validate** |
  | Threads: Media aspect ratio between 0,01:1 and 10:1 | Enforced | **You must validate** |
  | Threads: Video duration must be less than 5 min | Enforced | **You must validate** |
  | Threads: Supported video format is MP4 | Enforced | **You must validate** |
  | YouTube: Title should be less than 100 characters | Enforced | **You must validate** |
  | YouTube: Description should be less than 5000 characters | Enforced | **You must validate** |
  | TikTok: Title should be less than 2200 characters for video post | Enforced | **You must validate** |
  | TikTok: Title should be less than 90 characters for image post | Enforced | **You must validate** |
  | TikTok: Description should be less than 4000 characters for image post | Enforced | **You must validate** |
  | TikTok: Image size should be less than or equal 20MB | Enforced | **You must validate** |
  | TikTok: Supported image formats are JPG, PNG, and WEBP | Enforced | **You must validate** |
  | TikTok: Supported video formats are MP4, MOV, and WebM | Enforced | **You must validate** |
  | TikTok: Video duration as per individual limits (typically 1 hour) | Enforced | **You must validate** |
  | TikTok: One post is either 1 video or up to 10 images | Enforced | **You must validate** |
  | TikTok: Video should have no more between 360 and 4096 pixels for both height and width | **To Do** | **You must validate** |
  | LinkedIn: User can post up to 3000 characters | Enforced | **You must validate** |
  | LinkedIn: One post can contain either 1 video or up to 9 images (or no media at all) | Enforced | **You must validate** |
  | LinkedIn: Supported video format is MP4 | Enforced | **You must validate** |
  | LinkedIn: Video size should be less than or equal 500MB | Enforced | **You must validate** |
  | LinkedIn: Video duration must be between 3 sec and 30 min | Enforced | **You must validate** |
  | Instagram: User can post up to 2200 characters | Enforced | **You must validate** |
  | Instagram: Supported image formats are JPG and PNG | Enforced | **You must validate** |
  | Instagram: Image size should be less than or equal 8MB | Enforced | **You must validate** |
  | Instagram: Feed post can contain up to 10 media (carousel) | Enforced | **You must validate** |
  | Instagram: Feed post media aspect ratio between 1.91:1 and 4:5 | Enforced | **You must validate** |
  | Instagram: Supported video formats are MP4 and MOV | Enforced | **You must validate** |
  | Instagram: Video size should be less than or equal 300MB | Enforced | **You must validate** |
  | Instagram: Feed and Story post video duration must be between 3 sec and 15 min | Enforced | **You must validate** |
  | Instagram: Reels video duration must be between 3 sec and 90 sec | Enforced | **You must validate** |
  | Instagram: Reels and Story post media aspect ratio between 0.01:1 and 10:1 | Enforced | **You must validate** |
  | Instagram: Reels and Story recommended aspect ratio is 9:16 | UI Warning | **You must validate** |
  | Instagram: Video should have no more than 1920 horizontal pixels | **To Do** | **You must validate** |
  | Bluesky: Users can post up to 300 characters | Enforced | **You must validate** |
  | Bluesky: Post may contain up to 4 images | Enforced | **You must validate** |
  | Telegram: Users can post up to 4096 characters | Enforced | **You must validate** |
  | Telegram: Standard user can post up to 1024 characters if post contains media as well | Enforced | **You must validate** |
  | Telegram: One post may contain up to 10 media | Enforced | **You must validate** |
  | Telegram: Supported image formats are JPG, PNG, and WEBP | Enforced | **You must validate** |
  | Telegram: Supported video formats is MP4 | Enforced | **You must validate** |

  > Follow updates at **https://post-pulse.com/releases** — we’ll announce when API-side validations roll out.

  ---

  ## Rate limits & API keys

  - Authentication uses **OAuth2**; tokens are auto-refreshed by n8n.
  - PostPulse runs on AWS API Gateway usage plans. Typical plans:
    - **Standard:** 20 RPS burst, 200 RPS steady, 50k req/month
    - **Agency:** higher limits on request

  ---

  ## Webhooks

  PostPulse supports webhooks for real-time notifications instead of polling for status updates. This is especially useful for tracking:

  - **Post publishing status** — Get notified when scheduled posts are published or fail
  - **Media import progress** — Receive updates on URL-based media imports without polling the "Get Upload Status" endpoint

  ### Setting up webhooks

  1. **Register webhook endpoints** at the [Developer Portal](https://developers.post-pulse.com)
  2. **Configure event types** you want to receive notifications for
  3. **Review webhook models** and event types in the developer documentation

  ### Benefits over polling

  - **Real-time updates** — Instant notifications when events occur
  - **Reduced API calls** — No need to repeatedly poll status endpoints
  - **Better reliability** — Guaranteed delivery with retry mechanisms
  - **Lower latency** — Immediate response to status changes

  > **Learn more:** Visit [https://developers.post-pulse.com](https://developers.post-pulse.com) for complete webhook documentation, supported event types, and payload schemas.

  ---

  ## Examples

  ### Minimal single-destination post (Reel)
  ```json
  {
    "scheduledTime": "2025-08-17T14:03:00",
    "isDraft": false,
    "publications": [
      {
        "socialMediaAccountId": 442,
        "platformSettings": {
          "type": "INSTAGRAM",
          "publicationType": "REELS"
        },
        "posts": [
          {
            "attachmentPaths": [
              "6354d8d2-e0f1-702b-af6c-62e28e377ec7/c6c2b826-8aca-4eae-8549-515325012ab4.jpeg"
            ],
            "content": "New drop is live! #fashion"
          }
        ]
      }
    ]
  }
  ```

  ### Telegram to multiple channels in one publication
  ```json
  {
    "scheduledTime": "2025-08-17T14:03:00",
    "isDraft": false,
    "publications": [
      {
        "socialMediaAccountId": 501,   // Telegram account id
        "platformSettings": { "type": "TELEGRAM" },
        "posts": [
          { "chatId": "-100123", "content": "Hello Channel A", "attachmentPaths": ["u1/p1.jpg"] },
          { "chatId": "-100456", "content": "Hello Channel B", "attachmentPaths": ["u1/p1.jpg"] }
        ]
      }
    ]
  }
  ```

  ### TikTok with title & privacy
  ```json
  {
    "scheduledTime": "2025-08-17T14:03:00",
    "isDraft": false,
    "publications": [
      {
        "socialMediaAccountId": 777,
        "platformSettings": {
          "type": "TIK_TOK",
          "title": "Top 5 tips",
          "privacyLevel": "PUBLIC_TO_EVERYONE",
          "hasUsageConfirmation": true
        },
        "posts": [
          { "attachmentPaths": ["u1/v1.mp4"], "content": "Full guide in bio" }
        ]
      }
    ]
  }
  ```

  ### Media import from URL
  ```json
  {
    "url": "https://example.com/my-video.mp4",
    "filenameHint": "promotional-video.mp4"
  }
  ```
  **Response:**
  ```json
  {
    "id": 12345,
    "state": "QUEUED"
  }
  ```

  ### Check media import status
  **Input:** `importId: 12345`

  **Response:**
  ```json
  {
    "id": 12345,
    "state": "READY",
    "sourceUrl": "https://example.com/my-video.mp4",
    "bytesDownloaded": 15728640,
    "totalBytes": 15728640,
    "detectedMime": "video/mp4",
    "s3Key": "6354d8d2-e0f1-702b-af6c-62e28e377ec7/promotional-video.mp4"
  }
  ```

  > **Note:** Use the `s3Key` value in `attachmentPaths` when the state is `READY`.

  ### Schedule (Light) - Instagram Reel
  Using the simplified interface with automatic platform settings:

  **Node configuration:**
  - Schedule Mode: `Schedule for Later`
  - Scheduled Time: `2025-08-17T14:03:00`
  - Social Media Account: `INSTAGRAM - @fashionbrand`
  - Publication Type: `Reels` (automatically appears for Instagram)
  - Content: `New drop is live! #fashion`
  - Attachment Paths: `6354d8d2-e0f1-702b-af6c-62e28e377ec7/video.mp4`

  The node automatically builds this API request:
  ```json
  {
    "scheduledTime": "2025-08-17T14:03:00",
    "isDraft": false,
    "publications": [{
      "socialMediaAccountId": 442,
      "platformSettings": {
        "type": "INSTAGRAM",
        "publicationType": "REELS"
      },
      "posts": [{
        "content": "New drop is live! #fashion",
        "attachmentPaths": ["6354d8d2-e0f1-702b-af6c-62e28e377ec7/video.mp4"]
      }]
    }]
  }
  ```

  ### Schedule (Light) - Telegram with Channel Selection
  **Node configuration:**
  - Schedule Mode: `Post Now`
  - Social Media Account: `TELEGRAM - @mybot`
  - Channel: `Tech Updates` (loaded from API, shows connected channels)
  - Content: `Check out our latest update!`
  - Attachment Paths: `user1/screenshot.png, user1/demo.mp4`

  The node automatically builds this API request (no `scheduledTime` — posts immediately):
  ```json
  {
    "isDraft": false,
    "publications": [{
      "socialMediaAccountId": 501,
      "platformSettings": {
        "type": "TELEGRAM"
      },
      "posts": [{
        "chatId": "-1001234567890",
        "content": "Check out our latest update!",
        "attachmentPaths": ["user1/screenshot.png", "user1/demo.mp4"]
      }]
    }]
  }
  ```

  ### Schedule (Light) - YouTube Video
  **Node configuration:**
  - Schedule Mode: `Schedule for Later`
  - Scheduled Time: `2025-08-17T14:03:00`
  - Social Media Account: `YOUTUBE - @MyChannel`
  - Video Title: `Top 5 JavaScript Tips` (automatically appears for YouTube)
  - Content: `Full tutorial with code examples. Links in description.`
  - Attachment Paths: `user1/tutorial-video.mp4`

  The node automatically builds this API request:
  ```json
  {
    "scheduledTime": "2025-08-17T14:03:00",
    "isDraft": false,
    "publications": [{
      "socialMediaAccountId": 777,
      "platformSettings": {
        "type": "YOUTUBE",
        "title": "Top 5 JavaScript Tips"
      },
      "posts": [{
        "content": "Full tutorial with code examples. Links in description.",
        "attachmentPaths": ["user1/tutorial-video.mp4"]
      }]
    }]
  }
  ```

  ---

  ## FAQ

  **Do I have to upload media to PostPulse even if I have a public URL?**  
  Not anymore! You can now use the "From Public URL" option in Media → Upload to import media directly from URLs. The system will download and host the media on `post-pulse.com` for platform compatibility.

  **How do I import media from a URL?**  
  Use Media → Upload with "From Public URL" option. Provide the URL and optionally a filename hint. Enable **Wait for Completion** to have the node automatically poll until the media is ready — it returns `{ path }` just like file upload. Alternatively, disable Wait for Completion to get the import job ID and poll manually with Media → Get Upload Status.

  **What are the different import states?**  
  - `QUEUED`: Import job is waiting to start
  - `DOWNLOADING`: Media is being downloaded from the source URL
  - `VALIDATING`: Downloaded media is being validated
  - `UPLOADING`: Media is being uploaded to PostPulse storage
  - `READY`: Import complete, media ready to use (check `s3Key` field)
  - `FAILED_TEMPORARY`: Temporary failure, may retry automatically
  - `FAILED_PERMANENT`: Permanent failure, check `errorCode` and `errorMessage`

  **Can I draft then update later via the node?**  
  In v1 of the node, we recommend `isDraft: false`. Update endpoints will be exposed in a later version.

  **How do I post to multiple accounts at once?**  
  Create one `PostSchedule` with multiple `Publication` objects (one per account).

  **How do I set YouTube or TikTok titles?**  
  Titles live in **`platformSettings`** (see schemas above). `content` becomes description.

  **Should I use webhooks or polling for status updates?**  
  Webhooks are recommended for production workflows as they provide real-time notifications without the need to repeatedly call status endpoints. Set up webhooks at [https://developers.post-pulse.com](https://developers.post-pulse.com) to receive instant notifications for post publishing status and media import progress. Use polling (Get Upload Status) only for testing or when webhooks aren't feasible.

  ---

  ## Support

  - **Developer Portal:** https://developers.post-pulse.com (for OAuth client setup and documentation)
  - **Discord Community:** [PostPulse for Developers](https://discord.gg/yrMdD4R5) (feature requests, community support)
  - **Email Support:** support@post-pulse.com (technical issues and general inquiries)

  ---

  ## Versioning & License

  - Semantic Versioning: `MAJOR.MINOR.PATCH`
  - License: MIT

  ---

  ### Security notes
  - Store secrets in **n8n Credentials** only; don’t hardcode in workflows.

ai_documentation_summary:
  {"purpose":"This n8n node enables users to schedule and publish content to multiple social media platforms (including Facebook, Instagram, TikTok, LinkedIn, etc.) by interacting with the PostPulse API.","capabilities":["OAuth2 authentication with automatic token refresh","Media upload from local files","Media import from public URLs","Media upload status monitoring","Multi-destination post scheduling","Telegram channel lookup","Facebook page lookup","Platform-specific field auto-detection"],"authentication":"OAuth2 (auto refresh)","commonUseCases":["One-click multi-platform content distribution","Automated social media campaigns","Media pipeline for scheduled posts","Cross-platform content management"],"limitations":["Advanced scheduling requires manual construction of platformSettings JSON for complex scenarios","Draft posts (isDraft: true) are not currently supported","Update endpoints for draft posts are not yet exposed in the node","Telegram integration requires adding the official PostPulse bot to target channels beforehand"],"relatedNodes":["n8n HTTP Request","n8n Binary File","n8n Webhook","n8n Code Node"]}


node_type: n8n-nodes-placid.placid
package_name: n8n-nodes-placid
display_name: Placid
description: Generate images, PDFs, and videos via Placid's API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: placidapp
author_github_url: https://github.com/placidapp/
npm_package_name: n8n-nodes-placid
npm_version: 0.1.6
community_fetched_at: 2026-07-14T14:40:33.346Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "image",
      "options": [
        {
          "name": "Image",
          "value": "image"
        },
        {
          "name": "PDF",
          "value": "pdf"
        },
        {
          "name": "Video",
          "value": "video"
        },
        {
          "name": "Template",
          "value": "template"
        },
        {
          "name": "Other",
          "value": "other"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an image from a template",
          "description": "Generate a new image from a template"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an image by ID",
          "description": "Retrieve an existing image by ID"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an image by ID",
          "description": "Delete an existing image by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a PDF from a template",
          "description": "Generate a new PDF from a template"
        },
        {
          "name": "Merge",
          "value": "merge",
          "action": "Merge multiple PDF files",
          "description": "Merge multiple existing PDFs into one"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a PDF by ID",
          "description": "Retrieve an existing PDF by ID"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a PDF by ID",
          "description": "Delete an existing PDF by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdf"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a video from a template",
          "description": "Generate a new video from a template"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a video by ID",
          "description": "Retrieve an existing video by ID"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a video by ID",
          "description": "Delete an existing video by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "video"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a template",
          "description": "Create a new template"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a template by ID",
          "description": "Delete an existing template by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a template by ID",
          "description": "Retrieve an existing template by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many templates",
          "description": "Retrieve multiple templates"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a template",
          "description": "Update an existing template"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "template"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "uploadMedia",
      "options": [
        {
          "name": "Upload Media",
          "value": "uploadMedia",
          "action": "Upload media files",
          "description": "Upload media files to Placid storage for use in templates"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "other"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create an image from a template",
      "description": "Generate a new image from a template",
      "resource": "image"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an image by ID",
      "description": "Retrieve an existing image by ID",
      "resource": "image"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an image by ID",
      "description": "Delete an existing image by ID",
      "resource": "image"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a PDF from a template",
      "description": "Generate a new PDF from a template",
      "resource": "pdf"
    },
    {
      "name": "Merge",
      "value": "merge",
      "action": "Merge multiple PDF files",
      "description": "Merge multiple existing PDFs into one",
      "resource": "pdf"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a PDF by ID",
      "description": "Retrieve an existing PDF by ID",
      "resource": "pdf"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a PDF by ID",
      "description": "Delete an existing PDF by ID",
      "resource": "pdf"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a video from a template",
      "description": "Generate a new video from a template",
      "resource": "video"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a video by ID",
      "description": "Retrieve an existing video by ID",
      "resource": "video"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a video by ID",
      "description": "Delete an existing video by ID",
      "resource": "video"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a template",
      "description": "Create a new template",
      "resource": "template"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a template by ID",
      "description": "Delete an existing template by ID",
      "resource": "template"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a template by ID",
      "description": "Retrieve an existing template by ID",
      "resource": "template"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many templates",
      "description": "Retrieve multiple templates",
      "resource": "template"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a template",
      "description": "Update an existing template",
      "resource": "template"
    },
    {
      "name": "Upload Media",
      "value": "uploadMedia",
      "action": "Upload media files",
      "description": "Upload media files to Placid storage for use in templates",
      "resource": "other"
    }
  ]

npm_readme:
  ![Placid n8n Integration](https://placid.app/assets/n8n/github-header-n8n.jpg)

  # n8n-nodes-placid

  This is an n8n community node. It lets you use [Placid API](https://placid.app) in your n8n workflows.

  Placid is a powerful API service for automated image, PDF, and video generation from custom templates. Create dynamic visual content at scale with simple API calls.

  [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

  ### Quick Install
  ```bash
  npm install n8n-nodes-placid
  ```

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

  ### Complete Setup Guide  
  📖 **New to Placid + n8n?** Check out our comprehensive [Placid n8n Setup Guide](https://placid.app/help/n8n-setup-guide) with step-by-step instructions, examples, and best practices for:
  - Setting up your Placid project with n8n integration
  - Creating dynamic templates for images, PDFs, and videos  
  - Installing and configuring the node
  - Mapping data to template layers
  - Testing and completing your workflows

  ## Operations

  ### Image Operations
  - **Create Image** - Generate images from Placid templates with dynamic data
  - **Get Image** - Retrieve image information and download URLs
  - **Delete Image** - Delete generated images from your Placid account

  ### PDF Operations  
  - **Create PDF** - Generate PDFs from Placid templates with dynamic data
  - **Get PDF** - Retrieve PDF information and download URLs
  - **Delete PDF** - Delete generated PDFs from your Placid account

  ### Video Operations
  - **Create Video** - Generate videos from Placid templates with support for multiple clips and audio
  - **Get Video** - Retrieve video information and download URLs
  - **Delete Video** - Delete generated videos from your Placid account

  ### Template Operations
  - **Create Template** - Create new Placid templates
  - **Get Template** - Retrieve a specific template by ID
  - **Get Many Templates** - List all templates with optional filtering
  - **Update Template** - Update existing template properties
  - **Delete Template** - Delete templates from your Placid account

  ### Other Operations
  - **Upload Media** - Upload media files to Placid storage for use in templates

  ## Credentials

  To use this node, you'll need:

  1. **Placid Account**: Sign up at [placid.app](https://placid.app)
  2. **API Key**: Get your API key from your Placid dashboard
  3. **Authentication Setup**: 
     - In n8n, create new credentials of type "Placid API"
     - Enter your Placid API key

  ## Compatibility

  - **Minimum n8n version**: 0.208.0
  - **Node.js version**: >=20.15
  - **Tested with**: n8n 1.x.x

  ## Usage

  ### Configuration Modes
  The Placid node offers two configuration modes for maximum flexibility:

  **🎯 Simple Mode (Recommended)**  
  - User-friendly interface with dropdowns and form fields
  - Dynamic template layer detection - template layers automatically become input fields
  - Support for binary file uploads (images, videos, PDFs)
  - Perfect for most use cases

  **⚙️ Advanced Mode**  
  - Direct JSON configuration for complex scenarios
  - Full control over API payload structure  
  - Support for multi-clip videos and advanced layer configurations
  - Ideal for developers and complex automations

  ### Key Features

  **📁 Binary File Upload**  
  Upload files directly from n8n binary data:
  - Images (JPG, PNG, GIF, WebP) for image and picture layers
  - Videos (MP4) for video layers and video generation
  - Automatic upload to Placid storage with instant URL generation

  **🎬 Multi-Clip Videos**  
  Create sophisticated videos:
  - Combine multiple templates into single videos  
  - Add audio tracks with trimming controls
  - Support for image arrays and slideshow effects
  - Layer animations and transitions

  **🔄 Dynamic Template Integration**  
  - Template layers automatically appear as configurable fields
  - Support for all layer types: text, images, shapes, barcodes, ratings
  - Custom properties for advanced styling
  - Real-time template validation

  ### Quick Start Example
  1. **Choose Resource**: Select "Image", "PDF", "Video", "Template", or "Other"
  2. **Select Operation**: Pick "Create", "Get", "Delete", etc.  
  3. **Pick Template**: Choose from your Placid templates
  4. **Configure Layers**: Use the simple UI or JSON mode
  5. **Add Data**: Map your n8n workflow data to template fields
  6. **Execute**: Generate your creative asset

  For detailed examples and walkthroughs, see the [📖 Placid n8n Setup Guide](https://placid.app/help/n8n-setup-guide).

  ## Resources

  ### Getting Started
  * [📖 Placid n8n Setup Guide](https://placid.app/help/n8n-setup-guide) - Complete walkthrough with examples
  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)

  ### API Documentation  
  * [Placid API Documentation](https://placid.app/docs/2.0/introduction)
  * [Placid Image API](https://placid.app/docs/2.0/rest/images)
  * [Placid PDF API](https://placid.app/docs/2.0/rest/pdfs)  
  * [Placid Video API](https://placid.app/docs/2.0/rest/videos)
  * [Placid Templates API](https://placid.app/docs/2.0/rest/templates)

  ### Support & Community
  * [📝 Report Issues](https://github.com/placidapp/n8n-nodes-placid/issues)
  * [💬 Get Help](https://placid.app/help) - Contact Placid support
  * [🔗 Repository](https://github.com/placidapp/n8n-nodes-placid)

  ## Version history

  ### 0.1.6 (Current)
  - **New PDF Merge Operation**
  - Merge multiple PDFs into a single document with mixed URL/binary source support
  - Simple and Advanced configuration modes for flexibility
  - **Security Improvements**
  - Sanitized filenames in multipart headers to prevent injection attacks
  - Added randomness to multipart boundaries to prevent collisions
  - **Bug Fixes**
  - Validate whitespace-only URLs in simple mode
  - Validate URLs in advanced mode PDF merge configuration
  - Show last polled status in timeout error messages
  - Fixed multipart body handling for media uploads

  ### 0.1.5
  - **Error Handling Enhancement** 🛡️
  - Added ContinueOnFail support to allow workflows to continue execution even when individual operations encounter errors
  - Improved error reporting with standardized NodeOperationError across all operations for better debugging
  - **Compatibility Update** 🔄
  - Updated authentication method to use latest n8n API for improved reliability

  ### 0.1.4
  - **Item Tracking Fix** 🔧
  - Added pairedItem to all operation returns to enable proper input-output tracking and data lineage in n8n workflows

  ### 0.1.3
  - **Bug Fixes** 🔧
  - Fixed property field mapping for shape layer colors (background_color, border_color)
  - Fixed text layer property mappings (text_color, alt_text_color, font, alt_font)
  - Fixed rating/barcode "Value" field label collision
  - Improved layer property handling across all resources

  ### 0.1.2
  - **n8n Cloud Verification Fix** 🔧
  - Fixed ESLint violations by replacing `setTimeout` with n8n's `sleep` helper
  - Ensures compatibility with n8n cloud verification requirements

  ### 0.1.1
  - **Documentation improvements** 📚
  - Added comprehensive usage examples and feature documentation
  - Added reference to [Placid n8n Setup Guide](https://placid.app/help/n8n-setup-guide)
  - Enhanced installation instructions with npm command
  - Documented binary file upload capabilities
  - Added support and community links

  ### 0.1.0
  - **First stable release** 🎉
  - Image, PDF, and video generation from Placid templates
  - Template management (CRUD operations)
  - Media upload functionality
  - Dynamic template field generation
  - API key authentication
  - Production ready

  ### 0.0.1-beta.1
  - Initial beta release
   

ai_documentation_summary:
  {"purpose":"This n8n community node enables workflow automation for generating images, PDFs, and videos using Placid's API, supporting both simple UI and advanced JSON configurations.","capabilities":["Generate images from custom templates","Generate PDFs from custom templates","Generate videos with multiple clips and audio","Retrieve and delete generated assets","Create, update, and delete templates","Upload media files to Placid storage","Support binary file uploads (images, videos, PDFs)","Multi-clip video creation with audio trimming","Dynamic template layer mapping","Advanced JSON configuration mode"],"authentication":"API key required (Placid API key)","commonUseCases":["Automated marketing material generation","Dynamic document creation for data-driven workflows","Video compilation from multiple sources","Template-based content personalization","Automated asset management and deletion"],"limitations":["Community node (may have fewer updates than official nodes)","Requires separate Placid account setup","Minimum n8n version 0.208.0 required","Node.js version >=20.15 required"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.binaryFile"]}


