# nodes

node_type: n8n-nodes-streamline.streamline
package_name: n8n-nodes-streamline
display_name: Streamline
description: Call Streamline APIs
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: streamline-connector
author_github_url: https://github.com/streamline-connector/
npm_package_name: n8n-nodes-streamline
npm_version: 0.3.4
community_fetched_at: 2026-02-19T14:41:52.609Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "getShopifyOrder",
      "options": [
        {
          "name": "Get Shopify Order",
          "value": "getShopifyOrder"
        },
        {
          "name": "Get AI Product Recommendation",
          "value": "getAiProductRecommendation"
        },
        {
          "name": "Get Product Inventory",
          "value": "getProductInventory"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get Order(s)",
          "value": "get",
          "action": "Get shopify orders",
          "routing": {
            "request": {
              "url": "/api/order-data",
              "method": "GET"
            }
          },
          "description": "Get Shopify Order/s using email or order number"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "getShopifyOrder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get Recommendations",
          "value": "get",
          "action": "Get ai product recommendations",
          "routing": {
            "request": {
              "url": "/products/recommendations",
              "method": "GET"
            }
          },
          "description": "Get AI-based product suggestions"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "getAiProductRecommendation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get Inventory",
          "value": "get",
          "action": "Get product inventory",
          "routing": {
            "request": {
              "url": "/products/inventory",
              "method": "GET"
            }
          },
          "description": "Retrieve inventory levels for a product"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "getProductInventory"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Order(s)",
      "value": "get",
      "action": "Get shopify orders",
      "routing": {
        "request": {
          "url": "/api/order-data",
          "method": "GET"
        }
      },
      "description": "Get Shopify Order/s using email or order number"
    },
    {
      "name": "Get Recommendations",
      "value": "get",
      "action": "Get ai product recommendations",
      "routing": {
        "request": {
          "url": "/products/recommendations",
          "method": "GET"
        }
      },
      "description": "Get AI-based product suggestions"
    },
    {
      "name": "Get Inventory",
      "value": "get",
      "action": "Get product inventory",
      "routing": {
        "request": {
          "url": "/products/inventory",
          "method": "GET"
        }
      },
      "description": "Retrieve inventory levels for a product"
    }
  ]

npm_readme:
  # n8n-nodes-streamline

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

  This is an n8n community node that connects your **Shopify eCommerce data** to [n8n](https://n8n.io) through the **Streamline Connector API**. It enables you to retrieve products, orders, and inventory data from Shopify to automate workflows and integrate with other services.

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

  ### Community Nodes (Recommended)

  For users on n8n v0.187.0+:

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

  After installation, the Streamline node will be available in your nodes panel.

  ### Manual Installation

  For self-hosted n8n instances:

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

  Restart n8n and the **Streamline** node will appear in your node list.

  ### Docker

  To use this node with Docker:

  ```bash
  docker run -it --rm \
    -p 5678:5678 \
    -v ~/.n8n:/home/node/.n8n \
    -v ~/.n8n/custom:/home/node/custom \
    -e N8N_CUSTOM_EXTENSIONS="/home/node/custom/node_modules/n8n-nodes-streamline" \
    n8nio/n8n
  ```

  ## Operations

  The Streamline node supports the following operations:

  | Resource | Operation | Description |
  |----------|-----------|-------------|
  | **Products** | Get Products | Retrieve Shopify product data through Streamline |
  | **Orders** | Get Orders | Fetch recent orders and order details |
  | **Inventory** | Get Inventory | Retrieve stock levels and availability data |

  ## Credentials

  To use the Streamline node, you need to set up Streamline API credentials:

  1. In n8n, go to **Credentials → New**
  2. Search for and select **Streamline API**
  3. Enter your credentials:
     - **Streamline Shop ID** – Your Streamline access key (found in the app dashboard > Any endpoint page)
  4. Click **Save** and test the connection

  Once configured, select these credentials when using any Streamline node in your workflows.

  ### Getting API Credentials

  To obtain your Streamline API credentials:

  1. Visit [Streamline Connector](https://streamlineconnector.com)
  2. Sign up or log in to your account
  3. Navigate to your API settings
  4. Generate or copy your API key

  ## Compatibility

  - **Minimum n8n version:** 0.187.0
  - **Tested with n8n version:** 1.0.0+
  - **Node.js version:** 22+

  ## Usage

  ### Example Workflows

  Here are some common use cases for the Streamline node:

  **1. Sync Orders to Google Sheets**
  - Trigger: Schedule (every hour)
  - Streamline Node: Get Orders
  - Google Sheets: Append data
  - Use case: Create automated sales reports

  **2. Low Stock Alerts**
  - Trigger: Schedule (daily)
  - Streamline Node: Get Inventory
  - IF Node: Check if stock < threshold
  - Slack/Email Node: Send alert
  - Use case: Monitor inventory levels

  **3. Product Catalog Integration**
  - Trigger: Manual or Schedule
  - Streamline Node: Get Products
  - Your Service: Update product database
  - Use case: Maintain product information across platforms

  ### Tips

  - Use the **Schedule Trigger** node to automate regular data syncs
  - Combine with **IF** nodes to create conditional workflows
  - Use **Set** nodes to transform data before sending to other services
  - Enable **Error Workflows** to handle API errors gracefully

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Streamline Connector](https://streamlineconnector.com)
  - [n8n workflow examples](https://n8n.io/workflows)

  ### Support

  For issues and questions:

  - **Node issues:** [GitHub Issues](https://github.com/streamline-connector/n8n-nodes-streamline/issues)
  - **n8n help:** [n8n Community Forum](https://community.n8n.io/)
  - **Streamline API:** Contact devs@streamlineconnector.com

  ## Development

  ### Prerequisites

  - Node.js v22 or higher
  - npm
  - n8n (included as dev dependency)

  ### Setup

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

  # Install dependencies
  npm install

  # Build the node
  npm run build
  ```

  ### Local Development

  Start n8n with your node loaded:

  ```bash
  npm run dev
  ```

  This command:
  - Builds your node with watch mode enabled
  - Starts n8n with your node available
  - Automatically rebuilds when you make changes
  - Opens n8n in your browser at http://localhost:5678

  ### Testing

  Run linting:

  ```bash
  npm run lint
  ```

  Auto-fix linting issues:

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

  ### Building for Production

  ```bash
  npm run build
  ```

  This compiles TypeScript code to the `dist/` folder.

  ## Version History

  See [CHANGELOG.md](CHANGELOG.md) for detailed version history.

  ## License

  [MIT](LICENSE.md)

  ## 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

  ---

  Made with ❤️ by [Streamline Connector](https://streamlineconnector.com)

ai_documentation_summary:
  {"purpose":"Provide read access to Shopify eCommerce data via the Streamline Connector API, enabling n8n workflows to retrieve products, orders, and inventory information for automation and integrations.","capabilities":["Get Products — retrieve Shopify product data through the Streamline API","Get Orders — fetch recent orders and order details","Get Inventory — retrieve stock levels and availability data"],"authentication":"API key required (Streamline Shop ID / access key via Streamline API credentials)","commonUseCases":["Sync orders to Google Sheets for automated sales reporting","Low stock alerts: poll inventory and notify via Slack or email when below threshold","Product catalog integration: regularly fetch products to update external product databases"],"limitations":["Read-only operations exposed in the node (only 'Get' for Products, Orders, Inventory) — no create/update/delete actions documented","Requires a Streamline Connector account and API key (Streamline Shop ID)","Compatibility constraints: minimum n8n v0.187.0 and Node.js v22+ (tested with n8n 1.0.0+)"],"relatedNodes":["Schedule Trigger","Google Sheets","IF","Slack","Email"]}


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-02-19 14:41:52
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-02-19T14:41:52.610Z
ai_summary_generated_at: 2026-02-19 16:43:57
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":"Starts n8n workflows from Simla events (e.g., customer messages) and provides actions to interact with the Simla CRM API to manage customers, orders, messages and dialogs.","capabilities":["Trigger workflow on Simla events (example: Customer Message event)","Customer: Get customers by filter","Customer: Create customer","Customer: Edit customer","Order: Get orders by filter","Order: Create order","Order: Edit order","Message: Send a message to a chat (requires Chat ID from input)","Dialog: Assign a dialog to a user or bot (specify dialogId)","Dialog: Unassign a dialog"],"authentication":"API key required — provide Simla URL and Simla API key; the node sends the key in the X-Api-Key header. API key must include read/write permissions for Orders, Customers and Integration.","commonUseCases":["Start workflows when a customer message arrives in Simla and send automated replies","Create or update customer records based on incoming messages or external systems","Create or update orders tied to customers","Assign, unassign or close dialogs (route conversations to managers or bots)","Integrate Simla CRM events with other systems (e.g., ticketing, analytics) using triggered workflows"],"limitations":["Auth is API key only (no OAuth); requires providing Simla URL and API key with specific read/write permissions","README examples focus on the 'Customer Message' trigger — available trigger event types are not exhaustively documented","Tested with n8n version 1.109.1 (compatibility with other versions not guaranteed from README)"],"relatedNodes":[]}


node_type: @globalping/n8n-nodes-globalping.globalping
package_name: @globalping/n8n-nodes-globalping
display_name: Globalping
description: Consume the Globalping API
category: Development
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: jimaek
author_github_url: https://github.com/jsdelivr/n8n-nodes-globalping.git
npm_package_name: @globalping/n8n-nodes-globalping
npm_version: 1.0.5
community_fetched_at: 2026-02-19T14:41:52.610Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "measurements",
      "options": [
        {
          "name": "Measurement",
          "value": "measurements"
        },
        {
          "name": "Probe",
          "value": "probes"
        },
        {
          "name": "Limit",
          "value": "limits"
        },
        {
          "name": "Custom API Call",
          "value": "__CUSTOM_API_CALL__"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "Returns a list of all probes currently online and their metadata such as location and assigned tags for advanced use cases"
        },
        {
          "name": "Custom API Call",
          "value": "__CUSTOM_API_CALL__"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "probes"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "Returns rate limits for the current user if authenticated or IP address if not authenticated"
        },
        {
          "name": "Custom API Call",
          "value": "__CUSTOM_API_CALL__"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "limits"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Ping",
          "value": "measurementPing",
          "action": "PING. Raw output, latency data, max 16 packets."
        },
        {
          "name": "Traceroute",
          "value": "measurementTraceroute",
          "action": "Traceroute. Raw output, latency data, all protocols and ports."
        },
        {
          "name": "DNS",
          "value": "measurementDns",
          "action": "DNS resolve. All types, latency data and optional tracing."
        },
        {
          "name": "MTR",
          "value": "measurementMtr",
          "action": "MTR trace. Raw output, latency data, all protocols."
        },
        {
          "name": "HTTP",
          "value": "measurementHttp",
          "action": "HTTP Request. GET or HEAD, raw output, latency and TLS data. Limited to 10kb."
        },
        {
          "name": "Custom API Call",
          "value": "__CUSTOM_API_CALL__"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "measurements"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "List",
      "value": "list",
      "action": "Returns a list of all probes currently online and their metadata such as location and assigned tags for advanced use cases"
    },
    {
      "name": "Custom API Call",
      "value": "__CUSTOM_API_CALL__"
    },
    {
      "name": "List",
      "value": "list",
      "action": "Returns rate limits for the current user if authenticated or IP address if not authenticated"
    },
    {
      "name": "Custom API Call",
      "value": "__CUSTOM_API_CALL__"
    },
    {
      "name": "Ping",
      "value": "measurementPing",
      "action": "PING. Raw output, latency data, max 16 packets."
    },
    {
      "name": "Traceroute",
      "value": "measurementTraceroute",
      "action": "Traceroute. Raw output, latency data, all protocols and ports."
    },
    {
      "name": "DNS",
      "value": "measurementDns",
      "action": "DNS resolve. All types, latency data and optional tracing."
    },
    {
      "name": "MTR",
      "value": "measurementMtr",
      "action": "MTR trace. Raw output, latency data, all protocols."
    },
    {
      "name": "HTTP",
      "value": "measurementHttp",
      "action": "HTTP Request. GET or HEAD, raw output, latency and TLS data. Limited to 10kb."
    },
    {
      "name": "Custom API Call",
      "value": "__CUSTOM_API_CALL__"
    }
  ]

npm_readme:
  # @globalping/n8n-nodes-globalping
  This is an n8n community node. It lets you use [Globalping](https://globalping.io/) in your n8n workflows.

  The Globalping node allows you to perform network measurements such as `ping`, `traceroute`, `mtr`, `http` and `DNS` lookups from a specified location. 
  You can use this node to test network connections, do latency checks or troubleshoot connectivity issues from various regions.

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

  ## Installation

  1. Go to n8n Settings in bottom left
  2. Select "Community nodes"
  3. Enter `@globalping/n8n-nodes-globalping` and install

  <img width="673" alt="n8n globalping" src="https://github.com/user-attachments/assets/1772ec9d-e5a5-47f8-983f-31e8f33a9c9a">


  ## Operations

  - All measurements support both IPv4 and IPv6 endpoints, as long as you manually enable it per measurement.
  - The location field is smart enough to accept many different types of inputs. [Learn more about the magic location field](https://github.com/jsdelivr/globalping?tab=readme-ov-file#test-with-magic-).
  - While the Globalping network is large and is constantly expanding we can't guarantee a probe in every single location. [Explore our online probes on our website](https://globalping.io/network)

   	### Measurements:
   	- `Ping` - Ping an endpoint using ICMP. Default 3 packets.
   	- `Traceroute` - Traceroute an endpoint using ICMP, TCP or UDP on any port. 
   	- `DNS` - Resolve a DNS record of any type. By default the local resolver is used but a different one can be provided. For troubleshooting purposes the `trace` function can be enabled.
   	- `MTR` - MTR an endpoint using ICMP, TCP or UDP on any port. 
   	- `HTTP` - Make an HTTP GET or HEAD request to any URL. Responses are limited to first 10kb. Note that the `Host` and `User-Agent` headers are reserved and internally overridden.

  	 ### Probes:
   	- `List` - returns a list of all probes currently online and their metadata such as location and assigned tags.

  	 ### Limits:
   	- `List` - returns rate limits for the current user if authenticated or IP address if not authenticated.

  ## Credentials

  Globalping is free to use, and doesn't require authentication. However, it implements rate limits to ensure fair usage and reliability. 
  Sign up on the [Globalping Dashboard](https://dash.globalping.io/) to enjoy higher limits. [Learn more about limits](https://globalping.io/credits).

  To take advantage of the higher limits you need to generate a token in the dashboard and store it in n8n by setting ```Access token``` in ```Credentials``` of your workflow.

  ## Usage

   Create a workflow and add Globalping node with operation you need. Make sure to enable "Authentication" in each step if you have provided your token and want to use it.

   <img width="1920" alt="globalping n8n usage" src="https://github.com/user-attachments/assets/09021705-4e78-4973-866d-92291b659fd4">

ai_documentation_summary:
  {"purpose":"Wraps the Globalping API to run remote network measurements (ping, traceroute, mtr, HTTP, DNS) and to list probes and rate limits from specified locations within n8n workflows.","capabilities":["Ping (ICMP) measurements (default 3 packets)","Traceroute (ICMP/TCP/UDP on any port)","MTR (ICMP/TCP/UDP on any port)","DNS lookups of any record type (with optional trace and custom resolver)","HTTP requests (GET or HEAD; response limited to first 10 KB)","List probes (returns online probes and metadata such as location and tags)","List rate limits for authenticated user or caller IP","Supports IPv4 and IPv6 endpoints (must be enabled per measurement)","Flexible location input (magic location field to select probe locations)"],"authentication":"None required (optional Access token/API token can be stored in n8n Credentials to get higher rate limits)","commonUseCases":["Remote latency and connectivity checks (ping/MTR) from specific regions","Path diagnostics and hop analysis using traceroute/MTR","DNS resolution and troubleshooting (including trace) from remote probes","HTTP availability checks (GET/HEAD) from distributed probes","Discovering available probes and their locations/tags"],"limitations":["Globalping rate limits apply; unauthenticated usage has lower limits","No guarantee a probe exists in every geographic location","HTTP operation limited to GET or HEAD and returns only the first 10 KB of response","Host and User-Agent headers are reserved and overridden internally","IPv6 support must be enabled manually per measurement"],"relatedNodes":[]}


node_type: n8n-nodes-peek-pro.peekPro
package_name: n8n-nodes-peek-pro
display_name: Peek Pro
description: Build workflows with Peek Pro
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: peektravel
author_github_url: https://github.com/peek-travel/
npm_package_name: n8n-nodes-peek-pro
npm_version: 0.2.2
community_fetched_at: 2026-02-19T14:41:52.611Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "booking",
      "options": [
        {
          "name": "Booking",
          "value": "booking"
        },
        {
          "name": "Product",
          "value": "product"
        },
        {
          "name": "Timeslot",
          "value": "timeslot"
        },
        {
          "name": "Account",
          "value": "account"
        },
        {
          "name": "User",
          "value": "user"
        },
        {
          "name": "Reseller",
          "value": "reseller"
        },
        {
          "name": "Promo Code",
          "value": "promoCode"
        },
        {
          "name": "Daily Note",
          "value": "dailyNote"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get: current account",
      "options": [
        {
          "name": "Get Current",
          "value": "get: current account",
          "action": "Get the current account information",
          "routing": {
            "request": {
              "url": "/accounts/current",
              "method": "GET"
            }
          },
          "description": "Get the current account information"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll: users",
      "options": [
        {
          "name": "Get All",
          "value": "getAll: users",
          "action": "Get all users",
          "routing": {
            "request": {
              "url": "/users",
              "method": "GET"
            }
          },
          "description": "Get all users"
        },
        {
          "name": "Get One",
          "value": "get: user",
          "action": "Get the data of a user",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter.userId}}",
              "method": "GET"
            }
          },
          "description": "Get the data of a single user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany: bookings (dates)",
      "options": [
        {
          "name": "Get All for Time Range",
          "value": "getMany: bookings (dates)",
          "action": "Get bookings within time range",
          "routing": {
            "request": {
              "qs": {
                "end": "={{$parameter[\"endTime\"]}}",
                "email": "={{$parameter[\"email\"]}}",
                "start": "={{$parameter[\"startTime\"]}}",
                "searchBy": "={{$parameter[\"searchBy\"]}}",
                "productId": "={{$parameter[\"productId\"]}}",
                "searchString": "={{$parameter[\"searchString\"]}}",
                "includeGuests": "={{$parameter[\"includeGuests\"]}}"
              },
              "url": "/bookings",
              "method": "GET"
            }
          },
          "description": "Get all bookings for a given time range"
        },
        {
          "name": "Get All for Timeslot",
          "value": "getMany: bookings (timeslot)",
          "action": "Get bookings for a timeslot",
          "routing": {
            "request": {
              "qs": {
                "timeslotId": "={{$parameter[\"timeslotId\"]}}",
                "includeGuests": "={{$parameter[\"includeGuests\"]}}"
              },
              "url": "/bookings",
              "method": "GET"
            }
          },
          "description": "Get all bookings for a given timeslot"
        },
        {
          "name": "Get One",
          "value": "get: booking",
          "action": "Get one booking",
          "routing": {
            "request": {
              "qs": {
                "includeGuests": "={{$parameter[\"includeGuests\"]}}"
              },
              "url": "=/bookings/{{$parameter.bookingId}}",
              "method": "GET"
            }
          },
          "description": "Get the data of a single booking"
        },
        {
          "name": "Add Note",
          "value": "set: booking notes",
          "action": "Append a note to the booking notes",
          "routing": {
            "request": {
              "url": "=/bookings/{{$parameter.bookingId}}/notes",
              "body": {
                "note": "={{$parameter[\"note\"]}}",
                "appendOrOverwrite": "={{$parameter[\"appendOrOverwrite\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Append a note to the booking notes"
        },
        {
          "name": "Update Checkin Status",
          "value": "set: booking checkin",
          "action": "Update the checkin status of a booking",
          "routing": {
            "request": {
              "url": "=/bookings/{{$parameter.bookingId}}/checkin",
              "body": {
                "checkedIn": "={{$parameter[\"checkedIn\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Update the checkin status of a single booking"
        },
        {
          "name": "Cancel Booking",
          "value": "cancel: booking",
          "action": "Cancel a booking",
          "routing": {
            "request": {
              "url": "=/bookings/{{$parameter.bookingId}}/cancel",
              "method": "POST"
            }
          },
          "description": "Cancel a booking"
        },
        {
          "name": "Create Booking",
          "value": "create: booking",
          "action": "Create a new booking",
          "routing": {
            "request": {
              "url": "=/bookings/create",
              "body": {
                "end": "={{$parameter[\"end\"]}}",
                "date": "={{$parameter[\"date\"]}}",
                "email": "={{$parameter[\"email\"]}}",
                "notes": "={{$parameter[\"notes\"]}}",
                "phone": "={{$parameter[\"phone\"]}}",
                "start": "={{$parameter[\"start\"]}}",
                "country": "={{$parameter[\"country\"]}}",
                "product": "={{$parameter[\"product\"]}}",
                "tickets": "={{$parameter[\"tickets\"]}}",
                "optinSms": "={{$parameter[\"optinSms\"]}}",
                "externalId": "={{$parameter[\"externalId\"]}}",
                "postalCode": "={{$parameter[\"postalCode\"]}}",
                "customerName": "={{$parameter[\"customerName\"]}}",
                "optinMarketing": "={{$parameter[\"optinMarketing\"]}}",
                "shouldSendEmails": "={{$parameter[\"shouldSendEmails\"]}}",
                "markBookingAsPaid": "={{$parameter[\"markBookingAsPaid\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Create a new booking"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "booking"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany: timeslots",
      "options": [
        {
          "name": "Get All for Date",
          "value": "getMany: timeslots",
          "action": "Get all timeslots on a date",
          "routing": {
            "request": {
              "qs": {
                "date": "={{$parameter[\"date\"]}}",
                "productId": "={{$parameter[\"productId\"]}}",
                "filterBookings": "={{$parameter[\"filterBookings\"]}}"
              },
              "url": "/timeslots",
              "method": "GET"
            }
          },
          "description": "Get all timeslots for a date and product"
        },
        {
          "name": "Get One",
          "value": "get: timeslot",
          "action": "Get a timeslot",
          "routing": {
            "request": {
              "url": "=/timeslots/{{$parameter.timeslotId}}",
              "method": "GET"
            }
          },
          "description": "Get the data of a single timeslot"
        },
        {
          "name": "Set Availability Status",
          "value": "set: timeslot availability",
          "action": "Set timeslot availability",
          "routing": {
            "request": {
              "url": "=/timeslots/{{$parameter.timeslotId}}",
              "body": {
                "status": "={{$parameter[\"status\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Update the availability of a timeslot"
        },
        {
          "name": "Set Notes",
          "value": "set: timeslot notes",
          "action": "Update the notes of a timeslot",
          "routing": {
            "request": {
              "url": "=/timeslots/{{$parameter.timeslotId}}",
              "body": {
                "note": "={{$parameter[\"note\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Update the notes of a timeslot"
        },
        {
          "name": "Set Guide or Resource",
          "value": "set: timeslot guide",
          "action": "Set a guide to a timeslot",
          "routing": {
            "request": {
              "url": "=/timeslots/guideAssign",
              "body": {
                "guideIds": "={{$parameter[\"guideOrResourceIds\"].map(e => $evaluateExpression(e)).map(s => s.replace(/^=/, \"\")) }}",
                "timeslotIds": "={{$parameter[\"timeslotIds\"].map(e => $evaluateExpression(e)).map(s => s.replace(/^=/, \"\")) }}",
                "assignOrUnassign": "={{$parameter[\"assignOrUnassign\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Set a guide to a timeslot"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "timeslot"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll: products",
      "options": [
        {
          "name": "Get All",
          "value": "getAll: products",
          "action": "Get all products",
          "routing": {
            "request": {
              "url": "/products",
              "method": "GET"
            }
          },
          "description": "Get all products"
        },
        {
          "name": "Get One",
          "value": "get: product",
          "action": "Get the data of a product",
          "routing": {
            "request": {
              "url": "=/products/{{$parameter.productId}}",
              "method": "GET"
            }
          },
          "description": "Get the data of a single product"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "product"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll: promoCode",
      "options": [
        {
          "name": "Get All",
          "value": "getAll: promoCode",
          "action": "Get all promo codes",
          "routing": {
            "request": {
              "url": "/promocode",
              "method": "GET"
            }
          },
          "description": "Get all promo codes"
        },
        {
          "name": "Create Promo Code",
          "value": "create: promoCode",
          "action": "Create a new promo code",
          "routing": {
            "request": {
              "url": "=/promocode/create",
              "body": {
                "code": "={{$parameter[\"code\"]}}",
                "name": "={{$parameter[\"name\"]}}",
                "amount": "={{$parameter[\"amount\"]}}",
                "currency": "={{$parameter[\"currency\"]}}",
                "discountType": "={{$parameter[\"discountType\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Create a new promo code"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "promoCode"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get: daily note",
      "options": [
        {
          "name": "Get Today's Daily Note",
          "value": "get: daily note",
          "action": "Get daily note for today",
          "routing": {
            "request": {
              "url": "/dailyNote/today",
              "method": "GET"
            }
          }
        },
        {
          "name": "Update Today's Daily Note",
          "value": "set: daily note",
          "action": "Update daily note for today",
          "routing": {
            "request": {
              "url": "/dailyNote/today",
              "body": {
                "note": "={{$parameter[\"note\"]}}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dailyNote"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll: reseller",
      "options": [
        {
          "name": "Get All",
          "value": "getAll: reseller",
          "action": "Get all resellers",
          "routing": {
            "request": {
              "url": "/reseller",
              "method": "GET"
            }
          },
          "description": "Get all resellers"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "reseller"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Current",
      "value": "get: current account",
      "action": "Get the current account information",
      "routing": {
        "request": {
          "url": "/accounts/current",
          "method": "GET"
        }
      },
      "description": "Get the current account information"
    },
    {
      "name": "Get All",
      "value": "getAll: users",
      "action": "Get all users",
      "routing": {
        "request": {
          "url": "/users",
          "method": "GET"
        }
      },
      "description": "Get all users"
    },
    {
      "name": "Get One",
      "value": "get: user",
      "action": "Get the data of a user",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter.userId}}",
          "method": "GET"
        }
      },
      "description": "Get the data of a single user"
    },
    {
      "name": "Get All for Time Range",
      "value": "getMany: bookings (dates)",
      "action": "Get bookings within time range",
      "routing": {
        "request": {
          "qs": {
            "end": "={{$parameter[\"endTime\"]}}",
            "email": "={{$parameter[\"email\"]}}",
            "start": "={{$parameter[\"startTime\"]}}",
            "searchBy": "={{$parameter[\"searchBy\"]}}",
            "productId": "={{$parameter[\"productId\"]}}",
            "searchString": "={{$parameter[\"searchString\"]}}",
            "includeGuests": "={{$parameter[\"includeGuests\"]}}"
          },
          "url": "/bookings",
          "method": "GET"
        }
      },
      "description": "Get all bookings for a given time range"
    },
    {
      "name": "Get All for Timeslot",
      "value": "getMany: bookings (timeslot)",
      "action": "Get bookings for a timeslot",
      "routing": {
        "request": {
          "qs": {
            "timeslotId": "={{$parameter[\"timeslotId\"]}}",
            "includeGuests": "={{$parameter[\"includeGuests\"]}}"
          },
          "url": "/bookings",
          "method": "GET"
        }
      },
      "description": "Get all bookings for a given timeslot"
    },
    {
      "name": "Get One",
      "value": "get: booking",
      "action": "Get one booking",
      "routing": {
        "request": {
          "qs": {
            "includeGuests": "={{$parameter[\"includeGuests\"]}}"
          },
          "url": "=/bookings/{{$parameter.bookingId}}",
          "method": "GET"
        }
      },
      "description": "Get the data of a single booking"
    },
    {
      "name": "Add Note",
      "value": "set: booking notes",
      "action": "Append a note to the booking notes",
      "routing": {
        "request": {
          "url": "=/bookings/{{$parameter.bookingId}}/notes",
          "body": {
            "note": "={{$parameter[\"note\"]}}",
            "appendOrOverwrite": "={{$parameter[\"appendOrOverwrite\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Append a note to the booking notes"
    },
    {
      "name": "Update Checkin Status",
      "value": "set: booking checkin",
      "action": "Update the checkin status of a booking",
      "routing": {
        "request": {
          "url": "=/bookings/{{$parameter.bookingId}}/checkin",
          "body": {
            "checkedIn": "={{$parameter[\"checkedIn\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Update the checkin status of a single booking"
    },
    {
      "name": "Cancel Booking",
      "value": "cancel: booking",
      "action": "Cancel a booking",
      "routing": {
        "request": {
          "url": "=/bookings/{{$parameter.bookingId}}/cancel",
          "method": "POST"
        }
      },
      "description": "Cancel a booking"
    },
    {
      "name": "Create Booking",
      "value": "create: booking",
      "action": "Create a new booking",
      "routing": {
        "request": {
          "url": "=/bookings/create",
          "body": {
            "end": "={{$parameter[\"end\"]}}",
            "date": "={{$parameter[\"date\"]}}",
            "email": "={{$parameter[\"email\"]}}",
            "notes": "={{$parameter[\"notes\"]}}",
            "phone": "={{$parameter[\"phone\"]}}",
            "start": "={{$parameter[\"start\"]}}",
            "country": "={{$parameter[\"country\"]}}",
            "product": "={{$parameter[\"product\"]}}",
            "tickets": "={{$parameter[\"tickets\"]}}",
            "optinSms": "={{$parameter[\"optinSms\"]}}",
            "externalId": "={{$parameter[\"externalId\"]}}",
            "postalCode": "={{$parameter[\"postalCode\"]}}",
            "customerName": "={{$parameter[\"customerName\"]}}",
            "optinMarketing": "={{$parameter[\"optinMarketing\"]}}",
            "shouldSendEmails": "={{$parameter[\"shouldSendEmails\"]}}",
            "markBookingAsPaid": "={{$parameter[\"markBookingAsPaid\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Create a new booking"
    },
    {
      "name": "Get All for Date",
      "value": "getMany: timeslots",
      "action": "Get all timeslots on a date",
      "routing": {
        "request": {
          "qs": {
            "date": "={{$parameter[\"date\"]}}",
            "productId": "={{$parameter[\"productId\"]}}",
            "filterBookings": "={{$parameter[\"filterBookings\"]}}"
          },
          "url": "/timeslots",
          "method": "GET"
        }
      },
      "description": "Get all timeslots for a date and product"
    },
    {
      "name": "Get One",
      "value": "get: timeslot",
      "action": "Get a timeslot",
      "routing": {
        "request": {
          "url": "=/timeslots/{{$parameter.timeslotId}}",
          "method": "GET"
        }
      },
      "description": "Get the data of a single timeslot"
    },
    {
      "name": "Set Availability Status",
      "value": "set: timeslot availability",
      "action": "Set timeslot availability",
      "routing": {
        "request": {
          "url": "=/timeslots/{{$parameter.timeslotId}}",
          "body": {
            "status": "={{$parameter[\"status\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Update the availability of a timeslot"
    },
    {
      "name": "Set Notes",
      "value": "set: timeslot notes",
      "action": "Update the notes of a timeslot",
      "routing": {
        "request": {
          "url": "=/timeslots/{{$parameter.timeslotId}}",
          "body": {
            "note": "={{$parameter[\"note\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Update the notes of a timeslot"
    },
    {
      "name": "Set Guide or Resource",
      "value": "set: timeslot guide",
      "action": "Set a guide to a timeslot",
      "routing": {
        "request": {
          "url": "=/timeslots/guideAssign",
          "body": {
            "guideIds": "={{$parameter[\"guideOrResourceIds\"].map(e => $evaluateExpression(e)).map(s => s.replace(/^=/, \"\")) }}",
            "timeslotIds": "={{$parameter[\"timeslotIds\"].map(e => $evaluateExpression(e)).map(s => s.replace(/^=/, \"\")) }}",
            "assignOrUnassign": "={{$parameter[\"assignOrUnassign\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Set a guide to a timeslot"
    },
    {
      "name": "Get All",
      "value": "getAll: products",
      "action": "Get all products",
      "routing": {
        "request": {
          "url": "/products",
          "method": "GET"
        }
      },
      "description": "Get all products"
    },
    {
      "name": "Get One",
      "value": "get: product",
      "action": "Get the data of a product",
      "routing": {
        "request": {
          "url": "=/products/{{$parameter.productId}}",
          "method": "GET"
        }
      },
      "description": "Get the data of a single product"
    },
    {
      "name": "Get All",
      "value": "getAll: promoCode",
      "action": "Get all promo codes",
      "routing": {
        "request": {
          "url": "/promocode",
          "method": "GET"
        }
      },
      "description": "Get all promo codes"
    },
    {
      "name": "Create Promo Code",
      "value": "create: promoCode",
      "action": "Create a new promo code",
      "routing": {
        "request": {
          "url": "=/promocode/create",
          "body": {
            "code": "={{$parameter[\"code\"]}}",
            "name": "={{$parameter[\"name\"]}}",
            "amount": "={{$parameter[\"amount\"]}}",
            "currency": "={{$parameter[\"currency\"]}}",
            "discountType": "={{$parameter[\"discountType\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Create a new promo code"
    },
    {
      "name": "Get Today's Daily Note",
      "value": "get: daily note",
      "action": "Get daily note for today",
      "routing": {
        "request": {
          "url": "/dailyNote/today",
          "method": "GET"
        }
      }
    },
    {
      "name": "Update Today's Daily Note",
      "value": "set: daily note",
      "action": "Update daily note for today",
      "routing": {
        "request": {
          "url": "/dailyNote/today",
          "body": {
            "note": "={{$parameter[\"note\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get All",
      "value": "getAll: reseller",
      "action": "Get all resellers",
      "routing": {
        "request": {
          "url": "/reseller",
          "method": "GET"
        }
      },
      "description": "Get all resellers"
    }
  ]

npm_readme:
  # n8n-nodes-peek-pro

  An n8n community node that allows interacting with the Peek Pro booking software.

  ## Installation

  In your n8n instance:

  1. Go to Settings → Community Nodes.
  2. Add the following package: `n8n-nodes-peek-pro`

  ## Credentials

  This node requires an API key.
  Peek Pro customers can obtain their API key from the Peek Pro n8n app.

  To configure it in n8n:

  1. Go to Credentials → New
  2. Select Peek Pro API
  3. Enter your API key
  4. Save

  ## Features

  This package supports:

  - Webhook-style triggers for new or updated bookings
  - Notification triggers for signed waivers
  - Pulling booking information
  - Accessing back-office calendar data
  - Retrieving guest information

  ## Usage

  1. Add a Peek Pro node to your workflow
  2. Select an operation such as booking retrieval or event subscription
  3. Choose or create your Peek Pro API credentials
  4. Configure the required fields
  5. Execute the node to verify everything is working

  ## Requirements

  - Available for all current Peek Pro customers
  - API key is available via the Peek Pro n8n app

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"An n8n community node that lets workflows interact with the Peek Pro booking platform — enabling triggers and data operations for bookings, waivers, calendar and guest information.","capabilities":["Webhook-style triggers for new bookings","Webhook-style triggers for updated bookings","Notification triggers for signed waivers","Retrieve booking information (booking retrieval)","Access back-office calendar data","Retrieve guest information","Subscribe to events (event subscription)"],"authentication":"API key required (configure Peek Pro API credentials in n8n)","commonUseCases":["Trigger workflows when a new booking is created","Trigger workflows when a booking is updated","Send notifications or follow-ups when a waiver is signed","Sync bookings or calendar events to external calendars/CRMs","Fetch guest details for communications or record enrichment"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-pdfco.PDFco Api
package_name: n8n-nodes-pdfco
display_name: PDF.co Api
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: artifex-dev
author_github_url: https://github.com/pdfdotco/
npm_package_name: n8n-nodes-pdfco
npm_version: 1.0.6
community_fetched_at: 2026-02-19T14:41:52.612Z
ai_summary_generated_at: 2026-02-19 16:43:57
description:
  Generate PDF, extract data from PDF, split PDF, merge PDF, convert PDF. Fill PDF forms, add text and images to pdf and much more with pdf.co!

properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "AI Invoice Parser",
      "options": [
        {
          "name": "AI Invoice Parser",
          "value": "AI Invoice Parser",
          "action": "AI Invoice Parser",
          "description": "Transform your invoice processing with our advanced AI. Enjoy quick, accurate data extraction that eliminates manual effort and saves you valuable time."
        },
        {
          "name": "URL/HTML to PDF",
          "value": "URL/HTML to PDF",
          "action": "URL/HTML to PDF",
          "description": "Convert HTML or URL to PDF with advanced options (e.g. layout, orientation). Supports HTML templates (Handlebar and Mustache)."
        },
        {
          "name": "Merge PDF",
          "value": "Merge PDF",
          "action": "Merge PDF",
          "description": "Combine multiple document formats into a single PDF. Supported formats include PDF, DOC, DOCX, XLS, JPG, PNG, and more."
        },
        {
          "name": "Split PDF",
          "value": "Split PDF",
          "action": "Split PDF",
          "description": "PDF Splitter that takes PDF file and splits into multiple PDF files using page index, page range, text search or barcode search"
        },
        {
          "name": "Convert To PDF",
          "value": "Convert to PDF",
          "action": "Convert to PDF",
          "description": "Convert a variety of formats such as URLs, HTML code, documents, spreadsheets, presentations, images, and more into PDF"
        },
        {
          "name": "Convert From PDF",
          "value": "Convert from PDF",
          "action": "Convert from PDF",
          "description": "Convert PDF pages to structured CSV, XML, JSON, Plain Text, Convert PDF to JPG, PDF to PNG, PDF to TIFF, and more"
        },
        {
          "name": "Add Text/Images to PDF",
          "value": "Add Text/Images to PDF",
          "action": "Add Text/Images to PDF",
          "description": "Add text, images, and annotations to PDF documents with precise positioning and styling options"
        },
        {
          "name": "Fill a PDF Form",
          "value": "Fill a PDF Form",
          "action": "Fill a PDF Form",
          "description": "Fill interactive PDF forms with text, checkboxes, and other form elements"
        },
        {
          "name": "PDF Information & Form Fields",
          "value": "PDF Information & Form Fields",
          "action": "PDF Information & Form Fields",
          "description": "Extract metadata and form field information from PDF documents"
        },
        {
          "name": "Compress PDF",
          "value": "Compress PDF",
          "action": "Compress PDF",
          "description": "Reduce PDF file size while maintaining quality"
        },
        {
          "name": "PDF Security",
          "value": "PDF Security",
          "action": "PDF Security",
          "description": "Add or remove password protection and security features from PDF documents"
        },
        {
          "name": "Rotate PDF Pages",
          "value": "Rotate PDF Pages",
          "action": "Rotate PDF Pages",
          "description": "Rotate PDF pages manually or automatically detect and fix rotation based on text analysis"
        },
        {
          "name": "Delete PDF Pages",
          "value": "Delete PDF Pages",
          "action": "Delete PDF Pages",
          "description": "Remove specific pages from a PDF document"
        },
        {
          "name": "Search in PDF",
          "value": "Search in PDF",
          "action": "Search in PDF",
          "description": "Search for specific text within PDF documents or scanned images"
        },
        {
          "name": "Search & Replace Text or Delete",
          "value": "Search & Replace Text or Delete",
          "description": "Search and delete text, replace text, or replace text with images in PDF documents"
        },
        {
          "name": "Barcode Reader",
          "value": "Barcode Reader",
          "description": "Decode barcodes from images or PDF documents swiftly and accurately"
        },
        {
          "name": "Barcode Generator",
          "value": "Barcode Generator",
          "description": "Generate various types of barcodes including QR codes, Code 128, Code 39, and more"
        },
        {
          "name": "Make PDF Searchable or Unsearchable",
          "value": "Make PDF Searchable or Unsearchable",
          "description": "Convert scanned PDF or image files into text-searchable PDFs using OCR or make them unsearchable/scanned"
        },
        {
          "name": "Upload File",
          "value": "Upload File to PDF.co",
          "action": "Upload File to PDF.co",
          "description": "Upload a file to PDF.co and get a URL"
        }
      ],
      "displayName": "Action",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "AI Invoice Parser",
      "value": "AI Invoice Parser",
      "action": "AI Invoice Parser",
      "description": "Transform your invoice processing with our advanced AI. Enjoy quick, accurate data extraction that eliminates manual effort and saves you valuable time."
    },
    {
      "name": "URL/HTML to PDF",
      "value": "URL/HTML to PDF",
      "action": "URL/HTML to PDF",
      "description": "Convert HTML or URL to PDF with advanced options (e.g. layout, orientation). Supports HTML templates (Handlebar and Mustache)."
    },
    {
      "name": "Merge PDF",
      "value": "Merge PDF",
      "action": "Merge PDF",
      "description": "Combine multiple document formats into a single PDF. Supported formats include PDF, DOC, DOCX, XLS, JPG, PNG, and more."
    },
    {
      "name": "Split PDF",
      "value": "Split PDF",
      "action": "Split PDF",
      "description": "PDF Splitter that takes PDF file and splits into multiple PDF files using page index, page range, text search or barcode search"
    },
    {
      "name": "Convert To PDF",
      "value": "Convert to PDF",
      "action": "Convert to PDF",
      "description": "Convert a variety of formats such as URLs, HTML code, documents, spreadsheets, presentations, images, and more into PDF"
    },
    {
      "name": "Convert From PDF",
      "value": "Convert from PDF",
      "action": "Convert from PDF",
      "description": "Convert PDF pages to structured CSV, XML, JSON, Plain Text, Convert PDF to JPG, PDF to PNG, PDF to TIFF, and more"
    },
    {
      "name": "Add Text/Images to PDF",
      "value": "Add Text/Images to PDF",
      "action": "Add Text/Images to PDF",
      "description": "Add text, images, and annotations to PDF documents with precise positioning and styling options"
    },
    {
      "name": "Fill a PDF Form",
      "value": "Fill a PDF Form",
      "action": "Fill a PDF Form",
      "description": "Fill interactive PDF forms with text, checkboxes, and other form elements"
    },
    {
      "name": "PDF Information & Form Fields",
      "value": "PDF Information & Form Fields",
      "action": "PDF Information & Form Fields",
      "description": "Extract metadata and form field information from PDF documents"
    },
    {
      "name": "Compress PDF",
      "value": "Compress PDF",
      "action": "Compress PDF",
      "description": "Reduce PDF file size while maintaining quality"
    },
    {
      "name": "PDF Security",
      "value": "PDF Security",
      "action": "PDF Security",
      "description": "Add or remove password protection and security features from PDF documents"
    },
    {
      "name": "Rotate PDF Pages",
      "value": "Rotate PDF Pages",
      "action": "Rotate PDF Pages",
      "description": "Rotate PDF pages manually or automatically detect and fix rotation based on text analysis"
    },
    {
      "name": "Delete PDF Pages",
      "value": "Delete PDF Pages",
      "action": "Delete PDF Pages",
      "description": "Remove specific pages from a PDF document"
    },
    {
      "name": "Search in PDF",
      "value": "Search in PDF",
      "action": "Search in PDF",
      "description": "Search for specific text within PDF documents or scanned images"
    },
    {
      "name": "Search & Replace Text or Delete",
      "value": "Search & Replace Text or Delete",
      "description": "Search and delete text, replace text, or replace text with images in PDF documents"
    },
    {
      "name": "Barcode Reader",
      "value": "Barcode Reader",
      "description": "Decode barcodes from images or PDF documents swiftly and accurately"
    },
    {
      "name": "Barcode Generator",
      "value": "Barcode Generator",
      "description": "Generate various types of barcodes including QR codes, Code 128, Code 39, and more"
    },
    {
      "name": "Make PDF Searchable or Unsearchable",
      "value": "Make PDF Searchable or Unsearchable",
      "description": "Convert scanned PDF or image files into text-searchable PDFs using OCR or make them unsearchable/scanned"
    },
    {
      "name": "Upload File",
      "value": "Upload File to PDF.co",
      "action": "Upload File to PDF.co",
      "description": "Upload a file to PDF.co and get a URL"
    }
  ]

npm_readme:
  # n8n-nodes-pdfco

  This is an n8n community node that enables you to integrate PDF.co's powerful PDF processing capabilities into your n8n workflows. PDF.co is a comprehensive PDF processing API that allows you to convert, merge, split, and manipulate PDF documents programmatically.

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

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

  ## Installation
  ### Community Nodes (Recommended)
  For users on n8n v0.187+, you can install this node directly from the n8n Community Nodes panel in the n8n editor:

  1. Open your n8n editor
  2. Go to Settings > Community Nodes
  3. Search for "n8n-nodes-pdfco"
  4. Click Install
  5. Reload the editor

  ### Manual Installation
  You can also install this node manually:

  1. Navigate to your n8n installation directory
  2. Run the following command:
  ```bash
  npm install n8n-nodes-pdfco
  ```
  3. Restart your n8n server


  ## Operations

  This node provides comprehensive PDF processing capabilities through PDF.co's API. Here are the available features:

  ### 1. AI-Powered Document Processing
  - AI Invoice Parser: Extract data from invoices using AI-powered parsing

  ### 2. URL/HTML to PDF Conversion
  - URL to PDF
  - HTML to PDF
  - HTML Template to PDF

  ### 3. PDF Merging
  - Merge multiple PDFs into one
  - Support for merging from different file formats (merge2)

  ### 4. PDF Splitting
  - Split by page number
  - Split by search text
  - Split by barcode

  ### 5. Document to PDF Conversion
  - Document to PDF (RTF, DOC, DOCX, TXT)
  - Spreadsheet to PDF (CSV, XLS, XLSX, TXT Spreadsheet)
  - Image to PDF (JPG, PNG, TIFF)
  - Email to PDF (MSG or EML)

  ### 6. PDF to Other Formats
  - PDF to CSV
  - PDF to HTML
  - PDF to Images (JPG, PNG, TIFF, WEBP)
  - PDF to JSON
  - PDF to Text
  - PDF to Excel (XLS/XLSX)
  - PDF to XML

  ### 7. PDF Modification
  - Add text annotations
  - Add images to PDF documents
  - Fill interactive PDF forms with data
  - Extract PDF metadata
  - Get form field information

  ### 8. PDF Optimization
  - Compress PDF files
  - Optimize PDF for web or storage
  - Remove password protection
  - Add password protection
  - Rotate pages in PDF documents
  - Remove specific pages from PDF

  ### 9. PDF Search and Text Operations
  - Search for text within PDF documents
  - Search and delete text
  - Search and replace text
  - Search and replace with image

  ### 10. Barcode Operations
  - Extract barcode data from PDFs
  - Generate barcodes in PDFs

  ### 11. PDF OCR and Searchability
  - Make scanned PDF searchable (OCR)
  - Make searchable PDF unsearchable

  ### 12. File Management
  - Standard file upload
  - Create file URL from input text/content
  - Upload from Base64 encoded data

  ## Credentials

  To use this node, you need a PDF.co API key. Here's how to get started:

  1. Sign up for a PDF.co account at [https://pdf.co](https://pdf.co)
  2. Navigate to your dashboard and obtain your API key
  3. In n8n, add your PDF.co credentials by providing your API key

  ## Usage

  This node allows you to automate PDF processing tasks in your n8n workflows. Here are some common use cases:

  - Process invoices using AI-powered parsing
  - Automatically convert HTML reports to PDF
  - Merge multiple PDF documents into a single file
  - Extract text from PDF documents for data processing
  - Add watermarks to PDF documents
  - Compress PDF files to reduce size
  - Secure PDFs with password protection
  - Convert various document formats to PDF
  - Extract data from PDFs to other formats
  - Manage and modify PDF documents programmatically

  For detailed examples and workflow templates, visit our [documentation](https://docs.pdf.co).

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [PDF.co API Documentation](https://docs.pdf.co)
  * [PDF.co Pricing](https://app.pdf.co/subscriptions)

  ## Version history

  ### 1.0.0
  - Initial release with comprehensive PDF processing capabilities
  - Full integration with PDF.co API services
  - Support for all core PDF operations including conversion, merging, and modification

  ### 1.0.1
  - Enhanced documentation with improved installation and usage instructions

  ### 1.0.2
  - Improved code stability and performance
  - Enhanced error handling and response management

  ### 1.0.3
  - Improved code stability and performance

  ### 1.0.4
  - AI Invoice Parser: Added support for custom field extraction, enabling more flexible and tailored data parsing. 
  - Added user-friendly descriptions for all PDF.co modules to help users better understand each feature's capabilities

  ### 1.0.5
  - Search PDF/Convert From PDF: Added support for the Inline option, enabling direct file output
  - Barcode Generator: Resolved an issue affecting barcode generation functionality.
  - Updated description links to point to new dedicated documentation

  ### 1.0.6
  - AI Invoice Parser: Clearer field descriptions and helpful usage hints

ai_documentation_summary:
  {"purpose":"Provide n8n workflows with programmatic access to PDF.co's PDF processing API to convert, generate, extract, merge, split, modify, OCR, and otherwise manipulate PDF and related document formats.","capabilities":["AI Invoice Parser (AI-powered data extraction from invoices, including custom field extraction)","URL to PDF conversion","HTML to PDF conversion and HTML template to PDF","Merge multiple PDFs (including merging from different file formats / merge2)","Split PDFs (by page number, by search text, by barcode)","Convert documents to PDF (RTF, DOC, DOCX, TXT)","Convert spreadsheets to PDF (CSV, XLS, XLSX, TXT Spreadsheet)","Convert images to PDF (JPG, PNG, TIFF)","Convert emails to PDF (MSG, EML)","Export PDF to other formats (CSV, HTML, Images JPG/PNG/TIFF/WEBP, JSON, Text, Excel XLS/XLSX, XML)"],"authentication":"API key required (PDF.co API key)","commonUseCases":["Process invoices with AI-powered parsing and extract structured invoice data","Automatically convert HTML reports or templates into PDF documents","Merge multiple documents into a single PDF (including mixed input formats)","Extract text, tables, or structured data from PDFs for downstream processing","Add watermarks, annotations, images, or form data into PDFs"],"limitations":["Requires a PDF.co account and API key; operations are subject to PDF.co pricing and API usage limits","Recommended installation via n8n Community Nodes panel requires n8n v0.187+ (manual install option available)","No OAuth or alternative auth methods documented (API key only)"],"relatedNodes":[]}


node_type: @gotohuman/n8n-nodes-gotohuman.gotoHuman
package_name: @gotohuman/n8n-nodes-gotohuman
display_name: gotoHuman
description: Request human reviews with gotoHuman
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: gotohuman-admin
author_github_url: https://github.com/gotohuman/n8n-nodes-gotohuman.git
npm_package_name: @gotohuman/n8n-nodes-gotohuman
npm_version: 0.1.1
community_fetched_at: 2026-02-19T14:41:52.613Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "reviewRequest",
      "options": [
        {
          "name": "Review Request",
          "value": "reviewRequest",
          "description": "Request for Human Review"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendAndWait",
      "options": [
        {
          "name": "Send and Wait for Response",
          "value": "sendAndWait",
          "action": "Send review request and wait for response",
          "description": "Request a human review and wait for the response"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "reviewRequest"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send and Wait for Response",
      "value": "sendAndWait",
      "action": "Send review request and wait for response",
      "description": "Request a human review and wait for the response"
    }
  ]

npm_readme:
  ![Banner Image](https://github.com/user-attachments/assets/4d31e977-018f-47cc-86f5-2caff3fae1d7)

  # n8n-nodes-gotohuman

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

  gotoHuman is a Human-in-the-Loop solution that lets you easily add highly customizable human approvals to your AI workflows.  
  Perfect for long-running workflows or workflows triggered in the background by external triggers like emails, tickets, or webhooks.

  Many built-in features:
  - Ready-to-use web UI
  	- Inbox
  	- Customizable review interface
  	- Controls to approve, reject, or edit AI outputs
  	- Allow retries with instructions
  	- Supports text, markdown, JSON, images, and more
  - Slack integration
  - Notifications
  - Response dataset to use as memory
  - And much more!

  ## Installation

  npm package name:
  ```
  @gotohuman/n8n-nodes-gotohuman
  ```

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

  ## Credentials

  Find your API key in the [gotoHuman dashboard](https://app.gotohuman.com).

  ## Usage

  Refer to our [documentation](https://docs.gotohuman.com/Integrations/n8n/) for detailed information on using this node.

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Send items from n8n workflows to gotoHuman for human-in-the-loop review, approvals, edits, and feedback, enabling human oversight in long-running or background AI workflows.","capabilities":["Create review tasks / send data to gotoHuman for human review","Receive approve, reject, or edited outputs back into workflows","Customize review interface (web UI inbox, review controls, instructions)","Allow retries with reviewer instructions","Support multiple data types (text, markdown, JSON, images, etc.)","Integrate with Slack for notifications/actions","Send notifications and alerts to reviewers","Store response dataset for use as memory or training"],"authentication":"API key required","commonUseCases":["Add an approval gate to AI-generated content before publishing","Route webhook/email/ticket-triggered items to human reviewers for validation","Collect human-edited outputs to improve models or populate response memory","Notify reviewers via Slack and resume workflow based on review outcome"],"limitations":[],"relatedNodes":["Webhook","Email","Ticketing (e.g., Zendesk)","Slack"]}


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

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

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

npm_readme:
  # n8n-nodes-awork

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

  ## Installation

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

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

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

  ## Authentication

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

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

  ## Available Operations

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

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

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

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

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

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

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

  ## Example Workflows

  Here are some common use cases for the awork nodes:

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

  ## Resources

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

  ## Support

  If you encounter any issues or have questions:

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

  ## Local Development

  For contributors and developers who want to test changes locally:

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

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

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

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

  ## License

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

ai_documentation_summary:
  {"purpose":"Provides an n8n integration to automate workflows with the awork API, enabling management of projects, tasks, companies, and users from n8n workflows.","capabilities":["Create Project","Get Project","List Projects (with filtering)","Change Project Status","Create Task","Get Task","List Tasks (with advanced filtering)","Change Task Status","Set Task Custom Fields","Add Task Comment"],"authentication":"API key required (use awork API key; add credentials in n8n by selecting 'awork API' and entering the key)","commonUseCases":["Automated Project Creation (e.g., create projects when deals are won in CRM)","Task Synchronization between awork and other tools","Automatic Company creation from form submissions","Update task or project statuses based on external triggers","Extract project and task data for custom reporting dashboards"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-autobound.autobound
package_name: n8n-nodes-autobound
display_name: Autobound
description: Generate AI-powered personalized sales content and retrieve insights using Autobound
category: Community
development_style: declarative
version: 3.1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: autobound
author_github_url: https://github.com/jasonhowie/
npm_package_name: n8n-nodes-autobound
npm_version: 2.3.3
community_fetched_at: 2026-02-19T14:41:52.615Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "content",
      "options": [
        {
          "name": "Content",
          "value": "content",
          "description": "Generate personalized sales content"
        },
        {
          "name": "Insight",
          "value": "insights",
          "description": "Retrieve insights for contacts and companies"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generateEmail",
      "options": [
        {
          "name": "Generate Email",
          "value": "generateEmail",
          "action": "Generate an email",
          "description": "Generate personalized email content"
        },
        {
          "name": "Generate LinkedIn Message",
          "value": "generateLinkedIn",
          "action": "Generate a linkedin message",
          "description": "Generate personalized LinkedIn message"
        },
        {
          "name": "Generate Cold Call Script",
          "value": "generateColdCall",
          "action": "Generate a cold call script",
          "description": "Generate a cold call script"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "content"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getInsights",
      "options": [
        {
          "name": "Get Insights",
          "value": "getInsights",
          "action": "Get insights",
          "description": "Retrieve insights for a contact or company"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "insights"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate Email",
      "value": "generateEmail",
      "action": "Generate an email",
      "description": "Generate personalized email content"
    },
    {
      "name": "Generate LinkedIn Message",
      "value": "generateLinkedIn",
      "action": "Generate a linkedin message",
      "description": "Generate personalized LinkedIn message"
    },
    {
      "name": "Generate Cold Call Script",
      "value": "generateColdCall",
      "action": "Generate a cold call script",
      "description": "Generate a cold call script"
    },
    {
      "name": "Get Insights",
      "value": "getInsights",
      "action": "Get insights",
      "description": "Retrieve insights for a contact or company"
    }
  ]

npm_readme:
  # n8n-nodes-autobound

  <img src="https://github.com/jasonhowie/n8n-nodes-autobound/raw/main/nodes/Autobound/autobound-logo.svg" alt="Autobound Logo" width="300" />

  An n8n community node for Autobound's AI-powered sales content generation and insights API.

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

  ## 🚀 Features

  - **AI-Powered Content Generation**: Create personalized emails, LinkedIn messages, and cold call scripts
  - **Insights Retrieval**: Access detailed prospect and company insights
  - **Multi-Language Support**: Generate content in 10+ languages
  - **Advanced Personalization**: Leverage 350+ insight types for hyper-targeted content
  - **Email Sequences**: Generate multi-step email campaigns
  - **Content Rewriting**: Improve existing content with AI

  ## 📦 Installation

  ### Prerequisites

  - An [Autobound](https://autobound.ai) API key

  ### Self-hosted n8n

  In a self-hosted n8n instance, you can install community nodes directly:

  1. Navigate to **Settings** → **Community Nodes**
  2. Click **Install**
  3. Enter `n8n-nodes-autobound` and click **Install**
  4. The node will be available immediately

  Alternatively, you can install via npm:

  ```bash
  # Install globally for global n8n installations
  npm install -g n8n-nodes-autobound

  # Or install locally in your n8n project
  npm install n8n-nodes-autobound
  ```

  After npm installation, restart your n8n instance to load the new node.

  ### n8n Cloud

  For n8n cloud users:

  1. Go to **Settings** → **Community Nodes**
  2. Click **Install**
  3. Enter `n8n-nodes-autobound` and click **Install**
  4. The node will be installed automatically

  > **Note**: Community nodes are available on n8n cloud for Pro and Enterprise plans.

  ## 🔧 Configuration

  1. **Add Credentials**:
     - In n8n, go to **Settings → Credentials**
     - Click **Add Credential**
     - Search for "Autobound API"
     - Enter your Autobound API key

  2. **Get Your API Key**:
     - Sign up at [Autobound](https://autobound.ai)
     - Navigate to Settings → API Keys
     - Generate a new API key

  ## 🎯 Usage

  ### Content Generation

  The Autobound node supports three types of content generation:

  #### 1. Email Generation

  ```json
  {
  	"resource": "content",
  	"operation": "generateEmail",
  	"contactEmail": "prospect@company.com",
  	"userEmail": "you@company.com",
  	"additionalContext": "Prospect showed interest in cybersecurity solutions",
  	"tone": "professional",
  	"writingStyle": "consultative",
  	"wordCount": 150
  }
  ```

  #### 2. LinkedIn Messages

  ```json
  {
  	"resource": "content",
  	"operation": "generateLinkedIn",
  	"contactEmail": "prospect@company.com",
  	"userEmail": "you@company.com",
  	"messageType": "connection_request",
  	"tone": "friendly",
  	"wordCount": 100
  }
  ```

  #### 3. Cold Call Scripts

  ```json
  {
  	"resource": "content",
  	"operation": "generateColdCall",
  	"contactEmail": "prospect@company.com",
  	"userEmail": "you@company.com",
  	"callDuration": "60_seconds",
  	"tone": "professional"
  }
  ```

  ### Insights Retrieval (v1.4)

  Get detailed insights about prospects and companies:

  ```json
  {
  	"resource": "insights",
  	"contactEmail": "prospect@company.com",
  	"insightSubtype": "companyMarketTrends, financialEarningsCall"
  }
  ```

  ## 🔥 Advanced Features

  ### Email Sequences

  Generate multi-step email campaigns:

  ```json
  {
  	"resource": "content",
  	"operation": "generateEmail",
  	"contactEmail": "prospect@company.com",
  	"userEmail": "you@company.com",
  	"sequenceNumberOfEmails": 3,
  	"writingStyle": "challenger_sale"
  }
  ```

  ### Content Rewriting

  Improve existing content:

  ```json
  {
  	"resource": "content",
  	"operation": "generateEmail",
  	"contactEmail": "prospect@company.com",
  	"userEmail": "you@company.com",
  	"contentToRewrite": "Your existing email content here..."
  }
  ```

  ### Multiple Variations

  Generate multiple content variations:

  ```json
  {
  	"resource": "content",
  	"operation": "generateEmail",
  	"contactEmail": "prospect@company.com",
  	"userEmail": "you@company.com",
  	"n": 3
  }
  ```

  ### Insight Control

  Fine-tune which insights to include or exclude:

  ```json
  {
  	"resource": "content",
  	"operation": "generateEmail",
  	"contactEmail": "prospect@company.com",
  	"userEmail": "you@company.com",
  	"enabledInsights": "companyMarketTrends, newsEvents, jobOpenings",
  	"disabledInsights": "personalInterests, schoolMascot"
  }
  ```

  ## 📋 Available Parameters

  ### Required Fields

  - `contactEmail` or `contactLinkedinUrl`: Prospect identifier
  - `userEmail` or `userLinkedinUrl`: Seller identifier (for content generation)

  ### Optional Fields

  - `additionalContext`: Custom context or intent signals
  - `tone`: Content tone (professional, casual, friendly, etc.)
  - `language`: Content language (10+ supported)
  - `wordCount`: Target word count
  - `n`: Number of variations to generate
  - `enabledInsights`: Comma-separated insight types to include
  - `disabledInsights`: Comma-separated insight types to exclude
  - `valueProposition`: Your company's value proposition
  - `salesAsset`: Sales collateral to reference

  ## 🎨 Writing Styles (Email)

  - **Challenger Sale**: Challenge prospect's thinking with insights
  - **Consultative**: Advisory approach with expert positioning
  - **CXO Pitch**: Direct, strategic communication for executives
  - **Data-Driven**: Focus on metrics and ROI
  - **Problem-Solver**: Identify and solve specific challenges
  - **Storyteller**: Use narratives and case studies
  - **Value-Based**: Emphasize business value and outcomes

  ## 🌍 Supported Languages

  - English, Spanish, French, German, Italian
  - Portuguese, Dutch, Russian, Chinese, Japanese

  ## 💡 Example Workflows

  ### Lead Qualification + Content Generation

  1. **HTTP Request** → Get prospect data from CRM
  2. **Autobound** → Generate personalized email
  3. **Send Email** → Deliver via your email service
  4. **CRM Update** → Log the outreach

  ### Multi-Channel Outreach

  1. **Autobound** → Generate email content
  2. **Autobound** → Generate LinkedIn message
  3. **Autobound** → Generate call script
  4. **Parallel execution** → Send via multiple channels

  ### Content A/B Testing

  1. **Autobound** → Generate 3 email variations (`n: 3`)
  2. **Function** → Randomly select version
  3. **Send Email** → Deliver selected variation
  4. **Track** → Monitor response rates

  ## 🔧 Troubleshooting

  ### Common Issues

  1. **Node not appearing**: Restart n8n after installation
  2. **Credential errors**: Verify API key in Autobound dashboard
  3. **Rate limits**: Implement delays between requests
  4. **Large responses**: Consider using pagination for insights

  ### Debug Mode

  Enable debug logging to see request/response details:

  ```json
  {
  	"debug": true
  }
  ```

  ## 📊 API Limits

  - **Rate Limits**: Respect Autobound's API rate limits
  - **Content Length**: Max 500 words for generated content
  - **Variations**: Max 5 variations per request
  - **Sequences**: Max 10 emails per sequence

  ## 🤝 Contributing

  This is a community node. Contributions are welcome!

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

  ## 📄 License

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

  ## 🔗 Links

  - [Autobound Website](https://autobound.ai)
  - [Autobound API Documentation](https://autobound-api.readme.io/)
  - [n8n Documentation](https://docs.n8n.io/)
  - [Community Nodes Guide](https://docs.n8n.io/integrations/community-nodes/)

  ## 📞 Support

  - **Issues**: [GitHub Issues](https://github.com/jasonhowie/n8n-nodes-autobound/issues)
  - **Autobound Help Center**: [https://help.autobound.ai/en](https://help.autobound.ai/en)
  - **n8n Community**: [n8n Community Forum](https://community.n8n.io/)

  ## 📋 Changelog

  ### v2.3.2 (Latest)

  - **Fixed**: Email sequences now properly parse and return individual emails as separate items
    - When generating an email sequence, each email is now returned as its own item with proper structure
    - Each item includes the email subject, body, and metadata (insights used, value props, etc.)
    - Items are numbered (1 of 3, 2 of 3, etc.) for easy identification

  ### v2.3.1

  - Fixed credential test configuration
  - Updated Insights API from v1.2 to v1.4
  - Updated installation documentation for cloud users

  ### v2.2.1

  - Fixed npm package logo display

  ### v2.0.0

  - Renamed package from `n8n-node-autobound` to `n8n-nodes-autobound`
  - Added Generate Insights API support (v1.2)
  - Multi-resource node structure
  - 350+ insight types support

  ---

  Made with ❤️ by the n8n community and [Autobound](https://autobound.ai)

ai_documentation_summary:
  {"purpose":"An n8n community node that connects to the Autobound API to generate AI-powered personalized sales content (emails, LinkedIn messages, cold-call scripts) and to retrieve prospect and company insights for use in automation workflows.","capabilities":["Generate personalized emails (single or multi-step sequences)","Generate LinkedIn messages (connection requests, follow-ups)","Generate cold call scripts with configurable duration and tone","Retrieve detailed prospect and company insights (insight subtypes)","Content rewriting / improve existing content","Generate multiple content variations (n variations)","Fine‑tune which insights to include or exclude (enabledInsights, disabledInsights)","Support for multiple writing styles (e.g., challenger_sale, consultative) and tones","Multi-language generation (10+ languages)","Advanced personalization using 350+ insight types"],"authentication":"API key required (Autobound API key credential configured in n8n)","commonUseCases":["Automated generation of personalized outreach emails for sales reps","Creating LinkedIn outreach messages and connection requests","Producing cold-call scripts tailored to a prospect","Generating multi-step email sequences for campaigns","Enriching workflows with prospect/company insights for lead qualification"],"limitations":["Requires an Autobound API key (API key auth only)","n8n Cloud: community nodes are available only on Pro and Enterprise plans","Node must be installed (community node) in self-hosted or cloud environment before use","Required identifiers: either contactEmail or contactLinkedinUrl, and either userEmail or userLinkedinUrl"],"relatedNodes":["HTTP Request"]}


node_type: n8n-nodes-scraping-dog.scrapingDog
package_name: n8n-nodes-scraping-dog
display_name: ScrapingDog
description: Get data from ScrapingDog API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: darshan_sd12
author_github_url: https://github.com/Darshan972/scrappingDog.git
npm_package_name: n8n-nodes-scraping-dog
npm_version: 0.4.2
community_fetched_at: 2026-02-19T14:41:52.615Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Scrape URL",
          "value": "scrapeUrl"
        },
        {
          "name": "Google Search",
          "value": "googleSearch"
        },
        {
          "name": "Google Images",
          "value": "googleImages"
        },
        {
          "name": "Google News",
          "value": "googleNews"
        },
        {
          "name": "Bing Search",
          "value": "bingSearch"
        },
        {
          "name": "Amazon Search",
          "value": "amazonSearch"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Scrape URL",
          "description": "Scrape a URL"
        }
      ],
      "routing": {
        "request": {
          "qs": {
            "url": "={{$parameter[\"url\"]}}",
            "wait": "={{$parameter[\"dynamic\"] === true && $parameter[\"wait\"] ? $parameter[\"wait\"] : undefined}}",
            "image": "={{$parameter[\"image\"] === true ? \"true\" : \"false\"}}",
            "api_key": "={{$credentials.apiKey}}",
            "country": "={{$parameter[\"premium\"] === true && $parameter[\"country\"] ? $parameter[\"country\"] : undefined}}",
            "dynamic": "={{$parameter[\"dynamic\"] === true ? \"true\" : \"false\"}}",
            "premium": "={{$parameter[\"premium\"] === true ? \"true\" : \"false\"}}",
            "ai_query": "={{$parameter[\"additionalFields\"] && $parameter[\"additionalFields\"][\"aiQuery\"] ? $parameter[\"additionalFields\"][\"aiQuery\"] : undefined}}",
            "markdown": "={{$parameter[\"markdown\"] === true ? \"true\" : \"false\"}}",
            "super_proxy": "={{$parameter[\"superProxy\"] === true ? \"true\" : \"false\"}}",
            "custom_headers": "={{$parameter[\"customHeaders\"] === true ? \"true\" : undefined}}",
            "session_number": "={{$parameter[\"sessionNumber\"] || undefined}}",
            "ai_extract_rules": "={{$parameter[\"additionalFields\"] && $parameter[\"additionalFields\"][\"aiExtractRules\"] ? $parameter[\"additionalFields\"][\"aiExtractRules\"] : undefined}}"
          },
          "url": "scrape",
          "method": "GET",
          "returnFullResponse": true
        },
        "returnFullResponse": true
      },
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "scrapeUrl"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Google search",
          "description": "Perform a Google Search"
        }
      ],
      "routing": {
        "request": {
          "qs": {
            "page": "={{$parameter[\"page\"]}}",
            "query": "={{$parameter[\"query\"]}}",
            "api_key": "={{$credentials.apiKey}}",
            "country": "={{$parameter[\"location\"]}}",
            "results": "={{$parameter[\"results\"]}}",
            "advance_search": "={{$parameter[\"advance\"]}}"
          },
          "url": "google",
          "method": "GET"
        }
      },
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "googleSearch"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search Google Images",
          "description": "Search Google Images"
        }
      ],
      "routing": {
        "request": {
          "qs": {
            "tbs": "={{$parameter[\"timePeriod\"] || undefined}}",
            "imgsz": "={{$parameter[\"imageSize\"] || undefined}}",
            "query": "={{$parameter[\"query\"]}}",
            "api_key": "={{$credentials.apiKey}}",
            "country": "={{$parameter[\"country\"] || undefined}}",
            "results": "={{$parameter[\"results\"]}}",
            "language": "={{$parameter[\"language\"] || undefined}}",
            "licenses": "={{$parameter[\"usageRights\"] || undefined}}",
            "image_type": "={{$parameter[\"imageType\"] || undefined}}",
            "image_color": "={{$parameter[\"imageColor\"] || undefined}}",
            "safe_search": "={{$parameter[\"safeSearch\"] || undefined}}"
          },
          "url": "google_images",
          "method": "GET"
        }
      },
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "googleImages"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search Google News",
          "description": "Search Google News"
        }
      ],
      "routing": {
        "request": {
          "qs": {
            "lr": "={{$parameter[\"additionalFields\"] && $parameter[\"additionalFields\"][\"lr\"] || undefined}}",
            "tbs": "={{$parameter[\"additionalFields\"] && $parameter[\"additionalFields\"][\"tbs\"] || undefined}}",
            "nfpr": "={{$parameter[\"additionalFields\"] && $parameter[\"additionalFields\"][\"nfpr\"] === true ? \"1\" : \"0\"}}",
            "page": "={{$parameter[\"additionalFields\"] && $parameter[\"additionalFields\"][\"page\"] || undefined}}",
            "safe": "={{$parameter[\"additionalFields\"] && $parameter[\"additionalFields\"][\"safe\"] || undefined}}",
            "uule": "={{$parameter[\"additionalFields\"] && $parameter[\"additionalFields\"][\"uule\"] || undefined}}",
            "query": "={{$parameter[\"query\"]}}",
            "domain": "={{$parameter[\"additionalFields\"] && $parameter[\"additionalFields\"][\"domain\"] || undefined}}",
            "api_key": "={{$credentials.apiKey}}",
            "country": "={{$parameter[\"additionalFields\"] && $parameter[\"additionalFields\"][\"country\"] === \"custom\" ? $parameter[\"additionalFields\"][\"customCountry\"] : $parameter[\"additionalFields\"][\"country\"] || undefined}}",
            "results": "={{$parameter[\"results\"]}}",
            "language": "={{$parameter[\"additionalFields\"] && $parameter[\"additionalFields\"][\"language\"] || undefined}}"
          },
          "url": "google_news",
          "method": "GET"
        }
      },
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "googleNews"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Bing search",
          "description": "Perform a Bing Search"
        }
      ],
      "routing": {
        "request": {
          "qs": {
            "page": "={{$parameter[\"page\"]}}",
            "query": "={{$parameter[\"query\"]}}",
            "api_key": "={{$credentials.apiKey}}",
            "country": "={{$parameter[\"country\"]}}",
            "filters": "={{$parameter[\"filters\"]}}",
            "results": "={{$parameter[\"results\"]}}"
          },
          "url": "bing/search",
          "method": "GET"
        }
      },
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "bingSearch"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Amazon search",
          "description": "Perform a Amazon Search"
        }
      ],
      "routing": {
        "request": {
          "qs": {
            "page": "={{$parameter[\"page\"]}}",
            "query": "={{$parameter[\"query\"]}}",
            "domain": "={{$parameter[\"domain\"]}}",
            "api_key": "={{$credentials.apiKey}}",
            "country": "={{$parameter[\"country\"]}}",
            "postal_code": "={{$parameter[\"postal_code\"]}}"
          },
          "url": "amazon/search",
          "method": "GET"
        }
      },
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "amazonSearch"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Scrape URL",
      "description": "Scrape a URL"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Google search",
      "description": "Perform a Google Search"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search Google Images",
      "description": "Search Google Images"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search Google News",
      "description": "Search Google News"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Bing search",
      "description": "Perform a Bing Search"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Amazon search",
      "description": "Perform a Amazon Search"
    }
  ]

npm_readme:
  # ScrapingDog Node for n8n

  This is a custom n8n node that integrates with the ScrapingDog API, providing web scraping and search capabilities. The node has been converted to use n8n's declarative style for better maintainability and reliability.

  ## Key Highlights

  - ✅ **6 Different APIs**: URL Scraping, Google Search, Google Images, Google News, Bing Search, and Amazon Search
  - ✅ **Declarative Style**: Modern n8n node implementation for better performance
  - ✅ **Comprehensive Filtering**: Advanced search options for all supported APIs
  - ✅ **Multi-language Support**: Support for multiple languages and regions
  - ✅ **Rate Limit Handling**: Built-in error handling for API limitations
  - ✅ **TypeScript**: Fully typed for better development experience

  ## Features

  - 🌐 **URL Scraping**: Extract content from any webpage
  - 🔍 **Google Search**: Perform Google searches with advanced options
  - 🖼️ **Google Images**: Search Google Images with advanced filtering options
  - 📰 **Google News**: Search Google News with time-based and geographic filtering
  - 🔎 **Bing Search**: Search Bing with customizable filters
  - 🛍️ **Amazon Search**: Search products on Amazon

  ## Directory Structure

  ```
  nodes/ScrapingDog/
  ├── ScrapingDog.node.ts      # Main node implementation (Declarative Style)
  ├── ScrapingDog.node.json    # Node metadata
  ├── scrappingDog.svg         # Node icon
  ├── types/
  │   └── index.ts             # TypeScript interfaces and types
  ├── resources/
  │   ├── index.ts             # Resource exports
  │   ├── scrapeUrl.ts         # Scrape URL resource
  │   ├── googleSearch.ts      # Google Search resource
  │   ├── googleImages.ts      # Google Images resource
  │   ├── googleNews.ts        # Google News resource
  │   ├── bingSearch.ts        # Bing Search resource
  │   ├── amazonSearch.ts      # Amazon Search resource
  │   └── staticResource.ts    # Static data (countries, etc.)
  ```

  ## Recent Updates

  ### Version 0.4.2 - LinkedIn API Removal & Documentation Updates
  - 🗑️ **REMOVED: LinkedIn Profile and Jobs APIs** - Removed LinkedIn Profile and LinkedIn Jobs functionality
  - **Simplified Interface**: Streamlined resource options for better focus on core web scraping features
  - **Reduced Dependencies**: Cleaner codebase with fewer external integrations
  - **Enhanced Documentation**: Added comprehensive parameter documentation for all remaining APIs
  - **Updated Examples**: Improved usage examples and API response documentation

  ### Version 0.4.1 - Google News API Integration
  - 📰 **NEW: Google News Search** - Added comprehensive Google News API support
  - **Time-Based Filtering**: Filter news by hour, day, week, month, or year
  - **Geographic Targeting**: Country-specific news results with custom domain support
  - **Language Support**: 18 different languages for news results
  - **Advanced Filtering**: Geographic location (UULE), language restrictions, safe search
  - **Auto-Correct Control**: Option to exclude auto-corrected query results

  ### Version 0.4.0 - Google Images API Integration
  - 🖼️ **NEW: Google Images Search** - Added comprehensive Google Images API support
  - **Advanced Image Filtering**: Size, type, color, usage rights, time period filters
  - **Multi-language Support**: 13 different languages for search results
  - **Safe Search Controls**: Strict, moderate, or off filtering options
  - **Geographic Targeting**: Country-specific image search results

  ### Previous Updates
  1. **Converted to Declarative Style**
     - Removed manual HTTP request handling
     - Added routing configuration for each resource
     - Improved error handling
     - Better parameter validation

  2. **Resource Improvements**
     - Added proper parameter descriptions
     - Fixed boolean parameter descriptions to start with "Whether"
     - Sorted option lists alphabetically
     - Improved type safety

  3. **API Integration**
     - Fixed API key handling in requests
     - Proper HTML content handling for scraping
     - Improved response processing

  ## Usage Examples

  ### 1. Scrape URL
  ```javascript
  {
      "resource": "scrapeUrl",
      "operation": "get",
      "parameters": {
          "url": "https://example.com",
          "dynamic": false,
          "markdown": false,
          "premium": false,
          "superProxy": false,
          "additionalFields": {
              "aiQuery": "Extract all product names",
              "aiExtractRules": "Find prices and descriptions"
          }
      }
  }
  ```

  ### 2. Google Search
  ```javascript
  {
      "resource": "googleSearch",
      "operation": "search",
      "parameters": {
          "query": "n8n automation",
          "advance": true,
          "page": "1",
          "location": "US",
          "results": "10"
      }
  }
  ```

  ### 3. Google Images
  ```javascript
  {
      "resource": "googleImages",
      "operation": "search",
      "parameters": {
          "query": "sunset landscape",
          "results": "20",
          "country": "US",
          "language": "en",
          "imgsz": "l",
          "imageType": "photo",
          "imageColor": "bw",
          "licenses": "f",
          "tbs": "qdr:d",
          "safe": "1"
      }
  }
  ```

  ### 4. Google News
  ```javascript
  {
      "resource": "googleNews",
      "operation": "search",
      "parameters": {
          "query": "artificial intelligence technology",
          "results": "50",
          "additionalFields": {
              "country": "us",
              "page": 0,
              "domain": "google.com",
              "language": "en",
              "tbs": "qdr:d",
              "safe": "active",
              "nfpr": false
          }
      }
  }
  ```

  ### 5. Bing Search
  ```javascript
  {
      "resource": "bingSearch",
      "operation": "search",
      "parameters": {
          "query": "web scraping tools",
          "page": 1,
          "country": "US",
          "results": 20,
          "filters": "ex1:'answerType:CalculatorPageType'"
      }
  }
  ```

  ### 6. Amazon Search
  ```javascript
  {
      "resource": "amazonSearch",
      "operation": "search",
      "parameters": {
          "query": "wireless headphones",
          "country": "US",
          "page": 1,
          "domain": "amazon.com",
          "postal_code": "10001"
      }
  }
  ```

  ## Resource Parameters

  ### Scrape URL
  - `url` (Required): Target webpage URL
  - `dynamic`: Whether to enable JavaScript rendering
  - `premium`: Whether to use premium proxy
  - `superProxy`: Whether to enable super proxy
  - `markdown`: Whether to get response in markdown format
  - `wait`: Wait time for dynamic rendering (ms)
  - `country`: Geolocation for the request
  - `aiQuery`: AI-powered data extraction query
  - `aiExtractRules`: Custom extraction rules

  ### Google Search
  - `query` (Required): Search keyword
  - `advance`: Whether to enable advanced features
  - `page`: Result page number (1-10)
  - `location`: Search location/country
  - `results`: Number of results (10-100)

  ### Google Images
  - `query` (Required): Search keyword for images
  - `results`: Number of results (10-100)
  - `country`: Country for geotargeting (US, UK, CA, etc.)
  - `language`: Search language (en, es, fr, de, etc.)
  - `imgsz`: Filter by size (any, large, medium, icon)
  - `imageType`: Filter by type (any, face, photo, clipart, lineart, animated)
  - `imageColor`: Filter by color (any, color, gray, trans, red, orange, yellow, green, teal, blue, purple, pink, white, black, brown)
  - `licenses`: Filter by usage rights (any, labeled-for-reuse, labeled-for-reuse-with-modification, etc.)
  - `tbs`: Filter by time (any, hour, day, week, month, year)
  - `safe`: Safe search level (strict, moderate, off)

  ### Google News
  - `query` (Required): Search keyword for news articles
  - `results`: Number of results (1-100)
  - `country`: Country for geotargeting (us, uk, in, ca, au, de, fr, jp, br, etc.)
  - `page`: Page number (0 for first page, 1 for second page, etc.)
  - `domain`: Google domain for local results (e.g., google.co.uk for UK)
  - `language`: Search language (en, es, fr, de, it, pt, ru, ja, zh-cn, ko, ar, hi, etc.)
  - `lr`: Language restriction in format lang_{language_code} (e.g., lang_en)
  - `uule`: Geographic location parameter for tailored results
  - `tbs`: Time-based search filter (qdr:h for past hour, qdr:d for past day, qdr:w for past week, qdr:m for past month, qdr:y for past year)
  - `safe`: Safe search filter (active/off)
  - `nfpr`: Exclude auto-corrected queries (true to exclude, false to include)

  ### Bing Search
  - `query` (Required): Search keyword
  - `page`: Page number for pagination
  - `country`: Country for geotargeting
  - `filters`: Custom search filters
  - `results`: Number of results to return

  ### Amazon Search
  - `query` (Required): Product search keyword
  - `country`: Country for Amazon marketplace (e.g., US, UK, CA, DE, FR, etc.)
  - `page`: Page number for pagination
  - `domain`: Amazon domain (e.g., amazon.com, amazon.co.uk)
  - `postal_code`: Postal code for location-based results

  ## API Response Examples

  ### Google Images Response
  ```json
  {
    "time_taken": 685.692823,
    "ads": [],
    "images_results": [
      {
        "title": "Beautiful Sunset Landscape",
        "image": "https://encrypted-tbn0.gstatic.com/images?q=tbn:...",
        "source": "example.com",
        "original": "https://example.com/images/sunset.jpg",
        "link": "https://example.com/sunset-photography",
        "original_height": 1080,
        "original_width": 1920,
        "original_size": "245KB",
        "know_more_link": "https://www.google.com/search/about-this-image?...",
        "is_product": false,
        "rank": 1
      }
    ]
  }
  ```

  ### Google News Response
  ```json
  {
    "time_taken": 542.123456,
    "ads": [],
    "news_results": [
      {
        "rank": 1,
        "title": "Breakthrough in Artificial Intelligence Technology",
        "link": "https://example-news.com/ai-breakthrough-2024",
        "source": "TechNews",
        "published_date": "3 hours ago",
        "snippet": "Researchers have developed a new AI system that can understand complex human emotions and respond appropriately, marking a significant milestone in artificial intelligence development.",
        "thumbnail": "https://encrypted-tbn0.gstatic.com/images?q=tbn:...",
        "rank_page": 1
      },
      {
        "rank": 2,
        "title": "AI Companies Announce Major Partnership",
        "link": "https://business-news.com/ai-partnership",
        "source": "Business Daily",
        "published_date": "5 hours ago",
        "snippet": "Leading technology companies have formed a strategic alliance to accelerate AI research and development, focusing on ethical AI implementation.",
        "thumbnail": "https://encrypted-tbn0.gstatic.com/images?q=tbn:...",
        "rank_page": 1
      }
    ]
  }
  ```

  ## Installation

  ### For n8n Users

  1. Install the package in your n8n instance:
  ```bash
  npm install n8n-nodes-scraping-dog
  ```

  2. Restart your n8n instance to load the new node.

  3. The ScrapingDog node will appear in the node palette under the "Transform" category.

  ### Credentials Setup

  1. Create a ScrapingDog API account at [ScrapingDog.com](https://scrapingdog.com)
  2. Get your API key from the dashboard
  3. In n8n, create new credentials of type "ScrapingDog API"
  4. Enter your API key in the credentials configuration

  ## Development

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

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

  3. Run with Docker:
  ```bash
  make rebuild-and-logs
  ```

  ## Testing

  The node includes proper error handling for:
  - Invalid API key
  - Rate limiting
  - Invalid parameters
  - Network errors
  - Blocked requests

  ## License

  MIT License - see LICENSE file for details 

ai_documentation_summary:
  {"purpose":"Integrates n8n with the ScrapingDog API to perform web scraping and search operations (URL scraping, Google/Bing/Amazon searches, Google Images and Google News) with advanced filtering and region/language support.","capabilities":["URL Scraping: extract content from arbitrary webpages (options: dynamic rendering, markdown output, premium, superProxy)","Google Search: perform web searches with paging, location, language, results count and advanced filters","Google Images: image searches with filters (size, type, color, usage rights, time period), safe search, country and language targeting","Google News: news search with time-based filtering (hour/day/week/month/year), geographic targeting, domain and language controls, safe search and nfpr option","Bing Search: searchable results with paging, country targeting, results limits and custom filters","Amazon Search: product search on Amazon","Advanced/global features: comprehensive filtering across APIs, multi-language and region support, built-in rate-limit/error handling","AI-assisted extraction: aiQuery and aiExtractRules parameters for extracting structured data from scraped content"],"authentication":"API key required (ScrapingDog API key)","commonUseCases":["Extract structured data (products, prices, descriptions) from webpages using URL scraping","Automated web searches and SERP scraping for monitoring or data collection (Google, Bing)","Image search workflows (bulk image discovery with filters and safe-search controls)","News monitoring and alerts using Google News with time and geographic filters","Amazon product discovery and price monitoring"],"limitations":["Requires a ScrapingDog account and API key; capabilities and limits depend on the provider plan (rate limits, premium features, superProxy availability)","LinkedIn Profile and Jobs APIs were removed (no LinkedIn scraping support)","Functionality is limited to the six supported ScrapingDog APIs (URL Scraping, Google Search, Google Images, Google News, Bing Search, Amazon Search) and the features those endpoints expose","Subject to ScrapingDog service-side rate limits and restrictions despite built-in handling"],"relatedNodes":[]}


node_type: n8n-nodes-emailvalidation.emailValidation
package_name: n8n-nodes-emailvalidation
display_name: EmailValidation
description: Validate email addresses via emailvalidation.io API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: everapi-user
author_github_url: https://github.com/everapihq/
npm_package_name: n8n-nodes-emailvalidation
npm_version: 0.1.2
community_fetched_at: 2026-02-19T14:41:52.616Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "validateEmail",
      "options": [
        {
          "name": "Validate Email",
          "value": "validateEmail",
          "action": "Validate email address",
          "routing": {
            "request": {
              "qs": {
                "email": "={{$parameter[\"email\"]}}",
                "catch_all": "={{$parameter[\"catchAll\"] ? 1 : undefined}}"
              },
              "url": "/info",
              "method": "GET"
            }
          },
          "description": "Retrieve information about an email address"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Validate Email",
      "value": "validateEmail",
      "action": "Validate email address",
      "routing": {
        "request": {
          "qs": {
            "email": "={{$parameter[\"email\"]}}",
            "catch_all": "={{$parameter[\"catchAll\"] ? 1 : undefined}}"
          },
          "url": "/info",
          "method": "GET"
        }
      },
      "description": "Retrieve information about an email address"
    }
  ]

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

  # n8n-nodes-emailvalidation

  This package provides the EmailValidation community node for [n8n](https://n8n.io). It integrates the [emailvalidation.io API](https://emailvalidation.io) to validate and verify email addresses.

  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.

  ## EmailValidation Node

  Validate and verify email addresses using the `emailvalidation.io` API.

  ### Credentials

  - Create credentials of type `EmailValidation API`.
  - Fields:
    - API Key (stored securely)
    - Base URL: defaults to `https://api.emailvalidation.io/v1`

  Authentication is sent via query parameter `apikey` (the API also supports header-based auth). See docs: [`https://emailvalidation.io/docs/`](https://emailvalidation.io/docs/).

  ### Operation

  - Validate Email
    - Email (required) — the email address to validate
    - Catch All (optional) — when enabled, sets `catch_all=1` to perform catch-all detection (paid plans)

  Per endpoint docs: [`https://emailvalidation.io/docs/info`](https://emailvalidation.io/docs/info)

  The node performs a `GET /v1/info` with `email`, optional `catch_all`, and `apikey` query parameters. Example request:

  ```bash
  curl -G "https://api.emailvalidation.io/v1/info" \
    --data-urlencode "email=support@emailvalidation.io" \
    --data-urlencode "apikey=YOUR-API-KEY"
  ```

  ### Example Output

  ```json
  {
    "email": "[email protected]",
    "user": "support",
    "tag": "",
    "domain": "emailvalidation.io",
    "smtp_check": true,
    "mx_found": true,
    "did_you_mean": "",
    "role": true,
    "disposable": false,
    "score": 0.64,
    "state": "deliverable",
    "reason": "valid_mailbox",
    "free": false,
    "format_valid": true,
    "catch_all": null
  }
  ```

  See documentation for field meanings and state/reason descriptions: [`https://emailvalidation.io/docs/info`](https://emailvalidation.io/docs/info)

  ## License

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

ai_documentation_summary:
  {"purpose":"Validate and verify individual email addresses using the emailvalidation.io API, returning deliverability and metadata for use in n8n workflows.","capabilities":["Validate a single email address via GET /v1/info","Optional catch-all detection (enabled via catch_all=1, requires paid plan)","Return detailed validation fields (email, user, domain, smtp_check, mx_found, role, disposable, score, state, reason, format_valid, did_you_mean, catch_all, etc.)","Configure credentials with API Key and override Base URL (defaults to https://api.emailvalidation.io/v1)"],"authentication":"API key required (sent as apikey query parameter by the node; the API also supports header-based auth).","commonUseCases":["Validate email addresses during user signup to prevent invalid or disposable addresses","Clean and enrich contact lists with deliverability metadata and risk scores","Filter out role-based or disposable emails before sending marketing campaigns","Perform catch-all detection for addresses (when on a paid plan) as part of verification workflows"],"limitations":["Node calls only the /v1/info endpoint (no built-in batch validation endpoint)","Catch-all detection requires a paid plan from emailvalidation.io","By default the node sends the API key as a query parameter (less secure than header-based auth) — header auth is supported by the API but not the default here","No built-in rate-limit handling, retry/backoff, or bulk-processing features documented"],"relatedNodes":[]}


node_type: n8n-nodes-avatartalk.avatarTalk
package_name: n8n-nodes-avatartalk
display_name: AvatarTalk
description: Generate AI avatar videos using AvatarTalk API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: avatartalk
author_github_url: https://github.com/avatartalk-ai/
npm_package_name: n8n-nodes-avatartalk
npm_version: 0.1.2
community_fetched_at: 2026-02-19T14:41:52.617Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "hidden",
      "default": "video",
      "options": [
        {
          "name": "Video",
          "value": "video"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "standard",
      "options": [
        {
          "name": "Standard Inference",
          "value": "standard",
          "action": "Generate video with standard inference",
          "description": "Generate avatar video immediately and return complete metadata"
        },
        {
          "name": "Streaming Inference",
          "value": "streaming",
          "action": "Generate video with streaming inference",
          "description": "Stream video chunks as they are generated in real-time"
        },
        {
          "name": "Delayed Inference",
          "value": "delayed",
          "action": "Generate video with delayed inference",
          "description": "Defer video processing until the URL is accessed"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Standard Inference",
      "value": "standard",
      "action": "Generate video with standard inference",
      "description": "Generate avatar video immediately and return complete metadata"
    },
    {
      "name": "Streaming Inference",
      "value": "streaming",
      "action": "Generate video with streaming inference",
      "description": "Stream video chunks as they are generated in real-time"
    },
    {
      "name": "Delayed Inference",
      "value": "delayed",
      "action": "Generate video with delayed inference",
      "description": "Defer video processing until the URL is accessed"
    }
  ]

npm_readme:
  # n8n-nodes-avatartalk

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

  AvatarTalk is an AI-powered service that generates realistic avatar videos with text-to-speech capabilities, supporting multiple languages, avatars, and emotions.

  [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

  The AvatarTalk node supports three inference modes:

  - **Standard Inference** - Generate avatar video immediately and return complete metadata with the video URL
  - **Streaming Inference** - Stream video in real-time and return it as binary data in n8n
  - **Delayed Inference** - Defer video processing until the URL is accessed (lazy generation)

  ## Credentials

  To use this node, you need an AvatarTalk API key:

  1. Go to [https://avatartalk.ai](https://avatartalk.ai)
  2. Create an account or sign in
  3. Navigate to your dashboard
  4. Copy your API Key
  5. In n8n, create new AvatarTalk API credentials and paste your API key

  ## Compatibility

  This node is compatible with n8n version 1.0.0 and above. It has been tested with the latest n8n versions.

  ## Usage

  ### Choosing the Right Operation Mode

  The AvatarTalk node offers three different operation modes to suit different use cases:

  #### Standard Inference
  Use this mode when you need the video URL and metadata immediately. The API processes the video synchronously and returns a complete response with:
  - Video URL
  - Duration
  - File size
  - Other metadata

  Best for: Simple workflows where you need immediate results and don't need real-time streaming.

  #### Streaming Inference
  Use this mode for real-time video generation. The video is generated and streamed as it becomes available, and returned as binary data in n8n.

  The video file is stored in n8n's binary data format, making it available for:
  - Direct downloading from n8n
  - Further processing in subsequent workflow nodes
  - Storage to cloud services (S3, Google Drive, etc.)
  - Sending via email or webhooks

  Best for:
  - Workflows where you need to process or store the video file directly
  - Integration with other n8n nodes that work with binary data
  - Scenarios where you want the video content within your workflow rather than just a URL

  #### Delayed Inference
  Use this mode when you want to defer the actual video processing. The API returns a URL immediately, but the video is only generated when someone accesses that URL for the first time.

  Best for:
  - Generating many videos where not all will be viewed
  - Reducing API costs by only processing videos that are actually needed
  - Batch operations where immediate generation isn't required

  ### Avatar and Emotion Options

  The node supports 14 different avatar characters:
  - African Man, African Woman
  - Arab Man, Arab Woman
  - Colombian Woman
  - European Man, European Woman
  - Iranian Man
  - Japanese Man, Japanese Woman
  - Mexican Man, Mexican Woman
  - Old European Woman, Old Japanese Man

  Each avatar can express three emotions:
  - Happy
  - Neutral
  - Serious

  ### Language Support

  Specify a language code for speech synthesis. Supported languages include:
  - `en` - English
  - `es` - Spanish
  - `fr` - French
  - `de` - German
  - `ja` - Japanese
  - And many more

  Refer to the [AvatarTalk API documentation](https://github.com/avatartalk-ai/avatartalk-examples/blob/main/API.md) for the complete list of supported languages.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [AvatarTalk API documentation](https://github.com/avatartalk-ai/avatartalk-examples/blob/main/API.md)
  - [AvatarTalk website](https://avatartalk.ai)

ai_documentation_summary:
  {"purpose":"Generate realistic AI avatar videos with text-to-speech from n8n workflows using the AvatarTalk API. Supports immediate, streaming, and deferred (lazy) generation modes for flexible integration.","capabilities":["Standard Inference — synchronous generation returning video URL and full metadata (duration, file size, etc.)","Streaming Inference — real-time video generation streamed into n8n as binary data","Delayed Inference — returns a URL immediately; video is generated on first access (lazy generation)","Text-to-speech with multi-language support (specify language code, e.g., en, es, fr, de, ja)","Avatar selection from a fixed set of 14 characters","Emotion selection (Happy, Neutral, Serious)","Outputs compatible with n8n binary data for downstream processing/storage","Integrates with cloud storage and delivery workflows (e.g., store to S3/Google Drive, send via email/webhooks)"],"authentication":"API key required — create an AvatarTalk account, copy API key from dashboard, and add it as AvatarTalk API credentials in n8n","commonUseCases":["Generate and return a video URL and metadata for immediate use in a workflow (Standard Inference)","Stream and process/store the generated video file directly inside a workflow (Streaming Inference)","Create many videos but only generate those that are actually viewed to save costs (Delayed Inference)","Produce multilingual avatar TTS videos for marketing, customer communications, or tutorials","Automate storing or distributing generated videos via cloud storage, email, or webhooks"],"limitations":["Fixed set of 14 avatar characters — cannot add custom avatars via this node","Only three emotion options supported (Happy, Neutral, Serious)","Delayed inference causes the video to be generated only on first URL access, which introduces first-access latency","Requires an AvatarTalk account and API key (no OAuth2 or anonymous access)","Language support list in README is partial; consult AvatarTalk API docs for the full supported-language list"],"relatedNodes":["Binary-capable nodes (for handling video binary data)","Cloud storage nodes (e.g., AWS S3)","Google Drive node","Email nodes (to send generated videos)","Webhook node (for delivering video URLs or receiving callbacks)"]}


node_type: n8n-nodes-aimlapi.aimlApi
package_name: n8n-nodes-aimlapi
display_name: AI/ML API
description: Choose from 300+ AI models, from Gemini and ChatGPT to DeepSeek and Llama.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: aiml_api
author_github_url: https://github.com/D1m7asis/
npm_package_name: n8n-nodes-aimlapi
npm_version: 2.0.3
community_fetched_at: 2026-02-19T14:41:52.617Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "chatCompletion",
      "options": [
        {
          "name": "Chat Completion",
          "value": "chatCompletion",
          "action": "Generate text using chat completion models",
          "description": "Generate text using chat completion models"
        },
        {
          "name": "Image Generation",
          "value": "imageGeneration",
          "action": "Generate images from text prompts",
          "description": "Generate images from text prompts"
        },
        {
          "name": "Audio Generation",
          "value": "audioGeneration",
          "action": "Generate music or sound effects from text prompts",
          "description": "Generate music or sound effects from text prompts"
        },
        {
          "name": "Video Generation",
          "value": "videoGeneration",
          "action": "Generate videos from prompts or reference media",
          "description": "Generate videos from prompts or reference media"
        },
        {
          "name": "Speech Synthesis",
          "value": "speechSynthesis",
          "action": "Convert text into speech audio",
          "description": "Convert text into speech audio"
        },
        {
          "name": "Speech Transcription",
          "value": "speechTranscription",
          "action": "Transcribe audio files into text",
          "description": "Transcribe audio files into text"
        },
        {
          "name": "Embedding Generation",
          "value": "embeddingGeneration",
          "action": "Create vector embeddings from text",
          "description": "Create vector embeddings from text"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Chat Completion",
      "value": "chatCompletion",
      "action": "Generate text using chat completion models",
      "description": "Generate text using chat completion models"
    },
    {
      "name": "Image Generation",
      "value": "imageGeneration",
      "action": "Generate images from text prompts",
      "description": "Generate images from text prompts"
    },
    {
      "name": "Audio Generation",
      "value": "audioGeneration",
      "action": "Generate music or sound effects from text prompts",
      "description": "Generate music or sound effects from text prompts"
    },
    {
      "name": "Video Generation",
      "value": "videoGeneration",
      "action": "Generate videos from prompts or reference media",
      "description": "Generate videos from prompts or reference media"
    },
    {
      "name": "Speech Synthesis",
      "value": "speechSynthesis",
      "action": "Convert text into speech audio",
      "description": "Convert text into speech audio"
    },
    {
      "name": "Speech Transcription",
      "value": "speechTranscription",
      "action": "Transcribe audio files into text",
      "description": "Transcribe audio files into text"
    },
    {
      "name": "Embedding Generation",
      "value": "embeddingGeneration",
      "action": "Create vector embeddings from text",
      "description": "Create vector embeddings from text"
    }
  ]

npm_readme:
  # n8n-nodes-aimlapi

  This is an n8n community node for [AI/ML API](https://aimlapi.com/?utm_source=n8n&utm_medium=github&utm_campaign=integration) integration.  
  It allows you to interact with large language models (LLMs) and multimodal models directly from your n8n workflows.

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

  [AI/ML API](https://aimlapi.com/app/?utm_source=n8n&utm_medium=github&utm_campaign=integration) provides access to **300+ AI models**, including Deepseek, Gemini, ChatGPT, and many others — all with **enterprise-grade rate limits and uptimes**.

  ---

  ## Features

  - Chat with any LLM available on AI/ML API
  - Generate AI images with supported diffusion and vision models
  - Create AI music and sound effects with audio-generation models
  - Render text-to-video or image-to-video clips
  - Convert text to speech and speech to text via TTS/STT models
  - Produce text embeddings for search and retrieval workflows
  - Dynamic model selection per modality with shared authentication
  - Parameter tuning (temperature, max tokens, top-p, penalties, etc.)
  - Multiple output formats: raw payloads or curated fields for each modality
  - Credential-based authentication

  ---

  ## Installation

  ### Community Node (Recommended)

  1. Open your n8n instance
  2. Go to **Settings → Community Nodes**
  3. Click **Install**
  4. Enter `n8n-nodes-aimlapi`
  5. Accept the prompt to install the node
  6. After installation, the node will appear under **AI/ML API** in the node palette

  ### Manual Installation (Advanced)

  ```bash
  npm install n8n-nodes-aimlapi
  ```

  Then restart your `n8n` instance.

  ---

  ## Configuration

  ### Credentials

  To use this node, you must configure **AI/ML API** credentials:

  1. Sign up at [https://aimlapi.com/](https://aimlapi.com/?utm_source=n8n&utm_medium=github&utm_campaign=integration)
  2. Go to your [dashboard](https://aimlapi.com/app/?utm_source=n8n&utm_medium=github&utm_campaign=integration) and generate an API key
  3. In n8n, create new credentials of type **AI/ML API**
  4. Paste your API key
  5. Save and use in the node

  📚 You can also refer to the [provider documentation](https://docs.aimlapi.com/?utm_source=n8n&utm_medium=github&utm_campaign=integration) for detailed API specs.

  ### Node Parameters

  - **Operation** – Select the modality (`Chat Completion`, `Image Generation`, `Audio Generation`, `Video Generation`, `Speech Synthesis`, `Speech Transcription`, or `Embedding Generation`).
  - **Model** – Pick a model from the filtered list (dependent on operation) or provide an ID via expression.

  #### Chat Completion

  - **Use Message List** – Switch between a single prompt and a structured list of chat messages.
  - **Prompt/Messages** – Provide either one prompt or multiple messages. Each structured message selects a **Role** (`assistant`, `system`, or `user`) from the dropdown, or choose **Custom…** to enter another role such as `tool`, plus the text **Content**. When using the `tool` role, fill in the required **Tool Call ID** with the identifier returned alongside the assistant tool invocation so the API can pair the response correctly.
  - **Extract From Response** – Decide what to return (`Text Only`, `Assistant Messages`, `Choices Array`, or `Full Raw JSON`).
  - **Options** – Fine-tune completions with **Temperature**, **Top P**, **Max Tokens**, **Presence Penalty**, **Frequency Penalty**, and **Response Format**.

  #### Image Generation

  - **Prompt** – Describe the image you want the model to create.
  - **Extract From Response** – Return the first/all URLs, first/all base64 images, or the raw payload.
  - **Image Options** – Configure **Background**, **Image Count**, **Negative Prompt**, **Quality**, **Response Format**, **Size**, and **Style**.

  #### Audio Generation

  - **Prompt** – Describe the audio clip you want to generate.
  - **Extract From Response** – Return audio URLs, base64 blobs, or the raw payload.
  - **Audio Options** – Adjust **Audio Format**, **Duration**, **Mode**, **Negative Prompt**, **Prompt Strength**, **Seed**, **Reference Audio URL**, **Instrument**, and **CFG Scale**.

  #### Video Generation

  - **Prompt** – Describe the scene for the generated video.
  - **Extract From Response** – Return the first/all video URLs or the raw payload.
  - **Video Options** – Control **Aspect Ratio/Ratio**, **Duration**, **Kling Types & Image Lists**, **Google Veo Tail Images & Prompt Enhancement**, **Alibaba Resolution/Watermark/Prompt Expansion**, **MiniMax Prompt Optimizer & First Frame**, **Runway Last Image**, plus legacy toggles like **Negative Prompt**, **Prompt Strength**, **Reference Media**, **Background Audio**, **CFG Scale**, and **Seed**.

  #### Speech Synthesis

  - **Text** – Content that should be spoken aloud.
  - **Extract From Response** – Return an audio URL, base64 payload, or the raw response.
  - **Speech Options** – Configure **Voice**, **Audio Format**, **Sample Rate**, **Speaking Rate**, and **Style**.

  #### Speech Transcription

  - **Binary Property** – Name of the binary property that contains the audio file.
  - **Extract From Response** – Return transcript text, segment breakdowns, or the raw payload.
  - **Transcription Options** – Provide **Language**, **Prompt**, **Response Format**, and **Temperature**.

  #### Embedding Generation

  - **Input Text** – Text that should be converted into an embedding vector.
  - **Extract From Response** – Return the first vector, all vectors, or the raw payload.
  - **Embedding Options** – Configure **Encoding Format** and **User Identifier** metadata.

  ---

  ## Usage Example

  1. Add a **Manual Trigger**
  2. Add the **AI/ML API** node
  3. Configure credentials
  4. Set a model (e.g. `gpt-3.5-turbo`)
  5. Enter prompt: `What is the capital of France?`
  6. Select `Extract: Text Only`
  7. Execute — you’ll get `Paris`

  ---

  ## Troubleshooting

  - If the node doesn't show up, try restarting your instance
  - If the icon or name doesn't render, make sure you ran `npm run build && gulp build:icons`
  - To debug model list: ensure credentials and `/models` endpoint return valid JSON

  ---

  ## Support

  Please open an issue or pull request in the [GitHub repository](https://github.com/D1m7asis/n8n-nodes-aimlapi) if you encounter problems.

ai_documentation_summary:
  {"purpose":"An n8n community node that connects workflows to the AI/ML API, letting you run chat completions and multimodal model tasks (images, audio, video, TTS/STT, embeddings) from n8n with per-request model selection and tuning.","capabilities":["Chat Completion (single prompt or structured message list, supports roles and tool call IDs)","Image Generation (diffusion/vision models; options for size, style, background, negative prompts, count)","Audio Generation (music/sound effects with format, duration, mode, seed, reference audio, instrument, CFG scale)","Video Generation (text-to-video and image-to-video with aspect ratio, duration, reference media, background audio and various provider-specific options)","Speech Synthesis (text-to-speech with voice, format, sample rate, speaking rate, style)","Speech Transcription (speech-to-text from binary file property with language, prompt, temperature, response format options)","Embedding Generation (produce embedding vectors with encoding format and user identifier metadata)","Parameter tuning for models (temperature, top-p, max tokens, presence/frequency penalties, etc.)","Dynamic model selection per modality and multiple output extraction modes (text only, URLs, base64, full raw JSON, curated fields)"],"authentication":"API key required (credential-based authentication via AI/ML API credentials in n8n)","commonUseCases":["Conversational agents and chatbots using different LLMs","Generating images for content, marketing, or creative workflows","Producing audio/music or sound effects programmatically","Creating short generated videos or converting images to video clips","Text-to-speech for voice notifications and speech-to-text for transcribing audio"],"limitations":[],"relatedNodes":["Manual Trigger"]}


node_type: n8n-nodes-mallabe-barcodes.mallabeBarcodes
package_name: n8n-nodes-mallabe-barcodes
display_name: Mallabe Barcodes
category: Barcodes
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: dinbrca
author_github_url: https://github.com/mallabe/
npm_package_name: n8n-nodes-mallabe-barcodes
npm_version: 0.1.3
community_fetched_at: 2026-02-19T14:41:52.618Z
ai_summary_generated_at: 2026-02-19 16:43:57
description:
  Mallabe Barcodes is a utility tool that allows the generation & scanning of different barcodes, such as the popular QR code, UPC, EAN & others.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "barcode",
      "options": [
        {
          "name": "Barcode",
          "value": "barcode"
        },
        {
          "name": "Custom API Call",
          "value": "__CUSTOM_API_CALL__"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generateQrCode",
      "options": [
        {
          "name": "Generate Barcode",
          "value": "generateBarcode",
          "action": "Generate barcode",
          "description": "Generate a barcode of different types such as UPC, EAN, and more"
        },
        {
          "name": "Generate QR Code",
          "value": "generateQrCode",
          "action": "Generate a qr code",
          "description": "Generate a QR code"
        },
        {
          "name": "Scan Barcode",
          "value": "scanBarcode",
          "action": "Scan barcode",
          "description": "Scan a QR code or barcode"
        },
        {
          "name": "Custom API Call",
          "value": "__CUSTOM_API_CALL__"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "barcode"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate Barcode",
      "value": "generateBarcode",
      "action": "Generate barcode",
      "description": "Generate a barcode of different types such as UPC, EAN, and more"
    },
    {
      "name": "Generate QR Code",
      "value": "generateQrCode",
      "action": "Generate a qr code",
      "description": "Generate a QR code"
    },
    {
      "name": "Scan Barcode",
      "value": "scanBarcode",
      "action": "Scan barcode",
      "description": "Scan a QR code or barcode"
    },
    {
      "name": "Custom API Call",
      "value": "__CUSTOM_API_CALL__"
    }
  ]

npm_readme:
  ![Mallabe Logo](/docs/mallabe-logo.png)

  # n8n-nodes-mallabe-barcodes

  This is an n8n community node for [Mallabe Barcodes](https://www.mallabe.com/).

  It allows you to manipulate images using different operations.

  For more information, refer to the [Mallabe website](https://www.mallabe.com/).

  Current supported operations:
  - Generate Barcode
  - Generate QR Code
  - Scan Barcode / QR Code

  ## License

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

  ## Development
  ### Running Locally (Summary)
  1. Install n8n globally using https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally/
  2. Run `nvm use` to use the correct node version in the node folder.
  3. Run `pnpm install` in the node folder.
  4. Run `pnpm link --global` to register as package.
  5. Run `pnpm run build` whenever you make changes to the node.
  6. Run `cd ~/.n8n`
  7. Stop n8n if it was already running.
  8. Run `pnpm link --global n8n-nodes-mallabe-barcodes` in n8n `custom` folder.
  9. Run `n8n start`

  Note: if you like to watch the development instead of rebuilding every time, use `npm run dev`.

ai_documentation_summary:
  {"purpose":"Utility n8n node to generate and scan barcodes and QR codes (supports QR, UPC, EAN and other barcode types), and perform related image manipulations.","capabilities":["Generate Barcode (supports various barcode formats such as UPC, EAN, etc.)","Generate QR Code","Scan Barcode / QR Code from images (extract encoded data)","Image manipulation related to barcode/QR operations"],"authentication":"None specified in README","commonUseCases":["Generate QR codes for URLs, contact info, or other payloads within automation workflows","Create product barcodes (UPC/EAN) for labeling and inventory systems","Scan uploaded images to extract barcode or QR code data for downstream processing","Embed barcode/QR generation and scanning into n8n workflows for automation tasks"],"limitations":[],"relatedNodes":[]}


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

updated_at: 2026-02-19 14:41:52
author_name: vikrantgg
author_github_url: https://github.com/Vikrant-Khedkar/
npm_package_name: n8n-nodes-scrapegraphai
npm_version: 0.1.21
community_fetched_at: 2026-02-19T14:41:52.618Z
ai_summary_generated_at: 2026-02-19 16:43:57
description:
  Turn any webpage into usable data in one shot – ScrapegraphAI explores the website and extracts the content you need.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "smartscraper",
      "options": [
        {
          "name": "Agentic Scraper",
          "value": "agenticscraper"
        },
        {
          "name": "Markdownify",
          "value": "markdownify"
        },
        {
          "name": "Scrape",
          "value": "scrape"
        },
        {
          "name": "Search Scraper",
          "value": "searchscraper"
        },
        {
          "name": "Smart Crawler",
          "value": "smartcrawler"
        },
        {
          "name": "Smart Scraper",
          "value": "smartscraper"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "execute",
      "options": [
        {
          "name": "Execute",
          "value": "execute",
          "action": "Execute browser automation steps with optional AI extraction",
          "description": "Perform browser interactions like clicking, typing, and navigating, with optional AI-powered data extraction"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "agenticscraper"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scrape",
      "options": [
        {
          "name": "Scrape",
          "value": "scrape",
          "action": "Autonomously extract live data from any website perfect for e commerce job boards lead capture and more",
          "description": "Autonomously extract live data from any website – perfect for e-commerce, job boards, lead capture and more"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "smartscraper"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Perform ai powered site wide search and structured data extraction ideal for knowledge retrieval",
          "description": "Perform AI-powered site-wide search and structured data extraction – ideal for knowledge retrieval"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "searchscraper"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "crawl",
      "options": [
        {
          "name": "Crawl",
          "value": "crawl",
          "action": "Give a single URL – the AI crawler follows internal links to extract structured data across multiple pages",
          "description": "Give a single URL – the AI crawler follows internal links to extract structured data across multiple pages"
        },
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get the status and results of a crawl job using its task ID",
          "description": "Get the status and results of a crawl job using its task ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "smartcrawler"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "convert",
      "options": [
        {
          "name": "Convert",
          "value": "convert",
          "action": "Convert a webpage or article to clean markdown useful for blogs dev docs and more",
          "description": "Convert a webpage or article to clean markdown – useful for blogs, dev docs and more"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "markdownify"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scrape",
      "options": [
        {
          "name": "Scrape",
          "value": "scrape",
          "action": "Scrape webpage content with optional javascript rendering",
          "description": "Scrape webpage content with optional JavaScript rendering"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "scrape"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Execute",
      "value": "execute",
      "action": "Execute browser automation steps with optional AI extraction",
      "description": "Perform browser interactions like clicking, typing, and navigating, with optional AI-powered data extraction"
    },
    {
      "name": "Scrape",
      "value": "scrape",
      "action": "Autonomously extract live data from any website perfect for e commerce job boards lead capture and more",
      "description": "Autonomously extract live data from any website – perfect for e-commerce, job boards, lead capture and more"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Perform ai powered site wide search and structured data extraction ideal for knowledge retrieval",
      "description": "Perform AI-powered site-wide search and structured data extraction – ideal for knowledge retrieval"
    },
    {
      "name": "Crawl",
      "value": "crawl",
      "action": "Give a single URL – the AI crawler follows internal links to extract structured data across multiple pages",
      "description": "Give a single URL – the AI crawler follows internal links to extract structured data across multiple pages"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get the status and results of a crawl job using its task ID",
      "description": "Get the status and results of a crawl job using its task ID"
    },
    {
      "name": "Convert",
      "value": "convert",
      "action": "Convert a webpage or article to clean markdown useful for blogs dev docs and more",
      "description": "Convert a webpage or article to clean markdown – useful for blogs, dev docs and more"
    },
    {
      "name": "Scrape",
      "value": "scrape",
      "action": "Scrape webpage content with optional javascript rendering",
      "description": "Scrape webpage content with optional JavaScript rendering"
    }
  ]

npm_readme:
  # n8n-nodes-scrapegraphai

  <p align="center">
    <img src="./nodes/scrapegraphAI.svg" width="250" alt="ScrapegraphAI Logo">
  </p>

  This is the official node for [ScrapegraphAI](https://scrapegraphai.com) for n8n. It allows you to use ScrapegraphAI's powerful web scraping and data extraction capabilities within your n8n workflows.

  ## Installation

  You can install this node in your n8n instance as follows:

  1. Go to **Settings** in your n8n instance
  2. Select the **Community Nodes** tab
  3. Click on **Install**
  4. Enter `n8n-nodes-scrapegraphai` in the "npm package name" field
  5. Click **Install**

  After installation, you will be able to use the ScrapegraphAI nodes in your workflows.

  ## Features

  This node provides several operations to interact with the ScrapegraphAI API:

  - Markdownify - Convert a webpage to markdown
  - Smart Scraper - Extract specific data from a webpage
  - Search Scraper - Extract data from search results

  ## Credentials

  To use this node, you need a ScrapegraphAI API key. You can get one by signing up at [scrapegraphai.com](https://scrapegraphai.com) and visiting your [dashboard](https://dashboard.scrapegraphai.com/dashboard).

  <img width="1360" alt="image" src="https://github.com/user-attachments/assets/c4305f4d-a7bd-445a-a495-a1e0314b4f46" />


  ## Usage

  After adding the node to your workflow, you'll need to:

  1. Create new credentials and enter your ScrapegraphAI API key
  2. Choose the operation you want to perform
  3. Configure the required parameters (e.g., website URL, extraction rules)

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Provides an n8n node to integrate ScrapegraphAI's web scraping and data extraction into workflows, enabling one-shot conversion of webpages into usable structured content or markdown.","capabilities":["Markdownify: convert a full webpage into Markdown","Smart Scraper: extract specific structured data from a webpage using extraction rules","Search Scraper: extract data from search results pages"],"authentication":"API key required (ScrapegraphAI API key)","commonUseCases":["Convert web pages to Markdown for content pipelines or knowledge bases","Extract structured data from product pages, articles, or other webpages for analytics or automation","Scrape search results (SERPs) for research, monitoring, or lead discovery","Automate data ingestion from websites into CRMs, databases, or downstream n8n workflows"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-templated.templated
package_name: n8n-nodes-templated
display_name: Templated
description: Automate the generation of images, videos, and PDFs with Templated (https://templated.io)
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: templated.io
author_github_url: https://github.com/templated-io/
npm_package_name: n8n-nodes-templated
npm_version: 0.4.3
community_fetched_at: 2026-02-19T14:41:52.619Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "createRender",
      "options": [
        {
          "name": "Create a Render",
          "value": "createRender",
          "action": "Create a render",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/v1/render",
              "method": "POST"
            }
          },
          "description": "Generate an image, video, or PDF from a template"
        },
        {
          "name": "Merge Renders",
          "value": "mergeRenders",
          "action": "Merge renders",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/v1/render/merge",
              "method": "POST"
            }
          },
          "description": "Merge multiple renders into a single PDF"
        },
        {
          "name": "Retrieve a Render",
          "value": "retrieveRender",
          "action": "Retrieve a render",
          "routing": {
            "request": {
              "url": "=/v1/render/{{$parameter[\"renderId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get details of a specific render"
        },
        {
          "name": "Clone a Template",
          "value": "cloneTemplate",
          "action": "Clone a template",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/v1/template/{{$parameter[\"templateId\"]}}/clone",
              "method": "POST"
            }
          },
          "description": "Create a clone of an existing template (maintains link to source)"
        },
        {
          "name": "Create a Template",
          "value": "createTemplate",
          "action": "Create a template",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/v1/template",
              "method": "POST"
            }
          },
          "description": "Create a new template programmatically with layers"
        },
        {
          "name": "List All Templates",
          "value": "listTemplates",
          "action": "List all templates",
          "routing": {
            "request": {
              "url": "/v1/templates",
              "method": "GET"
            }
          },
          "description": "Get a list of all templates in your account"
        },
        {
          "name": "List Template Layers",
          "value": "listTemplateLayers",
          "action": "List template layers",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/v1/template/{{$parameter[\"templateId\"]}}/layers",
              "method": "GET"
            }
          },
          "description": "Get all layers of a specific template"
        },
        {
          "name": "List Template Pages",
          "value": "listTemplatePages",
          "action": "List template pages",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/v1/template/{{$parameter[\"templateId\"]}}/pages",
              "method": "GET"
            }
          },
          "description": "Get all pages of a multi-page template"
        },
        {
          "name": "List Template Renders",
          "value": "listTemplateRenders",
          "action": "List template renders",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/v1/template/{{$parameter[\"templateId\"]}}/renders",
              "method": "GET"
            }
          },
          "description": "Get all renders created from a specific template"
        },
        {
          "name": "Retrieve a Template",
          "value": "retrieveTemplate",
          "action": "Retrieve a template",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/v1/template/{{$parameter[\"templateId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get details of a specific template"
        },
        {
          "name": "Update a Template",
          "value": "updateTemplate",
          "action": "Update a template",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/v1/template/{{$parameter[\"templateId\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update an existing template (layers, properties, or content)"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create a Render",
      "value": "createRender",
      "action": "Create a render",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/v1/render",
          "method": "POST"
        }
      },
      "description": "Generate an image, video, or PDF from a template"
    },
    {
      "name": "Merge Renders",
      "value": "mergeRenders",
      "action": "Merge renders",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/v1/render/merge",
          "method": "POST"
        }
      },
      "description": "Merge multiple renders into a single PDF"
    },
    {
      "name": "Retrieve a Render",
      "value": "retrieveRender",
      "action": "Retrieve a render",
      "routing": {
        "request": {
          "url": "=/v1/render/{{$parameter[\"renderId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get details of a specific render"
    },
    {
      "name": "Clone a Template",
      "value": "cloneTemplate",
      "action": "Clone a template",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/v1/template/{{$parameter[\"templateId\"]}}/clone",
          "method": "POST"
        }
      },
      "description": "Create a clone of an existing template (maintains link to source)"
    },
    {
      "name": "Create a Template",
      "value": "createTemplate",
      "action": "Create a template",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/v1/template",
          "method": "POST"
        }
      },
      "description": "Create a new template programmatically with layers"
    },
    {
      "name": "List All Templates",
      "value": "listTemplates",
      "action": "List all templates",
      "routing": {
        "request": {
          "url": "/v1/templates",
          "method": "GET"
        }
      },
      "description": "Get a list of all templates in your account"
    },
    {
      "name": "List Template Layers",
      "value": "listTemplateLayers",
      "action": "List template layers",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/v1/template/{{$parameter[\"templateId\"]}}/layers",
          "method": "GET"
        }
      },
      "description": "Get all layers of a specific template"
    },
    {
      "name": "List Template Pages",
      "value": "listTemplatePages",
      "action": "List template pages",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/v1/template/{{$parameter[\"templateId\"]}}/pages",
          "method": "GET"
        }
      },
      "description": "Get all pages of a multi-page template"
    },
    {
      "name": "List Template Renders",
      "value": "listTemplateRenders",
      "action": "List template renders",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/v1/template/{{$parameter[\"templateId\"]}}/renders",
          "method": "GET"
        }
      },
      "description": "Get all renders created from a specific template"
    },
    {
      "name": "Retrieve a Template",
      "value": "retrieveTemplate",
      "action": "Retrieve a template",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/v1/template/{{$parameter[\"templateId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get details of a specific template"
    },
    {
      "name": "Update a Template",
      "value": "updateTemplate",
      "action": "Update a template",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/v1/template/{{$parameter[\"templateId\"]}}",
          "method": "PUT"
        }
      },
      "description": "Update an existing template (layers, properties, or content)"
    }
  ]

npm_readme:
  # n8n-nodes-templated

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

  Templated is a powerful image, video, and PDF generation service that allows you to create dynamic visual content from templates. With its drag-and-drop editor and robust API, you can automate the creation of marketing images, videos, social media posts, banners, PDFs, 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)  
  [Usage](#usage)  
  [Resources](#resources)  

  ## Installation

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

  ## Operations

  With Templated you can create images, videos, or PDFs from dynamic templates. Here are the operations you can use:

  ### Render Operations

  | Name | Description | Documentation |
  |------|-------------|---------------|
  | Create Render | Creates an image, video, or PDF from your template. Supports JPEG, PNG, WebP, MP4 (video), and PDF formats with customizable layers. | [Link](https://templated.io/docs/renders/create/) |
  | Retrieve Render | Retrieves a specific render by its ID to check status and get the generated file URL. | [Link](https://templated.io/docs/renders/retrieve/) |
  | Merge Renders | Merges multiple rendered PDFs into a single PDF document. | [Link](https://templated.io/docs/renders/merge/) |

  ### Template Operations

  | Name | Description | Documentation |
  |------|-------------|---------------|
  | Create Template | Create a new template programmatically with layers. | [Link](https://templated.io/docs/templates/create/) |
  | Update Template | Update an existing template's properties, layers, or pages. | [Link](https://templated.io/docs/templates/update/) |
  | Clone Template | Create a copy of an existing template. | [Link](https://templated.io/docs/templates/clone/) |
  | Retrieve Template | Retrieves details of a specific template by its ID. | [Link](https://templated.io/docs/templates/retrieve/) |
  | List All Templates | Lists all templates in your account. | [Link](https://templated.io/docs/templates/list/) |
  | List Template Layers | Lists all available layers of a specific template. | [Link](https://templated.io/docs/templates/layers/) |
  | List Template Pages | Lists all pages of a multi-page template. | [Link](https://templated.io/docs/templates/pages/) |
  | List Template Renders | Lists all renders created from a specific template. | [Link](https://templated.io/docs/templates/renders/) |


  ## Credentials

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

  ### Prerequisites
  1. Sign up for a [Templated account](https://templated.io)
  2. Create a template using the Templated Editor
  3. Get your API key from your account dashboard

  ### Authentication Setup
  1. In n8n, create new credentials for "Templated API"
  2. Enter your API key obtained from Templated
  3. Test the connection to ensure it's working properly

  ## Compatibility

  - **Minimum n8n version**: 0.174.0
  - **Node API version**: 1
  - **Tested with n8n versions**: 0.174.0, 1.0.0+
  - **Node.js requirement**: >=18.10
  - **Package manager**: pnpm >=9.1

  This node uses the Templated API and should remain compatible with future versions of the service. The node includes AI tool integration capabilities for enhanced workflow automation.

  ## Usage

  This node is perfect for automating visual content creation in your workflows. Common use cases include:

  - **Marketing Automation**: Generate personalized social media posts, banners, or ads with dynamic content
  - **Video Creation**: Create promotional videos, social media clips, or animated content
  - **E-commerce**: Create product images with dynamic pricing, promotional text, or seasonal branding
  - **Document Generation**: Generate certificates, invoices, reports, or contracts in PDF format
  - **SaaS Applications**: Create user-specific images, dashboards, or documents
  - **Social Media**: Automate the creation of branded posts with dynamic content and user data
  - **Batch Processing**: Merge multiple PDFs or generate series of related documents
  - **Template Management**: Programmatically create and manage templates for dynamic content pipelines

  ### Advanced Features

  - **Video Generation**: Create MP4 videos with custom duration and FPS settings
  - **PDF Options**: Flatten PDFs and use CMYK color mode for print-ready documents
  - **Simple & Advanced Modes**: Choose between a form-based layer editor (with template layer dropdown) or direct JSON input
  - **Dynamic Layer Customization**: Control text, colors, fonts, images, borders, positioning, and visibility
  - **Multi-Page Support**: Handle multi-page templates with page-specific layer modifications
  - **Template Management**: Create, update, and clone templates programmatically
  - **Template Search**: Quickly find templates by name or description using the built-in search
  - **Resource Locators**: Choose templates from dropdown lists or enter IDs directly

  ### Example Workflow
  1. **Trigger**: New data event (e.g., new customer, product, or order)
  2. **Process**: Transform and prepare data for template variables  
  3. **Generate**: Use the Templated node to create personalized image or PDF
  4. **Distribute**: Share via email, social media, file storage, or webhook

  The node integrates seamlessly with other n8n nodes, allowing you to pull data from databases, APIs, webhooks, or forms to populate your templates dynamically.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Templated API documentation](https://templated.io/docs)
  * [Template Gallery](https://templated.io/templates)

ai_documentation_summary:
  {"purpose":"Provides n8n workflow nodes to automate generation of images, videos, and PDFs from Templated templates, and to manage templates and renders programmatically.","capabilities":["Create Render (generate JPEG, PNG, WebP, MP4, PDF from templates with customizable layers)","Retrieve Render (check status and obtain generated file URL by render ID)","Merge Renders (merge multiple rendered PDFs into a single PDF)","Create Template (programmatically create templates with layers)","Update Template (modify template properties, layers, or pages)","Clone Template (duplicate an existing template)","Retrieve Template (get template details by ID)","List All Templates (list account templates)","List Template Layers (list available layers of a template)","List Template Pages (list pages of multi-page templates)"],"authentication":"API key required (Templated API key via n8n credentials)","commonUseCases":["Marketing automation: generate personalized social media posts, banners, or ads","Video creation: produce promotional videos or social clips","E-commerce: create dynamic product images with pricing and promotions","Document generation: produce certificates, invoices, reports, or contracts as PDFs","SaaS: generate user-specific images, dashboards, or documents"],"limitations":["Requires a Templated account and API key to use","Compatibility requirements: minimum n8n version 0.174.0 and Node.js >= 18.10","Package manager requirement for package usage/development: pnpm >= 9.1","README does not document service rate limits, quotas, or file size constraints"],"relatedNodes":[]}


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

updated_at: 2026-02-19 14:41:52
author_name: mailtrap
author_github_url: https://github.com/railsware/mailtrap-n8n.git
npm_package_name: n8n-nodes-mailtrap
npm_version: 1.1.4
community_fetched_at: 2026-02-19T14:41:52.620Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "mail",
      "options": [
        {
          "name": "Mail",
          "value": "mail"
        },
        {
          "name": "Contact",
          "value": "contact"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send Email",
          "value": "send",
          "action": "Send an email",
          "description": "Send an email"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "mail"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create Contact",
          "value": "create",
          "action": "Create a contact",
          "description": "Create a contact"
        },
        {
          "name": "Update Contact",
          "value": "update",
          "action": "Update a contact",
          "description": "Update a contact"
        },
        {
          "name": "Delete Contact",
          "value": "delete_",
          "action": "Delete a contact",
          "description": "Delete a contact"
        },
        {
          "name": "Get Contact Lists",
          "value": "getLists",
          "action": "Get contact lists"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send Email",
      "value": "send",
      "action": "Send an email",
      "description": "Send an email"
    },
    {
      "name": "Create Contact",
      "value": "create",
      "action": "Create a contact",
      "description": "Create a contact"
    },
    {
      "name": "Update Contact",
      "value": "update",
      "action": "Update a contact",
      "description": "Update a contact"
    },
    {
      "name": "Delete Contact",
      "value": "delete_",
      "action": "Delete a contact",
      "description": "Delete a contact"
    },
    {
      "name": "Get Contact Lists",
      "value": "getLists",
      "action": "Get contact lists"
    }
  ]

npm_readme:
  # Mailtrap.io N8N Integration - Official

  This is the official Mailtrap.io integration for N8N, allowing you to seamlessly integrate Mailtrap's email testing and delivery services into your N8N workflows.

  ## Prerequisites

  Before using this integration, please ensure you have:
  - A [Mailtrap.io](https://mailtrap.io/signup) account
  - Your sending [domain verified](https://mailtrap.io/sending/domains) in Mailtrap (required for sending emails)

  ## Installation

  ### Community Nodes (Recommended)
  For n8n version 0.187 and later, you can install this node through the Community Nodes panel:

  1. Go to Settings > Community Nodes
  2. Select Install
  3. Enter `n8n-nodes-mailtrap` in Enter npm package name
  4. Agree to the risks of using community nodes
  5. Select Install

  ### Manual Installation
  Alternatively, you can install the node manually using one of these methods:

  #### Using npm
  ```bash
  npm install n8n-nodes-mailtrap
  ```

  #### Using pnpm
  ```bash
  pnpm add n8n-nodes-mailtrap
  ```

  For more detailed installation instructions, please refer to the [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/installation/).

  ## Features

  This integration provides the following capabilities:
  - Send emails through Mailtrap's services:
    - Transactional emails
    - Bulk stream emails
  - Manage your Mailtrap contacts:
    - Create new contacts
    - Delete existing contacts
    - Update contact information
    - Get a list of your Mailtrap Lists

  ## Usage

  1. After installation, restart your n8n instance
  2. In your n8n workflow, you'll find the Mailtrap node under the "Mailtrap" category
  3. Configure the node with your [Mailtrap API token](https://mailtrap.io/api-tokens) (you can find it in your Mailtrap account settings)
  4. Use the node to send emails or manage contacts according to your needs

  ## Node local development setup
  ### Prerequisites
  - Node v18..22
  - pnpm
  - Local N8N installation (`npm i -g n8n`)
  #### After that:
  Install the dependencies:
  ```shell
    pnpm install
  ```
  Publish the node locally:
  ```shell
    pnpm link
  ```
  And build it:
  ```shell
    pnpm build
  ```
  Go to `~/.n8n/custom` (Linux, Mac), and link it there:
  ```bash
    cd ~/.n8n/custom
  ```
  OR create the folder manually:
  ```bash
    mkdir ~/.n8n/custom
    cd ~/.n8n/custom
  ```
  ```bash
    pnpm link n8n-nodes-mailtrap
  ```

  After that, you can start the local hosted n8n instance:
  ```shell
    n8n
  ```

ai_documentation_summary:
  {"purpose":"Provides an n8n node to interact with the Mailtrap API, enabling sending emails (transactional and bulk) and managing Mailtrap contacts within n8n workflows.","capabilities":["Send transactional emails via Mailtrap","Send bulk/stream emails via Mailtrap","Create new contacts","Update existing contacts","Delete contacts","List Mailtrap contact lists"],"authentication":"API token required (Mailtrap API token / API key)","commonUseCases":["Send transactional emails from workflows (order confirmations, notifications)","Send bulk email streams (newsletters, mass notifications)","Automate contact management (create, update, delete contacts)","Sync or populate Mailtrap contact lists from external data sources","Integrate email sending into CI/dev workflows for testing via Mailtrap"],"limitations":["Requires a Mailtrap account and a verified sending domain to send emails","Installation via Community Nodes requires n8n v0.187 or later (and agreement to community node risks)","README only documents sending and contact management — no mention of receiving/inbox retrieval or webhook handling"],"relatedNodes":[]}


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

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

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

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

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

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

  ---

  ## 🚀 Installation

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

  You can install the package directly from npm:

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

  or using **pnpm**:

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

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

  ---

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

  #### Prerequisites

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

  #### Steps

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

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

  2. Install dependencies and build the TypeScript source:

     ```bash
     pnpm install
     pnpm build
     ```

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

  ---

  ## 🧭 Quick Start

  ### Adding a Port node in n8n

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

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

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

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

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

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

  ---

  ## 🔐 Adding Your Port Account

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

  ### Requirements

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

  ### Steps

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

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

  ---

  ## 🧠 Running the Node

  Before execution, ensure:

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

  Then:

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

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

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

  ---

  ## ⚙️ API Endpoints Implemented

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

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

  ---

  ## 🤝 Contributing

  Contributions are welcome!

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

  Please include tests and examples when possible.

  ---

  ## 🪪 License

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

  ---

  ## 📦 Example Usage (code)

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

  const axios = require('axios');

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

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

  ---

  ## 🏷️ Metadata

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

ai_documentation_summary:
  {"purpose":"Invoke Port AI agents and run general-purpose AI prompts from n8n workflows, and fetch invocation results for use in downstream nodes.","capabilities":["Invoke a specific Port agent by identifier (POST /v1/agent/:agentIdentifier/invoke)","Perform general-purpose AI invocations (POST /v1/ai/invoke) with userPrompt and tools","Fetch invocation results/status (GET /v1/ai/invoke/:invocation_identifier)","Configure provider and model (providers: openai, azure-openai, anthropic, bedrock, port; example models: gpt-5, claude-sonnet-4-20250514)","Pass context, prompt, labels, tools, and systemPrompt to invocations","Set executionMode (Automatic or Approval Required)","Return JSON-formatted agent/AI results to downstream nodes"],"authentication":"OAuth2-style credentials using Port client_id and client_secret stored in n8n credentials (client_id/client_secret). JWT authentication is not supported.","commonUseCases":["Invoke a Port AI agent to run a domain-specific task and pass the result to other workflow nodes","Run ad-hoc general AI prompts (summarization, generation, analysis) using chosen provider/model","Trigger multi-step workflows that depend on asynchronous AI invocation results","Switch between providers/models (OpenAI, Anthropic, Bedrock, Port) for experimentation or redundancy","Use labels, context, tools, or system prompts to control AI behavior or request human approval when required"],"limitations":["Experimental package — no official support; report issues on GitHub","As of November 2025, only AI prompt endpoints are implemented (other Port REST APIs not supported)","JWT authentication is not supported (not suitable for long-term credential storage)","Requires a Port account with AI features enabled"],"relatedNodes":["Manual Trigger","Port.io (General Purpose AI Interaction) node"]}


node_type: @easysoftware/n8n-nodes-easy-redmine.easyRedmine
package_name: @easysoftware/n8n-nodes-easy-redmine
display_name: Easy Redmine
description: Easy Redmine Operations
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: martinnovak
author_github_url: https://github.com/easysoftware/n8n-nodes-easy-redmine.git
npm_package_name: @easysoftware/n8n-nodes-easy-redmine
npm_version: 0.5.1
community_fetched_at: 2026-02-19T14:41:52.621Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "issues",
      "options": [
        {
          "name": "Issue",
          "value": "issues"
        },
        {
          "name": "Lead",
          "value": "easy_leads"
        },
        {
          "name": "Opportunity",
          "value": "easy_crm_cases"
        },
        {
          "name": "Project",
          "value": "projects"
        },
        {
          "name": "Account",
          "value": "easy_contacts"
        },
        {
          "name": "Attendance",
          "value": "easy_attendances"
        },
        {
          "name": "Personal Contact",
          "value": "easy_personal_contacts"
        },
        {
          "name": "Time Entry",
          "value": "time_entries"
        },
        {
          "name": "User",
          "value": "users"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get-many",
      "options": [
        {
          "name": "Get One",
          "value": "get-one",
          "action": "Get one",
          "description": "Get a single entity"
        },
        {
          "name": "Get Many",
          "value": "get-many",
          "action": "Get many",
          "description": "Get multiple entities"
        },
        {
          "name": "Add Comment",
          "value": "add-comment",
          "action": "Add comment",
          "description": "Add a comment to entity"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create",
          "description": "Create entity"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update",
          "description": "Update entity"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "issues",
            "easy_leads",
            "easy_crm_cases",
            "easy_contacts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get-many",
      "options": [
        {
          "name": "Get One",
          "value": "get-one",
          "action": "Get one",
          "description": "Get a single attendance entity"
        },
        {
          "name": "Get Many",
          "value": "get-many",
          "action": "Get many",
          "description": "Get multiple attendance entities"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create",
          "description": "Create attendance entity"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update",
          "description": "Update attendance entity"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "easy_attendances"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get-many",
      "options": [
        {
          "name": "Get One",
          "value": "get-one",
          "action": "Get one",
          "description": "Get a single project"
        },
        {
          "name": "Get Many",
          "value": "get-many",
          "action": "Get many",
          "description": "Get multiple projects"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get-many",
      "options": [
        {
          "name": "Get One",
          "value": "get-one",
          "action": "Get one",
          "description": "Get a single personal contact"
        },
        {
          "name": "Get Many",
          "value": "get-many",
          "action": "Get many",
          "description": "Get multiple personal contacts"
        },
        {
          "name": "Add Comment",
          "value": "add-comment",
          "action": "Add comment",
          "description": "Add comment to personal contact"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create",
          "description": "Create personal contact"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update",
          "description": "Update personal contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "easy_personal_contacts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get-many",
      "options": [
        {
          "name": "Get One",
          "value": "get-one",
          "action": "Get one",
          "description": "Get a single entity"
        },
        {
          "name": "Get Many",
          "value": "get-many",
          "action": "Get many",
          "description": "Get multiple entities"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create",
          "description": "Create entity"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update",
          "description": "Update entity"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "time_entries"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get-many",
      "options": [
        {
          "name": "Get One",
          "value": "get-one",
          "action": "Get one",
          "description": "Get a single user"
        },
        {
          "name": "Get Many",
          "value": "get-many",
          "action": "Get many",
          "description": "Get multiple user"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create",
          "description": "Create user"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update",
          "description": "Update user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "users"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get One",
      "value": "get-one",
      "action": "Get one",
      "description": "Get a single entity"
    },
    {
      "name": "Get Many",
      "value": "get-many",
      "action": "Get many",
      "description": "Get multiple entities"
    },
    {
      "name": "Add Comment",
      "value": "add-comment",
      "action": "Add comment",
      "description": "Add a comment to entity"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create",
      "description": "Create entity"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update",
      "description": "Update entity"
    },
    {
      "name": "Get One",
      "value": "get-one",
      "action": "Get one",
      "description": "Get a single attendance entity"
    },
    {
      "name": "Get Many",
      "value": "get-many",
      "action": "Get many",
      "description": "Get multiple attendance entities"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create",
      "description": "Create attendance entity"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update",
      "description": "Update attendance entity"
    },
    {
      "name": "Get One",
      "value": "get-one",
      "action": "Get one",
      "description": "Get a single project"
    },
    {
      "name": "Get Many",
      "value": "get-many",
      "action": "Get many",
      "description": "Get multiple projects"
    },
    {
      "name": "Get One",
      "value": "get-one",
      "action": "Get one",
      "description": "Get a single personal contact"
    },
    {
      "name": "Get Many",
      "value": "get-many",
      "action": "Get many",
      "description": "Get multiple personal contacts"
    },
    {
      "name": "Add Comment",
      "value": "add-comment",
      "action": "Add comment",
      "description": "Add comment to personal contact"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create",
      "description": "Create personal contact"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update",
      "description": "Update personal contact"
    },
    {
      "name": "Get One",
      "value": "get-one",
      "action": "Get one",
      "description": "Get a single entity"
    },
    {
      "name": "Get Many",
      "value": "get-many",
      "action": "Get many",
      "description": "Get multiple entities"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create",
      "description": "Create entity"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update",
      "description": "Update entity"
    },
    {
      "name": "Get One",
      "value": "get-one",
      "action": "Get one",
      "description": "Get a single user"
    },
    {
      "name": "Get Many",
      "value": "get-many",
      "action": "Get many",
      "description": "Get multiple user"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create",
      "description": "Create user"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update",
      "description": "Update user"
    }
  ]

npm_readme:
  # Easy Redmine credentials and node for n8n

  This repo contains n8n node for communication with Easy Redmine.

  ## How to install

  ### ⚙️ Requirements

  To use our community node, you need to have the following requirements:

  - n8n 1.54.4 or newer

  ### 🛠️ Installation in n8n

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

  ### 🔑 Setup credentials

  You need to set up credentials for the Easy Redmine node.
  You can do this by going to the credentials section in n8n and adding a new credential of type "Easy Redmine".

  In the newly created credential, you need to fill in domain, and user api key.

  The domain should be, for example, `https://instance.easyproject.com`.

  To find the API key, go to your Easy Redmine instance, click on your profile in the top right corner.

  ![Go to profile](images/cred-guide-1.png)

  Your profile window will open. Click on the "Edit" button.

  ![Profile window](images/cred-guide-2.png)

  Your profile edit page will open. Scroll down to the Preferences section. Here just copy the API access key.

  ![Preferences section with API key](images/cred-guide-3.png)

  Now, your credentials are ready to use.

  # Easy Redmine node

  The custom node is created to handle all aspects of Easy Redmine integration with n8n.
  Currently available operations and resources are:

  ## Easy Redmine Entities

  A list of all available entities in Easy Redmine node.

  - Accounts
  - Issues
  - Leads
  - Opportunities
  - Personal contacts
  - Users

  ## Accounts

  Account entity is used to manage company contacts. It has identifier `easy_contacts`

  **Operations**

  - **Get one** - returns a detailed view of a single entity. The entity is specified by its ID.
  - **Get many** - returns a list of entities. You should use easy query id to specify the filter.
  - **Add comment** - adds a comment to the entity.
  - **Create** - creates a new account.
    - Custom fields
    - Industry ID
    - Name (known as `firstname` in the entity schema)
    - Type ID
    - Account Manager ID
    - External Account Manager ID
    - Account Status ID
    - Account Level ID
    - Author ID
    - Account Opened
    - Account Closed
    - Customer Left Reason ID
    - Primary Billing Information (see below)
    - Contact Information (see below)
  - **Update** - updates some fields of the entity.
    - Custom fields
    - Industry ID
    - Name (known as `firstname` in the entity schema)
    - Type ID
    - Account Manager ID
    - External Account Manager ID
    - Account Status ID
    - Account Level ID
    - Author ID
    - Account Opened
    - Account Closed
    - Customer Left Reason ID
    - Primary Billing Information (see below)
    - Contact Information (see below)

  ### Primary Billing and Contact Information

  This is a complex field that contains information about the account's billing and contact details. The structure
  is the same for both cases.

  - Company Name
  - Street
  - City
  - Country Code
  - Country Division
  - Postal Code
  - Email
  - Telephone
  - VAT Number
  - VAT Rate
  - Bank Account Number
  - IBAN
  - Variable Symbol
  - SWIFT
  - BIC

  ## Attendance

  Attendance is used to track user attendance. The entity name is `easy_attendance`.

  **Operations**

  - **Get one** - returns a detailed view of a single attendance record. The entity is specified by its ID.
  - **Get many** - returns a list of attendance records. You should use easy query id to specify the filter.
  - **Create** - creates a new attendance record.
    - Arrival (required)
    - Departure
    - Description
    - Activity ID
  - **Update** - updates some fields of the attendance record.
    - Arrival
    - Departure
    - Description
    - Activity ID

  ## Issues

  Issues are mostly Redmine issues. The identifier is `issue`.

  **Operations**

  - **Get one** - returns a detailed view of a single entity. The entity is specified by its ID.
  - **Get many** - returns a list of entities. You should use easy query id to specify the filter.
  - **Add comment** - adds a comment to the entity.
  - **Create** - creates a new issue.
    - Subject (required)
    - Project ID (required)
    - Assigned To ID
    - Custom fields
    - Description
    - Done Ratio
    - Due Date
    - Estimated Hours
    - Is Private
    - Parent Issue ID
    - Priority ID
    - Start Date
    - Status ID
    - Tracker ID
  - **Update** - updates some fields of the entity.
    - Assigned To ID
    - Custom fields
    - Description
    - Done Ratio
    - Due Date
    - Estimated Hours
    - Is Private
    - Parent Issue ID
    - Priority ID
    - Project ID
    - Start Date
    - Subject
    - Tracker ID
    - Status ID

  ## Leads

  Leads are CRM entities that refer to potential custom.
  The identifier is `easy_lead`.

  **Operations**

  - **Get one** - returns a detailed view of a single lead. The entity is specified by its ID.
  - **Get many** - returns a list of leads. You should use easy query id to specify the filter.
  - **Add comment** - adds a comment to the lead.
  - **Create** - creates a new lead.
    - Company Name
    - Description
    - Custom fields
  - **Update** - updates some fields of the leads.
    - Company Name
    - Description
    - Custom fields

  ## Opportunities

  Opportunities are CRM entities that represent a potential sale. The entity name is `easy_crm_case`.

  **Operations**

  - **Get one** - returns a detailed view of a single opportunity. The entity is specified by its ID.
  - **Get many** - returns a list of entities. You should use easy query id to specify the filter.
  - **Add comment** - adds a comment to the opportunity.
  - **Create** - creates a new opportunity.
    - Name (required)
    - Project ID (required)
    - Account ID (required)
    - Status ID
    - Assigned To ID
    - External Assigned To ID
    - Price
    - Contract Date
    - Custom fields
  - **Update** - updates some fields of the opportunity.
    - Name
    - Description
    - Project ID
    - Status ID
    - Assigned To ID
    - External Assigned To ID
    - Price
    - Contract Date
    - Custom fields

  ## Personal contacts

  Personal contacts are CRM entities that represent a person. The entity name is `easy_personal_contacts`.

  **Operations**

  - **Get one** - returns a detailed view of a single personal contact. The entity is specified by its ID.
  - **Get many** - returns a list of entities. You should use easy query id to specify the filter.
  - **Create** - creates a new personal contact.
    - Account ID (required or partner ID)
    - Partner ID (required or account ID)
    - First name (required)
    - Last name (required)
    - Email (required)
    - Job title
    - Custom fields
  - **Update** - updates some fields of the personal contact.
    - Account ID
    - Partner ID
    - First name
    - Last name
    - Email
    - Job title
    - Custom fields

  ## Projects

  Projects are used to manage project tasks. The entity name is `project`.

  **Operations**
  * *Get one** - returns a detailed view of a single project. The entity is specified by its ID.
  * **Get many** - returns a list of projects. You should use easy query id to specify the filter.

  ## Time entries

  Time entries are used to track time spent on issues. The entity name is `time_entry`.

  **Operations**

  - **Get one** - returns a detailed view of a single time entry. The entity is specified by its ID.
  - **Get many** - returns a list of time entries. You should use easy query id to specify the filter.
  - **Create** - creates a new time entry.
    - Hours (required)
    - Activity ID
    - Comment
    - Project ID
    - Spent On
    - User ID
    - Custom Fields
  - **Update** - updates some fields of the time entry.
    - Activity ID
    - Comment
    - Hours
    - Project ID
    - Spent On
    - User ID
    - Custom Fields

  ## Users

  Users are Easy Redmine users. The entity name is `user`.

  **Operations**

  - **Get one** - returns a detailed view of a single user. The entity is specified by its ID.
  - **Get many** - returns a list of entities. You should use easy query id to specify the filter.
  - **Create** - creates a new user
    - Login (required)
    - First name (required)
    - Last name (required)
    - Email (required)
    - Phone
    - Custom fields
  - **Update** - updates some fields of the user.
    - ID (required)
    - Login
    - First name
    - Last name
    - Email
    - Phone
    - Custom Fields

ai_documentation_summary:
  {"purpose":"n8n community node that integrates Easy Redmine (Easy Project) with n8n, allowing workflows to read and modify Easy Redmine CRM, issues, attendance and user entities via the Easy Redmine API.","capabilities":["Manage multiple Easy Redmine entities: Accounts, Issues, Leads, Opportunities, Personal contacts, Users, Attendance","CRUD operations per entity: Get one (by ID), Get many (list using easy query id), Create, Update","Add comment to entities (where supported)","Support for custom fields on create/update for CRM and issue entities","Accounts management with complex Primary Billing and Contact Information (company name, address fields, VAT, bank details, etc.)","Issue management compatible with Redmine issues (create/update subject, project, assignee, trackers, status, priority, dates, estimated hours, done ratio, parent issue, custom fields)","Attendance tracking create/update with fields: arrival (required), departure, description, activity ID","Opportunity and Lead creation/update with typical CRM fields (company/name, project/account IDs, status, assigned to, price, contract date, custom fields)"],"authentication":"API key required (provide Easy Redmine domain and user API access key in an 'Easy Redmine' credential)","commonUseCases":["Create or update Issues in Easy Redmine from form submissions or monitoring workflows","Sync or import Accounts/Contacts from other systems into Easy Redmine with full billing/contact details","Create Leads and Opportunities from inbound lead forms and route them to sales users","Add comments to issues, leads or opportunities as part of automated processes","Track user attendance records (create/update) from HR or time-tracking systems"],"limitations":["Filtering/listing requires use of an 'easy query id' (not arbitrary query builder or free-text filter in the node)","Requires n8n version 1.54.4 or newer","Authentication is limited to domain + user API key (no OAuth described)","README is truncated/incomplete in places — some entities or fields may not be fully documented in this README"],"relatedNodes":["Easy Redmine credential (Easy Redmine credentials type in n8n)"]}


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-02-19 14:41:52
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.0
community_fetched_at: 2026-02-19T14:41:52.622Z
ai_summary_generated_at: 2026-02-19 16:43:57
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"
    },
    {
      "name": "Get Connected Chats",
      "value": "getConnectedChats",
      "action": "Get connected chats",
      "description": "Get connected chats for an account by platform"
    },
    {
      "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"
    },
    {
      "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"
    }
  ]

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
       - Returns: `{ path }` — use this directly in attachment paths
     - **From Public URL**: Import media from a URL
       - Returns: `{ id, state }` 
       - Then use **Media → Get Upload Status** with the `id` to monitor progress
       - Wait until `state` is `READY`, then use the `s3Key` value in attachment paths
  2. **Posts → Schedule (Light)**
     - 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
     - Set scheduled time and execute!

  ### 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.  
     - Set `scheduledTime` (past/now = queue immediately)
     - 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
    - URL import: `{ id, state }` — use `id` with "Get Upload Status" to monitor progress
  - **Upload Sources:**
    - **From File:** Upload binary file data (existing functionality)
    - **From Public URL:** Import media from a public URL (new functionality)

  ### 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))
  - **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:**
    - `Scheduled Time` — When to publish (UTC)
    - `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",
    "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:**
  - 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:**
  - Scheduled Time: `2025-08-17T14:03:00`
  - 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:
  ```json
  {
    "scheduledTime": "2025-08-17T14:03:00",
    "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:**
  - 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. The operation returns an import job ID and initial state. Use Media → Get Upload Status to monitor progress until the state becomes "READY".

  **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":"Schedule, upload, and publish social media content across multiple platforms via the PostPulse API from n8n workflows (including media uploads, account lookups, and scheduling posts).","capabilities":["OAuth2 authentication with automatic token refresh","Accounts → Get Many (list connected social accounts and metadata)","Telegram → Get Connected Chats (retrieve channel/page chat IDs for Telegram accounts)","Media → Upload from File (upload binary file data and return attachment path)","Media → Upload from Public URL (import media by URL and return import id/state)","Media → Get Upload Status (poll URL import progress and obtain s3Key when READY)","Posts → Schedule (create PostSchedule with one or multiple Publication targets)","Platform-specific field handling in UI (e.g., Instagram publication types; dropdowns for Facebook Pages/Telegram Channels)","Supports target platforms: Facebook, Instagram, TikTok, YouTube, Threads, LinkedIn, Telegram, X, Bluesky"],"authentication":"OAuth2 (client_id/client_secret required; create PostPulse OAuth2 API credentials in n8n; tokens auto-refresh)","commonUseCases":["One-click multi-destination posting across several social platforms","Media pipeline: upload binary files or import from public URLs and monitor import status","Automated or scheduled campaigns (queue posts for immediate or future publication)","Multi-account or multi-platform posting by fetching account IDs and constructing PostSchedule objects","Posting to Telegram/Facebook pages by looking up connected chats/pages and using chatId/pageId"],"limitations":["No update endpoints for scheduled posts exposed in the node yet — prefer scheduling with isDraft: false","Telegram posting requires adding the official PostPulse bot to channels before use","You must create an OAuth client in the PostPulse developer portal and use the same email as your PostPulse account when authenticating in n8n","Public-URL media imports require polling Get Upload Status until state is READY before using the returned s3Key"],"relatedNodes":["Accounts (PostPulse)","Media (PostPulse)","Posts (PostPulse)","Credentials → PostPulse OAuth2 API (extends n8n's oAuth2Api)"]}


node_type: @mendable/n8n-nodes-firecrawl.firecrawl
package_name: @mendable/n8n-nodes-firecrawl
display_name: Firecrawl
description: Scrape, crawl, map, search, and extract structured data from websites using Firecrawl API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs: "={{[\"main\"]}}"
updated_at: 2026-02-19 14:41:52
author_name: cpeffer
author_github_url: https://github.com/mendableai/n8n-nodes-firecrawl.git
npm_package_name: @mendable/n8n-nodes-firecrawl
npm_version: 2.0.1
community_fetched_at: 2026-02-19T14:41:52.622Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "Scraping",
      "options": [
        {
          "name": "Account",
          "value": "Account"
        },
        {
          "name": "Agent",
          "value": "Agent"
        },
        {
          "name": "Crawling",
          "value": "Crawling"
        },
        {
          "name": "Extract (Legacy)",
          "value": "Extract"
        },
        {
          "name": "Map & Search",
          "value": "MapSearch"
        },
        {
          "name": "Scraping",
          "value": "Scraping"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scrape",
      "options": [
        {
          "name": "Scrape a URL and get content as markdown or other formats",
          "value": "scrape",
          "action": "Scrape a URL and get content as markdown or other formats",
          "routing": {
            "request": {
              "url": "=/scrape",
              "method": "POST"
            }
          }
        },
        {
          "name": "Batch scrape multiple URLs simultaneously",
          "value": "batchScrape",
          "action": "Batch scrape multiple URLs simultaneously",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "setKeyValue",
                  "properties": {
                    "data": "={{$response.body}}"
                  }
                }
              ]
            },
            "request": {
              "url": "/batch/scrape",
              "method": "POST"
            }
          }
        },
        {
          "name": "Get batch scrape status",
          "value": "batchScrapeStatus",
          "action": "Get batch scrape status",
          "routing": {
            "request": {
              "method": "GET"
            }
          }
        },
        {
          "name": "Get batch scrape errors",
          "value": "batchScrapeErrors",
          "action": "Get batch scrape errors",
          "routing": {
            "request": {
              "method": "GET"
            }
          }
        },
        {
          "name": "Cancel batch scrape job",
          "value": "cancelBatchScrape",
          "action": "Cancel batch scrape job",
          "routing": {
            "request": {
              "method": "DELETE"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Scraping"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "crawl",
      "options": [
        {
          "name": "Crawl a website and scrape all pages",
          "value": "crawl",
          "action": "Crawl a website and scrape all pages",
          "routing": {
            "request": {
              "url": "=/crawl",
              "method": "POST"
            }
          }
        },
        {
          "name": "Get crawl status",
          "value": "getCrawlStatus",
          "action": "Get crawl status",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "setKeyValue",
                  "properties": {
                    "data": "={{$response.body}}"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          }
        },
        {
          "name": "Cancel a crawl job",
          "value": "cancelCrawl",
          "action": "Cancel a crawl job",
          "routing": {
            "request": {
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Get crawl errors",
          "value": "getCrawlErrors",
          "action": "Get crawl errors",
          "routing": {
            "request": {
              "method": "GET"
            }
          }
        },
        {
          "name": "List active crawls",
          "value": "crawlActive",
          "action": "List active crawls",
          "routing": {
            "request": {
              "url": "=/crawl/active",
              "method": "GET"
            }
          }
        },
        {
          "name": "Preview crawl params from prompt",
          "value": "crawlParamsPreview",
          "action": "Preview crawl params from prompt",
          "routing": {
            "request": {
              "url": "=/crawl/params-preview"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Crawling"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "agent",
      "options": [
        {
          "name": "Agent - AI-powered web data extraction (waits for completion)",
          "value": "agent",
          "action": "Agent - AI-powered web data extraction (waits for completion)",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/agent",
              "method": "POST"
            }
          }
        },
        {
          "name": "Agent (Async) - Returns job ID for manual polling",
          "value": "agentAsync",
          "action": "Agent (Async) - Returns job ID for manual polling",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "body"
                  }
                }
              ]
            },
            "request": {
              "url": "=/agent",
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Agent Status",
          "value": "getAgentStatus",
          "action": "Get Agent Status",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "setKeyValue",
                  "properties": {
                    "data": "={{$response.body}}"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Agent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "map",
      "options": [
        {
          "name": "Map a website to discover all URLs",
          "value": "map",
          "action": "Map a website to discover all URLs",
          "routing": {
            "request": {
              "url": "=/map",
              "method": "POST"
            }
          }
        },
        {
          "name": "Search the web and scrape results",
          "value": "search",
          "action": "Search the web and scrape results",
          "routing": {
            "request": {
              "url": "=/search",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "MapSearch"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "teamCreditUsage",
      "options": [
        {
          "name": "Get team credit usage",
          "value": "teamCreditUsage",
          "action": "Get team credit usage",
          "routing": {
            "request": {
              "url": "=/team/credit-usage",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get historical credit usage",
          "value": "creditUsageHistorical",
          "action": "Get historical credit usage",
          "routing": {
            "request": {
              "url": "=/team/credit-usage/historical",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get team token usage",
          "value": "teamTokenUsage",
          "action": "Get team token usage",
          "routing": {
            "request": {
              "url": "=/team/token-usage",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get historical token usage",
          "value": "teamTokenUsageHistorical",
          "action": "Get historical token usage",
          "routing": {
            "request": {
              "url": "=/team/token-usage/historical",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get team queue status",
          "value": "teamQueueStatus",
          "action": "Get team queue status",
          "routing": {
            "request": {
              "url": "=/team/queue-status",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Account"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "extract",
      "options": [
        {
          "name": "Extract structured data from websites using AI",
          "value": "extract",
          "action": "Extract structured data from websites using AI",
          "routing": {
            "request": {
              "url": "=/extract",
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Extract Status",
          "value": "getExtractStatus",
          "action": "Get Extract Status",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "setKeyValue",
                  "properties": {
                    "data": "={{$response.body}}"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Extract"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /scrape",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Scraping"
          ],
          "operation": [
            "scrape"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /batchScrape",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Scraping"
          ],
          "operation": [
            "batchScrape"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /batchScrapeStatus",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Scraping"
          ],
          "operation": [
            "batchScrapeStatus"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /batchScrapeErrors",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Scraping"
          ],
          "operation": [
            "batchScrapeErrors"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /cancelBatchScrape",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Scraping"
          ],
          "operation": [
            "cancelBatchScrape"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /crawl",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Crawling"
          ],
          "operation": [
            "crawl"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /getCrawlStatus",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Crawling"
          ],
          "operation": [
            "getCrawlStatus"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /cancelCrawl",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Crawling"
          ],
          "operation": [
            "cancelCrawl"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /getCrawlErrors",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Crawling"
          ],
          "operation": [
            "getCrawlErrors"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /crawlActive",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Crawling"
          ],
          "operation": [
            "crawlActive"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /crawlParamsPreview",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Crawling"
          ],
          "operation": [
            "crawlParamsPreview"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /agent",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Agent"
          ],
          "operation": [
            "agent"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /agentAsync",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Agent"
          ],
          "operation": [
            "agentAsync"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /getAgentStatus",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Agent"
          ],
          "operation": [
            "getAgentStatus"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /map",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "MapSearch"
          ],
          "operation": [
            "map"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /search",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "MapSearch"
          ],
          "operation": [
            "search"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /teamCreditUsage",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Account"
          ],
          "operation": [
            "teamCreditUsage"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /creditUsageHistorical",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Account"
          ],
          "operation": [
            "creditUsageHistorical"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /teamTokenUsage",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Account"
          ],
          "operation": [
            "teamTokenUsage"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /teamTokenUsageHistorical",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Account"
          ],
          "operation": [
            "teamTokenUsageHistorical"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /teamQueueStatus",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Account"
          ],
          "operation": [
            "teamQueueStatus"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /extract",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Extract"
          ],
          "operation": [
            "extract"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /getExtractStatus",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Extract"
          ],
          "operation": [
            "getExtractStatus"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "name": "Scrape a URL and get content as markdown or other formats",
      "value": "scrape",
      "action": "Scrape a URL and get content as markdown or other formats",
      "routing": {
        "request": {
          "url": "=/scrape",
          "method": "POST"
        }
      }
    },
    {
      "name": "Batch scrape multiple URLs simultaneously",
      "value": "batchScrape",
      "action": "Batch scrape multiple URLs simultaneously",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "setKeyValue",
              "properties": {
                "data": "={{$response.body}}"
              }
            }
          ]
        },
        "request": {
          "url": "/batch/scrape",
          "method": "POST"
        }
      }
    },
    {
      "name": "Get batch scrape status",
      "value": "batchScrapeStatus",
      "action": "Get batch scrape status",
      "routing": {
        "request": {
          "method": "GET"
        }
      }
    },
    {
      "name": "Get batch scrape errors",
      "value": "batchScrapeErrors",
      "action": "Get batch scrape errors",
      "routing": {
        "request": {
          "method": "GET"
        }
      }
    },
    {
      "name": "Cancel batch scrape job",
      "value": "cancelBatchScrape",
      "action": "Cancel batch scrape job",
      "routing": {
        "request": {
          "method": "DELETE"
        }
      }
    },
    {
      "name": "Crawl a website and scrape all pages",
      "value": "crawl",
      "action": "Crawl a website and scrape all pages",
      "routing": {
        "request": {
          "url": "=/crawl",
          "method": "POST"
        }
      }
    },
    {
      "name": "Get crawl status",
      "value": "getCrawlStatus",
      "action": "Get crawl status",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "setKeyValue",
              "properties": {
                "data": "={{$response.body}}"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      }
    },
    {
      "name": "Cancel a crawl job",
      "value": "cancelCrawl",
      "action": "Cancel a crawl job",
      "routing": {
        "request": {
          "method": "DELETE"
        }
      }
    },
    {
      "name": "Get crawl errors",
      "value": "getCrawlErrors",
      "action": "Get crawl errors",
      "routing": {
        "request": {
          "method": "GET"
        }
      }
    },
    {
      "name": "List active crawls",
      "value": "crawlActive",
      "action": "List active crawls",
      "routing": {
        "request": {
          "url": "=/crawl/active",
          "method": "GET"
        }
      }
    },
    {
      "name": "Preview crawl params from prompt",
      "value": "crawlParamsPreview",
      "action": "Preview crawl params from prompt",
      "routing": {
        "request": {
          "url": "=/crawl/params-preview"
        }
      }
    },
    {
      "name": "Agent - AI-powered web data extraction (waits for completion)",
      "value": "agent",
      "action": "Agent - AI-powered web data extraction (waits for completion)",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/agent",
          "method": "POST"
        }
      }
    },
    {
      "name": "Agent (Async) - Returns job ID for manual polling",
      "value": "agentAsync",
      "action": "Agent (Async) - Returns job ID for manual polling",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "body"
              }
            }
          ]
        },
        "request": {
          "url": "=/agent",
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Agent Status",
      "value": "getAgentStatus",
      "action": "Get Agent Status",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "setKeyValue",
              "properties": {
                "data": "={{$response.body}}"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      }
    },
    {
      "name": "Map a website to discover all URLs",
      "value": "map",
      "action": "Map a website to discover all URLs",
      "routing": {
        "request": {
          "url": "=/map",
          "method": "POST"
        }
      }
    },
    {
      "name": "Search the web and scrape results",
      "value": "search",
      "action": "Search the web and scrape results",
      "routing": {
        "request": {
          "url": "=/search",
          "method": "POST"
        }
      }
    },
    {
      "name": "Get team credit usage",
      "value": "teamCreditUsage",
      "action": "Get team credit usage",
      "routing": {
        "request": {
          "url": "=/team/credit-usage",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get historical credit usage",
      "value": "creditUsageHistorical",
      "action": "Get historical credit usage",
      "routing": {
        "request": {
          "url": "=/team/credit-usage/historical",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get team token usage",
      "value": "teamTokenUsage",
      "action": "Get team token usage",
      "routing": {
        "request": {
          "url": "=/team/token-usage",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get historical token usage",
      "value": "teamTokenUsageHistorical",
      "action": "Get historical token usage",
      "routing": {
        "request": {
          "url": "=/team/token-usage/historical",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get team queue status",
      "value": "teamQueueStatus",
      "action": "Get team queue status",
      "routing": {
        "request": {
          "url": "=/team/queue-status",
          "method": "GET"
        }
      }
    },
    {
      "name": "Extract structured data from websites using AI",
      "value": "extract",
      "action": "Extract structured data from websites using AI",
      "routing": {
        "request": {
          "url": "=/extract",
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Extract Status",
      "value": "getExtractStatus",
      "action": "Get Extract Status",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "setKeyValue",
              "properties": {
                "data": "={{$response.body}}"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      }
    }
  ]

npm_readme:
  # n8n-nodes-firecrawl 🔥

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

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

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

  [Installation](#installation)
  [Operations](#operations)
  [AI Agent Tool Usage](#ai-agent-tool-usage)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Resources](#resources)
  [Version history](#version-history)  

  ## Installation

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

  ## Operations

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

  ### Search
  - Search and optionally scrape search results

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  ## AI Agent Tool Usage

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

  ### Requirements

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

  ### Docker Configuration

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

  ### Using with AI Agents

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

  ### Dynamic Parameters with $fromAI()

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

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

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

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

  ### Best Practices for AI Tool Usage

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

  ## Credentials

  To use the Firecrawl node, you need to:

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

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

  ## Compatibility

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

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

  ## Resources

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

  ## Version history

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

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

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

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

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

  ### 1.0.1
  - Support for Search operation

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

  ## More information

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

  ## License

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

ai_documentation_summary:
  {"purpose":"Provides access to the Firecrawl API from n8n to discover, crawl, scrape and extract structured, LLM-ready content from websites, and to integrate those capabilities as tools for n8n AI agents.","capabilities":["Search (search site content and optionally scrape results)","Map (discover all URLs for a given website)","Scrape (fetch single URL content in LLM-ready formats: markdown, structured data via LLM Extract, screenshot, html)","Crawl (scrape all URLs from a page and return LLM-ready content)","Batch Scrape (start batch jobs to scrape multiple URLs)","Batch Scrape Status (check status/result of a batch job by ID)","Batch Scrape Errors (retrieve errors for a batch job by ID)","Crawl Active (list currently active crawl jobs for team)","Crawl Params Preview (preview crawl parameters generated from a natural-language prompt)","Cancel Crawl (cancel a running crawl job by ID)"],"authentication":"API key required (Firecrawl API key added to the node's credentials in n8n)","commonUseCases":["Turn whole websites or pages into LLM-ready markdown or structured data for downstream LLM tasks","Discover site structure and URLs with Map before targeted scraping or extraction","Run large-scale/parallel scrapes via Batch Scrape and monitor job status/errors","Integrate with n8n AI Agent to let an agent dynamically decide what to crawl/scrape and which parameters to use","Monitor team usage and quotas (tokens/credits) and queue/concurrency status"],"limitations":["AI tool support requires n8n v1.79.0 or higher","To enable community nodes as AI tools you must set the environment variable N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true","Node.js 18+ required","Requires a Firecrawl account and API key (sensitive; must be kept secure)"],"relatedNodes":["AI Agent"]}


node_type: n8n-nodes-straker-verify.strakerVerify
package_name: n8n-nodes-straker-verify
display_name: Straker Verify
description: Interact with Straker Verify API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: strakergroup
author_github_url: https://github.com/strakergroup/int-n8n-verify.git
npm_package_name: n8n-nodes-straker-verify
npm_version: 0.1.30
community_fetched_at: 2026-02-19T14:41:52.623Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "project",
      "options": [
        {
          "name": "Project",
          "value": "project"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new project",
          "description": "Create a new Verify project"
        },
        {
          "name": "Download Files",
          "value": "downloadFiles",
          "action": "Download translated files",
          "description": "Download translated files for a project"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a new project",
      "description": "Create a new Verify project"
    },
    {
      "name": "Download Files",
      "value": "downloadFiles",
      "action": "Download translated files",
      "description": "Download translated files for a project"
    }
  ]

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

  # n8n-nodes-straker-verify

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

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

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

  ## Installation

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

  ### Quick Installation

  1. Open your n8n instance
  2. Go to **Settings > Community Nodes**
  3. Select **Install**
  4. Enter `n8n-nodes-straker-verify` in **Enter npm package name**
  5. Agree to the risks of using community nodes: select **I understand the risks of installing unverified code from a third party**
  6. Select **Install**

  ## Operations

  ### Project Resource

  * **Create**: Create a new project with files for translation
  * **Download Files**: Download translated files for a completed project

  ## Credentials

  To use this node, you'll need to create an API key from the Straker Verify platform.

  1. Log in to your Straker Verify account
  2. Navigate to API Keys section
  3. Create a new API key
  4. Use the generated key in your n8n credentials for this node

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Straker Verify API Documentation](https://api-verify.straker.ai/docs#/)

ai_documentation_summary:
  {"purpose":"Provides actions to interact with the Straker Verify API from n8n workflows, enabling creation of translation projects and retrieval of translated files.","capabilities":["Create a new Project with files for translation","Download translated files for a completed Project"],"authentication":"API key required (use a Straker Verify API key stored in n8n credentials)","commonUseCases":["Automate uploading files to Straker Verify to create translation projects","Automatically download translated files when a project is completed","Incorporate translation steps into multi-step workflows (e.g., content publishing pipelines)"],"limitations":["Community node: must install via n8n Community Nodes and acknowledge risks of third‑party code","README indicates only a Project resource is supported (Create and Download Files) — other API endpoints/resources are not listed"],"relatedNodes":[]}


node_type: @quire-io/n8n-nodes-quire.quire
package_name: @quire-io/n8n-nodes-quire
display_name: Quire
description: Perform actions on Quire project management platform
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: izwhiter
author_github_url: https://github.com/quire-api/n8n-nodes-quire.git
npm_package_name: @quire-io/n8n-nodes-quire
npm_version: 0.1.2
community_fetched_at: 2026-02-19T14:41:52.623Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "task",
      "options": [
        {
          "name": "Comment",
          "value": "comment"
        },
        {
          "name": "Partner",
          "value": "partner"
        },
        {
          "name": "Project",
          "value": "project"
        },
        {
          "name": "Search",
          "value": "search"
        },
        {
          "name": "Sublist",
          "value": "sublist"
        },
        {
          "name": "Tag",
          "value": "tag"
        },
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a task",
          "description": "Create a new task"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a task",
          "description": "Get a task by ID"
        },
        {
          "name": "Get by OID",
          "value": "getByOid",
          "action": "Get task by OID",
          "description": "Get a task by OID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many tasks",
          "description": "Get many tasks in a project"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a task",
          "description": "Update an existing task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many users",
          "description": "Get many accessible users"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a comment",
          "description": "Create a new comment"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many comments",
          "description": "Get many comments for a task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "comment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many tags",
          "description": "Get many tags in a project"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tag"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many sublists",
          "description": "Get many sublists in a project"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sublist"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many partners",
          "description": "Get many partners in an organization"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "partner"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "findTaskInProject",
      "options": [
        {
          "name": "Find Task in Project",
          "value": "findTaskInProject",
          "action": "Find task in project",
          "description": "Find tasks in a project"
        },
        {
          "name": "Find User",
          "value": "findUser",
          "action": "Find user",
          "description": "Find a user by email or ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many projects",
          "description": "Get many accessible projects"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a task",
      "description": "Create a new task"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a task",
      "description": "Get a task by ID"
    },
    {
      "name": "Get by OID",
      "value": "getByOid",
      "action": "Get task by OID",
      "description": "Get a task by OID"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many tasks",
      "description": "Get many tasks in a project"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a task",
      "description": "Update an existing task"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many users",
      "description": "Get many accessible users"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a comment",
      "description": "Create a new comment"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many comments",
      "description": "Get many comments for a task"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many tags",
      "description": "Get many tags in a project"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many sublists",
      "description": "Get many sublists in a project"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many partners",
      "description": "Get many partners in an organization"
    },
    {
      "name": "Find Task in Project",
      "value": "findTaskInProject",
      "action": "Find task in project",
      "description": "Find tasks in a project"
    },
    {
      "name": "Find User",
      "value": "findUser",
      "action": "Find user",
      "description": "Find a user by email or ID"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many projects",
      "description": "Get many accessible projects"
    }
  ]

npm_readme:
  # n8n-nodes-quire

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

  Quire is a project management applications that improve your productivity.

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

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

  ## Installation

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

  ## Operations

  ### Task
  - **Create**: Create a new task
  - **Get**: Get a task by ID
  - **Get by OID**: Get a task by OID
  - **Get Many**: Get all tasks in a project
  - **Update**: Update an existing task

  ### Comment
  - **Create**: Create a new comment for a task
  - **Get Many**: Get all comments for a task

  ### Project
  - **Get Many**: Get all accessible projects

  ### User
  - **Get Many**: Get all accessible users

  ### Tag
  - **Get Many**: Get all tags in a project

  ### Sublist
  - **Get Many**: Get all sublists in a project

  ### Partner
  - **Get Many**: Get all partners in an organization

  ### Search
  - **Find Task in Project**: Find tasks in a project
  - **Find User**: Find a user by email or ID

  ## Credentials

  To use this node, you need to set up OAuth2 credentials for Quire in n8n:

  1. Log in to Quire and create a Quire App to obtain your Client ID and Client Secret.
  2. In n8n, go to the **Credentials** page and add new credentials for **Quire OAuth2 API**.
  3. Enter your Quire App's Client ID and Client Secret in the corresponding fields.
  4. Copy the **OAuth Redirect URL** shown in n8n and add it to your Quire App's Redirect URI settings.
  5. Save the credentials, then click **Connect my account** and authorize access to your Quire projects.

  > Reference: [n8n credentials setup guide](https://docs.n8n.io/credentials/add-edit-credentials/)

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Quire App Directory](https://quire.io/apps)

ai_documentation_summary:
  {"purpose":"Provides n8n workflow nodes to interact with the Quire project management platform, enabling creation, retrieval, update, and search of Quire resources from n8n.","capabilities":["Task: Create a new task","Task: Get a task by ID","Task: Get a task by OID","Task: Get many tasks in a project","Task: Update an existing task","Comment: Create a comment for a task","Comment: Get many comments for a task","Project: Get many accessible projects","User: Get many accessible users","Tag: Get many tags in a project"],"authentication":"OAuth2 (Quire OAuth2 API: requires Quire App Client ID and Client Secret; configure OAuth Redirect URL in Quire App and authorize access)","commonUseCases":["Create or update tasks in Quire from automated workflows","Retrieve tasks or task lists for reporting or synchronization","Add comments to tasks programmatically (e.g., from alerts or chatbots)","List projects, users, tags, sublists or partners to populate UI or map permissions","Search for tasks or users by email/ID to route work or look up assignees"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-ikas.ikas
package_name: n8n-nodes-ikas
display_name: IKAS
description: Consume IKAS e-commerce platform API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: actuallyzefe
author_github_url: https://github.com/actuallyzefe/n8n-ikas.git
npm_package_name: n8n-nodes-ikas
npm_version: 2.0.5
community_fetched_at: 2026-02-19T14:41:52.624Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "product",
      "options": [
        {
          "name": "Order",
          "value": "order",
          "description": "Work with orders in your IKAS store"
        },
        {
          "name": "Product",
          "value": "product",
          "description": "Work with products in your IKAS store"
        },
        {
          "name": "Webhook",
          "value": "webhook",
          "description": "Manage webhooks for your IKAS store"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a product",
          "description": "Create a new product"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete products",
          "description": "Delete multiple products"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many products",
          "description": "Get multiple products"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search products",
          "description": "Search products with filters"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a product",
          "description": "Update an existing product"
        },
        {
          "name": "Upload Image",
          "value": "uploadImage",
          "action": "Upload image to product",
          "description": "Upload image to product variants"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "product"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many orders",
          "description": "Get multiple orders"
        },
        {
          "name": "Fulfill",
          "value": "fulfill",
          "action": "Fulfill an order",
          "description": "Fulfill order lines"
        },
        {
          "name": "Update Package Status",
          "value": "updatePackageStatus",
          "action": "Update package status",
          "description": "Update order package status"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "order"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a webhook",
          "description": "Create a new webhook"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete webhooks",
          "description": "Delete webhooks by scope"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many webhooks",
          "description": "List all webhooks"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhook"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a product",
      "description": "Create a new product"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete products",
      "description": "Delete multiple products"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many products",
      "description": "Get multiple products"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search products",
      "description": "Search products with filters"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a product",
      "description": "Update an existing product"
    },
    {
      "name": "Upload Image",
      "value": "uploadImage",
      "action": "Upload image to product",
      "description": "Upload image to product variants"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many orders",
      "description": "Get multiple orders"
    },
    {
      "name": "Fulfill",
      "value": "fulfill",
      "action": "Fulfill an order",
      "description": "Fulfill order lines"
    },
    {
      "name": "Update Package Status",
      "value": "updatePackageStatus",
      "action": "Update package status",
      "description": "Update order package status"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a webhook",
      "description": "Create a new webhook"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete webhooks",
      "description": "Delete webhooks by scope"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many webhooks",
      "description": "List all webhooks"
    }
  ]

npm_readme:
  # n8n-nodes-ikas

  <div align="center">
    <img src="https://raw.githubusercontent.com/n8n-io/n8n/master/assets/n8n-logo.png" alt="n8n" width="120" height="120">
    <span style="font-size: 50px; margin: 0 20px;">+</span>
    <img src="https://ikas.com/favicon.ico" alt="IKAS" width="120" height="120">
  </div>

  <div align="center">
    
  ![n8n.io - IKAS](https://img.shields.io/badge/n8n.io-IKAS-blue.svg)
  ![Version](https://img.shields.io/npm/v/n8n-nodes-ikas.svg)
  ![Downloads](https://img.shields.io/npm/dt/n8n-nodes-ikas.svg)
  ![License](https://img.shields.io/npm/l/n8n-nodes-ikas.svg)

  </div>

  This is an n8n community node that lets you integrate the [IKAS e-commerce platform](https://ikas.com) into your n8n workflows. Automate your e-commerce operations with comprehensive product management, order processing, and inventory control.

  ## What is IKAS?

  IKAS is a comprehensive e-commerce platform that provides merchants with tools to create, manage, and grow their online stores. This node enables seamless integration with IKAS's GraphQL API for automating e-commerce operations including:

  - Product catalog management
  - Order processing and fulfillment
  - Inventory and stock management
  - Customer data handling
  - Sales analytics and reporting

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

  ## Table of Contents

  - [Installation](#installation)
  - [Credentials](#credentials)
  - [Operations](#operations)
  - [Usage Examples](#usage-examples)
  - [Compatibility](#compatibility)
  - [Contributing](#contributing)
  - [Development Setup](#development-setup)
  - [Resources](#resources)
  - [Version History](#version-history)
  - [License](#license)

  ## Installation

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

  Use the package name: `n8n-nodes-ikas`

  ## Operations

  This node supports the following operations:

  ### Products

  - **Get Many**: Retrieve multiple products from your IKAS store
  - **Search**: Search products with advanced filters and pagination including:
    - Search by name, description, or other text fields
    - Filter by product IDs, SKUs, or barcodes
    - Pagination support with customizable page size
  - **Create**: Create new products in your store with:
    - Simple product structure support
    - Automatic variant creation
    - Stock location assignment
    - Pricing configuration (sell price, buy price, discount price)
  - **Update**: Update existing product information including all product fields

  ### Orders

  - **Get Many**: Retrieve orders from your IKAS store with advanced filtering:
    - Filter by customer email or customer ID
    - Filter by order number or sales channel
    - Filter by order status (Created, Confirmed, Fulfilled, etc.)
    - Filter by payment status (Paid, Pending, Refunded, etc.)
    - Filter by package status (Preparing, Shipped, Delivered, etc.)
  - **Fulfill**: Fulfill order line items with:
    - Multiple line item fulfillment
    - Quantity specification per line item
    - Optional marking as ready for shipment
    - Customer notification settings
    - Tracking information (tracking number, cargo company, barcode, etc.)
  - **Update Package Status**: Update order package statuses with:
    - Multiple package status updates in one operation
    - Comprehensive status options (Fulfilled, Shipped, Delivered, Cancelled, etc.)
    - Tracking information updates
    - Error message handling

  ### Stock Management

  - **Stock Location Retrieval**: Get stock locations by name or filters
  - **Stock Assignment**: Automatically assign stock to locations during product creation

  ### Available GraphQL Operations

  - **Queries**:
    - `GetProducts` - Fetch product data with full product information
    - `SearchProducts` - Advanced product search with filters and pagination
    - `GetOrders` - Retrieve order information with comprehensive filtering
  - **Mutations**:
    - `SaveProduct` - Create or update products with full product structure
    - `FulfillOrder` - Fulfill order line items with tracking
    - `UpdateOrderPackageStatus` - Update package statuses with tracking info

  ## Credentials

  To use this node, you need to authenticate with IKAS using OAuth2 credentials. Here's how to set it up:

  ### Prerequisites

  1. You must have an IKAS store
  2. Create a Private App in your IKAS admin panel to get API credentials

  ### Authentication Setup

  1. In your IKAS admin panel, navigate to Apps & Integrations
  2. Create a new Private App
  3. Note down your:
     - **Store Name** (your store subdomain without .myikas.com)
     - **Client ID**
     - **Client Secret**

  ### Credential Configuration

  When setting up the IKAS API credentials in n8n:

  - **Store Name**: Your IKAS store name (e.g., "mystore" for mystore.myikas.com)
  - **Client ID**: The Client ID from your Private App
  - **Client Secret**: The Client Secret from your Private App

  The node will automatically handle OAuth2 authentication and session token management.

  ## Compatibility

  - **Minimum n8n version**: 1.0.0
  - **Node version**: 1.0
  - **Tested with**: n8n 1.x
  - **Node.js**: >=22.16

  This node uses the IKAS GraphQL API v1 and should be compatible with all current IKAS store configurations.

  ## Usage Examples

  ### Quick Start

  1. Install the node using n8n's community node installation process
  2. Set up your IKAS API credentials
  3. Create a new workflow and add the IKAS node
  4. Configure your desired operation (Product or Order management)

  ### Workflow Examples

  #### Example 1: Sync Products from External Source

  ```
  Webhook → Data Processing → IKAS (Create Product) → Email Notification
  ```

  This workflow listens for new product data, processes it, creates the product in IKAS, and sends a confirmation email.

  #### Example 2: Order Fulfillment Automation

  ```
  IKAS (Get Orders) → Filter (Paid Orders) → IKAS (Fulfill Order) → Send Tracking Email
  ```

  This workflow automatically fulfills paid orders and sends tracking information to customers.

  #### Example 3: Inventory Management

  ```
  Schedule Trigger → IKAS (Get Products) → Check Stock Levels → IKAS (Update Product) → Slack Notification
  ```

  This workflow runs daily to check stock levels and update products with low inventory alerts.

  ### Product Operations

  **Get Products**: Select "Product" as resource and "Get Many" as operation to fetch all products from your store with complete product information.

  **Search Products**: Use advanced filtering to find specific products:

  - Search by text query across product names and descriptions
  - Filter by specific product IDs, SKUs, or barcodes (comma-separated lists)
  - Use pagination controls to manage large result sets
  - Return all results or limit to specific page sizes

  **Create Products**: Create new products with comprehensive configuration:

  - Set product name, type (Physical, Digital, Bundle, Membership), and structure
  - Configure pricing (sell price, buy price, discount price)
  - Add descriptions, weight, and quantity limits
  - Assign to sales channels
  - Set initial stock counts and assign to stock locations
  - Add additional attributes, translations, and metadata

  **Update Products**: Modify existing products using the same configuration options as creation, plus the ability to update all product fields.

  ### Order Management

  **Get Orders**: Retrieve orders with powerful filtering capabilities:

  - Filter by customer information (email, customer ID)
  - Filter by order details (order number, sales channel)
  - Filter by order status (Created, Confirmed, Fulfilled, Cancelled, etc.)
  - Filter by payment status (Paid, Pending, Refunded, Partially Paid, etc.)
  - Filter by package status (Preparing, Shipped, Delivered, Returned, etc.)

  **Fulfill Orders**: Process order fulfillment with detailed control:

  - Fulfill specific line items with custom quantities
  - Add tracking information (tracking number, cargo company, barcode)
  - Configure shipment notifications to customers
  - Mark orders as ready for shipment
  - Link to source packages for inventory tracking

  **Update Package Status**: Manage package lifecycle with comprehensive status updates:

  - Update multiple packages in a single operation
  - Set detailed package statuses (Fulfilled, Ready for Shipment, Shipped, Delivered, Cancelled, Error, etc.)
  - Add or update tracking information per package
  - Handle error states with custom error messages
  - Include source IDs for external system integration

  ## Contributing

  We welcome contributions from the community! Whether you're fixing bugs, adding features, or improving documentation, your help is appreciated.

  ### How to Contribute

  1. **Fork the Repository**: Click the "Fork" button on GitHub to create your own copy
  2. **Clone Your Fork**: `git clone https://github.com/YOUR_USERNAME/n8n-ikas.git`
  3. **Create a Branch**: `git checkout -b feature/your-feature-name`
  4. **Make Your Changes**: Implement your feature or fix
  5. **Test Your Changes**: Ensure everything works correctly
  6. **Commit Your Changes**: `git commit -am 'Add some feature'`
  7. **Push to Your Branch**: `git push origin feature/your-feature-name`
  8. **Create a Pull Request**: Submit your changes for review

  ### Code Standards

  - Follow the existing TypeScript code style
  - Use meaningful variable and function names
  - Add JSDoc comments for new functions
  - Ensure all new code is properly typed

  ### Reporting Issues

  Found a bug or have a feature request? Please check existing issues first, then create a new issue with:

  - Clear description of the problem or request
  - Steps to reproduce (for bugs)
  - Expected vs actual behavior
  - Your environment details (n8n version, Node.js version, etc.)

  ## Development Setup

  ### Prerequisites

  - Node.js >=22.16
  - n8n (for testing)
  - Ikas Credentials (Client ID - Client Secret)

  ### Setup Instructions

  1. **Clone the Repository**

     ```bash
     git clone https://github.com/actuallyzefe/n8n-ikas.git
     cd n8n-ikas
     ```

  2. **Install Dependencies**

     ```bash
     npm install
     ```

  3. **Build the Project**

     ```bash
     npm run build
     ```

  4. **Linting and Formatting**
     ```bash
     npm run lint        # Check for linting issues
     npm run lintfix     # Fix auto-fixable issues
     npm run format      # Format code with prettier
     ```

  ### Project Structure

  ```
  ├── credentials/           # Authentication credential definitions
  ├── nodes/
  │   └── Ikas/
  │       ├── Ikas.node.ts  # Main node implementation
  │       ├── GenericFunctions.ts # Shared utilities
  │       ├── graphql/      # GraphQL queries and mutations
  │       ├── node-definition/ # Node property definitions
  │       ├── operations/   # Operation implementations
  │       └── types/        # TypeScript type definitions
  ├── gulpfile.js          # Build configuration
  └── package.json         # Project configuration
  ```

  ### Testing Your Changes

  1. Build the project: `npm run build`
  2. Link to n8n: Follow [n8n's community node development guide](https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally//)
  3. Test your changes in n8n workflows
  4. Verify all operations work as expected

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [n8n Node Development Guide](https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally//)
  - [IKAS API Documentation](https://ikas.dev/docs/intro)
  - [IKAS Authentication Guide](https://ikas.dev/docs/api/getting-started/authentication)
  - [IKAS Developer Portal](https://ikas.dev/)
  - [GraphQL Best Practices](https://graphql.org/learn/best-practices/)

  ## License

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

  ## Acknowledgments

  - Thanks to the [n8n team](https://n8n.io/) for creating an amazing workflow automation platform
  - Thanks to [IKAS](https://ikas.com) for providing a comprehensive e-commerce platform
  - Thanks to all contributors who help improve this node

  ---

  **Need Help?**

  - Check out the [Issues](https://github.com/actuallyzefe/n8n-ikas/issues) for common problems
  - Create a new issue if you can't find a solution
  - Join the [n8n community](https://community.n8n.io/) for general n8n support

ai_documentation_summary:
  {"purpose":"Integrate the IKAS e-commerce platform into n8n workflows via IKAS's GraphQL API to automate product catalog management, order processing/fulfillment, inventory control, and customer/sales operations.","capabilities":["Products: Get Many (list products), Search (advanced filters, pagination), Create (supports simple products, automatic variant creation, stock location assignment, pricing: sell/buy/discount), Update (all product fields)","Orders: Get Many (advanced filtering by customer, order number, sales channel, order/payment/package status), Fulfill (multiple line-item fulfillment, per-line quantity, mark ready for shipment, customer notifications, tracking info including tracking number/cargo company/barcode), Update Package Status (batch package status updates, tracking updates, error message handling)","Stock Management: Retrieve stock locations by name/filters, assign stock locations during product creation","GraphQL operations exposed: Queries - GetProducts, SearchProducts, GetOrders; Mutations - SaveProduct, FulfillOrder, UpdateOrderPackageStatus","Automatic OAuth2 authentication and session token management for IKAS API"],"authentication":"OAuth2 required via an IKAS Private App (requires Store Name, Client ID, Client Secret). The node handles OAuth2 token/session management automatically.","commonUseCases":["Sync products from an external source into IKAS (create/update products, variants and stock assignment)","Automate order fulfillment workflows (retrieve paid orders, fulfill line items, add tracking, notify customers)","Manage inventory across stock locations and assign stock on product creation","Search and filter product catalogs (by name, SKU, barcode, IDs) with pagination for reporting or batch processing","Retrieve orders and sales data for analytics or downstream processing"],"limitations":["Community node (distributed as a community integration package)","Depends on IKAS GraphQL API v1 — limited to the queries/mutations exposed by that API version","Requires creation of a Private App in IKAS and OAuth2 credentials (Store Name, Client ID, Client Secret)","Compatibility constraints: minimum n8n version 1.0.0 and Node.js >= 22.16"],"relatedNodes":["Webhook","Function / Code","Set","Filter","Email (SMTP)"]}


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-02-19 14:41:52
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-02-19T14:41:52.625Z
ai_summary_generated_at: 2026-02-19 16:43:57
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"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search the web",
      "description": "Search the web"
    },
    {
      "name": "Scrape URL",
      "value": "scrapeUrl",
      "action": "Scrape content from URL",
      "description": "Scrape content from a URL"
    },
    {
      "name": "Get Transcript",
      "value": "getTranscript",
      "action": "Get YouTube transcript",
      "description": "Get YouTube video transcript"
    },
    {
      "name": "Extract Content",
      "value": "extractContent",
      "action": "Extract PDF content",
      "description": "Extract text from 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":"Provide search-augmented, source-grounded AI answers and web/content extraction by calling the LLMLayer API from n8n workflows.","capabilities":["Generate AI answers grounded in real-time web search (supporting multiple models such as GPT-4o, Claude 3.5, Gemini, etc.)","Control output format: markdown, html, or json (including structured JSON via json_schema)","Configure model parameters: model selection, system prompt, temperature, max tokens","Include citations and return source documents with answers","General web search with multiple search types: general, news, shopping, videos, images, scholar","Search tuning: location, date filters, recency, and domain include/exclude","Scrape public web pages and return content as markdown, html, pdf, or screenshot (optionally include images/links)","Fetch YouTube transcripts (with optional language selection)","Extract text and metadata from PDFs by URL","Request PDFs/screenshots as part of content extraction"],"authentication":"API key required (create API key at app.llmlayer.ai and add as LLMLayer credentials in n8n)","commonUseCases":["Answering user questions with up-to-date, source-grounded information","Automated news monitoring and summarization (news search + Answer)","Building structured data outputs (JSON) from generative answers using json_schema","Scraping public web pages to extract content for downstream processing","Extracting text/metadata from PDFs for indexing or analysis"],"limitations":["Availability of specific models/features depends on your LLMLayer account level and current API support","Scraping can be blocked or limited by paywalls, access restrictions, or dynamic/javascript-heavy pages","Rate limits (429) and network timeouts are possible — workflows should handle retries or use Wait nodes","Requires sending queries and URLs to LLMLayer — consider privacy/data-handling implications","Authentication errors (401/403) may occur if API key is invalid/expired"],"relatedNodes":["Wait (for rate-limit/backoff handling)","HTTP Request (for custom API calls or fallbacks)","Function / Function Item (for custom processing of results)","Set (to shape inputs/outputs)","IF (to branch on response conditions)"]}


node_type: n8n-nodes-botnoi-voice.botnoitts
package_name: n8n-nodes-botnoi-voice
display_name: Botnoi Voice
description: Generate speech using Botnoi Voice API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: phoovadet.noobdev
author_github_url: https://github.com/HakusaiTH/n8n-BotnoiVoice.git
npm_package_name: n8n-nodes-botnoi-voice
npm_version: 2.0.7
community_fetched_at: 2026-02-19T14:41:52.625Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "voice",
      "options": [
        {
          "name": "Voice",
          "value": "voice"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate",
          "value": "generate",
          "action": "Generate voice",
          "description": "Generate voice from text"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "voice"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate",
      "value": "generate",
      "action": "Generate voice",
      "description": "Generate voice from text"
    }
  ]

npm_readme:
  # 🔊 n8n-BotnoiVoice

  Plug-in to connect [Botnoi Voice API](https://voice.botnoi.ai/api-login) to [n8n](https://n8n.io/) — allowing easy use of **Thai Text-to-Speech (TTS)** and **Subtitle Generation (Gensub)** directly inside your n8n workflows.

  ---

  ## 📌 Requirements before starting

  ### 1. Install basic tools

  - [Git](https://git-scm.com/downloads)
  - Node.js version **20+**
  - Recommended via [nvm](https://github.com/nvm-sh/nvm) (Linux, Mac, WSL)
  - For Windows, see [Microsoft Docs](https://learn.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-windows)
  - Install n8n globally:

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

  ---

  ## 🚀 How to use the plugin

  ### ✅ Install from npm (recommended)

  1. Create a custom n8n extensions folder:

  ```bash
  mkdir -p ~/.n8n/custom
  cd ~/.n8n/custom
  npm init -y
  ```

  2. Install the plugin:

  ```bash
  npm i n8n-nodes-botnoi-voice
  ```

  3. Start n8n:

  ```bash
  n8n start
  ```

  > 💡 Once installed, search in n8n for **Botnoi Voice** or **Botnoi Gensub** nodes.

  ---

  ### 🛠️ Install locally (if cloning repo)

  1. Clone and install dependencies:

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

  2. Build and link the plugin:

  ```bash
  npm run build
  npm link
  ```

  3. Link to your n8n instance:

  ```bash
  mkdir -p ~/.n8n/custom
  cd ~/.n8n/custom
  npm init -y
  npm link n8n-nodes-botnoi-voice
  ```

  4. Start n8n:

  ```bash
  n8n start
  ```

  ---

  ## 🔐 Get API Key from Botnoi Voice

  1. Visit [https://voice.botnoi.ai/api-login](https://voice.botnoi.ai/api-login)
  2. Login or sign up for a free account
  3. Click **Generate API Key**
  4. Copy the key for use in n8n

  <p align="center">
    <img src="https://github.com/user-attachments/assets/53cae275-c947-49ac-aa5f-49c224914da9" width="640" alt="Generate API Key"/>
  </p>

  ---

  ## ⚙️ Add API Key in n8n

  1. Open **Credentials** tab in n8n
  2. Create a new credential → Select **Botnoi Voice**
  3. Paste your API key and test connection

  <p align="center">
    <img src="https://github.com/user-attachments/assets/7ddb26c4-2241-420f-8212-5096e1e052c5" width="640"/>
  </p>
  <p align="center">
    <img src="https://github.com/user-attachments/assets/2d5a905a-7f46-4447-a5fe-aa682a318621" width="640"/>
  </p>

  > ✅ If the key is correct, it will show “Connection tested successfully”.

  ---

  ## 🗣️ Botnoi Voice (TTS)

  Convert any text into natural-sounding speech in Thai, English, Japanese, Vietnamese, and more.

  ### 🧾 Usage Steps

  #### 1️⃣ Enter text to convert

  <p align="center">
    <img src="https://github.com/user-attachments/assets/a20ee802-7ecb-4005-bc18-7ffe18e2ac92" width="640"/>
  </p>

  * Add a `Botnoi Voice` node
  * Enter text manually or use expression (e.g. `{{ $json.output }}`)

  #### 2️⃣ Choose a speaker

  <p align="center">
    <img src="https://github.com/user-attachments/assets/1628e724-a7c6-4f76-a203-dad037eca3a4" width="640"/>
  </p>

  * Over 300 voices available (Eva, Bo, Max, Alisa, etc.)

  #### 3️⃣ Select language

  <p align="center">
    <img src="https://github.com/user-attachments/assets/8fb5380f-f4b2-48cf-89f6-03d77e8679d4" width="640"/>
  </p>

  * Supports multiple languages — choose `Thai`, `English`, `Japanese`, etc.

  #### 4️⃣ Generate audio

  <p align="center">
    <img src="https://github.com/user-attachments/assets/06ecb4b4-cd85-45a2-b99e-6db17f63f443" width="640"/>
  </p>

  * Click **Execute Step** → Output shows `audio_url` for playback or download.

  ---

  ## 🎧 Botnoi Gensub (Subtitle Generator)

  Generate subtitles (SRT / JSON) automatically from any **audio URL** via [Botnoi Voice API](https://voice.botnoi.ai/api-login).

  Ideal for creating Thai transcripts, podcast captions, or speech analytics.

  ### 🧩 Overview

  * Supports **URL input only**
  * Generates **SRT or JSON** subtitles
  * Adjustable silence and duration segmentation
  * Perfect with free hosting (e.g., [EdgeOne Pages](https://pages.edgeone.ai/drop))

  ---

  ### 🧱 Example: Generate Subtitles from an Audio URL

  #### ✅ Step 1 — Upload audio

  Use [EdgeOne Pages Drop](https://pages.edgeone.ai/drop) to host your file:

  1. Go to [https://pages.edgeone.ai/drop](https://pages.edgeone.ai/drop)
  2. Enter a temporary domain name
  3. Upload your `.mp3` or `.wav`
  4. Copy the URL (e.g.)

     ```
     https://forward-cyan-xo4dfpu9q6.edgeone.app/Recording.mp3
     ```

  <p align="center">
    <img alt="Image" src="https://github.com/user-attachments/assets/02666ee6-50c8-40fc-a1c8-f0d4908559f0" width="640"/>
  </p>

  ---

  #### ✅ Step 2 — Configure Botnoi Gensub Node

  | Field                          | Example                                                     | Description                              |
  | ------------------------------ | ----------------------------------------------------------- | ---------------------------------------- |
  | **Credential to connect with** | Botnoi account                                              | Use your `botnoiApi` credential          |
  | **Audio URL**                  | `https://forward-cyan-xo4dfpu9q6.edgeone.app/Recording.mp3` | Publicly accessible file URL             |
  | **Max Duration (Seconds)**     | `10`                                                        | Max duration per subtitle segment        |
  | **Max Silence (Seconds)**      | `0.3`                                                       | Silence threshold before splitting lines |
  | **Return SRT**                 | `Yes`                                                       | Choose “Yes” to get SRT subtitle text    |
  | **Timeout (Ms)**               | `60000`                                                     | Request timeout (default 60s)            |

  <p align="center">
   	<img alt="Image" src="https://github.com/user-attachments/assets/4c46f6c1-594d-48dc-83df-b23db3abb38c" width="640"/>
  </p>

  ---

  #### ✅ Step 3 — Execute and check result

  ```json
  {
    "message": "Transcribe successfully",
    "data": {
      "text": "1\n00:00:00,390 --> 00:00:02,220\nสวัสดีตอนเช้า\n",
      "current_point": 509,
      "current_monthly_point": 0,
      "used_points": 15
    }
  }
  ```

  **Result (SRT format):**

  ```
  1
  00:00:00,390 --> 00:00:02,220
  สวัสดีตอนเช้า
  ```

  <p align="center">
    <img alt="Image" src="https://github.com/user-attachments/assets/f992c796-8185-482d-80f5-188fd6599706" width="640"/>
  </p>

  ---

  ## ⚙️ Tips

  * Both nodes share the same credential `botnoiApi`
  * Ensure your audio URL is **publicly accessible** (no login needed)
  * Supported file formats: `.mp3`, `.wav`, `.m4a`
  * Recommended audio length ≤ 60 seconds for best transcription quality

  ---

  ## 📚 References

  * [Botnoi Voice API Docs](https://www.botnoigroup.com/botnoivoice/doc/api-user-guide)
  * [EdgeOne Pages Drop](https://pages.edgeone.ai/drop) — free quick hosting
  * [n8n Node Developer Docs](https://docs.n8n.io/integrations/creating-nodes/)

  ---

  ## 🧑‍💻 Maintainer

  Developed by **Phoovadet Noobdev**

  ---

  ## 📝 License

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

ai_documentation_summary:
  {"purpose":"Integrate Botnoi Voice API into n8n to convert text to natural-sounding speech (TTS) and to generate subtitles/transcripts (Gensub) from hosted audio files.","capabilities":["Text-to-Speech (TTS): convert text to audio and return an audio_url for playback or download","Speaker selection: choose from 300+ voices","Language selection: supports Thai, English, Japanese, Vietnamese, and more","Input via manual text or n8n expressions (e.g., {{ $json.output }})","Subtitle generation (Gensub): create SRT or JSON subtitles from an audio URL","Gensub configuration options: set max duration per segment, set max silence threshold for splitting, choose SRT/JSON output","Request timeout configuration (default 60000 ms)"],"authentication":"API key required (Botnoi Voice API key added as a Botnoi Voice credential in n8n)","commonUseCases":["Generate natural-sounding speech for applications, notifications, or content localization","Produce audio files from text for podcasts, videos, or voiceover workflows","Automatically generate subtitles/transcripts (SRT or JSON) for audio hosted online","Automate captioning and speech-analytics pipelines by feeding hosted audio URLs into workflows"],"limitations":["Gensub accepts audio via URL only — audio must be publicly accessible (no direct file upload through the node)","Large/long audio may require increasing the request timeout (default 60000 ms)","README does not document advanced features like SSML, streaming, or on-node file hosting"],"relatedNodes":["Botnoi Voice (TTS)","Botnoi Gensub (Subtitle Generator)"]}


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

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

operations:
  [
    {
      "name": "CREATE CLIP",
      "value": "createClip",
      "action": "Create a clip",
      "routing": {
        "request": {
          "url": "/creator/reels",
          "method": "POST"
        }
      },
      "description": "Create a new clip job on Reka side"
    },
    {
      "name": "GET JOB STATUS",
      "value": "getJobtatus",
      "action": "Get clip status",
      "routing": {
        "request": {
          "method": "GET"
        }
      },
      "description": "Get the status of a clip job on Reka side"
    },
    {
      "name": "DELETE VIDEO",
      "value": "deleteVideo",
      "action": "Delete video",
      "routing": {
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete video from your Reka account library"
    },
    {
      "name": "GET VIDEO",
      "value": "getVideo",
      "action": "Get video",
      "routing": {
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a video details from your Reka account library"
    },
    {
      "name": "LIST VIDEOS",
      "value": "listVideos",
      "action": "List videos",
      "routing": {
        "request": {
          "url": "/videos",
          "method": "GET"
        }
      },
      "description": "List videos in your Reka account library"
    },
    {
      "name": "UPLOAD VIDEO FILE",
      "value": "uploadVideoFile",
      "action": "Upload video file",
      "routing": {
        "request": {
          "url": "/videos/upload",
          "method": "POST"
        }
      },
      "description": "Upload a video to your Reka account library using a file as source"
    },
    {
      "name": "UPLOAD VIDEO FROM URL",
      "value": "uploadVideoFromUrl",
      "action": "Upload video by URL",
      "routing": {
        "request": {
          "url": "/videos/upload",
          "method": "POST"
        }
      },
      "description": "Upload a video to your Reka account library using a URL as source"
    },
    {
      "name": "DELETE IMAGE",
      "value": "deleteImage",
      "action": "Delete image",
      "routing": {
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete image from your Reka account library"
    },
    {
      "name": "GET IMAGE",
      "value": "getImage",
      "action": "Get image",
      "routing": {
        "request": {
          "method": "GET"
        }
      },
      "description": "Get an image details from your Reka account library"
    },
    {
      "name": "LIST IMAGES",
      "value": "listImages",
      "action": "List images",
      "routing": {
        "request": {
          "url": "/images",
          "method": "GET"
        }
      },
      "description": "List images in your Reka account library"
    },
    {
      "name": "UPLOAD IMAGE FILE",
      "value": "uploadImageFile",
      "action": "Upload image file",
      "routing": {
        "request": {
          "url": "/images/upload",
          "method": "POST"
        }
      },
      "description": "Upload an image to your Reka account library using a file as source"
    },
    {
      "name": "ASK QUESTION ABOUT IMAGE",
      "value": "askImageQuestion",
      "action": "Ask question about image",
      "routing": {
        "request": {
          "method": "POST",
          "baseURL": "https://api.reka.ai/v1/chat"
        }
      },
      "description": "Ask a questions about a specific image"
    },
    {
      "name": "ASK QUESTION ABOUT VIDEO",
      "value": "askVideoQuestion",
      "action": "Ask question about video",
      "routing": {
        "request": {
          "url": "/qa/chat",
          "method": "POST"
        }
      },
      "description": "Ask a questions about a specific video"
    }
  ]

npm_readme:
  # n8n-nodes-reka

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

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

  ## Operations

  ### Video Clipping

  - Automatically clip a video from a URL

  ### Vision

  - Question and Answer (Q&A) from video

  - Question and Answer (Q&A) from image

  ### Speech

  - soon

  ### Research

  - soon

  ## Credentials

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

  ## Installation

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

  ## Usage

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

  ### Clip

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

  ### Q&A

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

  Example: 

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


  ## Resources

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

  ## 🤝 Contributions

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

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

  ## License

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

ai_documentation_summary:
  {"purpose":"Provides access to Reka AI Vision APIs from n8n to automatically clip videos and run visual Q&A on images and videos, returning clips and metadata or answers.","capabilities":["Video clipping from a video URL (generate vertical or horizontal clips)","Customize clip via prompt (e.g., instructions like 'create an engaging short video highlighting the best moments')","Clip options: burned captions, minimum and maximum duration","Output clip plus suggested title, description and tags","Vision Q&A on video (ask questions about a video and get answers)","Vision Q&A on image (ask questions about an image and get answers)"],"authentication":"API key required (Reka API key generated from the Reka dashboard)","commonUseCases":["Automatically create short highlight clips from YouTube or other hosted videos","Generate captions and metadata (title, description, tags) for short clips","Ask questions about images (describe an image, identify colors/objects)","Summarize or ask questions about video content"],"limitations":["Speech and Research capabilities are listed as 'soon' (not yet available)","Documentation is limited in the README and more detailed docs are forthcoming","Primary clipping workflow described for existing hosted videos (example: YouTube URL); local file workflows not documented"],"relatedNodes":["Reka Speech (planned)","Reka Research (planned)","Reka Text (planned)"]}


node_type: @cloudsway-ai/n8n-nodes-cloudsway.smartSearch
package_name: @cloudsway-ai/n8n-nodes-cloudsway
display_name: SmartSearch
description: Performs web searches using SmartSearch API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: cloudsway-ai
author_github_url: https://github.com/Cloudsway-AI/n8n-nodes-cloudsway.git
npm_package_name: @cloudsway-ai/n8n-nodes-cloudsway
npm_version: 0.1.3
community_fetched_at: 2026-02-19T14:41:52.627Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "smartSearch",
      "options": [
        {
          "name": "Smart Search",
          "value": "smartSearch",
          "action": "Perform a web search using smart search",
          "routing": {
            "request": {
              "url": "/smart",
              "method": "GET"
            }
          },
          "description": "Perform a web search using SmartSearch"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Smart Search",
      "value": "smartSearch",
      "action": "Perform a web search using smart search",
      "routing": {
        "request": {
          "url": "/smart",
          "method": "GET"
        }
      },
      "description": "Perform a web search using SmartSearch"
    }
  ]

npm_readme:
  # n8n-nodes-cloudsway

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

  SmartSearch is a web search API service that provides search functionality with options for pagination, language settings, freshness filtering, and site restrictions.

  ## Features

  ### SmartSearch

  This node performs web searches using the Cloudsway SmartSearch API with the following options:

  - **Smart Search**: Performs a web search and returns results in JSON format

  ### Parameters

  - **Query**: (Required) The search query string (cannot be empty)
  - **Count**: (Optional) Number of results to return (default: 10, options: 10, 20, 30, 40, 50, max: 50)
  - **Offset**: (Optional) Zero-based offset for pagination (default: 0)
  - **Language**: (Optional) Language code for results (recommended 4-letter codes like en-US, default: 'en')
  - **Freshness**: (Optional) Time filter for search results (options: Day, Week, Month)
  - **Sites**: (Optional) Restrict results to a specific host (e.g., github.com)

  ## Credentials

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

  1. Log in to www.cloudsway.ai or contact info@cloudsway.com to get your Endpoint and API Key
  2. In n8n, create new credentials for "SmartSearch API"
  3. Enter your Endpoint and API Key in the respective fields

  The credential configuration requires:
  - **Endpoint**: Your SmartSearch endpoint name
  - **API Key**: Your private API key (stored securely)

  ## Usage

  1. Add the SmartSearch node to your workflow
  2. Configure the credentials
  3. Enter your search query
  4. Optionally configure additional parameters:
     - Adjust the count to control the number of results (10, 20, 30, 40, or 50)
     - Set an offset for pagination
     - Choose a language code (recommended 4-letter codes like en-US)
     - Select a freshness filter (Day, Week, or Month)
     - Restrict results to specific sites (e.g., github.com)

  The node returns search results that can be used in subsequent nodes.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Cloudsway SmartSearch API documentation](https://docs.cloudsway.net/IntelliSearch/api-reference/smartsearch/)
  * For support, contact info@cloudsway.com

ai_documentation_summary:
  {"purpose":"Performs web searches using the Cloudsway SmartSearch API and returns results in JSON for use in n8n workflows. Supports pagination, language selection, freshness filtering, and site restrictions.","capabilities":["Perform web search (Smart Search) and return JSON results","Set required search query","Control number of results returned (Count: 10, 20, 30, 40, 50; max 50)","Offset-based pagination (zero-based Offset)","Select language for results (language code, recommended 4-letter codes like en-US; default 'en')","Apply freshness filter to results (Day, Week, Month)","Restrict results to a specific host/site (Sites parameter)","Configure and use SmartSearch API credentials (Endpoint + API Key) for requests"],"authentication":"API key required (SmartSearch Endpoint and API Key configured in n8n \"SmartSearch API\" credentials)","commonUseCases":["Enrich records with web search results in automation workflows","Content discovery and research (find relevant pages for a topic)","Site-constrained searches (e.g., search only github.com)","Monitor recent or time-limited content using freshness filters","Paginate through search results for bulk processing or aggregation"],"limitations":["Maximum results per call is 50 (Count max: 50)","Query parameter is required and cannot be empty","Freshness options are limited to Day, Week, or Month","Language handling expects codes (recommended 4-letter like en-US); default is 'en'","Site restriction is host-level (single host examples like github.com)"],"relatedNodes":[]}


