# nodes

node_type: n8n-nodes-air.air
package_name: n8n-nodes-air
display_name: Air
description: Get data from Airs API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: bradybrown202
author_github_url: https://github.com/brady-brown20330/
npm_package_name: n8n-nodes-air
npm_version: 1.2.1
community_fetched_at: 2026-01-07T20:08:16.037Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "assets",
      "options": [
        {
          "name": "Assets",
          "value": "assets"
        },
        {
          "name": "Boards",
          "value": "boards"
        },
        {
          "name": "Custom Fields",
          "value": "customFields"
        },
        {
          "name": "Tags",
          "value": "tags"
        },
        {
          "name": "Uploads",
          "value": "uploads"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Apply Custom Field",
          "value": "applyCustomField",
          "action": "Apply Custom Field to Asset",
          "routing": {
            "request": {
              "url": "={{`/assets/${String($parameter[\"assetId\"] || \"\").trim()}/customfields/${String($parameter[\"customFieldId\"] || \"\").trim()}`}}",
              "method": "PUT"
            }
          },
          "description": "Apply a custom field to an asset"
        },
        {
          "name": "Apply Tag",
          "value": "applyTag",
          "action": "Apply Tag to Asset",
          "routing": {
            "request": {
              "url": "={{`/assets/${String($parameter[\"assetId\"] || \"\").trim()}/versions/${String($parameter[\"versionId\"] || \"\").trim()}/tags`}}",
              "method": "POST"
            }
          },
          "description": "Apply a tag to an asset"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get Air assets",
          "routing": {
            "request": {
              "url": "/assets",
              "method": "GET"
            }
          },
          "description": "Get Air Assets"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update Air Asset",
          "routing": {
            "request": {
              "url": "={{`/assets/${String($parameter[\"assetId\"] || \"\").trim()}/versions/${String($parameter[\"versionIdUpdate\"] || \"\").trim()}`}}",
              "method": "PATCH"
            }
          },
          "description": "Update an asset’s details"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "assets"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "initiateUpload",
      "options": [
        {
          "name": "Complete Upload",
          "value": "completeUpload",
          "action": "Complete Upload",
          "routing": {
            "request": {
              "url": "/uploads/completeMultipart",
              "method": "POST"
            }
          },
          "description": "Finalize multipart upload with part ETags"
        },
        {
          "name": "Initiate Upload",
          "value": "initiateUpload",
          "action": "Initiate Upload",
          "routing": {
            "request": {
              "url": "/uploads",
              "method": "POST"
            }
          },
          "description": "Initiate multipart upload and get signed part URLs"
        },
        {
          "name": "Upload Part",
          "value": "uploadPart",
          "action": "Get Signed URL for Upload Part",
          "routing": {
            "request": {
              "url": "/uploads/uploadPart",
              "method": "POST"
            }
          },
          "description": "Request a signed URL to upload a specific part"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "uploads"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Add Assets",
          "value": "addAssets",
          "action": "Add Assets to Board",
          "routing": {
            "request": {
              "url": "={{`/boards/${String($parameter[\"boardId\"] || \"\").trim()}/assets`}}",
              "method": "POST"
            }
          },
          "description": "Associate one or more assets with a board"
        },
        {
          "name": "Apply Custom Field",
          "value": "applyCustomField",
          "action": "Apply Custom Field to Board",
          "routing": {
            "request": {
              "url": "={{`/boards/${String($parameter[\"boardId\"] || \"\").trim()}/customfields/${String($parameter[\"customFieldId\"] || \"\").trim()}`}}",
              "method": "PUT"
            }
          },
          "description": "Set or unset custom field value(s) on a board"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create Air Board",
          "routing": {
            "request": {
              "url": "/boards",
              "method": "POST"
            }
          },
          "description": "Create Air Board"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get Air Boards",
          "routing": {
            "request": {
              "url": "/boards",
              "method": "GET"
            }
          },
          "description": "Get Air Boards"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update Air Board",
          "routing": {
            "request": {
              "url": "={{`/boards/${String($parameter[\"boardId\"] || \"\").trim()}`}}",
              "method": "PATCH"
            }
          },
          "description": "Update a board’s title, description, or parent"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "boards"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Add Value",
          "value": "addValue",
          "action": "Add Custom Field Value",
          "routing": {
            "request": {
              "url": "={{`/customFields/${String($parameter[\"customFieldId\"] || \"\").trim()}/values`}}",
              "method": "POST"
            }
          },
          "description": "Add a new selectable value to a custom field"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create Air Custom Field",
          "routing": {
            "request": {
              "url": "/customFields",
              "method": "POST"
            }
          },
          "description": "Create Air Custom Field"
        },
        {
          "name": "Delete Value",
          "value": "deleteValue",
          "action": "Delete Custom Field Value",
          "routing": {
            "request": {
              "url": "={{`/customFields/${String($parameter[\"customFieldId\"] || \"\").trim()}/values/${String($parameter[\"valueId\"] || \"\").trim()}`}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a selectable value from a custom field"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get Air Custom Fields",
          "routing": {
            "request": {
              "url": "/customFields",
              "method": "GET"
            }
          },
          "description": "Get Air Custom Fields"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update Air Custom Field",
          "routing": {
            "request": {
              "url": "={{`/customFields/${String($parameter[\"customFieldId\"] || \"\").trim()}`}}",
              "method": "PATCH"
            }
          },
          "description": "Update an existing Air custom field"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "customFields"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get Air Tags",
          "routing": {
            "request": {
              "url": "/tags",
              "method": "GET"
            }
          },
          "description": "Get Air Tags"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create Air Tag",
          "routing": {
            "request": {
              "url": "/tags",
              "method": "POST"
            }
          },
          "description": "Create Air Tag"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tags"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Apply Custom Field",
      "value": "applyCustomField",
      "action": "Apply Custom Field to Asset",
      "routing": {
        "request": {
          "url": "={{`/assets/${String($parameter[\"assetId\"] || \"\").trim()}/customfields/${String($parameter[\"customFieldId\"] || \"\").trim()}`}}",
          "method": "PUT"
        }
      },
      "description": "Apply a custom field to an asset"
    },
    {
      "name": "Apply Tag",
      "value": "applyTag",
      "action": "Apply Tag to Asset",
      "routing": {
        "request": {
          "url": "={{`/assets/${String($parameter[\"assetId\"] || \"\").trim()}/versions/${String($parameter[\"versionId\"] || \"\").trim()}/tags`}}",
          "method": "POST"
        }
      },
      "description": "Apply a tag to an asset"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get Air assets",
      "routing": {
        "request": {
          "url": "/assets",
          "method": "GET"
        }
      },
      "description": "Get Air Assets"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update Air Asset",
      "routing": {
        "request": {
          "url": "={{`/assets/${String($parameter[\"assetId\"] || \"\").trim()}/versions/${String($parameter[\"versionIdUpdate\"] || \"\").trim()}`}}",
          "method": "PATCH"
        }
      },
      "description": "Update an asset’s details"
    },
    {
      "name": "Complete Upload",
      "value": "completeUpload",
      "action": "Complete Upload",
      "routing": {
        "request": {
          "url": "/uploads/completeMultipart",
          "method": "POST"
        }
      },
      "description": "Finalize multipart upload with part ETags"
    },
    {
      "name": "Initiate Upload",
      "value": "initiateUpload",
      "action": "Initiate Upload",
      "routing": {
        "request": {
          "url": "/uploads",
          "method": "POST"
        }
      },
      "description": "Initiate multipart upload and get signed part URLs"
    },
    {
      "name": "Upload Part",
      "value": "uploadPart",
      "action": "Get Signed URL for Upload Part",
      "routing": {
        "request": {
          "url": "/uploads/uploadPart",
          "method": "POST"
        }
      },
      "description": "Request a signed URL to upload a specific part"
    },
    {
      "name": "Add Assets",
      "value": "addAssets",
      "action": "Add Assets to Board",
      "routing": {
        "request": {
          "url": "={{`/boards/${String($parameter[\"boardId\"] || \"\").trim()}/assets`}}",
          "method": "POST"
        }
      },
      "description": "Associate one or more assets with a board"
    },
    {
      "name": "Apply Custom Field",
      "value": "applyCustomField",
      "action": "Apply Custom Field to Board",
      "routing": {
        "request": {
          "url": "={{`/boards/${String($parameter[\"boardId\"] || \"\").trim()}/customfields/${String($parameter[\"customFieldId\"] || \"\").trim()}`}}",
          "method": "PUT"
        }
      },
      "description": "Set or unset custom field value(s) on a board"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create Air Board",
      "routing": {
        "request": {
          "url": "/boards",
          "method": "POST"
        }
      },
      "description": "Create Air Board"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get Air Boards",
      "routing": {
        "request": {
          "url": "/boards",
          "method": "GET"
        }
      },
      "description": "Get Air Boards"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update Air Board",
      "routing": {
        "request": {
          "url": "={{`/boards/${String($parameter[\"boardId\"] || \"\").trim()}`}}",
          "method": "PATCH"
        }
      },
      "description": "Update a board’s title, description, or parent"
    },
    {
      "name": "Add Value",
      "value": "addValue",
      "action": "Add Custom Field Value",
      "routing": {
        "request": {
          "url": "={{`/customFields/${String($parameter[\"customFieldId\"] || \"\").trim()}/values`}}",
          "method": "POST"
        }
      },
      "description": "Add a new selectable value to a custom field"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create Air Custom Field",
      "routing": {
        "request": {
          "url": "/customFields",
          "method": "POST"
        }
      },
      "description": "Create Air Custom Field"
    },
    {
      "name": "Delete Value",
      "value": "deleteValue",
      "action": "Delete Custom Field Value",
      "routing": {
        "request": {
          "url": "={{`/customFields/${String($parameter[\"customFieldId\"] || \"\").trim()}/values/${String($parameter[\"valueId\"] || \"\").trim()}`}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a selectable value from a custom field"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get Air Custom Fields",
      "routing": {
        "request": {
          "url": "/customFields",
          "method": "GET"
        }
      },
      "description": "Get Air Custom Fields"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update Air Custom Field",
      "routing": {
        "request": {
          "url": "={{`/customFields/${String($parameter[\"customFieldId\"] || \"\").trim()}`}}",
          "method": "PATCH"
        }
      },
      "description": "Update an existing Air custom field"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get Air Tags",
      "routing": {
        "request": {
          "url": "/tags",
          "method": "GET"
        }
      },
      "description": "Get Air Tags"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create Air Tag",
      "routing": {
        "request": {
          "url": "/tags",
          "method": "POST"
        }
      },
      "description": "Create Air Tag"
    }
  ]

npm_readme:
  # n8n-nodes-air

  A community node for [n8n](https://n8n.io) that lets you programmatically interact with your [Air](https://air.inc) workspaces — upload and manage assets, organize boards, and wire Air into the rest of your stack.

  Air is a Creative Ops system for marketing and creative teams, designed to store, search, approve, and share visual content at scale.:contentReference[oaicite:0]{index=0}

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

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

  ## Installation

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



  ## Operations


  This node gives n8n workflows access to a subset of the [Air API](https://developer.air.inc/). Typical automations include:​:contentReference

  - **Assets**
    - Upload new assets to Air from any n8n source (S3, GDrive, FTP, webhooks, etc.)
    - List / search assets by metadata or keywords
    - Retrieve details for a specific asset
    - Update asset metadata (title, description, tags, custom fields)
    - Optionally delete or archive assets

  - **Boards**
    - List boards in a workspace
    - Get board details
    - Add / remove assets on boards
    - Drive board organization from other systems (e.g. CRM, project tools)

  - **Custom Fields**
    - List Custom Fields
    - Create Custom Field
    - Update Custom Field (name/description)
    - Add New Values
    - Delete Values

  - **Tags**
    - List Tags
    - Create Tags

  - **Uploads**
    - Create Upload URL
    - Complete Upload Part (files > 5 GB)
    - Complete Uplaod (files > 5 GB)

  > ⚠️ The exact list of operations may evolve. Always check the node’s **Resource** and **Operation** dropdowns in the n8n UI for the current surface area.

  ## Credentials

  Air's API uses:

  \- x-api-key

  \- x-air-workspace-id

  ## Compatibility

  _No known compatibility issues._

  ## Usage
      
  ### Basic Upload Workflow

  Steps to upload assets using binary input.

  ### Metadata Enrichment

  Fetch assets, enrich metadata, update Air.

  ### Board Syncing

  Sync boards with data from project tools.

  ## Compatibility

  \- Works with modern n8n 1.x builds.

  \- Best for self-hosted installations.

  ## Resources

  * [Air Application](https://app.air.inc)
  * [Air Developer Documentation](https://developer.air.inc)
  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)


  ## Version history

  _See CHANGELOG.md for version notes._

ai_documentation_summary:
  {"purpose":"The Air node enables n8n workflows to interact with the Air platform by uploading, managing, and organizing assets, boards, custom fields, and tags, facilitating integration between creative workflows and other systems.","capabilities":["Upload assets from various sources (S3, GDrive, FTP, webhooks, etc.)","List, search, retrieve, update, and delete assets by metadata or keywords","Manage boards including listing, retrieving details, and adding/removing assets","Create, list, update, and delete custom fields and their values","Create, list, and manage tags","Generate upload URLs and complete large file uploads (over 5 GB)"],"authentication":"API key and workspace ID (x-api-key and x-air-workspace-id headers)","commonUseCases":["Automated asset uploads from external storage systems","Metadata enrichment and updating of assets in Air","Synchronizing boards with CRM or project management tools","Managing custom fields and tags for structured content organization"],"limitations":["Limited to a subset of the Air API; full functionality may not be available","Exact operations may evolve; users should verify via n8n UI dropdowns","Best suited for self-hosted n8n installations; compatibility with cloud versions not explicitly confirmed"],"relatedNodes":["n8n-nodes-s3","n8n-nodes-gdrive","n8n-nodes-webhook","n8n-nodes-crm"]}


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-01-07 20:08:16
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-01-07T20:08:16.037Z
ai_summary_generated_at: 2026-01-08 10:45:32
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":"The Mallabe Barcodes node enables users to generate and scan various types of barcodes, including QR codes, UPC, EAN, and others, within n8n workflows.","capabilities":["Generate Barcode","Generate QR Code","Scan Barcode","Scan QR Code"],"authentication":"None required","commonUseCases":["Creating QR codes for links or product information","Generating UPC or EAN barcodes for inventory management","Scanning barcodes or QR codes in automated processes","Integrating barcode generation into customer onboarding or shipping workflows"],"limitations":[],"relatedNodes":["n8n-nodes-base.image","n8n-nodes-base.httpRequest"]}


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

updated_at: 2026-01-07 20:08:16
author_name: onlyfans-dev
author_github_url: https://github.com/onlyfansapi/n8n-nodes-onlyfansapi.git
npm_package_name: @onlyfansapi/n8n-nodes-onlyfansapi
npm_version: 1.1.1
community_fetched_at: 2026-01-07T20:08:16.038Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Connect OnlyFans Account",
          "value": "connectOnlyfansAccount"
        },
        {
          "name": "Account",
          "value": "account"
        },
        {
          "name": "Chats",
          "value": "chats"
        },
        {
          "name": "Chat Messages",
          "value": "chatMessages"
        },
        {
          "name": "Mass Messaging",
          "value": "massMessaging"
        },
        {
          "name": "Saved For Later (Messages)",
          "value": "savedForLaterMessages"
        },
        {
          "name": "Posts",
          "value": "posts"
        },
        {
          "name": "Post Labels",
          "value": "postLabels"
        },
        {
          "name": "Post Comments",
          "value": "postComments"
        },
        {
          "name": "Saved For Later (Posts)",
          "value": "savedForLaterPosts"
        },
        {
          "name": "Queue",
          "value": "queue"
        },
        {
          "name": "Fans",
          "value": "fans"
        },
        {
          "name": "Following",
          "value": "following"
        },
        {
          "name": "User List Collections",
          "value": "userListCollections"
        },
        {
          "name": "Media Vault",
          "value": "mediaVault"
        },
        {
          "name": "Media Vault Lists",
          "value": "mediaVaultLists"
        },
        {
          "name": "Media",
          "value": "media"
        },
        {
          "name": "Free Trial Links",
          "value": "freeTrialLinks"
        },
        {
          "name": "Tracking Links",
          "value": "trackingLinks"
        },
        {
          "name": "Transactions",
          "value": "transactions"
        },
        {
          "name": "Statistics",
          "value": "statistics"
        },
        {
          "name": "Chargebacks",
          "value": "chargebacks"
        },
        {
          "name": "Banking",
          "value": "banking"
        },
        {
          "name": "Payouts",
          "value": "payouts"
        },
        {
          "name": "Users",
          "value": "users"
        },
        {
          "name": "Public Profiles",
          "value": "publicProfiles"
        },
        {
          "name": "Notifications",
          "value": "notifications"
        },
        {
          "name": "OnlyFans Settings",
          "value": "onlyFansSettings"
        },
        {
          "name": "Social Media Buttons",
          "value": "socialMediaButtons"
        },
        {
          "name": "Webhooks",
          "value": "webhooks"
        },
        {
          "name": "API Keys",
          "value": "apiKeys"
        },
        {
          "name": "Client Sessions",
          "value": "clientSessions"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Poll Authentication Status",
          "value": "pollAuthenticationStatus"
        },
        {
          "name": "Submit 2FA",
          "value": "submit2FA"
        },
        {
          "name": "Re-authenticate Account",
          "value": "reAuthenticateAccount"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "connectOnlyfansAccount"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Accounts",
          "value": "listAccounts"
        },
        {
          "name": "Get Current Account",
          "value": "getCurrentAccount"
        },
        {
          "name": "Get Model Start Date",
          "value": "getModelStartDate"
        },
        {
          "name": "Get Top Percentage",
          "value": "getTopPercentage"
        },
        {
          "name": "Disconnect Account",
          "value": "disconnectAccount"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Chats",
          "value": "listChats"
        },
        {
          "name": "List Chat Media (Gallery)",
          "value": "listChatMediaGallery"
        },
        {
          "name": "Mute Chat Notifications",
          "value": "muteChatNotifications"
        },
        {
          "name": "Unmute Chat Notifications",
          "value": "unmuteChatNotifications"
        },
        {
          "name": "Start Typing Indicator",
          "value": "startTypingIndicator"
        },
        {
          "name": "Hide Chat",
          "value": "hideChat"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chats"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Chat Messages",
          "value": "listChatMessages"
        },
        {
          "name": "Search Chat Messages",
          "value": "searchChatMessages"
        },
        {
          "name": "Send Message",
          "value": "sendMessage"
        },
        {
          "name": "Delete Message",
          "value": "deleteMessage"
        },
        {
          "name": "Like Message",
          "value": "likeMessage"
        },
        {
          "name": "Unlike Message",
          "value": "unlikeMessage"
        },
        {
          "name": "Pin Message",
          "value": "pinMessage"
        },
        {
          "name": "Unpin Message",
          "value": "unpinMessage"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chatMessages"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Get Mass Message Overview",
          "value": "getMassMessageOverview"
        },
        {
          "name": "List Mass Message Queue",
          "value": "listMassMessageQueue"
        },
        {
          "name": "Get Mass Message",
          "value": "getMassMessage"
        },
        {
          "name": "Send Mass Message",
          "value": "sendMassMessage"
        },
        {
          "name": "Update Mass Message",
          "value": "updateMassMessage"
        },
        {
          "name": "Unsend/Delete Mass Message",
          "value": "unsendDeleteMassMessage"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "massMessaging"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Saved For Later Messages",
          "value": "listSavedForLaterMessages"
        },
        {
          "name": "Get Chat Message Settings",
          "value": "getMessageSettings"
        },
        {
          "name": "Enable/Update Automatic Messaging",
          "value": "enableUpdateAutomaticMessaging"
        },
        {
          "name": "Disable Automatic Messaging",
          "value": "disableAutomaticMessaging"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "savedForLaterMessages"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Posts",
          "value": "listPosts"
        },
        {
          "name": "Get Post",
          "value": "getPost"
        },
        {
          "name": "Send Post",
          "value": "sendPost"
        },
        {
          "name": "Update Post",
          "value": "updatePost"
        },
        {
          "name": "Show Post Statistics",
          "value": "showPostStatistics"
        },
        {
          "name": "Pin/Unpin Post",
          "value": "pinUnpinPost"
        },
        {
          "name": "Archive Post",
          "value": "archivePost"
        },
        {
          "name": "Unarchive Post",
          "value": "unarchivePost"
        },
        {
          "name": "Delete Post",
          "value": "deletePost"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "posts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Labels",
          "value": "listLabels"
        },
        {
          "name": "Create Label",
          "value": "createLabel"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "postLabels"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Post Comments",
          "value": "listPostComments"
        },
        {
          "name": "Create Post Comment",
          "value": "createPostComment"
        },
        {
          "name": "Delete Post Comment",
          "value": "deletePostComment"
        },
        {
          "name": "Like Post Comment",
          "value": "likePostComment"
        },
        {
          "name": "Unlike Post Comment",
          "value": "unlikePostComment"
        },
        {
          "name": "Pin Post Comment",
          "value": "pinPostComment"
        },
        {
          "name": "Unpin Post Comment",
          "value": "unpinPostComment"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "postComments"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Saved For Later Posts",
          "value": "listSavedForLaterPosts"
        },
        {
          "name": "Get Post Settings",
          "value": "getPostSettings"
        },
        {
          "name": "Enable/Update Automatic Posting",
          "value": "enableUpdateAutomaticPosting"
        },
        {
          "name": "Disable Automatic Posting",
          "value": "disableAutomaticPosting"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "savedForLaterPosts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Count Queue Items",
          "value": "countQueueItems"
        },
        {
          "name": "List Queue Items",
          "value": "listQueueItems"
        },
        {
          "name": "Publish Queue Item",
          "value": "publishQueueItem"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "queue"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Active Fans",
          "value": "listActiveFans"
        },
        {
          "name": "List All Fans",
          "value": "listAllFans"
        },
        {
          "name": "List Expired Fans",
          "value": "listExpiredFans"
        },
        {
          "name": "List Latest Fans",
          "value": "listLatestFans"
        },
        {
          "name": "Set Fan's Custom Name",
          "value": "setFansCustomName"
        },
        {
          "name": "Get Fan Notes",
          "value": "getFanNotes"
        },
        {
          "name": "Create/Edit Fan Notes",
          "value": "createEditFanNotes"
        },
        {
          "name": "Clear Fan Notes",
          "value": "clearFanNotes"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "fans"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Active Following",
          "value": "listActiveFollowings"
        },
        {
          "name": "List All Following",
          "value": "listAllFollowings"
        },
        {
          "name": "List Expired Following",
          "value": "listExpiredFollowings"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "following"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List User Lists",
          "value": "listUserLists"
        },
        {
          "name": "Create User List",
          "value": "createUserList"
        },
        {
          "name": "Get User List",
          "value": "getUserList"
        },
        {
          "name": "Update User List",
          "value": "updateUserList"
        },
        {
          "name": "Delete User List",
          "value": "deleteUserList"
        },
        {
          "name": "List User List Users",
          "value": "listUserListUsers"
        },
        {
          "name": "Add Users To User List",
          "value": "addUsersToUserList"
        },
        {
          "name": "Remove User from a User List",
          "value": "removeUserFromAUserList"
        },
        {
          "name": "Clear User List",
          "value": "clearUserList"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "userListCollections"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Vault Media",
          "value": "listVaultMedia"
        },
        {
          "name": "Get Vault Media",
          "value": "getVaultMedia"
        },
        {
          "name": "Delete Vault Media",
          "value": "deleteVaultMedia"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "mediaVault"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Add Media To List",
          "value": "addMediaToList"
        },
        {
          "name": "Create Vault List",
          "value": "createVaultList"
        },
        {
          "name": "Delete Vault List",
          "value": "deleteVaultList"
        },
        {
          "name": "List Vault Lists",
          "value": "listVaultLists"
        },
        {
          "name": "Remove Media From List",
          "value": "removeMediaFromList"
        },
        {
          "name": "Rename Vault List",
          "value": "renameVaultList"
        },
        {
          "name": "Show Vault List",
          "value": "showVaultList"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "mediaVaultLists"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Scrape media from the OnlyFans CDN",
          "value": "scrapeMediaFromTheOnlyFansCDN"
        },
        {
          "name": "Upload media to the OnlyFans CDN",
          "value": "uploadMediaToTheOnlyFansCDN"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "media"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Create Free Trial Link",
          "value": "createFreeTrialLink"
        },
        {
          "name": "Delete Free Trial Link",
          "value": "deleteFreeTrialLink"
        },
        {
          "name": "List Free Trial Link Spenders",
          "value": "listFreeTrialLinkSpenders"
        },
        {
          "name": "List Free Trial Link Subscribers",
          "value": "listFreeTrialLinkSubscribers"
        },
        {
          "name": "List Free Trial Links",
          "value": "listFreeTrialLinks"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "freeTrialLinks"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Create Tracking Link",
          "value": "createTrackingLink"
        },
        {
          "name": "Delete Tracking Link",
          "value": "deleteTrackingLink"
        },
        {
          "name": "List Tracking Link Spenders",
          "value": "listTrackingLinkSpenders"
        },
        {
          "name": "List Tracking Link Subscribers",
          "value": "listTrackingLinkSubscribers"
        },
        {
          "name": "List Tracking Links",
          "value": "listTrackingLinks"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "trackingLinks"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Transactions",
          "value": "listTransactions"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transactions"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Calculate Total Transactions",
          "value": "calculateTotalTransactions"
        },
        {
          "name": "Get Earnings",
          "value": "getEarnings"
        },
        {
          "name": "Get Profile Visitors",
          "value": "getProfileVisitors"
        },
        {
          "name": "Get Subscriber Metrics",
          "value": "getSubscriberMetrics"
        },
        {
          "name": "Get Subscriber Statistics",
          "value": "getSubscriberStatistics"
        },
        {
          "name": "Overview",
          "value": "statisticsOverview"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "statistics"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Calculate Chargeback Ratio",
          "value": "calculateChargebackRatio"
        },
        {
          "name": "List Chargeback Statistics",
          "value": "listChargebackStatistics"
        },
        {
          "name": "List Chargebacks",
          "value": "listChargebacks"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chargebacks"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Get Account Country Details",
          "value": "getAccountCountryDetails"
        },
        {
          "name": "Get Bank Payout Details",
          "value": "getBankPayoutDetails"
        },
        {
          "name": "Get DAC7 Form Details",
          "value": "getDAC7FormDetails"
        },
        {
          "name": "Get Legal and Tax Status",
          "value": "getLegalAndTaxStatus"
        },
        {
          "name": "Get Legal Form Details",
          "value": "getLegalFormDetails"
        },
        {
          "name": "List Available Payout Systems",
          "value": "listAvailablePayoutSystems"
        },
        {
          "name": "List Countries",
          "value": "listCountries"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "banking"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Get Account Balances",
          "value": "getAccountBalances"
        },
        {
          "name": "Get Earning Statistics",
          "value": "getEarningStatistics"
        },
        {
          "name": "Get Eligibility",
          "value": "getEligibility"
        },
        {
          "name": "List Payout Requests",
          "value": "listPayoutRequests"
        },
        {
          "name": "List Transactions (Earnings)",
          "value": "listTransactionsEarnings"
        },
        {
          "name": "Request Manual Withdrawal",
          "value": "requestManualWithdrawal"
        },
        {
          "name": "Update Payout Frequency",
          "value": "updatePayoutFrequency"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "payouts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Get User Details",
          "value": "getUserDetails"
        },
        {
          "name": "Restrict User",
          "value": "restrictUser"
        },
        {
          "name": "Unrestrict User",
          "value": "unrestrictUser"
        },
        {
          "name": "Block User",
          "value": "blockUser"
        },
        {
          "name": "Unblock User",
          "value": "unblockUser"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "users"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Get Profile Details",
          "value": "getProfileDetails"
        },
        {
          "name": "Search Profiles",
          "value": "searchProfiles"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "publicProfiles"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Get Notification Counts",
          "value": "getNotificationCounts"
        },
        {
          "name": "Get Notification Tabs Order",
          "value": "getNotificationTabsOrder"
        },
        {
          "name": "List Notifications",
          "value": "listNotifications"
        },
        {
          "name": "Mark All Notifications As Read",
          "value": "markAllNotificationsAsRead"
        },
        {
          "name": "Search Users In Notifications",
          "value": "searchUsersInNotifications"
        },
        {
          "name": "Update Notification Tabs Order",
          "value": "updateNotificationTabsOrder"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "notifications"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Get Settings",
          "value": "getSettings"
        },
        {
          "name": "Update Profile",
          "value": "updateProfile"
        },
        {
          "name": "Check Username Availability",
          "value": "checkUsernameAvailability"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "onlyFansSettings"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Social Media Buttons",
          "value": "listSocialMediaButtons"
        },
        {
          "name": "Add Social Media Button",
          "value": "addSocialMediaButton"
        },
        {
          "name": "Update Social Media Button",
          "value": "updateSocialMediaButton"
        },
        {
          "name": "Delete Social Media Button",
          "value": "deleteSocialMediaButton"
        },
        {
          "name": "Reorder Social Media Button",
          "value": "reorderSocialMediaButtons"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "socialMediaButtons"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Webhooks",
          "value": "listWebhooks"
        },
        {
          "name": "List Available Events",
          "value": "listAvailableEvents"
        },
        {
          "name": "Create Webhook",
          "value": "createWebhook"
        },
        {
          "name": "Show Webhook",
          "value": "showWebhook"
        },
        {
          "name": "Update Webhook",
          "value": "updateWebhook"
        },
        {
          "name": "Delete Webhook",
          "value": "deleteWebhook"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhooks"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Whoami",
          "value": "whoami"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "apiKeys"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Create Client Session",
          "value": "createClientSession"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "clientSessions"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Poll Authentication Status",
      "value": "pollAuthenticationStatus"
    },
    {
      "name": "Submit 2FA",
      "value": "submit2FA"
    },
    {
      "name": "Re-authenticate Account",
      "value": "reAuthenticateAccount"
    },
    {
      "name": "List Accounts",
      "value": "listAccounts"
    },
    {
      "name": "Get Current Account",
      "value": "getCurrentAccount"
    },
    {
      "name": "Get Model Start Date",
      "value": "getModelStartDate"
    },
    {
      "name": "Get Top Percentage",
      "value": "getTopPercentage"
    },
    {
      "name": "Disconnect Account",
      "value": "disconnectAccount"
    },
    {
      "name": "List Chats",
      "value": "listChats"
    },
    {
      "name": "List Chat Media (Gallery)",
      "value": "listChatMediaGallery"
    },
    {
      "name": "Mute Chat Notifications",
      "value": "muteChatNotifications"
    },
    {
      "name": "Unmute Chat Notifications",
      "value": "unmuteChatNotifications"
    },
    {
      "name": "Start Typing Indicator",
      "value": "startTypingIndicator"
    },
    {
      "name": "Hide Chat",
      "value": "hideChat"
    },
    {
      "name": "List Chat Messages",
      "value": "listChatMessages"
    },
    {
      "name": "Search Chat Messages",
      "value": "searchChatMessages"
    },
    {
      "name": "Send Message",
      "value": "sendMessage"
    },
    {
      "name": "Delete Message",
      "value": "deleteMessage"
    },
    {
      "name": "Like Message",
      "value": "likeMessage"
    },
    {
      "name": "Unlike Message",
      "value": "unlikeMessage"
    },
    {
      "name": "Pin Message",
      "value": "pinMessage"
    },
    {
      "name": "Unpin Message",
      "value": "unpinMessage"
    },
    {
      "name": "Get Mass Message Overview",
      "value": "getMassMessageOverview"
    },
    {
      "name": "List Mass Message Queue",
      "value": "listMassMessageQueue"
    },
    {
      "name": "Get Mass Message",
      "value": "getMassMessage"
    },
    {
      "name": "Send Mass Message",
      "value": "sendMassMessage"
    },
    {
      "name": "Update Mass Message",
      "value": "updateMassMessage"
    },
    {
      "name": "Unsend/Delete Mass Message",
      "value": "unsendDeleteMassMessage"
    },
    {
      "name": "List Saved For Later Messages",
      "value": "listSavedForLaterMessages"
    },
    {
      "name": "Get Chat Message Settings",
      "value": "getMessageSettings"
    },
    {
      "name": "Enable/Update Automatic Messaging",
      "value": "enableUpdateAutomaticMessaging"
    },
    {
      "name": "Disable Automatic Messaging",
      "value": "disableAutomaticMessaging"
    },
    {
      "name": "List Posts",
      "value": "listPosts"
    },
    {
      "name": "Get Post",
      "value": "getPost"
    },
    {
      "name": "Send Post",
      "value": "sendPost"
    },
    {
      "name": "Update Post",
      "value": "updatePost"
    },
    {
      "name": "Show Post Statistics",
      "value": "showPostStatistics"
    },
    {
      "name": "Pin/Unpin Post",
      "value": "pinUnpinPost"
    },
    {
      "name": "Archive Post",
      "value": "archivePost"
    },
    {
      "name": "Unarchive Post",
      "value": "unarchivePost"
    },
    {
      "name": "Delete Post",
      "value": "deletePost"
    },
    {
      "name": "List Labels",
      "value": "listLabels"
    },
    {
      "name": "Create Label",
      "value": "createLabel"
    },
    {
      "name": "List Post Comments",
      "value": "listPostComments"
    },
    {
      "name": "Create Post Comment",
      "value": "createPostComment"
    },
    {
      "name": "Delete Post Comment",
      "value": "deletePostComment"
    },
    {
      "name": "Like Post Comment",
      "value": "likePostComment"
    },
    {
      "name": "Unlike Post Comment",
      "value": "unlikePostComment"
    },
    {
      "name": "Pin Post Comment",
      "value": "pinPostComment"
    },
    {
      "name": "Unpin Post Comment",
      "value": "unpinPostComment"
    },
    {
      "name": "List Saved For Later Posts",
      "value": "listSavedForLaterPosts"
    },
    {
      "name": "Get Post Settings",
      "value": "getPostSettings"
    },
    {
      "name": "Enable/Update Automatic Posting",
      "value": "enableUpdateAutomaticPosting"
    },
    {
      "name": "Disable Automatic Posting",
      "value": "disableAutomaticPosting"
    },
    {
      "name": "Count Queue Items",
      "value": "countQueueItems"
    },
    {
      "name": "List Queue Items",
      "value": "listQueueItems"
    },
    {
      "name": "Publish Queue Item",
      "value": "publishQueueItem"
    },
    {
      "name": "List Active Fans",
      "value": "listActiveFans"
    },
    {
      "name": "List All Fans",
      "value": "listAllFans"
    },
    {
      "name": "List Expired Fans",
      "value": "listExpiredFans"
    },
    {
      "name": "List Latest Fans",
      "value": "listLatestFans"
    },
    {
      "name": "Set Fan's Custom Name",
      "value": "setFansCustomName"
    },
    {
      "name": "Get Fan Notes",
      "value": "getFanNotes"
    },
    {
      "name": "Create/Edit Fan Notes",
      "value": "createEditFanNotes"
    },
    {
      "name": "Clear Fan Notes",
      "value": "clearFanNotes"
    },
    {
      "name": "List Active Following",
      "value": "listActiveFollowings"
    },
    {
      "name": "List All Following",
      "value": "listAllFollowings"
    },
    {
      "name": "List Expired Following",
      "value": "listExpiredFollowings"
    },
    {
      "name": "List User Lists",
      "value": "listUserLists"
    },
    {
      "name": "Create User List",
      "value": "createUserList"
    },
    {
      "name": "Get User List",
      "value": "getUserList"
    },
    {
      "name": "Update User List",
      "value": "updateUserList"
    },
    {
      "name": "Delete User List",
      "value": "deleteUserList"
    },
    {
      "name": "List User List Users",
      "value": "listUserListUsers"
    },
    {
      "name": "Add Users To User List",
      "value": "addUsersToUserList"
    },
    {
      "name": "Remove User from a User List",
      "value": "removeUserFromAUserList"
    },
    {
      "name": "Clear User List",
      "value": "clearUserList"
    },
    {
      "name": "List Vault Media",
      "value": "listVaultMedia"
    },
    {
      "name": "Get Vault Media",
      "value": "getVaultMedia"
    },
    {
      "name": "Delete Vault Media",
      "value": "deleteVaultMedia"
    },
    {
      "name": "Add Media To List",
      "value": "addMediaToList"
    },
    {
      "name": "Create Vault List",
      "value": "createVaultList"
    },
    {
      "name": "Delete Vault List",
      "value": "deleteVaultList"
    },
    {
      "name": "List Vault Lists",
      "value": "listVaultLists"
    },
    {
      "name": "Remove Media From List",
      "value": "removeMediaFromList"
    },
    {
      "name": "Rename Vault List",
      "value": "renameVaultList"
    },
    {
      "name": "Show Vault List",
      "value": "showVaultList"
    },
    {
      "name": "Scrape media from the OnlyFans CDN",
      "value": "scrapeMediaFromTheOnlyFansCDN"
    },
    {
      "name": "Upload media to the OnlyFans CDN",
      "value": "uploadMediaToTheOnlyFansCDN"
    },
    {
      "name": "Create Free Trial Link",
      "value": "createFreeTrialLink"
    },
    {
      "name": "Delete Free Trial Link",
      "value": "deleteFreeTrialLink"
    },
    {
      "name": "List Free Trial Link Spenders",
      "value": "listFreeTrialLinkSpenders"
    },
    {
      "name": "List Free Trial Link Subscribers",
      "value": "listFreeTrialLinkSubscribers"
    },
    {
      "name": "List Free Trial Links",
      "value": "listFreeTrialLinks"
    },
    {
      "name": "Create Tracking Link",
      "value": "createTrackingLink"
    },
    {
      "name": "Delete Tracking Link",
      "value": "deleteTrackingLink"
    },
    {
      "name": "List Tracking Link Spenders",
      "value": "listTrackingLinkSpenders"
    },
    {
      "name": "List Tracking Link Subscribers",
      "value": "listTrackingLinkSubscribers"
    },
    {
      "name": "List Tracking Links",
      "value": "listTrackingLinks"
    },
    {
      "name": "List Transactions",
      "value": "listTransactions"
    },
    {
      "name": "Calculate Total Transactions",
      "value": "calculateTotalTransactions"
    },
    {
      "name": "Get Earnings",
      "value": "getEarnings"
    },
    {
      "name": "Get Profile Visitors",
      "value": "getProfileVisitors"
    },
    {
      "name": "Get Subscriber Metrics",
      "value": "getSubscriberMetrics"
    },
    {
      "name": "Get Subscriber Statistics",
      "value": "getSubscriberStatistics"
    },
    {
      "name": "Overview",
      "value": "statisticsOverview"
    },
    {
      "name": "Calculate Chargeback Ratio",
      "value": "calculateChargebackRatio"
    },
    {
      "name": "List Chargeback Statistics",
      "value": "listChargebackStatistics"
    },
    {
      "name": "List Chargebacks",
      "value": "listChargebacks"
    },
    {
      "name": "Get Account Country Details",
      "value": "getAccountCountryDetails"
    },
    {
      "name": "Get Bank Payout Details",
      "value": "getBankPayoutDetails"
    },
    {
      "name": "Get DAC7 Form Details",
      "value": "getDAC7FormDetails"
    },
    {
      "name": "Get Legal and Tax Status",
      "value": "getLegalAndTaxStatus"
    },
    {
      "name": "Get Legal Form Details",
      "value": "getLegalFormDetails"
    },
    {
      "name": "List Available Payout Systems",
      "value": "listAvailablePayoutSystems"
    },
    {
      "name": "List Countries",
      "value": "listCountries"
    },
    {
      "name": "Get Account Balances",
      "value": "getAccountBalances"
    },
    {
      "name": "Get Earning Statistics",
      "value": "getEarningStatistics"
    },
    {
      "name": "Get Eligibility",
      "value": "getEligibility"
    },
    {
      "name": "List Payout Requests",
      "value": "listPayoutRequests"
    },
    {
      "name": "List Transactions (Earnings)",
      "value": "listTransactionsEarnings"
    },
    {
      "name": "Request Manual Withdrawal",
      "value": "requestManualWithdrawal"
    },
    {
      "name": "Update Payout Frequency",
      "value": "updatePayoutFrequency"
    },
    {
      "name": "Get User Details",
      "value": "getUserDetails"
    },
    {
      "name": "Restrict User",
      "value": "restrictUser"
    },
    {
      "name": "Unrestrict User",
      "value": "unrestrictUser"
    },
    {
      "name": "Block User",
      "value": "blockUser"
    },
    {
      "name": "Unblock User",
      "value": "unblockUser"
    },
    {
      "name": "Get Profile Details",
      "value": "getProfileDetails"
    },
    {
      "name": "Search Profiles",
      "value": "searchProfiles"
    },
    {
      "name": "Get Notification Counts",
      "value": "getNotificationCounts"
    },
    {
      "name": "Get Notification Tabs Order",
      "value": "getNotificationTabsOrder"
    },
    {
      "name": "List Notifications",
      "value": "listNotifications"
    },
    {
      "name": "Mark All Notifications As Read",
      "value": "markAllNotificationsAsRead"
    },
    {
      "name": "Search Users In Notifications",
      "value": "searchUsersInNotifications"
    },
    {
      "name": "Update Notification Tabs Order",
      "value": "updateNotificationTabsOrder"
    },
    {
      "name": "Get Settings",
      "value": "getSettings"
    },
    {
      "name": "Update Profile",
      "value": "updateProfile"
    },
    {
      "name": "Check Username Availability",
      "value": "checkUsernameAvailability"
    },
    {
      "name": "List Social Media Buttons",
      "value": "listSocialMediaButtons"
    },
    {
      "name": "Add Social Media Button",
      "value": "addSocialMediaButton"
    },
    {
      "name": "Update Social Media Button",
      "value": "updateSocialMediaButton"
    },
    {
      "name": "Delete Social Media Button",
      "value": "deleteSocialMediaButton"
    },
    {
      "name": "Reorder Social Media Button",
      "value": "reorderSocialMediaButtons"
    },
    {
      "name": "List Webhooks",
      "value": "listWebhooks"
    },
    {
      "name": "List Available Events",
      "value": "listAvailableEvents"
    },
    {
      "name": "Create Webhook",
      "value": "createWebhook"
    },
    {
      "name": "Show Webhook",
      "value": "showWebhook"
    },
    {
      "name": "Update Webhook",
      "value": "updateWebhook"
    },
    {
      "name": "Delete Webhook",
      "value": "deleteWebhook"
    },
    {
      "name": "Whoami",
      "value": "whoami"
    },
    {
      "name": "Create Client Session",
      "value": "createClientSession"
    }
  ]

npm_readme:
  # n8n-nodes-onlyfansapi
  ![Example workflow](/images/example.png)

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

  OnlyFans API is an unofficial API for OnlyFans, a popular content subscription service, to automate your workflows with ease.

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

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

  ## Installation

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

  ## Operations

  This node supports the following resources and operations:

  ### Account
  - **Get Account** - Get OnlyFans Profile details for an Account
  - **Get Many** - List many connected OnlyFans accounts
  - **Get Model Start Date** - Get the start date of the model (the date+time monetization was enabled)
  - **Disconnect Account** - Disconnect an OnlyFans account

  ### API Key
  - **Whoami** - Get details about the currently used API Key & the relevant Team

  ### Banking
  - **Get Account Country Details** - Returns the account owner's country details for banking
  - **Get Bank Payout Details** - Returns the account owner's bank payout details
  - **Get DAC7 Form Details** - Returns the account owner's DAC7 form information required for tax reporting
  - **Get Legal and Tax Status** - Returns the account owner's legal and tax status required for banking
  - **Get Legal Form Details** - Returns the account owner's legal form details for banking
  - **List Available Payout Systems** - Returns a list of available payout systems for the account
  - **List Countries** - Returns a list of countries available for banking configuration

  ### Chargeback
  - **Calculate Chargeback Ratio** - Calculate the chargeback ratio (chargebacks vs total payments)
  - **Get Many** - Retrieve a list of chargebacks within a specified date range
  - **List Chargeback Statistics** - List chargeback counts & amounts per hour, day or month

  ### Chat
  - **Get Many** - Get the list of chats for an Account
  - **List Chat Media (Gallery)** - List media files shared in a specific chat
  - **Mute Chat Notifications** - Mute notifications for a specific chat
  - **Start Typing Indicator** - Start the typing indicator for a specific chat
  - **Unmute Chat Notifications** - Unmute notifications for a specific chat

  ### Chat Message
  - **Delete Message** - Delete a message from a chat (only messages sent less than 24 hours ago)
  - **Get Many** - Get messages from a specific chat
  - **Like Message** - Like a chat message
  - **Pin Message** - Pin a message from a chat
  - **Send Message** - Send a new message to a chat
  - **Unlike Message** - Unlike a chat message
  - **Unpin Message** - Unpin a message from a chat

  ### Client Session
  - **Create Client Session** - Create Client Session Token for later use in embedded auth components

  ### Connect OnlyFans Account
  - **Poll Authentication Status** - Poll the status of the authentication process
  - **Re-Authenticate Account** - Trigger account reauthentication without the need to submit email & password again
  - **Start Authentication** - Start the authentication process for a new account
  - **Submit 2FA** - Submit the 2FA code for the authentication process

  ### Fan
  - **List Active Fans** - Get a paginated list of active fans for an Account
  - **List All Fans** - Get a paginated list of all fans for an Account
  - **List Expired Fans** - Get a paginated list of expired fans for an Account
  - **List Latest Fans** - Get a paginated list of latest fans for an Account
  - **Set Custom Name** - Change the fan's custom name shown in OnlyFans

  ### Following
  - **List Active Followings** - Get a paginated list of active followings for an Account
  - **List All Followings** - Get a paginated list of all followings for an Account
  - **List Expired Followings** - Get a paginated list of expired followings for an Account

  ### Free Trial Link
  - **Create Free Trial Link** - Create a free trial link for the account
  - **Delete Free Trial Link** - Delete a free trial link by its ID
  - **Get Many** - List many free trial links for the account, including the details and statistics
  - **List Free Trial Link Spenders** - Only available if we already scraped subscribers and calculated revenue per fan
  - **List Free Trial Link Subscribers** - Get list of subscribers who joined through a Free Trial Link

  ### Mass Messaging
  - **Get Mass Message** - Get the content of a mass message
  - **List Mass Message Queue** - List the pending or recently sent mass messages in the message queue
  - **List Mass Message Statistics** - List mass messaging statistics, showing the send count and view count
  - **Send Mass Message** - Send a mass message to lists and/or users
  - **Unsend/Delete Mass Message** - Unsend a recently sent mass message, or delete a scheduled/saved message
  - **Update Mass Message** - Update a mass message

  ### Media
  - **Scrape Media From The OnlyFans CDN** - Scrapes a https://cdn*.onlyfans.com/* URL and uploads it to the OnlyFans API CDN (max file size: 500MB)

  ### Media Vault
  - **Delete Vault Media** - Delete one or multiple media from your vault
  - **Get Many** - List media items stored in your vault

  ### Media Vault List
  - **Add Media To List** - Add one or multiple media to a list
  - **Create Vault List** - Create a new Vault list
  - **Delete Vault List** - Delete a Vault list
  - **Get Many** - List your Vault lists (categories)
  - **Remove Media From List** - Remove one or multiple media from a list
  - **Rename Vault List** - Rename a Vault list
  - **Show Vault List** - Show a Vault list

  ### Notification
  - **Get Many** - List many notifications for the account
  - **Get Notification Counts** - Get a quick overview of all unread notification types
  - **Get Notification Tabs Order** - Get the order of an account's notification tabs
  - **Mark All Notifications As Read** - Mark all notifications of this account as read
  - **Search Users In Notifications** - Search users that have appeared in your notifications
  - **Update Notification Tabs Order** - Update the order of an account's notification tabs

  ### Payout
  - **Get Account Balances** - Get the current available and pending balances for the account
  - **Get Earning Statistics** - Get total and monthly time-series earning statistics for the account
  - **Get Eligibility** - Get the eligibility details for receiving payouts
  - **List Payout Requests** - List all payout requests for the account
  - **List Transactions (Earnings)** - List all transactions for the account
  - **Request Manual Withdrawal** - Request a payout withdrawal, if the frequency is set to manual
  - **Update Payout Frequency** - Update the payout frequency for the account (Manual, Weekly or Monthly)

  ### Post
  - **Archive Post** - Archive a post from your account
  - **Delete Post** - Delete a post from your account
  - **Get** - Retrieve details of a post from your account
  - **Get Many** - Get posts from your OnlyFans account
  - **Pin/Unpin Post** - Pin or unpin a post to your account
  - **Send Post** - Compose and send a new post to your OnlyFans account
  - **Show Post Statistics** - Get statistics for a specific post
  - **Unarchive Post** - Unarchive a post from your account
  - **Update Post** - Update a posted, queued, or "saved for later" post

  ### Post Comment
  - **Create Comment** - Create a comment on one of your posts
  - **Delete Comment** - Delete a comment on one of your posts
  - **Get Many** - Get comments from one of your posts
  - **Like Comment** - Like a comment on one of your posts
  - **Pin Comment** - Pin a comment on one of your posts
  - **Unlike Comment** - Unlike a comment on one of your posts
  - **Unpin Comment** - Unpin a comment from one of your posts

  ### Post Label
  - **Create Label** - Create a new post label
  - **Get Many** - List the labels that you can use to organize your posts

  ### Public Profile
  - **Get** - Get profile details by username
  - **Search** - Full-text search for profiles with filters

  ### Queue
  - **Count Items** - Count posts and messages in the queue
  - **Get Many** - List posts and messages in the queue
  - **Publish Item** - Publish a queue item or "saved for later" item immediately

  ### Saved For Later Message
  - **Disable Automatic Messaging** - Disable automatic messaging of Saved For Later messages
  - **Enable Automatic Messaging** - Enable or update automatic messaging of Saved For Later messages
  - **Get Many** - List many messages that are marked as "Save For Later"
  - **Get Settings** - Get the Saved For Later message settings

  ### Saved For Later Post
  - **Disable Automatic Posting** - Disable automatic posting of Saved For Later posts
  - **Enable Automatic Posting** - Enable or update automatic posting of Saved For Later posts
  - **Get Many** - List many posts that are marked as "Save For Later"
  - **Get Settings** - Get the Saved For Later post settings

  ### Setting
  - **Check Username Availability** - Check if a username is taken
  - **Get Settings** - Returns the account settings
  - **Update Profile** - Update the account profile

  ### Statistic
  - **Calculate Total Transactions** - Calculate the total transactions and amounts
  - **Get Earnings** - Get the earnings for a given period
  - **Get Profile Visitors** - Get the number of profile visitors for a given period
  - **Get Subscriber Metrics** - Get subscriber metrics for a given period
  - **Get Subscriber Statistics** - Get subscriber statistics for a given period
  - **Overview** - Get an overview of statistics

  ### Tracking Link
  - **Create** - Create a new tracking link
  - **Delete** - Delete a tracking link
  - **Get Many** - List many tracking links for the account with revenue data
  - **Get Spenders** - Get list of spenders who made purchases through a tracking link
  - **Get Subscribers** - Get list of subscribers who joined through a tracking link

  ### Transaction
  - **Get Many** - Get a paginated list of transactions for an account (newest first)

  ### User
  - **Get** - Get OnlyFans profile details for a given username

  ### User List
  - **Add Users to User List** - Add multiple Users To OnlyFans User List
  - **Create User List** - Create a OnlyFans User List
  - **Delete User List** - Delete a OnlyFans User List
  - **Get** - Get a single user list
  - **Get Many** - Get a list of OnlyFans Collections - User Lists
  - **Get Users in List** - Get all users in a OnlyFans user list
  - **Remove User From a User List** - Remove User from OnlyFans User List
  - **Update User List** - Update a OnlyFans User List

  ### Webhook
  - **Create** - Create a new webhook for your team
  - **Delete** - Delete an existing webhook

  ## Credentials

  To make use of the OnlyFans API node, you must have an OnlyFans API account. Follow these simple steps:
  1. Sign up for an account at [OnlyFans API](https://app.onlyfansapi.com)
  2. Go to the OnlyFans API console -> API Keys
      ![API Keys navigation item](/images/api-keys/api-keys-nav-item.png)
  3. Create a new API key
      ![Create API Key button](/images/api-keys/create-api-key-button.png)
  4. Give it a name, and press "Add"
      ![API Key creation form](/images/api-keys/api-key-creation-form.png)
  5. Copy the API key to your clipboard
      ![Save API Key](/images/api-keys/save-api-key.png)
  6. In n8n, create a new credential for the OnlyFans API node, and paste the API key into the "API Key" field.

  ## Compatibility
  Tested with n8n version 1.115.0 and above. Earlier versions may work but are not officially supported.

  ## Usage
  ### Getting Started with n8n

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

  ### Understanding OnlyFans API

  Before using this node, we recommend familiarizing yourself with the [OnlyFans API documentation](https://docs.onlyfansapi.com/introduction) to understand:

  - What OnlyFans API is and what it offers
  - The available features and capabilities
  - How to work with OnlyFans accounts
  - Best practices for API usage

  The OnlyFans API platform provides a comprehensive REST API that allows you to interact with OnlyFans without needing to build your own proxy management system or reverse engineer the API. With this n8n node, you can easily integrate these capabilities into your automated workflows.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [OnlyFans API introduction](https://docs.onlyfansapi.com/introduction)
  * [Connecting an OnlyFans account](https://docs.onlyfansapi.com/introduction/guides/connect-onlyfans-account)
  * [OnlyFans API credit structure](https://docs.onlyfansapi.com/introduction/essentials/credits)
  * [API reference](https://docs.onlyfansapi.com/api-reference)
  * [Webhooks](https://docs.onlyfansapi.com/webhooks)
  * [FAQ](https://docs.onlyfansapi.com/faq)

  ## Version history
  ### 0.1
  - Initial release with support for all OnlyFans API resources and operations.

ai_documentation_summary:
  {"purpose":"The OnlyFans API node enables integration with the OnlyFans platform through its unofficial API, allowing users to automate tasks such as managing accounts, chats, media, fan interactions, and financial data within n8n workflows.","capabilities":["Get account profile details","List connected accounts and fans","Manage chat messages and notifications","Send and delete mass messages","Handle banking and tax-related information","Create and manage free trial links","Scrape and upload media from OnlyFans CDN","Manage media vault and lists","Authenticate and re-authenticate accounts","Calculate chargeback ratios and retrieve chargeback data"],"authentication":"API key required; authentication process includes starting authentication, submitting 2FA, and re-authentication via polling status","commonUseCases":["Automating fan engagement through chat and message management","Monitoring chargebacks and financial performance","Managing content distribution via media vault and CDN scraping","Sending bulk messages to fans or followings","Tracking active fans and followings"],"limitations":["Unofficial API – may not be officially supported by OnlyFans","Rate limits or usage restrictions not specified in documentation","Limited support for certain features (e.g., only available if revenue data is pre-scraped)","No support for full OAuth2 or embedded login flows"],"relatedNodes":["n8n nodes for social media automation","n8n nodes for email and messaging","n8n nodes for financial data integration"]}


node_type: n8n-nodes-twittershots.twitterShots
package_name: n8n-nodes-twittershots
display_name: TwitterShots
description: Get Tweet screenshots from TwitterShots API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  {
  "type": "main",
  "required": true
  }
  ]

updated_at: 2026-01-07 20:08:16
author_name: wuxinhua
author_github_url: https://github.com/0xinhua/
npm_package_name: n8n-nodes-twittershots
npm_version: 0.3.0
community_fetched_at: 2026-01-07T20:08:16.039Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "tweetScreenshot",
      "options": [
        {
          "name": "Tweet Screenshot",
          "value": "tweetScreenshot"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a tweet screenshot",
          "description": "Get a screenshot of a tweet"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tweetScreenshot"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get a tweet screenshot",
      "description": "Get a screenshot of a tweet"
    }
  ]

npm_readme:
  ![n8n TwitterShots node image](./n8n-TwitterShots-node.png)

  # n8n-nodes-twittershots

  A n8n node lets you easily screenshot X (Twitter) posts in your workflows with TwitterShots API.

  - [TwitterShots](https://twittershots.com/) is professional X/Tweet screenshot generator.
  - [n8n](https://n8n.io/) is a fair-code licensed workflow automation platform.

  ## Features

  - Multiple output formats (SVG, PNG, HTML)
  - Light/Dark theme support
  - Customizable logo options (X, bluebird, or none)
  - Configurable display options (full text, timestamp, view count, statistics)
  - Simple API integration

  ## Authentication

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

  1. Visit [TwitterShots account](https://twittershots.com/account/settings) to get your API key
  2. Add your API key to n8n credentials

  For detailed information about API credentials and parameters, please refer to the [API Documentation](https://twittershots.com/docs/api).

  ## Usage

  1. Search TwitterShots and add TwitterShots node to your workflow
  2. Select "Tweet Screenshot" resource
  3. Select "Get a tweet screenshot" action
  4. Create TwitterShots API credentials
  5. Select Tweet Screenshot Resource
  6. Enter the tweet ID and configure output format and display options
  7. Run the workflow to get your screenshot

  ## Dev and test node local

  ### 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/).

  1.Clone your new repo

    ```
    git clone https://github.com/0xinhua/n8n-nodes-twittershots
    ```

  2.When you are ready to test your node, publish it locally

  ```
  # In your n8n-nodes-twittershots directory
  npm i
  npm run build
  npm link
  ```

  3. Install the node into your local n8n instance:

  ```
  ~/.n8n/custom/

  # In the nodes directory within your n8n installation
  npm link n8n-nodes-twittershots
  ```

  4.Start n8n:

  ```
  n8n start
  ```

  5.Open n8n in your browser. You should see TwitterShots nodes when you search for them in the nodes panel.

  Checkout full docs [test n8n node](https://docs.n8n.io/integrations/creating-nodes/build/declarative-style-node/#test-your-node).

  ### Issues

  If you need help or have any questions:

  - Check the [API Documentation](https://twittershots.com/docs/api)
  - Email us at support@twittershots.com
  - Create an issue on [GitHub Issues](https://github.com/0xinhua/n8n-nodes-twittershots/issues)

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"The TwitterShots node retrieves screenshots of X (Twitter) posts using the TwitterShots API, allowing users to generate visual representations of tweets in their n8n workflows.","capabilities":["Generate screenshots of tweets in multiple formats (SVG, PNG, HTML)","Support for light and dark themes","Customizable logo options (X, bluebird, or none)","Configurable display elements (full text, timestamp, view count, statistics)","Simple integration via API"],"authentication":"API key required; obtain it from the TwitterShots account settings and add it to n8n credentials","commonUseCases":["Automating tweet screenshot generation for social media analytics","Creating visual content from tweets for marketing or reporting","Integrating tweet visuals into email campaigns or dashboards"],"limitations":[],"relatedNodes":["Social media nodes","Image generation nodes","Workflow automation nodes"]}


node_type: n8n-nodes-videotoblog.videoToBlog
package_name: n8n-nodes-videotoblog
display_name: VideoToBlog
description: Emits events from Video To Blog when a post is exported
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: andrewp629
author_github_url: https://github.com/Video-To-Blog/
npm_package_name: n8n-nodes-videotoblog
npm_version: 1.0.3
community_fetched_at: 2026-01-07T20:08:16.040Z
ai_summary_generated_at: 2026-01-08 10:45:32
npm_readme:
  # n8n-nodes-videotoblog

  Community node(s) to integrate Video To Blog with n8n.

  - Nodes
    - VideoToBlog (Trigger): Emits an item when a post is exported in Video To Blog

  ## Quick Start

  1. Install and link locally:

  ```sh
  npm run build
  npm link
  # In your n8n custom dir (~/.n8n/custom)
  npm link n8n-nodes-videotoblog
  n8n start
  ```

  2. Open n8n and add "VideoToBlog" as the first node.
     - Destination: a friendly label (e.g., "Docs")
     - Credentials: VideoToBlog API (enter your n8n API key from Video To Blog Integrations)
  3. Click "Listen for test event" to register the Test URL, or Activate the workflow to register the Production URL automatically.
  4. Export a blog post from Video To Blog. The trigger will output one item with:
     - html, markdown, emailHtml, title, metaDescription, metaTitle, slug, tags

  Optional: None - the trigger auto-registers/unregisters its webhook.

  ## Node parameters

  - Destination (string): Friendly identifier for your publishing target in n8n
  - Trigger Event (fixed): Post Exported
    

  ## Credentials

  - VideoToBlog API: Generic header auth, adds `x-api-key: <your_key>`.

  ## Docs & references

  - VideoToBlog n8n integration guide: https://docs.videotoblog.ai/en/help/articles/2997507-n8n
  - n8n submission checklist: https://docs.n8n.io/integrations/creating-nodes/deploy/submit-community-nodes/

  ## HTTPS and modes

  - No Base URL field is required in the node UI.
  - Test mode (Execute Node) uses the local Test webhook URL; activation registers the Production webhook URL.

  ## Development

  - Lint/build/test with the n8n node CLI scripts already included:
    - `npm run lint`
    - `npm run dev`
    - `npm run build`

  ## Compatibility

  - n8n: 1.x
  - License: MIT

ai_documentation_summary:
  {"purpose":"The VideoToBlog node acts as a trigger that emits an event whenever a blog post is exported from Video To Blog, enabling automation workflows based on post exports.","capabilities":["Detects when a blog post is exported in Video To Blog","Outputs event data including title, slug, HTML, markdown, email HTML, meta tags, and tags","Supports webhook-based triggering with automatic registration of test or production URLs"],"authentication":"API key authentication via a generic header (x-api-key: <your_key>)","commonUseCases":["Automatically publish blog posts to a content management system or email service upon export","Sync blog post metadata to another platform for analytics or content planning","Trigger downstream actions like email notifications or social media sharing when a post is exported"],"limitations":[],"relatedNodes":["n8n-nodes-base.trigger","n8n-nodes-base.function","n8n-nodes-base.set"]}


node_type: @postnitro/n8n-nodes-postnitro-ai.postNitro
package_name: @postnitro/n8n-nodes-postnitro-ai
display_name: PostNitro
description: Interact with PostNitro Embed API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: postnitro
author_github_url: https://github.com/postnitro/n8n-nodes-postnitro-ai.git
npm_package_name: @postnitro/n8n-nodes-postnitro-ai
npm_version: 0.1.2
community_fetched_at: 2026-01-07T20:08:16.040Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "embedPost",
      "options": [
        {
          "name": "Embed Post",
          "value": "embedPost"
        }
      ],
      "displayName": "Resource"
    },
    {
      "name": "operation",
      "type": "options",
      "default": "aiFromText",
      "options": [
        {
          "name": "Generate Carousel from Text (AI)",
          "value": "aiFromText",
          "action": "Generate carousel using AI from plain text"
        },
        {
          "name": "Generate Carousel from an Article URL (AI)",
          "value": "aiFromArticle",
          "action": "Generate carousel using AI from an Article URL"
        },
        {
          "name": "Generate Carousel from an X (Twitter) Post (AI)",
          "value": "aiFromXPost",
          "action": "Generate carousel using AI from an X (Twitter) post URL"
        },
        {
          "name": "Import Carousel Slides",
          "value": "importSlides",
          "action": "Create carousel by Importing a predefined set of slides content"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate Carousel from Text (AI)",
      "value": "aiFromText",
      "action": "Generate carousel using AI from plain text"
    },
    {
      "name": "Generate Carousel from an Article URL (AI)",
      "value": "aiFromArticle",
      "action": "Generate carousel using AI from an Article URL"
    },
    {
      "name": "Generate Carousel from an X (Twitter) Post (AI)",
      "value": "aiFromXPost",
      "action": "Generate carousel using AI from an X (Twitter) post URL"
    },
    {
      "name": "Import Carousel Slides",
      "value": "importSlides",
      "action": "Create carousel by Importing a predefined set of slides content"
    }
  ]

npm_readme:
  # n8n-nodes-postnitro-ai

  This is an n8n community node. It lets you use [PostNitro](https://postnitro.ai) in your n8n workflows.

  PostNitro.ai is a platform for creating and publishing social media carousels and visuals.

  The PostNitro Embed API is an embed-friendly API to generate carousel posts, images, and PDFs using AI or imported slide content to create carousels.


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

  ## Installation

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

  ## Operations

  The PostNitro node supports:
  - Generate Carousel from Text (AI)
  - Generate Carousel from Article URL (AI)
  - Generate Carousel from X (Twitter) Post (AI)
  - Import Carousel Slides

  Optional behaviors:
  - Wait for completion: Poll the post status until it completes or fails
  - On complete: Return status only, or fetch the generated output
  - Download output as binary: Attach the generated file(s) to the workflow item

  ## Credentials

  This node requires API credentials for the PostNitro Embed API.

  Prerequisites:
  - A PostNitro account and API key

  Setup in n8n:
  - Create credentials of type `PostNitro Embed API`
  - Fields:
    - API Base URL: Base URL of the PostNitro Embed API (for example, `https://embed-api.postnitro.ai`)
    - API Key: Your API key (sent as `embed-api-key` header)

  ## Compatibility

  - Minimum n8n version: 1.0+
  - Tested with `n8n-workflow` ^1.40.0 and TypeScript ^5.4.0

  ## Usage

  Basic flow:
  1. Choose an operation (AI generation from Text/Article/X, or Import Slides)
  2. Provide required fields such as `templateId`, `brandId`, and (for AI flows) `presetId`
  3. Optionally enable "Wait for Completion" to poll status and then fetch output
  4. If you choose to fetch output, you can return just the JSON or download the file(s) as binary

  Output formats:
  - PDF: Single file
  - PNG: Multiple images (array). If "Download Output as Binary" is enabled, multiple binary properties will be attached (e.g., `data1`, `data2`, ...)

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [PostNitro Embed API documentation](https://postnitro.ai/docs/embed/api)

  ## Version history

  - 0.1.0: Initial release with AI generation (Text/Article/X), Import Slides, status polling, and binary download options.
  - 0.1.1: postType drop down set to CAROUSEL type only
  - 0.1.2: implemented fixes suggested in node review

ai_documentation_summary:
  {"purpose":"The PostNitro node enables n8n users to generate social media carousels, images, and PDFs using AI or imported slide content via the PostNitro Embed API, integrating seamlessly into workflows for content creation and publishing.","capabilities":["Generate carousel from text (AI)","Generate carousel from article URL (AI)","Generate carousel from X (Twitter) post (AI)","Import carousel slides","Poll for completion status of generated content","Return generated output as JSON or download as binary files (PDF or PNG)","Support for multiple output formats including single PDF and multiple PNG images"],"authentication":"API key required; provide API Base URL and API Key in credentials (sent as 'embed-api-key' header)","commonUseCases":["Automatically generate social media carousels from blog posts or articles","Create AI-powered visual content from text inputs for marketing campaigns","Import existing slide decks and convert them into carousels","Publish content to social media platforms with automated workflow triggers"],"limitations":[],"relatedNodes":["n8n core nodes for data handling and workflow control","Nodes for social media publishing or content delivery"]}


node_type: n8n-nodes-pdforge.pdforge
package_name: n8n-nodes-pdforge
display_name: PDF Noodle
description: Generate PDF from HTML or reusable templates with PDF Noodle (previously pdforge).
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: mabreum
author_github_url: https://github.com/pdforge/
npm_package_name: n8n-nodes-pdforge
npm_version: 2.3.3
community_fetched_at: 2026-01-07T20:08:16.041Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "pdf",
      "options": [
        {
          "name": "Generate PDF",
          "value": "pdf"
        },
        {
          "name": "Generate Image",
          "value": "image"
        },
        {
          "name": "Convert HTML to PDF",
          "value": "html-to-pdf"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sync",
      "options": [
        {
          "name": "Generate Syncronously",
          "value": "sync",
          "action": "Generate PDF syncronously",
          "description": "Generate PDF syncronously"
        },
        {
          "name": "Generate Asynchronously",
          "value": "async",
          "action": "Generate PDF asynchronously",
          "description": "Generate PDF asynchronously"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdf"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sync",
      "options": [
        {
          "name": "Generate Syncronously",
          "value": "sync",
          "action": "Generate image syncronously",
          "description": "Generate Image syncronously"
        },
        {
          "name": "Generate Asynchronously",
          "value": "async",
          "action": "Generate image asynchronously",
          "description": "Generate Image asynchronously"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sync",
      "options": [
        {
          "name": "Convert HTML to PDF Syncronously",
          "value": "sync",
          "action": "Convert syncronously",
          "description": "Convert your HTML data into a PDF file syncronously"
        },
        {
          "name": "Convert HTML to PDF Asynchronously",
          "value": "async",
          "action": "Convert asynchronously",
          "description": "Convert your HTML data into a PDF file asynchronously"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "html-to-pdf"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate Syncronously",
      "value": "sync",
      "action": "Generate PDF syncronously",
      "description": "Generate PDF syncronously"
    },
    {
      "name": "Generate Asynchronously",
      "value": "async",
      "action": "Generate PDF asynchronously",
      "description": "Generate PDF asynchronously"
    },
    {
      "name": "Generate Syncronously",
      "value": "sync",
      "action": "Generate image syncronously",
      "description": "Generate Image syncronously"
    },
    {
      "name": "Generate Asynchronously",
      "value": "async",
      "action": "Generate image asynchronously",
      "description": "Generate Image asynchronously"
    },
    {
      "name": "Convert HTML to PDF Syncronously",
      "value": "sync",
      "action": "Convert syncronously",
      "description": "Convert your HTML data into a PDF file syncronously"
    },
    {
      "name": "Convert HTML to PDF Asynchronously",
      "value": "async",
      "action": "Convert asynchronously",
      "description": "Convert your HTML data into a PDF file asynchronously"
    }
  ]

npm_readme:
  # n8n-nodes-pdforge

  This is an n8n node. It lets you use [pdf noodle](https://pdfnoodle.com) (previously pdforge) in your n8n workflows.

  **pdf noodle automates PDF Generation in minutes using AI**.

  Create custom PDF templates in seconds using our AI Agents, fine tune the design with our pDF builder and automate the PDF delivery with our native pdf noodle node inside n8n. No code or design experience needed.

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

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

  ## Installation

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

  ## Operations

  With pdf noodle you can create pdfs from html or reusable templates (or convert them to images), both synchronously or asynchronously. Here are the operations you can use:

  | Name                      | Operation           | Description                                                                                                                  | Documentation Link                                                          |
  | ------------------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
  | Generate Pdf Sync         | `pdf:sync`          | Creates a PDF file with JSON data and your template.                                                                         | [Link](https://docs.pdforge.com/pdfs/synchronous-request)                   |
  | Generate Pdf Async        | `pdf:async`         | Creates a PDF file asynchronously with JSON data and your template. The API returns immediately, and will retry for 3 times. | [Link](https://docs.pdforge.com/pdfs/asynchronous-request)                  |
  | Generate Image Sync       | `image:sync`        | Creates a PNG file with JSON data and your template.                                                                         | [Link](https://docs.pdforge.com/images/how-render-png-instead-of-pdf)       |
  | Generate Image Async      | `image:async`       | Creates a PNG file asynchronously with JSON data and your template. The API returns immediately, and will retry for 3 times. | [Link](https://docs.pdforge.com/images/how-render-png-instead-of-pdf)       |
  | Convert HTML to PDF Sync  | `html-to-pdf:sync`  | Creates a PDF file using the HTML data and PDF params sent.                                                                  | [Link](https://docs.pdforge.com/html-to-pdf-conversion/synchronous-request) |
  | Convert HTML to PDF Async | `html-to-pdf:async` | Creates a PDF file asynchronously using the HTML data and PDF params sent.                                                   | [Link](https://docs.pdforge.com/html-to-pdf-conversion/synchronous-request) |

  ## Credentials

  You only need a pdf noodle API Key to integrate to start generating pdfs. You can get it using our [web portal](https://app.pdfnoodle.com/auth/sign-up) and choosing any plan to subscribe to.

  - [pdf noodle Auth Documentation](https://docs.pdforge.com/getting-started/authentication)

  ## Compatibility

  This package was developed & tested with n8n > 1.97.1

  ## Usage

  Please check out the [pdf noodle API Reference](https://docs.pdforge.com/) for more information on how to use the integration.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [pdf noodle API Reference](https://docs.pdforge.com/)
  - [pdf noodle Knowledge Base](https://docs.pdforge.com/knowledge-base)

  ## Version history

  | Version | Changes                                                                                                           |
  | ------- | ----------------------------------------------------------------------------------------------------------------- |
  | 2.3.3   | Updating repository to pdfnoodle                                                                                  |
  | 2.3.2   | Fix on package json to make integration update work on n8n instances                                              |
  | 2.3.1   | Adjusting names so it doesn't break existing pdforge installs on n8n                                              |
  | 2.3.0   | Rebranding changing the name from pdforge to pdf noodle (everything else stays the same)                          |
  | 2.2.1   | Added debug option so you have additional information such as rendered HTML and variables validation              |
  | 2.1.1   | Changed description and treated Print Params not being properly converted into objects                            |
  | 2.1.0   | Added `hasCover` option to include a cover page in generated PDFs to automatically hide footer and header content |
  | 2.0.0   | Added support for HTML to PDF conversion operations and custom s3 bucket configuration                            |
  | 1.0.0   | Initial release with PDF and Image generation capabilities                                                        |

ai_documentation_summary:
  {"purpose":"The PDF Noodle node enables users to generate PDFs or images from HTML content or reusable templates using AI, without requiring code or design experience. It supports both synchronous and asynchronous operations for PDF and image generation, as well as HTML-to-PDF conversion.","capabilities":["Generate PDFs from HTML or templates (synchronous and asynchronous)","Generate images (PNG) from HTML or templates (synchronous and asynchronous)","Convert HTML to PDF (synchronous and asynchronous)","Include a cover page in PDFs with the 'hasCover' option","Support for custom S3 bucket configuration","Debug mode to view rendered HTML and variable validation"],"authentication":"API key required. Obtain it from the [pdf noodle web portal](https://app.pdfnoodle.com/auth/sign-up).","commonUseCases":["Automating invoice or report generation from dynamic data","Creating personalized documents using templates with AI assistance","Generating visual previews (PNGs) of content for email or sharing","Integrating document generation into workflow automation pipelines"],"limitations":[],"relatedNodes":["HTML to PDF conversion nodes","Template-based document generation nodes","Image generation nodes"]}


node_type: @tavily/n8n-nodes-tavily.tavily
package_name: @tavily/n8n-nodes-tavily
display_name: Tavily
description: Tavily API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs: "={{['main']}}"
updated_at: 2026-01-07 20:08:16
author_name: konstantintzt
author_github_url: https://github.com/tavily-ai/tavily-n8n-node.git
npm_package_name: @tavily/n8n-nodes-tavily
npm_version: 0.2.6
community_fetched_at: 2026-01-07T20:08:16.042Z
ai_summary_generated_at: 2026-01-08 10:45:31
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search"
        },
        {
          "name": "Extract",
          "value": "extract"
        },
        {
          "name": "Crawl",
          "value": "crawl"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "urls",
      "options": [
        {
          "name": "URLs",
          "value": "urls",
          "action": "Extract",
          "description": "Extract raw content from URLs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "extract"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "query",
      "options": [
        {
          "name": "Query",
          "value": "query",
          "action": "Search",
          "description": "Search query"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "url",
      "options": [
        {
          "name": "URL",
          "value": "url",
          "action": "Crawl",
          "description": "The root URL to begin the crawl"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "crawl"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "URLs",
      "value": "urls",
      "action": "Extract",
      "description": "Extract raw content from URLs"
    },
    {
      "name": "Query",
      "value": "query",
      "action": "Search",
      "description": "Search query"
    },
    {
      "name": "URL",
      "value": "url",
      "action": "Crawl",
      "description": "The root URL to begin the crawl"
    }
  ]

npm_readme:
  # @tavily/n8n-nodes-tavily

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

  ## Features

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

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

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

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

  ## Getting a Tavily API Key

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

  ## Configuring Credentials in n8n

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

  ## Usage

  ### Tavily Search

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

  ### Tavily Extract

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

  ### Tavily Crawl

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

  ### Tavily Map

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

  ## Parameters

  ### Tavily Search Parameters

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

  ### Tavily Extract Parameters

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

  ### Tavily Crawl Parameters

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

  ### Tavily Map Parameters

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

  ## Troubleshooting

  ### Error Codes

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

  ## Cost

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

  ## License

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

  ## Contact

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

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

ai_documentation_summary:
  {"purpose":"The Tavily node integrates the Tavily API into n8n workflows, enabling web search, content extraction, website crawling, and URL mapping with advanced filtering and context options.","capabilities":["Perform web searches with topic, time range, and domain filtering","Extract raw content from websites with options for images, depth, and format","Crawl websites from a root URL to extract content across multiple pages","Map website URL structures to generate comprehensive sitemaps","Retrieve LLM-generated answers, raw content, or image descriptions","Support for advanced search depth, content chunks, and auto-parameter configuration"],"authentication":"API key required","commonUseCases":["Research and data collection from the web","Automated content aggregation from websites","Website structure analysis and sitemap generation","News or finance topic-specific searches with time filters","Extracting structured content for downstream processing"],"limitations":["Tavily Crawl and Map parameters are only partially documented in the README","Extract depth and format options may have limited flexibility","Credit usage information may be zero until 5 successful extractions are made","Image and content inclusion may be subject to API limits or pricing"],"relatedNodes":["Webhook","HTTP Request","Function","Set","Filter"]}


node_type: n8n-nodes-krispcall.krispcall
package_name: n8n-nodes-krispcall
display_name: KrispCall
description: Interact with KrispCall API to manage contacts.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: kapil-krispcall
author_github_url: https://github.com/kapil-krispcall/
npm_package_name: n8n-nodes-krispcall
npm_version: 0.1.11
community_fetched_at: 2026-01-07T20:08:16.045Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Contact",
          "value": "contact",
          "description": "Manage contacts in KrispCall"
        },
        {
          "name": "SMS_MMS",
          "value": "sms",
          "description": "Manage SMS in KrispCall"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact",
          "description": "Create a new contact in KrispCall"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete contacts",
          "description": "Delete contacts in KrispCall"
        },
        {
          "name": "Get Voicemail",
          "value": "getVoicemail",
          "action": "Get many voicemails",
          "description": "Retrieve voicemails from KrispCall"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "new_contact",
      "options": [
        {
          "name": "New Contact",
          "value": "new_contact",
          "action": "On New Contact",
          "description": "Triggers when a new contact is added in your Workspace"
        },
        {
          "name": "New SMS/MMS",
          "value": "new_sms_or_mms",
          "action": "On New SMS/MMS",
          "description": "Triggers when a new SMS or MMS is received in your Workspace"
        },
        {
          "name": "New Voicemail",
          "value": "new_voicemail",
          "action": "On New Voicemail",
          "description": "Triggers when a new voicemail is received in your Workspace"
        },
        {
          "name": "New Call Event",
          "value": "new_call_log",
          "action": "On New Call Event",
          "description": "Triggers when a new call related activity is created in your Workspace"
        },
        {
          "name": "New SMS/MMS Sent",
          "value": "outbound_sms_or_mms",
          "action": "On New SMS/MMS Sent",
          "description": "Triggers when a new SMS or MMS is sent from your Workspace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhook"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send SMS",
          "value": "send",
          "action": "Send an SMS",
          "description": "Send an SMS in KrispCall"
        },
        {
          "name": "Send MMS",
          "value": "mms",
          "action": "Send an MMS",
          "description": "Send an MMS in KrispCall"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sms"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a contact",
      "description": "Create a new contact in KrispCall"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete contacts",
      "description": "Delete contacts in KrispCall"
    },
    {
      "name": "Get Voicemail",
      "value": "getVoicemail",
      "action": "Get many voicemails",
      "description": "Retrieve voicemails from KrispCall"
    },
    {
      "name": "New Contact",
      "value": "new_contact",
      "action": "On New Contact",
      "description": "Triggers when a new contact is added in your Workspace"
    },
    {
      "name": "New SMS/MMS",
      "value": "new_sms_or_mms",
      "action": "On New SMS/MMS",
      "description": "Triggers when a new SMS or MMS is received in your Workspace"
    },
    {
      "name": "New Voicemail",
      "value": "new_voicemail",
      "action": "On New Voicemail",
      "description": "Triggers when a new voicemail is received in your Workspace"
    },
    {
      "name": "New Call Event",
      "value": "new_call_log",
      "action": "On New Call Event",
      "description": "Triggers when a new call related activity is created in your Workspace"
    },
    {
      "name": "New SMS/MMS Sent",
      "value": "outbound_sms_or_mms",
      "action": "On New SMS/MMS Sent",
      "description": "Triggers when a new SMS or MMS is sent from your Workspace"
    },
    {
      "name": "Send SMS",
      "value": "send",
      "action": "Send an SMS",
      "description": "Send an SMS in KrispCall"
    },
    {
      "name": "Send MMS",
      "value": "mms",
      "action": "Send an MMS",
      "description": "Send an MMS in KrispCall"
    }
  ]

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

  # n8n-nodes-krispcall

  This repository contains the custom [n8n](https://n8n.io) node for Krispcall, designed to help you automate your telephony workflows directly within n8n. It includes the node linter and other necessary development dependencies.

  **KrispCall** is an AI-powered modern telephony platform that helps businesses streamline communication with virtual numbers, advanced calling features, and seamless CRM integrations.

  This **n8n community node** enables you to integrate KrispCall’s advanced telephony features into your n8n workflows. You can create and manage contacts, send SMS/MMS messages, retrieve voicemails, and manage webhooks directly from n8n.

  ---

  ## 🔧 Features

  - 🔐 API key authentication
  - 📇 Create and manage contacts
  - 📤 Send SMS and MMS
  - 📥 Retrieve voicemails and phone numbers
  - 🌐 Create and delete webhooks for real-time event handling

  ---

  ## 📦 Installation

  Install this community node in your n8n instance:

  ```bash
  npm install n8n-nodes-krispcall
  ```

  Or via the n8n Community Nodes UI (under Settings → Community Nodes → Install).

  ## 🔐 Authentication

  To use this node, you must have a [KrispCall](https://krispcall.com) account and an API key.

  ### Get your API Key

  1. Sign in to your [KrispCall](https://krispcall.com) account
  2. Navigate to **Settings** → **Developer**
  3. Click **Generate API Key**
  4. Copy the key and use it when setting up **credentials** in n8n

  ### Credentials Setup in n8n

  **Base URL:** `https://app.krispcall.com/api/v3/platform/n8n`

  **API Key:** Paste your [KrispCall](https://krispcall.com) API key

  ## 🔁 Supported Resources & Operations Resource

  | Resource    | Actions              |Triggers |
  | ----------- | ----------------------- | -- |
  | `Contact`   | Create, Delete | New Contact, Call Logs|
  | `SMS` `MMS`  | Send              | New SMS or MMS, |
  | `Voicemail` | Get| New Voicemail|

  ## 📘 Example Usage

  ### Create a Contact

  1. Connect to KrispCall via `credentials`
  2. Select resource: `Contact`
  3. Choose operation: `Create`
  4. Provide the contact details (`name`, `phone`, etc.)
  5. Execute

  ### Send SMS

  1. Select resource: `SMS`
  2. Choose operation: `Send`
  3. Set `phone number` and `message`
  4. Execute

  ## License

  [MIT](./LICENSE)

ai_documentation_summary:
  {"purpose":"The KrispCall node enables automation of telephony workflows by integrating with the KrispCall API to manage contacts, send SMS/MMS messages, retrieve voicemails, and handle webhooks within n8n workflows.","capabilities":["Create and manage contacts","Send SMS and MMS messages","Retrieve voicemails and phone numbers","Create and delete webhooks for real-time event handling","Trigger on new contacts, call logs, SMS/MMS, or voicemails"],"authentication":"API key authentication required. The API key must be generated from the KrispCall dashboard under Settings → Developer → Generate API Key.","commonUseCases":["Automatically creating customer contacts in KrispCall based on incoming data","Sending automated SMS or MMS notifications to customers","Retrieving voicemail content for further processing or logging","Setting up webhooks to receive real-time updates from KrispCall events"],"limitations":[],"relatedNodes":["n8n-nodes-base","n8n-nodes-webhook"]}


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-01-07 20:08:16
author_name: alex97po
author_github_url: https://github.com/PostPulse/n8n-postpulse-node.git
npm_package_name: @postpulse/n8n-nodes-postpulse
npm_version: 0.1.13
community_fetched_at: 2026-01-07T20:08:16.045Z
ai_summary_generated_at: 2026-01-08 10:45:32
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"
        }
      ],
      "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"
    }
  ]

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 Chats lookup)  
  - **Targets today:** 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
    ```
  - Restart n8n and enable the node in **Settings → Community Nodes** if required.

  ---

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

  1. **Accounts → Get Many**  
     Retrieve your connected accounts. Save the `id` of targets you’ll post to.
  2. **Telegram → Get Connected Chats** *(only if posting to Telegram)*  
     Input: `id` from step 1 (platform must be `TELEGRAM`). Output contains `id` per channel/chat.
  3. **Media → Upload** *(for any media)*  
     Upload files (even if you have public URLs). Some platforms (e.g., TikTok/Instagram) require media hosted on post-pulse.com. Save the returned `path`.
  4. **Posts → Schedule**  
     Build one `PostSchedule` with one or more `Publication`s.  
     - Set `scheduledTime` (past/now = queue immediately)
     - 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).

  ---

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

  ---

  ## 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/qCCH5Wzq) (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":"The PostPulse n8n node enables users to schedule and publish social media content to multiple platforms including Instagram, TikTok, YouTube, Threads, LinkedIn, Telegram, X, and Bluesky via automated workflows.","capabilities":["Authenticate via OAuth2 (with auto-refresh)","Retrieve connected social accounts","Get Telegram chat IDs for posting","Upload media files or public URLs","Monitor upload progress for URL-based media","Schedule posts with customizable settings per platform","Support for multiple publications per schedule (e.g., one post per channel or per message)"],"authentication":"OAuth2 (auto-refresh) — requires client_id and client_secret from PostPulse Developer Portal, with OAuth redirect URL configured during setup","commonUseCases":["One-click multi-platform posting","Automated content campaigns with scheduled publishing","Media pipeline workflows (upload + schedule)","Posting to Telegram channels with chat ID lookup","Managing Instagram stories, reels, or feed posts with platform-specific settings"],"limitations":["URL-based media uploads require monitoring via 'Get Upload Status' to track progress","Currently, `isDraft: false` is recommended (draft support may be added in future updates)","Thumbnail support not yet available","For YouTube/TikTok, content is used as description; titles are set in platformSettings","Telegram posts require pre-added bot in channels"],"relatedNodes":["OAuth2 Authentication","Media Upload","Schedule Post","Get Accounts","Get Telegram Chats"]}


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

updated_at: 2026-01-07 20:08:16
author_name: ledgers
author_github_url: https://github.com/ledgers-cloud/n8n-nodes-ledgers.git
npm_package_name: @ledgers/n8n-nodes-ledgers-cloud
npm_version: 0.0.19
community_fetched_at: 2026-01-07T20:08:16.046Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "contact",
      "options": [
        {
          "name": "Catalog Operation",
          "value": "catalog"
        },
        {
          "name": "Common Operation",
          "value": "common"
        },
        {
          "name": "Contact Operation",
          "value": "contact"
        },
        {
          "name": "HRMS Operation (India)",
          "value": "hrms"
        },
        {
          "name": "Purchase Operation",
          "value": "purchase"
        },
        {
          "name": "Sales Operation",
          "value": "sales"
        },
        {
          "name": "Tax Operation (India)",
          "value": "tax"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createCatalog",
      "options": [
        {
          "name": "Add Variant (Existing Catalog)",
          "value": "addVariant",
          "action": "Add a new variant"
        },
        {
          "name": "Create Catalog",
          "value": "createCatalog",
          "action": "Create a catalog"
        },
        {
          "name": "Get All Catalogs",
          "value": "getAllCatalogs",
          "action": "Get all catalogs"
        },
        {
          "name": "Get Catalog",
          "value": "getCatalog",
          "action": "Get a catalog"
        },
        {
          "name": "Update Catalog",
          "value": "updateCatalog",
          "action": "Update a catalog"
        },
        {
          "name": "Update Variant (Existing Catalog)",
          "value": "updateVariant",
          "action": "Update a variant"
        }
      ],
      "description": "Choose the operation",
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "catalog"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createBranch",
      "options": [
        {
          "name": "Add Payment Method",
          "value": "addPaymentMethod",
          "action": "Add a payment method"
        },
        {
          "name": "Create Branch",
          "value": "createBranch",
          "action": "Create a branch"
        },
        {
          "name": "Get Branch Details",
          "value": "getBranchDetails",
          "action": "Get branch details"
        },
        {
          "name": "List Branches",
          "value": "listBranches",
          "action": "List branches"
        },
        {
          "name": "List Payment Methods",
          "value": "listPaymentMethods",
          "action": "List payment methods"
        },
        {
          "name": "Update Branch",
          "value": "updateBranch",
          "action": "Update a branch"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "common"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createContact",
      "options": [
        {
          "name": "Add Address (Existing Contact)",
          "value": "addAddress",
          "action": "Add address to a contact"
        },
        {
          "name": "Create Contact",
          "value": "createContact",
          "action": "Create a contact"
        },
        {
          "name": "Get All Contacts",
          "value": "getAllContacts",
          "action": "Get all contacts"
        },
        {
          "name": "Get Contact",
          "value": "getContact",
          "action": "Get a contact"
        },
        {
          "name": "Update Address (Existing Contact)",
          "value": "updateAddress",
          "action": "Update address of a contact"
        },
        {
          "name": "Update Contact",
          "value": "updateContact",
          "action": "Update a contact"
        }
      ],
      "description": "Choose the operation",
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "addEmployee",
      "options": [
        {
          "name": "Get All Employees",
          "value": "getAllEmployees",
          "action": "Get all employees"
        },
        {
          "name": "Add Employee",
          "value": "addEmployee",
          "action": "Add a new employee"
        },
        {
          "name": "Update Employee",
          "value": "updateEmployee",
          "action": "Update an existing employee"
        },
        {
          "name": "Get Employee",
          "value": "getEmployee",
          "action": "Get employee details"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "hrms"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createPurchaseInvoice",
      "options": [
        {
          "name": "Create Purchase Invoice",
          "value": "createPurchaseInvoice",
          "action": "Create a purchase invoice"
        },
        {
          "name": "Create Voucher",
          "value": "createVoucher",
          "action": "Create a voucher"
        },
        {
          "name": "List Purchase Invoices",
          "value": "listPurchaseInvoices",
          "action": "List all purchase invoices"
        },
        {
          "name": "List Vouchers",
          "value": "listVouchers",
          "action": "List all vouchers"
        },
        {
          "name": "View Purchase Invoice",
          "value": "viewPurchaseInvoice",
          "action": "View a purchase invoice"
        },
        {
          "name": "View Voucher",
          "value": "viewVoucher",
          "action": "View a voucher"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "purchase"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createInvoice",
      "options": [
        {
          "name": "Create Invoice",
          "value": "createInvoice",
          "action": "Create a new invoice"
        },
        {
          "name": "Create Quote",
          "value": "createQuote",
          "action": "Create a new quote"
        },
        {
          "name": "Create Receipt",
          "value": "createReceipt",
          "action": "Create a new receipt"
        },
        {
          "name": "List Invoices",
          "value": "listInvoices",
          "action": "List all invoices"
        },
        {
          "name": "List Quotes",
          "value": "listQuotes",
          "action": "List all quotes"
        },
        {
          "name": "List Receipts",
          "value": "listReceipts",
          "action": "List all receipts"
        },
        {
          "name": "View Invoice",
          "value": "viewInvoice",
          "action": "View an invoice"
        },
        {
          "name": "View Quote",
          "value": "viewQuote",
          "action": "View a quote"
        },
        {
          "name": "View Receipt",
          "value": "viewReceipt",
          "action": "View a receipt"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sales"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getGSTReturnStatus",
      "options": [
        {
          "name": "GST Return Status",
          "value": "getGSTReturnStatus",
          "action": "Get GST return status"
        },
        {
          "name": "GST Search",
          "value": "getGSTSearch",
          "action": "Search GST information"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tax"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Add Variant (Existing Catalog)",
      "value": "addVariant",
      "action": "Add a new variant"
    },
    {
      "name": "Create Catalog",
      "value": "createCatalog",
      "action": "Create a catalog"
    },
    {
      "name": "Get All Catalogs",
      "value": "getAllCatalogs",
      "action": "Get all catalogs"
    },
    {
      "name": "Get Catalog",
      "value": "getCatalog",
      "action": "Get a catalog"
    },
    {
      "name": "Update Catalog",
      "value": "updateCatalog",
      "action": "Update a catalog"
    },
    {
      "name": "Update Variant (Existing Catalog)",
      "value": "updateVariant",
      "action": "Update a variant"
    },
    {
      "name": "Add Payment Method",
      "value": "addPaymentMethod",
      "action": "Add a payment method"
    },
    {
      "name": "Create Branch",
      "value": "createBranch",
      "action": "Create a branch"
    },
    {
      "name": "Get Branch Details",
      "value": "getBranchDetails",
      "action": "Get branch details"
    },
    {
      "name": "List Branches",
      "value": "listBranches",
      "action": "List branches"
    },
    {
      "name": "List Payment Methods",
      "value": "listPaymentMethods",
      "action": "List payment methods"
    },
    {
      "name": "Update Branch",
      "value": "updateBranch",
      "action": "Update a branch"
    },
    {
      "name": "Add Address (Existing Contact)",
      "value": "addAddress",
      "action": "Add address to a contact"
    },
    {
      "name": "Create Contact",
      "value": "createContact",
      "action": "Create a contact"
    },
    {
      "name": "Get All Contacts",
      "value": "getAllContacts",
      "action": "Get all contacts"
    },
    {
      "name": "Get Contact",
      "value": "getContact",
      "action": "Get a contact"
    },
    {
      "name": "Update Address (Existing Contact)",
      "value": "updateAddress",
      "action": "Update address of a contact"
    },
    {
      "name": "Update Contact",
      "value": "updateContact",
      "action": "Update a contact"
    },
    {
      "name": "Get All Employees",
      "value": "getAllEmployees",
      "action": "Get all employees"
    },
    {
      "name": "Add Employee",
      "value": "addEmployee",
      "action": "Add a new employee"
    },
    {
      "name": "Update Employee",
      "value": "updateEmployee",
      "action": "Update an existing employee"
    },
    {
      "name": "Get Employee",
      "value": "getEmployee",
      "action": "Get employee details"
    },
    {
      "name": "Create Purchase Invoice",
      "value": "createPurchaseInvoice",
      "action": "Create a purchase invoice"
    },
    {
      "name": "Create Voucher",
      "value": "createVoucher",
      "action": "Create a voucher"
    },
    {
      "name": "List Purchase Invoices",
      "value": "listPurchaseInvoices",
      "action": "List all purchase invoices"
    },
    {
      "name": "List Vouchers",
      "value": "listVouchers",
      "action": "List all vouchers"
    },
    {
      "name": "View Purchase Invoice",
      "value": "viewPurchaseInvoice",
      "action": "View a purchase invoice"
    },
    {
      "name": "View Voucher",
      "value": "viewVoucher",
      "action": "View a voucher"
    },
    {
      "name": "Create Invoice",
      "value": "createInvoice",
      "action": "Create a new invoice"
    },
    {
      "name": "Create Quote",
      "value": "createQuote",
      "action": "Create a new quote"
    },
    {
      "name": "Create Receipt",
      "value": "createReceipt",
      "action": "Create a new receipt"
    },
    {
      "name": "List Invoices",
      "value": "listInvoices",
      "action": "List all invoices"
    },
    {
      "name": "List Quotes",
      "value": "listQuotes",
      "action": "List all quotes"
    },
    {
      "name": "List Receipts",
      "value": "listReceipts",
      "action": "List all receipts"
    },
    {
      "name": "View Invoice",
      "value": "viewInvoice",
      "action": "View an invoice"
    },
    {
      "name": "View Quote",
      "value": "viewQuote",
      "action": "View a quote"
    },
    {
      "name": "View Receipt",
      "value": "viewReceipt",
      "action": "View a receipt"
    },
    {
      "name": "GST Return Status",
      "value": "getGSTReturnStatus",
      "action": "Get GST return status"
    },
    {
      "name": "GST Search",
      "value": "getGSTSearch",
      "action": "Search GST information"
    }
  ]

npm_readme:
  # n8n-nodes-ledgers-cloud

  This is an n8n community node for integrating with [LEDGERS](https://ledgers.cloud/) – a comprehensive business platform offering features like accounting, invoicing, contacts, catalogs, quotes, and receipt management.

  Use this node to automate LEDGERS workflows directly from within [n8n](https://n8n.io), the fair-code licensed workflow automation platform.

  ## 🎯 What is LEDGERS Node?

  The LEDGERS node is a powerful automation tool that connects your n8n workflows with the LEDGERS cloud platform. It enables businesses to:

  - **Automate Business Operations**: Streamline contact management, inventory tracking, and financial operations
  - **Integrate Systems**: Connect LEDGERS with other business tools in your workflow
  - **Reduce Manual Work**: Automate repetitive tasks like invoice generation, receipt creation, and data synchronization
  - **Scale Operations**: Handle bulk operations and complex business logic through automated workflows
  - **Maintain Data Consistency**: Ensure accurate data flow between LEDGERS and other systems

  ## 🏢 Business Use Cases

  ### **Small to Medium Businesses**
  - **Complete Business Automation**: Manage entire customer lifecycle from contact creation to payment collection
  - **E-commerce Integration**: Automatically sync orders, create invoices, and track payments
  - **Service-based Businesses**: Generate quotes, convert to invoices, and manage service delivery
  - **Retail Operations**: Manage inventory, create sales documents, and track customer interactions

  ### **Enterprise Operations**
  - **Multi-system Integration**: Connect LEDGERS with CRM, ERP, and other business systems
  - **Bulk Data Processing**: Handle large volumes of transactions and data synchronization
  - **Automated Workflows**: Create complex business rules and automated decision-making processes
  - **Reporting and Analytics**: Extract data for business intelligence and reporting systems

  ### **Industry-Specific Applications**
  - **Professional Services**: Time-based billing, project management, and client communication
  - **Manufacturing**: Purchase order management, inventory tracking, and supplier relations
  - **Consulting**: Project-based invoicing, expense tracking, and client management
  - **Subscription Services**: Recurring billing, customer lifecycle management, and payment processing

  ---

  ## 🔧 Installation

  To install this community node, follow the instructions in the [n8n community node installation guide](https://docs.n8n.io/integrations/community-nodes/installation/).

  ```bash
  npm install @ledgers/n8n-nodes-ledgers-cloud
  ```

  After installing, restart n8n and the node will be available in the editor.

  ---

  ## 📋 Supported Operations

  The LEDGERS node supports the following operations:

  ### **Triggers**
  - **LEDGERS Webhook Trigger** - Listen to real-time events from LEDGERS API via webhooks

  ### **Regular Operations**

  ### **Contacts**
  - **Create Contact** - Create a new contact with billing/shipping addresses
  - **Update Contact** - Update existing contact information
  - **Add Address** - Add billing or shipping addresses to existing contacts
  - **Update Address** - Update specific addresses for contacts
  - **Get Contact** - Retrieve a specific contact by ID
  - **Get All Contacts** - List all contacts with pagination and search

  ### **Catalogs**
  - **Create Catalog** - Create new catalog items with variants
  - **Update Catalog** - Update catalog item details
  - **Update Variant** - Update specific variant details
  - **Add Variant** - Add new variants to existing catalogs
  - **Get Catalog** - Retrieve a specific catalog by ID
  - **Get All Catalogs** - List all catalogs with pagination and search

  ### **Sales**
  - **Create Invoice** - Generate new invoices with comprehensive validation and contact/item details
  - **View Invoice** - Retrieve specific invoice details
  - **List Invoices** - List all invoices with filtering and pagination
  - **Create Quote** - Generate new quotes/estimates with validation and contact/item details
  - **View Quote** - Retrieve specific quote details
  - **List Quotes** - List all quotes with filtering and pagination
  - **Create Receipt** - Generate payment receipts with flexible payment method support
  - **View Receipt** - Retrieve specific receipt details
  - **List Receipts** - List all receipts with filtering and pagination

  ### **Purchase**
  - **Create Purchase Invoice** - Generate supplier invoices with comprehensive validation and detailed item management
  - **View Purchase Invoice** - Retrieve specific purchase invoice details
  - **List Purchase Invoices** - List all purchase invoices with filtering and pagination
  - **Create Voucher** - Generate expense, payment, and salary vouchers
  - **View Voucher** - Retrieve specific voucher details
  - **List Vouchers** - List all vouchers with filtering and pagination

  ### **HRMS (Human Resource Management)**
  - **Get All Employees** - List all employees with pagination, search, and filtering options
  - **Add Employee** - Create new employee records with comprehensive details
  - **Update Employee** - Update existing employee information including status changes
  - **Get Employee** - Retrieve specific employee details by GID

  ### **Banking**
  - **Get Bank Statement** - Retrieve account statements for selected bank accounts with date range filtering
    - **Supported Banks**: ICICI Bank and Axis Bank
    - **Requirements**: Connected banking must be set up in LEDGERS
    - **Features**: Dynamic account selection, date range filtering, secure data handling

  ---

  ## 🔧 Operation Details

  ### **Contact Operations**
  - **Required Fields**: Contact name, mobile, email
  - **Address Support**: Billing and shipping addresses with GSTIN (India) / TRN Number (UAE)
  - **Country Codes**: Support for multiple country dial codes
  - **Validation**: Mobile number format validation
  - **Multi-region Support**: India and UAE operations with region-specific field mapping

  ### **Catalog Operations**
  - **Item Types**: Goods and Services support
  - **GST Integration**: Built-in GST rates (0%, 5%, 12%, 18%, 28%)
  - **Variants**: Multiple variants per catalog item
  - **HSN/SAC Codes**: Automatic code suggestions via AI
  - **Cess Support**: Flat and percentage-based cess
  - **Multi-region Support**: India and UAE operations with region-specific business rules

  ### **Sales Operations**
  - **Invoice Creation**: Full invoice generation with comprehensive validation and contact/item details
  - **Quote Generation**: Estimate creation with validity periods and date picker support
  - **Receipt Management**: Payment receipt creation with flexible payment methods
  - **Item Management**: Multiple items with strict numeric validation (rates, quantities, tax calculations)
  - **Date Filtering**: Date range filtering for listing operations with validation
  - **Payment Status**: Track payment status (Paid, Not Paid, Part Paid, Deleted)
  - **Payment Methods**: Flexible payment method selection with custom input fallback
  - **Reconciliation**: Support for invoice reconciliation in receipts
  - **GST Rate Dropdown**: Standardized GST rate selection with predefined options
  - **Advanced Validation**: Integer validation for PID (>0), Variant ID (>0), rates (≥0), and taxable amounts (≥0)
  - **Business Logic Validation**: Taxable amount cannot exceed rate, non-taxable amount cannot exceed rate
  - **Multi-region Support**: Full support for both India and UAE regions with region-specific validations and filter formats

  ### **Purchase Operations**
  - **Purchase Invoice Management**: Create supplier invoices with comprehensive validation and item details
  - **Voucher System**: Three types of vouchers with specialized functionality:
    - **Expense Vouchers**: Single or multiple expense head management with tax calculations
    - **Payment Vouchers**: Supplier payment tracking with invoice reconciliation
    - **Salary Vouchers**: Employee salary processing with detailed breakdowns
  - **Advanced Item Management**: Purchase items with strict numeric validation and specialized supply options
  - **Address Management**: Separate billing and shipping address handling
  - **Tax Integration**: Multiple tax types and specialized supply configurations
  - **Currency Support**: Multi-currency handling for international purchases
  - **Date Filtering**: Comprehensive date range filtering for all list operations
  - **Payment Status Tracking**: Monitor payment status across all purchase documents
  - **Reconciliation Features**: Match payments with purchase invoices automatically
  - **Enhanced Validation**: Integer validation for PID (>0), VID (>0), rates (≥0), and taxable amounts (≥0)
  - **Business Logic Validation**: Same validation rules as Sales operations for consistency

  ### **HRMS Operations**
  - **Employee Management**: Complete employee lifecycle management from hiring to exit
  - **Comprehensive Data Handling**: Personal, professional, and financial information management
  - **Address Management**: Present and permanent address handling with detailed fields
  - **Bank Details**: Employee banking information for salary processing
  - **Statutory Compliance**: PAN, Aadhar, UAN, ESI number management
  - **Search and Filter**: Advanced employee search with multiple criteria
  - **Status Management**: Active/inactive employee status with exit date tracking
  - **Validation**: Required field validation for employee creation and updates

  ### **Banking Operations**
  - **Account Selection**: Dynamic dropdown populated with active bank accounts and linked accounts
  - **Statement Retrieval**: Fetch account statements for specific date ranges
  - **Security Features**: Masked account numbers and secure data handling
  - **Date Range Filtering**: Flexible date selection for statement periods
  - **Error Handling**: Clear error messages for missing accounts or configuration issues
  - **Multi-Account Support**: Handle multiple linked accounts per URN
  - **Validation**: Required field validation for account selection and date ranges
  - **Supported Banks**: ICICI Bank and Axis Bank integration
  - **Setup Requirements**: Connected banking must be configured in LEDGERS platform
  - **Connected Banking**: Only works when banking integration is set up in LEDGERS



  ## 💼 Uses of Sales Operations

  The Sales module in LEDGERS node is designed for comprehensive revenue management and customer transaction handling:

  ### **Invoice Management**
  - **Automated Billing**: Create invoices automatically based on triggers (orders, time periods, etc.)
  - **Multi-item Invoicing**: Handle complex invoices with multiple products/services
  - **Tax Calculations**: Automatic GST calculations with different tax rates
  - **Customer Integration**: Link invoices directly to contact records
  - **Status Tracking**: Monitor payment status and follow up on overdue invoices

  ### **Quote/Estimate Management**
  - **Sales Pipeline**: Generate quotes for potential customers automatically
  - **Quote Tracking**: Monitor quote status and conversion rates
  - **Validity Management**: Set and track quote expiration dates
  - **Quote-to-Invoice**: Convert accepted quotes to invoices seamlessly

  ### **Receipt Management**
  - **Payment Recording**: Automatically record payments against invoices
  - **Multiple Payment Methods**: Support various payment types (cash, bank transfer, cards, etc.)
  - **Reconciliation**: Match receipts with outstanding invoices
  - **Payment Tracking**: Maintain complete payment history
  - **Flexible Input**: Handle custom payment methods when API data is unavailable

  ### **Business Workflow Examples**
  - **E-commerce Integration**: Auto-generate invoices from online orders
  - **Subscription Billing**: Create recurring invoices for subscription services
  - **Payment Processing**: Record payments and update invoice status automatically
  - **Financial Reporting**: Extract sales data for accounting and reporting systems
  - **Customer Communication**: Trigger email notifications for invoices and receipts

  ## 💼 Uses of Purchase Operations

  The Purchase module in LEDGERS node is designed for comprehensive procurement management and supplier transaction handling:

  ### **Purchase Invoice Management**
  - **Supplier Billing**: Create and manage supplier invoices with detailed item tracking
  - **Multi-item Purchasing**: Handle complex purchases with multiple products/services
  - **Tax Management**: Automatic tax calculations with various tax types and rates
  - **Supplier Integration**: Link purchase invoices directly to supplier contact records
  - **Export/Import Handling**: Specialized support for international trade documentation

  ### **Voucher Management System**
  - **Expense Vouchers**: Record business expenses with single or multiple expense heads
  - **Payment Vouchers**: Track supplier payments with automatic invoice reconciliation
  - **Salary Vouchers**: Process employee salaries with detailed breakdown (PF, ESI, TDS, etc.)
  - **Multi-currency Support**: Handle vouchers in different currencies for international operations

  ### **Advanced Purchase Features**
  - **Specialized Supply Types**: Handle different supply categories with appropriate tax treatment
  - **Address Management**: Separate billing and shipping addresses for complex procurement
  - **Reconciliation System**: Automatically match payments with outstanding purchase invoices
  - **Date Range Filtering**: Advanced filtering for better procurement tracking and reporting

  ### **Business Workflow Examples**
  - **Procurement Automation**: Auto-create purchase invoices from supplier orders
  - **Expense Management**: Systematically record and categorize business expenses
  - **Payroll Processing**: Automate salary payments with detailed tax and deduction calculations
  - **Supplier Payment Tracking**: Monitor payment status and reconcile supplier accounts
  - **Financial Compliance**: Maintain proper documentation for tax and audit requirements

  ---

  ## 🔐 Credentials

  To authenticate with the LEDGERS API, you must provide the following:

  * **X-API-Key** – [Get your API Key from LEDGERS](https://ledgers.cloud/in/n8n/)
  * **Email** – Your registered LEDGERS account email
  * **Password** – Your LEDGERS account password
  * **API URL** – Your LEDGERS API endpoint (e.g., https://in-api.ledgers.cloud for India)

  > ⚠️ The node performs a login to retrieve an `api_token`, which is used in all subsequent API requests. If login fails, the node will return the appropriate error message from the API.

  ---

  ## 🚀 Upcoming Release

  ### **LEDGERS Triggers**
  - **Real-time Webhooks**: Listen to events from LEDGERS platform
  - **Event-driven Workflows**: Automate based on contact, invoice, and catalog changes
  - **Multi-region Support**: Triggers for both India and UAE operations

  ### **UAE HRMS Operations**
  - **UAE HRMS Operations**: Add, Update, List and Get Employee
  - **Multi-region Workflows**: Handle both India and UAE operations in single workflows
  - **Localization**: UAE-specific HRMS rules and features

  ---

  ## ✅ Compatibility

  | Feature             | Status        |
  | ------------------- | ------------- |
  | n8n v1.89.0+        | ✅ Supported   |
  | Credential Test     | ✅ Implemented |
  | Auto Token Handling | ✅ Implemented |
  | Continue On Fail    | ✅ Supported   |
  | Date Range Validation| ✅ Implemented |
  | Advanced Numeric Validation| ✅ Implemented |
  | Receipt Operations  | ✅ Implemented |
  | Payment Method Fallback| ✅ Implemented |
  | Invoice Reconciliation| ✅ Implemented |
  | Purchase Operations | ✅ Implemented |
  | Voucher Management  | ✅ Implemented |
  | Multi-Currency Support| ✅ Implemented |
  | Specialized Supply Types| ✅ Implemented |
  | Export Documentation| ✅ Implemented |
  | HRMS Operations     | ✅ Implemented |
  | Banking Operations  | ✅ Implemented |
  | ICICI & Axis Bank   | ✅ Implemented |
  | UAE Contact Operations| ✅ Implemented |
  | UAE Catalog Operations| ✅ Implemented |
  | UAE Sales Operations| ✅ Implemented |
  | UAE Purchase Operations| ✅ Implemented |

  ---

  ## 🚀 Usage Examples

  ### Create a Contact
  1. Select **Contact** as resource
  2. Choose **Create Contact** operation
  3. Provide contact name and optional details
  4. Add billing/shipping addresses if needed

  ### Create an Invoice
  1. Select **Sales** as resource
  2. Choose **Create Invoice** operation
  3. Provide contact details
  4. Add items with required fields (name, ID, rate, quantity, etc.)
  5. Set seller branch ID and optional fields

  ### Create a Receipt
  1. Select **Sales** as resource
  2. Choose **Create Receipt** operation
  3. Provide contact details and amount
  4. Select payment method (with automatic fallback to custom input if API fails)
  5. Set seller ID and expense type (COA ID)
  6. Add optional fields like transaction number, reconciliation details

  ### List Invoices with Filters
  1. Select **Sales** as resource
  2. Choose **List Invoices** operation
  3. Set page number and page size
  4. Add filters (date range, payment status, contact ID)

  ### List Receipts with Filters
  1. Select **Sales** as resource
  2. Choose **List Receipts** operation
  3. Set page number and page size
  4. Add filters (date range, reconcile status, contact ID)

  ### Create a Purchase Invoice
  1. Select **Purchase** as resource
  2. Choose **Create Purchase Invoice** operation
  3. Provide purchase number, dates, and supplier contact details
  4. Add items with required fields (name, rate, quantity, tax details)
  5. Set billing and shipping addresses
  6. Configure additional fields for specialized supplies or export details

  ### Create an Expense Voucher
  1. Select **Purchase** as resource
  2. Choose **Create Voucher** operation
  3. Select **Expense Voucher** as voucher type
  4. Choose between single expense or multiple expenses
  5. Provide expense details, amounts, and tax information
  6. Set branch ID and payment details

  ### Create a Salary Voucher
  1. Select **Purchase** as resource
  2. Choose **Create Voucher** operation
  3. Select **Salary Voucher** as voucher type
  4. Provide employee details and salary month (MM-YYYY format)
  5. Add salary amount and detailed breakdown (PF, ESI, TDS, etc.)
  6. Configure additional salary details as needed

  ### List Purchase Invoices with Filters
  1. Select **Purchase** as resource
  2. Choose **List Purchase Invoices** operation
  3. Set page size and filters (date range, payment status)
  4. Configure ordering options (order by, order column)

  ### Get Bank Statement
  1. Select **Banking** as resource
  2. Choose **Get Bank Statement** operation
  3. Select bank (ICICI or Axis Bank)
  4. Choose account from dropdown (requires connected banking setup)
  5. Set date range for statement period
  6. **Note**: Connected banking must be configured in LEDGERS platform

  ### Create a Catalog Item
  1. Select **Catalog** as resource
  2. Choose **Create Catalog** operation
  3. Provide catalog name, price, type, and item type
  4. Add optional fields like GST rate, units, SKU

  ---

  ## ⚠️ Validation Rules

  ### Date Range Filtering
  - When using date range filters in List Invoices, List Quotes, or List Receipts, **both Date From and Date To must be provided**
  - If only one date is provided, the operation will fail with a validation error

  ### Advanced Numeric Validation (Sales & Purchase Operations)
  - **PID (Item ID)**: Must be an integer greater than 0 (not zero or negative)
  - **Variant ID**: Must be an integer greater than 0 (not zero or negative)
  - **Rate**: Must be an integer >= 0 and not empty
  - **Taxable Per Item/Amount**: Must be an integer >= 0 and not empty
  - **Non-Taxable Per Item/Amount**: Must be an integer >= 0 and not empty
  - **Business Logic**: Taxable amount cannot exceed the rate
  - **Business Logic**: Non-taxable amount cannot exceed the rate
  - **Contact Validation**: Contact Name and Contact ID are required for Invoice, Quote, and Purchase Invoice operations

  ### Required Fields
  - **Sales Operations**: Invoice/Quote items require name, ID, variant ID, rate, quantity, item type, HSN/SAC code, taxable amount, GST rate
  - **Purchase Operations**: Purchase invoice items require item_name, item_code, pid, vid, rate, quantity, item_type, taxable_amount, non_taxable_amount, gst_rate
  - **Receipt Operations**: Contact details, amount, payment method, and expense type (COA ID)
  - **Catalog Operations**: Name, price, type, and item type
  - **Voucher Operations**: Voucher type, branch ID, payment date, and type-specific fields
  - **HRMS Operations**: Name, branch, date of join, personal mobile, office email, date of birth, gender are required for adding employees

  ### Payment Method Handling
  - Payment methods are loaded from the LEDGERS API when available
  - If the API fails or returns no data, users can type custom payment method values
  - This ensures receipts can always be created even when the payment methods API is unavailable

  ### Receipt Operations Features
  - **Flexible Payment Methods**: Automatic fallback to custom input when API is unavailable
  - **Seller Information**: Automatic branch data fetching and inclusion in receipts
  - **Invoice Reconciliation**: Support for reconciling receipts against existing invoices
  - **Transaction Tracking**: Optional transaction number field for payment reference
  - **Multiple Address Types**: Support for both billing and shipping addresses
  - **Notification Support**: Option to send receipt notifications

  ### Purchase Operations Features
  - **Voucher Type Validation**: Different validation rules apply based on voucher type (Expense, Payment, Salary)
  - **Multiple Expense Handling**: Expense vouchers support both single and multiple expense head entries
  - **Salary Month Format**: Salary vouchers require MM-YYYY format for salary month field
  - **Reconciliation Support**: Payment vouchers can reconcile against existing purchase invoices
  - **Specialized Supply Types**: Purchase invoices support different supply categories with appropriate tax handling
  - **Export Documentation**: Support for export bill numbers, dates, and port codes for international trade
  - **Currency Validation**: Multi-currency support with proper currency code validation
  - **Address Synchronization**: Option to use billing address for shipping when addresses are the same

  ---

  ## 🔄 Error Handling & Continue On Fail

  This node supports **"Continue On Fail"**, meaning:

  * If one item fails (e.g., due to an invalid ID or missing required field), it logs the error and continues processing the rest of the items.
  * If disabled, the node stops execution upon the first error.
  * Validation errors are clearly communicated with specific error messages.

  You can enable this in the node's settings under the **"Continue On Fail"** option.

  ---

  ## 📚 Resources

  * [n8n Community Node Docs](https://docs.n8n.io/integrations/community-nodes/)
  * [LEDGERS Website](https://ledgers.cloud/in/n8n/)
  * [LEDGERS API Documentation](https://ledgers.readme.io/reference/authentication)

  ---

  ## 🕒 Version History

  | Version | Changes                                                                          |
  | ------- | ---------------------------------------------------------------------------------|
  | 0.0.1   | Stable Release of LEDGERS Custom Node under N8N                                  |
  | 0.0.2   | Logo Rename for Linux OS                                                         |
  | 0.0.3   | Catalog Operations Release with updates in Contact Operations                    |
  | 0.0.4   | No code changes. Only updated package-lock.json to match npm registry state      |
  | 0.0.5   | No code changes. Logo File Updated with Better Resolution                        |
  | 0.0.6   | No code changes. Final Logo File Updated with Better Resolution                  |
  | 0.0.7   | Sales Operations like Invoice, Quotes and Receipt Release with enhanced features |
  | 0.0.8   | Purchase Operations Release with Purchase Invoices, Vouchers, and advanced features |
  | 0.0.9   | HRMS operations and Enhanced Validations for Sales and Purchase Operations |
  | 0.0.10  | Banking Operation to Retrieve connected banking account statements in LEDGERS and Opening Balance in Create and Update Contact |
  | 0.0.11  | Enhanced Contact Operations with multiple billing/shipping addresses, tax field mapping, currency support, and multi-region API support (India & UAE) |
  | 0.0.12  | In Catalog Operations Units List Updated as per Document |
  | 0.0.13  | Tax Rate Updates, Contact Inputs Name Update and Payment Mode Bug Fix |
  | 0.0.14  | Tax Rates Updated for India |
  | 0.0.15  | Removed HSN/SAC code function, made HSN/SAC manual input required, fixed hardcoded API credentials, updated deprecated IRequestOptions to IHttpRequestOptions, and added pairedItem for data provenance |
  | 0.0.16  | Removed HSN/SAC code required in Update Catalog |
  | 0.0.17  | HSN/SAC Bug Fix in Front end of Catalog Operations and Back end |
  | 0.0.18  | Sales Operation released for UAE |
  | 0.0.19  | Purchase Operations released for UAE (except salary vouchers). Common Operations released for Both India and UAE. Removed Bank Operations to optimize |

  ---

  Maintained by the [LEDGERS.cloud](https://ledgers.cloud/) team.

ai_documentation_summary:
  {"purpose":"The LEDGERS node enables automation of business operations by integrating with the LEDGERS cloud platform, allowing users to manage contacts, catalogs, invoices, quotes, receipts, purchase invoices, vouchers, employees, and bank statements through n8n workflows.","capabilities":["Create and update contacts with addresses (billing/shipping) and region-specific fields (India/UAE)","Manage catalogs and variants","Generate and manage invoices, quotes, and receipts","Handle purchase invoices and vouchers","Retrieve and list employees and bank statements","Support real-time webhooks for event-driven automation","Enable bulk operations and data synchronization with filtering and pagination"],"authentication":"API key required (implied by LEDGERS API access; specific auth method not detailed in README)","commonUseCases":["Automating invoice and quote generation for e-commerce or service-based businesses","Syncing customer data and managing contact records across systems","Integrating LEDGERS with CRM or ERP tools for multi-system workflows","Processing bank statements from ICICI and Axis Bank for financial tracking","Managing employee records and HR operations in a centralized system"],"limitations":["Only supports ICICI and Axis Bank for bank statement retrieval","No explicit mention of error handling, rate limiting, or retry mechanisms","Limited details on data transformation or mapping capabilities beyond basic fields","Webhook trigger may require proper setup in LEDGERS to function"],"relatedNodes":["n8n CRM nodes","n8n ERP nodes","n8n invoicing nodes","n8n webhook nodes","n8n data transformation nodes"]}


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

updated_at: 2026-01-07 20:08:16
author_name: bookoly
author_github_url: https://github.com/bookoly/n8n-node.git
npm_package_name: n8n-nodes-bookoly
npm_version: 1.0.16
community_fetched_at: 2026-01-07T20:08:16.047Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "sound",
      "options": [
        {
          "name": "Sound",
          "value": "sound"
        },
        {
          "name": "Speech",
          "value": "speech"
        },
        {
          "name": "Speech Dialogue",
          "value": "speech_dialogue"
        },
        {
          "name": "File",
          "value": "file"
        },
        {
          "name": "Transcription",
          "value": "transcript"
        },
        {
          "name": "Video",
          "value": "video"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createSoundEffect",
      "options": [
        {
          "name": "Combine Sounds",
          "value": "combineSounds",
          "action": "Combine sounds",
          "description": "Merge multiple sound files into a single seamless audio track"
        },
        {
          "name": "Create a Sound Effect",
          "value": "createSoundEffect",
          "action": "Create a sound effect",
          "description": "Generate sound effects based on a text description"
        },
        {
          "name": "Get a Specific Sound",
          "value": "getSound",
          "action": "Get a sound",
          "description": "Fetches sound data from the API using the sound ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sound"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createSpeech",
      "options": [
        {
          "name": "Create a Speech Synthesis",
          "value": "createSpeech",
          "action": "Create a speech synthesis",
          "description": "Synthesizes a text into speech"
        },
        {
          "name": "Get a Specific Speech",
          "value": "getSpeech",
          "action": "Get a speech",
          "description": "Fetches speech data from the API using the speech ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "speech"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createSpeechDialogue",
      "options": [
        {
          "name": "Create a Speech Dialogue",
          "value": "createSpeechDialogue",
          "action": "Create a speech dialogue",
          "description": "Generate a conversation between multiple AI voices from text"
        },
        {
          "name": "Get a Specific Speech Dialogue",
          "value": "getSpeechDialogue",
          "action": "Get a speech dialogue",
          "description": "Fetches speech dialogue data from the API using the speech dialogue ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "speech_dialogue"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generateSubtitleFile",
      "options": [
        {
          "name": "Generate a Subtitle File",
          "value": "generateSubtitleFile",
          "action": "Generate a subtitle file",
          "description": "Generate subtitle files in multiple formats from a video or audio URL"
        },
        {
          "name": "Get a Specific Subtitle File",
          "value": "getSubtitleFile",
          "action": "Get a subtitle file",
          "description": "Fetches subtitle file data from the API using the subtitle file ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createTranscript",
      "options": [
        {
          "name": "Transcribe Audio or Video",
          "value": "createTranscript",
          "action": "Transcribe audio or video",
          "description": "Transcribe your audio or video files into clear, accurate text with timestamps"
        },
        {
          "name": "Get a Specific Transcription",
          "value": "getTranscript",
          "action": "Get a transcription",
          "description": "Fetches transcript data from the API using the transcript ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transcript"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generateVideo",
      "options": [
        {
          "name": "Add Audio to a Video",
          "value": "addAudioToVideo",
          "action": "Add audio to a video",
          "description": "Seamlessly add audio tracks to your video"
        },
        {
          "name": "Add Audio with Subtitles to a Video",
          "value": "addAudioWithSubtitlesToVideo",
          "action": "Add audio with subtitles to a video",
          "description": "Adds audio to your video and automatically generates and adds subtitles from the audio"
        },
        {
          "name": "Add Subtitles to a Video",
          "value": "addSubtitlesToVideo",
          "action": "Add subtitles to a video",
          "description": "Automatically generates and adds subtitles to your video"
        },
        {
          "name": "Add Subtitles to a Video From a File",
          "value": "addSubtitlesToVideoFromFile",
          "action": "Add subtitles to a video from a file",
          "description": "Automatically generates and adds subtitles to your video"
        },
        {
          "name": "Add Watermark to a Video",
          "value": "addWatermarkToVideo",
          "action": "Add a watermark to a video",
          "description": "Places an image as a watermark on the video at specified coordinates"
        },
        {
          "name": "Blur a Video",
          "value": "blurVideo",
          "action": "Blur a video",
          "description": "Apply a blur effect to a specific area of a video"
        },
        {
          "name": "Clip a Video",
          "value": "clipVideo",
          "action": "Clip a video",
          "description": "Extract a clip from a video using a start time and duration"
        },
        {
          "name": "Create a Slideshow",
          "value": "createSlideshow",
          "action": "Create a slideshow",
          "description": "Creates a video slideshow from images, videos, or a combination of both"
        },
        {
          "name": "Crop a Video",
          "value": "cropVideo",
          "action": "Crop a video",
          "description": "Crops the video to a specific area using custom coordinates and dimensions"
        },
        {
          "name": "Extract Audio From a Video",
          "value": "extractAudioFromVideo",
          "action": "Extract audio from a video",
          "description": "Separates and saves the audio track from a video file"
        },
        {
          "name": "Frame a Video",
          "value": "frameVideo",
          "action": "Frame a video",
          "description": "Extract a single frame from a video at a specified timestamp and save it as an image"
        },
        {
          "name": "Generate a Video",
          "value": "generateVideo",
          "action": "Generate a video",
          "description": "Create a video from images and video clips, generate and add a voice-over with automated subtitles, and integrate background music"
        },
        {
          "name": "Get a Specific Video",
          "value": "getVideo",
          "action": "Get a video",
          "description": "Fetches video data from the API using the video ID"
        },
        {
          "name": "Mute a Video",
          "value": "muteVideo",
          "action": "Mute a video",
          "description": "Mute the video's audio by reducing the volume to zero"
        },
        {
          "name": "Rotate a Video",
          "value": "rotateVideo",
          "action": "Rotate a video",
          "description": "Rotate a video by 90, 180, or 270 degrees clockwise"
        },
        {
          "name": "Split a Video Into Scenes",
          "value": "splitVideoIntoScenes",
          "action": "Split a video into scenes",
          "description": "Automatically divide a video into multiple segments based on scene detection or fixed intervals"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "video"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Combine Sounds",
      "value": "combineSounds",
      "action": "Combine sounds",
      "description": "Merge multiple sound files into a single seamless audio track"
    },
    {
      "name": "Create a Sound Effect",
      "value": "createSoundEffect",
      "action": "Create a sound effect",
      "description": "Generate sound effects based on a text description"
    },
    {
      "name": "Get a Specific Sound",
      "value": "getSound",
      "action": "Get a sound",
      "description": "Fetches sound data from the API using the sound ID"
    },
    {
      "name": "Create a Speech Synthesis",
      "value": "createSpeech",
      "action": "Create a speech synthesis",
      "description": "Synthesizes a text into speech"
    },
    {
      "name": "Get a Specific Speech",
      "value": "getSpeech",
      "action": "Get a speech",
      "description": "Fetches speech data from the API using the speech ID"
    },
    {
      "name": "Create a Speech Dialogue",
      "value": "createSpeechDialogue",
      "action": "Create a speech dialogue",
      "description": "Generate a conversation between multiple AI voices from text"
    },
    {
      "name": "Get a Specific Speech Dialogue",
      "value": "getSpeechDialogue",
      "action": "Get a speech dialogue",
      "description": "Fetches speech dialogue data from the API using the speech dialogue ID"
    },
    {
      "name": "Generate a Subtitle File",
      "value": "generateSubtitleFile",
      "action": "Generate a subtitle file",
      "description": "Generate subtitle files in multiple formats from a video or audio URL"
    },
    {
      "name": "Get a Specific Subtitle File",
      "value": "getSubtitleFile",
      "action": "Get a subtitle file",
      "description": "Fetches subtitle file data from the API using the subtitle file ID"
    },
    {
      "name": "Transcribe Audio or Video",
      "value": "createTranscript",
      "action": "Transcribe audio or video",
      "description": "Transcribe your audio or video files into clear, accurate text with timestamps"
    },
    {
      "name": "Get a Specific Transcription",
      "value": "getTranscript",
      "action": "Get a transcription",
      "description": "Fetches transcript data from the API using the transcript ID"
    },
    {
      "name": "Add Audio to a Video",
      "value": "addAudioToVideo",
      "action": "Add audio to a video",
      "description": "Seamlessly add audio tracks to your video"
    },
    {
      "name": "Add Audio with Subtitles to a Video",
      "value": "addAudioWithSubtitlesToVideo",
      "action": "Add audio with subtitles to a video",
      "description": "Adds audio to your video and automatically generates and adds subtitles from the audio"
    },
    {
      "name": "Add Subtitles to a Video",
      "value": "addSubtitlesToVideo",
      "action": "Add subtitles to a video",
      "description": "Automatically generates and adds subtitles to your video"
    },
    {
      "name": "Add Subtitles to a Video From a File",
      "value": "addSubtitlesToVideoFromFile",
      "action": "Add subtitles to a video from a file",
      "description": "Automatically generates and adds subtitles to your video"
    },
    {
      "name": "Add Watermark to a Video",
      "value": "addWatermarkToVideo",
      "action": "Add a watermark to a video",
      "description": "Places an image as a watermark on the video at specified coordinates"
    },
    {
      "name": "Blur a Video",
      "value": "blurVideo",
      "action": "Blur a video",
      "description": "Apply a blur effect to a specific area of a video"
    },
    {
      "name": "Clip a Video",
      "value": "clipVideo",
      "action": "Clip a video",
      "description": "Extract a clip from a video using a start time and duration"
    },
    {
      "name": "Create a Slideshow",
      "value": "createSlideshow",
      "action": "Create a slideshow",
      "description": "Creates a video slideshow from images, videos, or a combination of both"
    },
    {
      "name": "Crop a Video",
      "value": "cropVideo",
      "action": "Crop a video",
      "description": "Crops the video to a specific area using custom coordinates and dimensions"
    },
    {
      "name": "Extract Audio From a Video",
      "value": "extractAudioFromVideo",
      "action": "Extract audio from a video",
      "description": "Separates and saves the audio track from a video file"
    },
    {
      "name": "Frame a Video",
      "value": "frameVideo",
      "action": "Frame a video",
      "description": "Extract a single frame from a video at a specified timestamp and save it as an image"
    },
    {
      "name": "Generate a Video",
      "value": "generateVideo",
      "action": "Generate a video",
      "description": "Create a video from images and video clips, generate and add a voice-over with automated subtitles, and integrate background music"
    },
    {
      "name": "Get a Specific Video",
      "value": "getVideo",
      "action": "Get a video",
      "description": "Fetches video data from the API using the video ID"
    },
    {
      "name": "Mute a Video",
      "value": "muteVideo",
      "action": "Mute a video",
      "description": "Mute the video's audio by reducing the volume to zero"
    },
    {
      "name": "Rotate a Video",
      "value": "rotateVideo",
      "action": "Rotate a video",
      "description": "Rotate a video by 90, 180, or 270 degrees clockwise"
    },
    {
      "name": "Split a Video Into Scenes",
      "value": "splitVideoIntoScenes",
      "action": "Split a video into scenes",
      "description": "Automatically divide a video into multiple segments based on scene detection or fixed intervals"
    }
  ]

npm_readme:
  # n8n-nodes-bookoly

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

  bookoly is a service that makes it easy to create, edit, and process your content automatically.
  With bookoly, you can generate slideshows, add subtitles, create voice-overs, split videos into multiple scenes, and 
  a lot more — all through a simple API.

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

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

  ## Installation

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

  ## Operations

  ### 🎞️ Video

  * **Add Audio to a Video** – Add background music or a voice-over to a video.
  * **Add Audio with Subtitles to a Video** – Add a voice-over and automatically generate and add subtitles from the audio.
  * **Add Subtitles to a Video** – Automatically generate subtitles from the video’s audio and insert them into the file.
  * **Add Subtitles to a Video from a File** – Import and embed an external subtitle file (e.g. `.srt`, `.ass`) into a video.
  * **Add Watermark to a Video** – Overlay an image or text watermark onto a video.
  * **Blur a Video** – Apply a blur effect to the entire video or selected regions.
  * **Clip a Video** – Extract a specific section of a video by start time and duration.
  * **Create a Slideshow** – Generate a slideshow video from multiple images and video clips.
  * **Crop a Video** – Trim away unwanted edges of a video by defining crop dimensions.
  * **Extract Audio from a Video** – Save the audio track of a video as a separate sound file.
  * **Frame a Video** – Capture a single image from a video at the desired timestamp.
  * **Generate a Video** – Create a video from images and video clips with a voice-over and subtitles.
  * **Mute a Video** – Set the volume of a video to 0%.
  * **Rotate a Video** – Rotate a video by 90, 180, or 270 degrees.
  * **Split a Video into Scenes** – Split a video by automatic scene detection, fixed time intervals, or equal segments.

  ### 🎙️️ Speech

  * **Create a Speech Synthesis** – Convert text into a natural-sounding speech with AI.

  ### 🗣️ Speech Dialogue

  * **Create a Speech Dialogue** – Generate a conversation between multiple AI voices.

  ### 📜 Transcript

  * **Transcribe Media** – Automatically transcribe the audio from a video or audio file.

  ### 🎼 Sound

  * **Combine Sounds** – Merge two or more audio files into a single track.
  * **Create a Sound Effect** – Generate a custom sound effect with AI.

  ### 📂 File

  * **Generate a Subtitle File** – Create a subtitle file (e.g. `.srt`, `.vtt`) from a video or audio file.

  ## Credentials

  To use the bookoly node, you need an API token:

  1. Sign up for an account at [bookoly](https://bookoly.com).
  2. Open your profile from the left menu and scroll down to the API Tokens section.
  3. Create a new API token. 
     * Enable all permissions.
     * (Optional) Set an expiration date.
  4. Copy the token and store it in a safe place.
  5. In n8n, create new credentials for bookoly and paste your token.

  ## Compatibility

  * Minimum n8n version: 1.106.3
  * Tested with: n8n 1.106.3+
  * Known issues: None at this time.

  ## Usage

  Once installed, you can add the bookoly node to your workflow to automate content generation and processing.

  📺 To see all examples in action check out the full bookoly YouTube tutorial [playlist](https://www.youtube.com/playlist?list=PLaZXufV_18nEQ_P79pD3ccuR8xQwjcJqu)

  If you’re new to n8n, check the [Try it out](https://docs.n8n.io/try-it-out/) guide

  ## Resources

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

  ## Version history

  1.0.16
  * Fix type for subtitle text case

  1.0.15
  * Performance improvements and bug fixes

  1.0.14
  * Replace hardcoded default values with enums

  1.0.13
  * Minor performance improvements

  1.0.12
  * Minor performance improvements and bug fixes 

  1.0.11
  * Improved the 'Generate a Video' node for more flexibility.
  * Added punctuation and text case options for subtitles.
  * Added mute option for scenes.
  * Added transitions that can be used between scenes.

  1.0.10
  * Handle errors with continueOnFail

  1.0.9
  * Added 'Create a speech dialogue' action.
  * Updated 'Combine sounds' action, to expect JSON input for Audio.

  1.0.8
  * Update youtube playlist url in readme.

  1.0.7
  * Refine video clip parameters for clarity.

  1.0.6
  * Change scenes type from fixedCollection to json.

  1.0.5
  * Make the bookoly node usable as a tool.

  1.0.4
  * Initial release with support for all bookoly operations.

ai_documentation_summary:
  {"purpose":"The bookoly node enables automation of content creation and processing tasks such as generating videos, adding subtitles and audio, creating speech, transcribing media, and manipulating video files through the bookoly API.","capabilities":["Add audio to a video","Add audio with subtitles to a video","Add subtitles to a video (auto-generated or from file)","Add watermark to a video","Blur a video","Clip a video","Create a slideshow","Crop a video","Extract audio from a video","Frame a video"],"authentication":"API token required. Users must sign up at bookoly.com, generate an API token with full permissions (and optional expiration), then paste it into n8n credentials.","commonUseCases":["Automatically generate videos from images or clips with voice-over and subtitles","Add subtitles to videos using auto-transcription or imported files","Create engaging content with AI-generated speech and dialogue","Split videos into scenes for editing or analysis","Combine audio tracks or generate sound effects for media projects"],"limitations":[],"relatedNodes":["n8n-nodes-base.audio","n8n-nodes-base.video","n8n-nodes-base.transcription","n8n-nodes-base.file"]}


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-01-07 20:08:16
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-01-07T20:08:16.048Z
ai_summary_generated_at: 2026-01-08 10:45:32
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":"The Simla Trigger node initiates n8n workflows in response to events from the Simla CRM platform, such as customer messages, order changes, or customer updates.","capabilities":["Triggers on customer messages","Creates and edits customers","Creates and edits orders","Sends messages to chat","Assigns, unassigns, and closes dialogs"],"authentication":"API key authentication via X-Api-Key header; requires a Simla account and an API key with minimal permissions: Read/Write for Orders, Customers, and Integration","commonUseCases":["Automatically respond to customer messages in Simla","Create new orders linked to specific customers","Update customer records based on incoming events","Assign or close dialogs based on message content","Automate workflow responses to customer interactions"],"limitations":[],"relatedNodes":["n8n-nodes-simla.simlaCustomer","n8n-nodes-simla.simlaOrder","n8n-nodes-simla.simlaMessage","n8n-nodes-simla.simlaDialog"]}


node_type: n8n-nodes-aiscraper.aiScraper
package_name: n8n-nodes-aiscraper
display_name: AI Scraper
description: Scrape any Website with just a URL and Data Description using Parsera API (10K+ downloads)
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: raznem
author_github_url: https://github.com/parsera-labs/n8n-parsera.git
npm_package_name: n8n-nodes-aiscraper
npm_version: 0.2.1
community_fetched_at: 2026-01-07T20:08:16.048Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "new-scraper",
      "options": [
        {
          "name": "New Scraper",
          "value": "new-scraper"
        },
        {
          "name": "Existing Scraper",
          "value": "existing-scraper"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scrapeUrl",
      "options": [
        {
          "name": "Scrape URL",
          "value": "scrapeUrl",
          "action": "Scrape URL",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/extract",
              "body": {
                "url": "={{$parameter[\"url\"]}}",
                "mode": "={{$parameter[\"mode\"]}}",
                "proxy_country": "={{$parameter[\"proxyCountry\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Provide URL and Data Description"
        },
        {
          "name": "Parse HTML",
          "value": "parseHtml",
          "action": "Parse HTML",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/parse",
              "body": {
                "mode": "={{$parameter[\"mode\"]}}",
                "content": "={{$parameter[\"content\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Provide HTML content and Data Description"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "new-scraper"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "runScraper",
      "options": [
        {
          "name": "Existing Scraper",
          "value": "runScraper",
          "action": "Scraper made in parsera org with advanced features",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/scrapers/run",
              "body": {
                "url": "={{$parameter[\"url\"] || undefined}}",
                "name": "={{$parameter[\"existingScraperName\"]}}",
                "proxy_country": "={{$parameter[\"proxyCountry\"]}}"
              },
              "method": "POST",
              "baseURL": "https://api.parsera.org/v1"
            }
          },
          "description": "Scraper made in parsera.org with advanced features, such as scraping code generation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "existing-scraper"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Scrape URL",
      "value": "scrapeUrl",
      "action": "Scrape URL",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/extract",
          "body": {
            "url": "={{$parameter[\"url\"]}}",
            "mode": "={{$parameter[\"mode\"]}}",
            "proxy_country": "={{$parameter[\"proxyCountry\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Provide URL and Data Description"
    },
    {
      "name": "Parse HTML",
      "value": "parseHtml",
      "action": "Parse HTML",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/parse",
          "body": {
            "mode": "={{$parameter[\"mode\"]}}",
            "content": "={{$parameter[\"content\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Provide HTML content and Data Description"
    },
    {
      "name": "Existing Scraper",
      "value": "runScraper",
      "action": "Scraper made in parsera org with advanced features",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/scrapers/run",
          "body": {
            "url": "={{$parameter[\"url\"] || undefined}}",
            "name": "={{$parameter[\"existingScraperName\"]}}",
            "proxy_country": "={{$parameter[\"proxyCountry\"]}}"
          },
          "method": "POST",
          "baseURL": "https://api.parsera.org/v1"
        }
      },
      "description": "Scraper made in parsera.org with advanced features, such as scraping code generation"
    }
  ]

npm_readme:
  # n8n-nodes-aiscraper

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

  ## Quickstart
  [![Quickstart Video](https://img.youtube.com/vi/VUzKFRuqvGM/0.jpg)](https://www.youtube.com/watch?v=VUzKFRuqvGM)

  Parsera AI Scraper is a service that uses AI to extract structured data from web pages, either by providing a URL or raw HTML content. It simplifies web scraping by allowing users to define data fields through natural language descriptions or by using pre-configured scraping agents.

  [https://parsera.org](https://parsera.org)

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

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

  ## Installation

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

  ## Operations

  The Parsera AI Scraper node supports the following operations:

  *   **Extractor:**
      *   **Extract from URL:** Provide a URL, and Parsera will fetch the content and extract data based on your defined attributes. Supports proxy usage and sending cookies.
      *   **Parse HTML:** Provide raw HTML content, and Parsera will parse it to extract data based on your defined attributes.
  *   **Scraping Agent:**
      *   **Scraping Agent:** Utilize a pre-configured scraping agent on the Parsera platform to scrape a given URL. **Note:** The Parsera agent itself must be created separately via the [Parsera application](https://parsera.org) or Parsera API before it can be used by this n8n node operation. This operation uses a different base URL (`https://agents.parsera.org/v1`) and also supports proxy usage and sending cookies.

  ## Credentials

  To use this node, you need to create AI Scraper credentials within n8n. This requires an API Key from Parsera.

  1.  Sign up for an account at [https://parsera.org](https://parsera.org).
  2.  Once logged in, navigate to your API settings to find your API Key.
  3.  In n8n, create new credentials of type "AI Scraper API".
  4.  Enter the API Key obtained from Parsera into the API Key field in the n8n credential configuration.

  ## Compatibility

  *   **Minimum n8n Version:** While the node might work with earlier versions, it has been developed and tested primarily on **n8n version 1.19.3**.

  ## Usage

  This node allows you to extract structured data from websites.

  **Key Parameters:**

  *   **Resource:** Choose between "Extractor" (for direct URL/HTML extraction) and "Scraping Agent" (for using pre-configured Parsera agents).
  *   **Operation:** Select the specific action based on the chosen resource.
  *   **URL/Content:** Provide the target URL or raw HTML content, depending on the operation.
  *   **Prompt:** Provide context and general instructions to scraper.
  *   **Attributes Input Mode (for Extractor Resource):**
      *   **Fields:** Define attributes using a user-friendly interface with separate fields for Field Name, Type, and Field Description. This is the default and recommended for most UI-based configurations.
      *   **JSON:** Define attributes as a single JSON object. This mode is powerful for programmatic use, AI tool integration, or complex schemas. The expected format is `{"your_field_name": {"description": "What to extract", "type": "string"}}`.
  *   **Attributes (for Extractor Resource):** Depending on the selected input mode, you will either fill out individual fields or provide a JSON object. At least one attribute is required.
      *   **Field Name:** The key for the extracted data in the output (e.g., `productTitle`, `price`).
      *   **Type:** The expected data type (e.g., `string`, `integer`, `number`, `boolean`, `list`, `object`, `any`).
      *   **Field Description:** A natural language instruction telling the AI what data to look for (e.g., "The main title of the product page", "The discounted price of the item").
  *   **Mode (for Extractor Resource):**
      *   **Standard:** Balanced approach for speed and accuracy.
      *   **Precision:** Focuses on higher accuracy, potentially at the cost of speed or resources.
  *   **Proxy Country:** Optionally route your request through a proxy in a specific country to access geo-restricted content.
  *   **Cookies:** Optionally provide cookies as a JSON array to be sent with the request (e.g., for authenticated sessions). Format: `[{"name": "cookieName", "value": "cookieValue", "domain": ".example.com"}]`.
  *   **Agent Name (for Scraping Agent Resource):** The name of the pre-configured agent on the Parsera platform. This agent must have been created beforehand in your Parsera account.

  The output of the node will be a list of items containing the extracted data.

  For more detailed examples and advanced usage, refer to the [Parsera API documentation](https://docs.parsera.org/api/getting-started/).
  If you are new to n8n, you might find the [Try it out](https://docs.n8n.io/try-it-out/) documentation helpful to get started with the platform.

  ## Resources

  *   [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  *   [Parsera Website](https://parsera.org)
  *   [Parsera API Documentation](https://docs.parsera.org/api/getting-started/)

ai_documentation_summary:
  {"purpose":"The AI Scraper node enables users to extract structured data from websites using AI-powered parsing via the Parsera API, supporting both direct URL/HTML extraction and pre-configured scraping agents with natural language descriptions or JSON-defined attributes.","capabilities":["Extract data from a website URL using natural language field descriptions","Parse raw HTML content to extract structured data","Use pre-configured scraping agents from Parsera platform","Support for proxy usage and sending cookies","Define data attributes via user-friendly form or JSON input","Choose between 'Standard' and 'Precision' modes for accuracy and speed","Support for geo-restricted content via proxy country selection"],"authentication":"API key required from Parsera. The API key must be obtained from the Parsera dashboard and entered in the n8n credentials under 'AI Scraper API'.","commonUseCases":["Extract product titles, prices, and descriptions from e-commerce sites","Scrape dynamic or JavaScript-heavy pages using AI parsing","Automate data collection from websites with complex or inconsistent structures","Integrate with existing workflows to gather structured data without manual scraping","Use pre-built scraping agents for consistent, repeatable data extraction"],"limitations":["Scraping Agent operation requires a pre-created agent in the Parsera platform","No built-in support for handling dynamic JavaScript rendering beyond what Parsera's AI can interpret","Performance and accuracy may vary based on the complexity of the target page and prompt clarity","Limited to websites accessible via the provided URL or raw HTML; does not support private or authenticated pages without cookies"],"relatedNodes":["Webhook","HTTP Request","Function","Set","Filter"]}


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-01-07 20:08:16
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-01-07T20:08:16.049Z
ai_summary_generated_at: 2026-01-08 10:45:32
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":"The IKAS n8n node enables automation of e-commerce operations by integrating with the IKAS platform via its GraphQL API, supporting product management, order processing, inventory control, and customer data handling.","capabilities":["Retrieve multiple products (Get Many)","Search products with filters and pagination","Create new products with variants, pricing, and stock assignment","Update existing product information","Retrieve orders with advanced filtering by status, customer, payment, and package details","Fulfill order line items with quantity, tracking, and shipment notifications","Update order package statuses (e.g., shipped, delivered) with tracking info","Retrieve and assign stock locations"],"authentication":"OAuth2 required. Users must create a Private App in the IKAS admin panel to obtain a Client ID and Client Secret, which are then used to authenticate in n8n.","commonUseCases":["Syncing external product data into IKAS store","Automating order fulfillment for paid orders","Managing inventory through stock location assignment","Generating sales reports via order data retrieval","Updating product details based on external sources"],"limitations":[],"relatedNodes":["Webhook","Filter","Email","Data Processing"]}


node_type: n8n-nodes-softr.softr
package_name: n8n-nodes-softr
display_name: Softr
description: Softr.io Integration Node
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: dariusz-softr
author_github_url: https://github.com/softr-io/n8n-softr.git
npm_package_name: n8n-nodes-softr
npm_version: 1.0.7
community_fetched_at: 2026-01-07T20:08:16.050Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "database",
      "options": [
        {
          "name": "Database Record",
          "value": "database",
          "action": "Manage database records",
          "description": "Manage database records"
        },
        {
          "name": "Application User",
          "value": "appUser",
          "action": "Manage application users",
          "description": "Manage application users"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create record",
          "description": "Create database record"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete record",
          "description": "Delete database record"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many records",
          "description": "Get many database records"
        },
        {
          "name": "Get One",
          "value": "getOne",
          "action": "Get one record",
          "description": "Get one database record"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update record",
          "description": "Update database record"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "database"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createAppUser",
      "options": [
        {
          "name": "Create Application User",
          "value": "createAppUser",
          "action": "Create application user",
          "description": "Create an application user"
        },
        {
          "name": "Delete Application User",
          "value": "deleteAppUser",
          "action": "Delete application user",
          "description": "Delete an application user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "appUser"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create record",
      "description": "Create database record"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete record",
      "description": "Delete database record"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many records",
      "description": "Get many database records"
    },
    {
      "name": "Get One",
      "value": "getOne",
      "action": "Get one record",
      "description": "Get one database record"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update record",
      "description": "Update database record"
    },
    {
      "name": "Create Application User",
      "value": "createAppUser",
      "action": "Create application user",
      "description": "Create an application user"
    },
    {
      "name": "Delete Application User",
      "value": "deleteAppUser",
      "action": "Delete application user",
      "description": "Delete an application user"
    }
  ]

npm_readme:
  # n8n-nodes-softr

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

  Softr is a no-code platform that allows you to build web applications and websites. It provides a user-friendly interface for creating and managing applications without needing to write code.

  [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

  ### Softr Databases

  Triggers

  * `On New Record`: Triggered when a new record is created in a Softr database.
  * `On Updated Record`: Triggered when an existing record in a Softr database is updated.

  Actions:

  * `Create Record`: Creates a new record in a specified Softr database.
  * `Update Record`: Updates an existing record in a specified Softr database.
  * `Delete Record`: Deletes a record from a specified Softr database.
  * `Get Record`: Retrieves a specific record from a specified Softr database.
  * `Get All Records`: Retrieves all records from a specified Softr database.
  * `Search Records`: Searches for records in a specified Softr database based on a search query.

  ### Softr Application Users

  * `Create Application User`: Creates a new user in a specified Softr application.
  * `Delete Application User`: Deletes a user from a specified Softr application.

  ## Credentials

  To use Softr, you must authenticate with your API Key. You can find your API Key in your [Softr account settings](https://studio.softr.io/user/apisettings).

  More details on how to find your API Key can be found in the [Softr documentation](https://docs.softr.io/softr-api/tTFQ5vSAUozj5MsKixMH8C/api-setup-and-endpoints/j1PrTZxt7pv3iZCnZ5Fp19).

  ## Compatibility

  Implemented and tested against n8n version 1.103.2.

  ## Usage

  Softr node uses Softr Public API under the hood. You can find more information about the API in the [Softr API documentation](https://docs.softr.io/softr-api/tTFQ5vSAUozj5MsKixMH8C/softr-database-api/5aZs45abxPkQ4dURKFwRGF).

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Softr API documentation](https://docs.softr.io/softr-api/tTFQ5vSAUozj5MsKixMH8C/softr-database-api/5aZs45abxPkQ4dURKFwRGF)

ai_documentation_summary:
  {"purpose":"The Softr n8n node enables integration with Softr.io, allowing users to interact with Softr databases and application users through automated workflows, such as creating, updating, deleting, or retrieving records.","capabilities":["Trigger on new or updated records in Softr databases","Create, update, delete, and retrieve records in Softr databases","Search records in Softr databases","Create and delete application users in Softr applications"],"authentication":"API key required; obtained from Softr account settings under API settings","commonUseCases":["Automatically create or update records in a Softr database based on external events","Sync data between n8n and Softr applications","Trigger workflows when a record is added or modified in Softr","Manage user accounts in Softr applications via automation"],"limitations":[],"relatedNodes":["Database nodes","User management nodes","Trigger nodes"]}


node_type: n8n-nodes-triggercmd.triggercmd
package_name: n8n-nodes-triggercmd
display_name: TriggerCMD
description: Run a command on a computer.
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: rvandermey
author_github_url: https://github.com/rvmey/
npm_package_name: n8n-nodes-triggercmd
npm_version: 1.0.2
community_fetched_at: 2026-01-07T20:08:16.050Z
ai_summary_generated_at: 2026-01-08 10:45:32
npm_readme:
  # n8n-nodes-triggercmd

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

  TRIGGERcmd is a cloud service that allows you to run commands on your computers via the Internet.  You install the TRIGGERcmd agent on your Windows, Mac, or Linux computer, configure commands to run, then run them.

  [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

  Run a command on a computer.

  ## Credentials

  Create an account at triggercmd.com and copy a token from the Instructions page.

  ## Compatibility

  Tested on n8n version 1.106.3

  ## Usage

  If the command you'll run on your computer via TRIGGERcmd has parameters enabled, you can use n8n node input data as command parameters.

  ## Resources

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

ai_documentation_summary:
  {"purpose":"Executes commands on a local computer via the TRIGGERcmd service, allowing integration of local system operations into n8n workflows.","capabilities":["Run commands on Windows, Mac, or Linux machines","Pass n8n workflow input data as parameters to the command","Use command parameters dynamically based on workflow inputs"],"authentication":"API token required; obtain from triggercmd.com account under 'Instructions' page","commonUseCases":["Automating local file operations (e.g., file creation, deletion)","Running scripts or batch commands on a local machine","Triggering system-level actions via workflow automation"],"limitations":["Requires manual installation and configuration of the TRIGGERcmd agent on the local machine","Limited to commands supported by the TRIGGERcmd service","No built-in error handling or logging within the n8n node itself"],"relatedNodes":["n8n-nodes-base.exec","n8n-nodes-base.httpRequest"]}


node_type: @wizaco/n8n-nodes-wiza.wiza
package_name: @wizaco/n8n-nodes-wiza
display_name: Wiza
description: Interact with Wiza API for contact enrichment
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: wizadev
author_github_url: https://github.com/WizaCo/n8n-nodes-wiza.git
npm_package_name: @wizaco/n8n-nodes-wiza
npm_version: 0.1.1
community_fetched_at: 2026-01-07T20:08:16.051Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "emailFinder",
      "options": [
        {
          "name": "Email Finder",
          "value": "emailFinder",
          "action": "Find verified work and personal email addresses for a contact using their name company information or linked in url",
          "description": "Find verified work and personal email addresses for a contact using their name, company information, or LinkedIn URL"
        },
        {
          "name": "Phone Finder",
          "value": "phoneFinder",
          "action": "Find mobile and direct dial phone numbers for a contact using their name company information or linkedin url",
          "description": "Find mobile and direct dial phone numbers for a contact using their name, company information, or LinkedIn URL"
        },
        {
          "name": "LinkedIn Profile Finder",
          "value": "linkedinFinder",
          "action": "Find contact linkedin profile url and key details such as job title company and location using their name company or email address",
          "description": "Find a contact's LinkedIn profile URL and key details—such as job title, company, and location—using their name, company, or email address"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Email Finder",
      "value": "emailFinder",
      "action": "Find verified work and personal email addresses for a contact using their name company information or linked in url",
      "description": "Find verified work and personal email addresses for a contact using their name, company information, or LinkedIn URL"
    },
    {
      "name": "Phone Finder",
      "value": "phoneFinder",
      "action": "Find mobile and direct dial phone numbers for a contact using their name company information or linkedin url",
      "description": "Find mobile and direct dial phone numbers for a contact using their name, company information, or LinkedIn URL"
    },
    {
      "name": "LinkedIn Profile Finder",
      "value": "linkedinFinder",
      "action": "Find contact linkedin profile url and key details such as job title company and location using their name company or email address",
      "description": "Find a contact's LinkedIn profile URL and key details—such as job title, company, and location—using their name, company, or email address"
    }
  ]

npm_readme:
  # n8n-nodes-wiza

  An n8n community node for integrating with the [Wiza](https://wiza.co) contact enrichment API. Find email addresses, phone numbers, and LinkedIn profiles for your prospects using multiple data sources.

  ![Wiza Logo](https://wiza.co/favicon.png)

  ## Features

  ### 🔍 **Email Finder**
  Find verified work and personal email addresses using:
  - LinkedIn profile URLs
  - Contact details (name + company/domain)
  - Multiple data points for best results

  ### 📞 **Phone Finder**
  Find mobile and direct dial phone numbers using:
  - Email addresses
  - LinkedIn profile URLs  
  - Contact details (name + company/domain)
  - Multiple data points for best results

  ### 💼 **LinkedIn Profile Finder**
  Find LinkedIn profiles and extract key details using:
  - Email addresses
  - LinkedIn URLs (for enhanced profile data)
  - Contact details (name + company/domain)
  - Multiple data points for best results

  ## Installation

  ### Community Nodes (Recommended)

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

  ### Manual Installation

  ```bash
  # In your n8n root directory
  npm install n8n-nodes-wiza
  ```

  ### Docker

  ```bash
  # Using environment variable
  N8N_NODES_INCLUDE=n8n-nodes-wiza

  # Or in docker-compose.yml
  environment:
    N8N_NODES_INCLUDE: "n8n-nodes-wiza"
  ```

  ## Setup

  ### 1. Get Your API Key

  1. Sign up at [wiza.co](https://wiza.co)
  2. Navigate to **Settings > API** 
  3. Generate your API key

  ### 2. Configure Credentials

  1. In n8n, go to **Credentials**
  2. Click **Create New** 
  3. Search for **Wiza API**
  4. Enter your API key
  5. Click **Save**

  ## Usage

  ### Basic Email Finding

  ```json
  {
    "operation": "Email Finder",
    "inputType": "Contact Details", 
    "fullName": "John Doe",
    "company": "Acme Corp"
  }
  ```

  ### Phone Number Lookup

  ```json
  {
    "operation": "Phone Finder",
    "inputType": "Email",
    "email": "john@acme.com"
  }
  ```

  ### LinkedIn Profile Enhancement

  ```json
  {
    "operation": "LinkedIn Profile Finder", 
    "inputType": "All Fields",
    "email": "john@acme.com",
    "fullName": "John Doe",
    "company": "acme.com"
  }
  ```

  ## Input Types

  ### 📧 **Email**
  Provide an email address to find phone numbers or LinkedIn profiles.

  ### 🔗 **LinkedIn URL** 
  Provide a LinkedIn profile URL to find emails, phone numbers, or enhanced profile data.

  ### 👤 **Contact Details**
  Provide name and company/domain to find emails, phone numbers, or LinkedIn profiles.

  ### 🎯 **All Fields** *(Recommended)*
  Provide any combination of email, LinkedIn URL, name, and company for best results. All fields are optional - the more data you provide, the better the results.

  ## Response Data

  ### Email Finder Response
  ```json
  {
    "email": "john@acme.com",
    "email_type": "work", 
    "email_status": "valid",
    "name": "John Doe",
    "company": "Acme Corp",
    "title": "CEO",
    "linkedin_profile_url": "https://linkedin.com/in/johndoe"
  }
  ```

  ### Phone Finder Response  
  ```json
  {
    "phone_number": "+1234567890",
    "phone_status": "found",
    "mobile_phone": "+1234567890", 
    "name": "John Doe",
    "company": "Acme Corp",
    "email": "john@acme.com"
  }
  ```

  ### LinkedIn Profile Finder Response
  ```json
  {
    "linkedin_profile_url": "https://linkedin.com/in/johndoe",
    "name": "John Doe", 
    "title": "CEO",
    "company": "Acme Corp",
    "location": "New York, NY",
    "company_domain": "acme.com"
  }
  ```

  ## Configuration Options

  ### **Timeout**
  - **Default**: 300 seconds (5 minutes)
  - **Description**: Maximum time to wait for enrichment completion
  - **Range**: 30-600 seconds

  ### **Email Type** *(Email Finder only)*
  - **Work**: Professional emails (john@company.com)
  - **Personal**: Personal emails (john.doe@gmail.com) 
  - **Any**: Both work and personal emails

  ## Error Handling

  The node handles various error scenarios:

  - **Invalid API Key**: Check your credentials
  - **Rate Limiting**: Automatic retry with backoff
  - **Timeout**: Enrichment took too long to complete
  - **No Results**: No data found for the provided input
  - **Invalid Input**: Missing required fields or invalid format

  ## Workflow Examples

  ### Lead Enrichment Pipeline
  ```
  Webhook → Wiza Email Finder → Wiza Phone Finder → CRM Update
  ```

  ### LinkedIn Outreach Prep
  ```
  CSV Import → Wiza LinkedIn Finder → Message Personalization → LinkedIn Automation
  ```

  ### Data Validation Flow
  ```
  Database Query → Wiza Email Finder → Email Validation → Clean Database Update
  ```

  ## Support

  - **Documentation**: [wiza.co/api-docs](https://wiza.co/api-docs)
  - **Issues**: [GitHub Issues](https://github.com/WizaCo/n8n-nodes-wiza/issues)
  - **Wiza Support**: hello@wiza.com

  ## License

  [MIT](LICENSE.md)

  ## Contributing

  Contributions are welcome! Please read our [contributing guidelines](CODE_OF_CONDUCT.md) and submit pull requests to the main repository.

  ---

  Made with ❤️ by the Wiza team

ai_documentation_summary:
  {"purpose":"The Wiza n8n node enables contact enrichment by finding verified email addresses, phone numbers, and LinkedIn profiles using multiple data sources such as email addresses, LinkedIn URLs, or contact details (name and company).","capabilities":["Find verified work and personal email addresses via LinkedIn profiles or contact details","Retrieve mobile and direct dial phone numbers from email addresses or contact details","Discover LinkedIn profiles and extract key information like name, title, company, and location"],"authentication":"API key required; obtain it from the Wiza dashboard under Settings > API","commonUseCases":["Lead enrichment pipelines for CRM updates","Preparing personalized LinkedIn outreach messages","Validating and enriching contact data from databases or CSV imports"],"limitations":[],"relatedNodes":["CRM nodes","Data validation nodes","Webhook nodes","CSV import nodes"]}


node_type: n8n-nodes-exa-official.exa
package_name: n8n-nodes-exa-official
display_name: Exa
description: Semantic web search and research via Exa API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: exa-jakub
author_github_url: https://github.com/exa-labs/n8n-integration.git
npm_package_name: n8n-nodes-exa-official
npm_version: 0.1.5
community_fetched_at: 2026-01-07T20:08:16.051Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Answer",
          "value": "answer",
          "description": "Get an AI-generated answer to a query"
        },
        {
          "name": "Content",
          "value": "contents",
          "description": "Get contents from URLs"
        },
        {
          "name": "Find Similar",
          "value": "findSimilar",
          "description": "Find similar links to a given URL"
        },
        {
          "name": "Research",
          "value": "research",
          "description": "Create and manage asynchronous research tasks"
        },
        {
          "name": "Search",
          "value": "search",
          "description": "Search the web intelligently"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search the web",
          "routing": {
            "request": {
              "url": "/search",
              "method": "POST"
            }
          },
          "description": "Search the web and optionally extract contents"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getContents",
      "options": [
        {
          "name": "Get Contents",
          "value": "getContents",
          "action": "Get contents from ur ls",
          "routing": {
            "request": {
              "url": "/contents",
              "method": "POST"
            }
          },
          "description": "Retrieve contents from a list of URLs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contents"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "findSimilar",
      "options": [
        {
          "name": "Find Similar Links",
          "value": "findSimilar",
          "action": "Find similar links",
          "routing": {
            "request": {
              "url": "/findSimilar",
              "method": "POST"
            }
          },
          "description": "Find links similar to a given URL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "findSimilar"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAnswer",
      "options": [
        {
          "name": "Get Answer",
          "value": "getAnswer",
          "action": "Get an AI answer",
          "routing": {
            "request": {
              "url": "/answer",
              "method": "POST"
            }
          },
          "description": "Get an AI-generated answer to a query"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "answer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createTask",
      "options": [
        {
          "name": "Create Task",
          "value": "createTask",
          "action": "Create a research task",
          "routing": {
            "request": {
              "url": "/research/v1",
              "method": "POST"
            }
          },
          "description": "Create an asynchronous research task"
        },
        {
          "name": "Get Task",
          "value": "getTask",
          "action": "Get a research task",
          "routing": {
            "request": {
              "url": "=/research/v1/{{ $parameter.researchId }}",
              "method": "GET"
            }
          },
          "description": "Retrieve status and results of a research task"
        },
        {
          "name": "List Tasks",
          "value": "listTasks",
          "action": "List research tasks",
          "routing": {
            "request": {
              "url": "/research/v1",
              "method": "GET"
            }
          },
          "description": "Retrieve a paginated list of research tasks"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "research"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Search",
      "value": "search",
      "action": "Search the web",
      "routing": {
        "request": {
          "url": "/search",
          "method": "POST"
        }
      },
      "description": "Search the web and optionally extract contents"
    },
    {
      "name": "Get Contents",
      "value": "getContents",
      "action": "Get contents from ur ls",
      "routing": {
        "request": {
          "url": "/contents",
          "method": "POST"
        }
      },
      "description": "Retrieve contents from a list of URLs"
    },
    {
      "name": "Find Similar Links",
      "value": "findSimilar",
      "action": "Find similar links",
      "routing": {
        "request": {
          "url": "/findSimilar",
          "method": "POST"
        }
      },
      "description": "Find links similar to a given URL"
    },
    {
      "name": "Get Answer",
      "value": "getAnswer",
      "action": "Get an AI answer",
      "routing": {
        "request": {
          "url": "/answer",
          "method": "POST"
        }
      },
      "description": "Get an AI-generated answer to a query"
    },
    {
      "name": "Create Task",
      "value": "createTask",
      "action": "Create a research task",
      "routing": {
        "request": {
          "url": "/research/v1",
          "method": "POST"
        }
      },
      "description": "Create an asynchronous research task"
    },
    {
      "name": "Get Task",
      "value": "getTask",
      "action": "Get a research task",
      "routing": {
        "request": {
          "url": "=/research/v1/{{ $parameter.researchId }}",
          "method": "GET"
        }
      },
      "description": "Retrieve status and results of a research task"
    },
    {
      "name": "List Tasks",
      "value": "listTasks",
      "action": "List research tasks",
      "routing": {
        "request": {
          "url": "/research/v1",
          "method": "GET"
        }
      },
      "description": "Retrieve a paginated list of research tasks"
    }
  ]

npm_readme:
  # n8n-nodes-exa-official

  This is an n8n community node that provides integration with the Exa API for intelligent web search, async research, and content extraction.

  [Exa](https://exa.ai) is an AI-powered search engine that provides embeddings-based semantic search, deep web research, and structured content extraction.

  [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 Exa API operations:

  ### Search
  - **Search**: Intelligently search the web with neural or keyword-based search
    - Supports multiple search types: auto, neural, keyword, fast
    - Filter by domain, date, category, and text content
    - Extract page contents (text, highlights, summaries)
    - Configure livecrawl and subpage crawling

  ### Contents
  - **Get Contents**: Retrieve cleaned text, highlights, and summaries from a list of URLs

  ### Find Similar
  - **Find Similar Links**: Discover pages similar to a given URL

  ### Answer
  - **Get Answer**: Get an AI-generated answer to a query using Exa's research capabilities

  ### Research
  - **Create Research Task**: Launch a long-running research job powered by Exa Research or Research Pro
  - **Get Research Task**: Poll a specific research task for status, findings, and generated artifacts
  - **List Research Tasks**: Fetch paginated task history for monitoring and auditing

  ## Credentials

  To use this node, you need an Exa API key. You can obtain one by:

  1. Signing up at [dashboard.exa.ai](https://dashboard.exa.ai)
  2. Navigating to the API Keys section
  3. Creating a new API key

  Add the API key to your n8n credentials as "Exa API".

  ## Compatibility

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

  ## Usage

  ### Basic Search Example

  1. Add the Exa node to your workflow
  2. Select "Search" as the resource
  3. Enter your search query (e.g., "Latest AI research papers")
  4. Configure search type (auto, neural, keyword, or fast)
  5. Optionally add filters:
     - Category (research paper, news, company, etc.)
     - Date range (published date)
     - Domain filters (include/exclude specific domains)
     - Text filters (include/exclude specific text)

  ### Content Extraction

  Enable content extraction options:
  - **Text**: Get cleaned page text
  - **Highlights**: Get relevant excerpts
  - **Summary**: Get AI-generated summaries
  - **Livecrawl**: Crawl pages in real-time
  - **Subpages**: Crawl linked subpages

  ### Advanced Features

  **Date Filtering**: Filter results by publication date
  ```
  Start Published Date: 2024-01-01
  End Published Date: 2024-12-31
  ```

  **Domain Control**: Focus on or exclude specific domains
  ```
  Include Domains: arxiv.org, github.com
  Exclude Domains: reddit.com
  ```

  **Category Filtering**: Focus on specific content types
  - Company profiles
  - Research papers
  - News articles
  - PDFs
  - GitHub repositories
  - Twitter/LinkedIn profiles
  - Financial reports

  ### Research Workflow Example

  1. Add an Exa node and set **Resource** to `Research` with the **Create Research Task** operation.
  2. Provide a clear research instruction (for example, "Compare emerging open-source RAG frameworks and summarize trade-offs").
  3. Choose the Research product tier (`exa-research` or `exa-research-pro`) and optional guardrails like domain/category allowlists.
  4. Store the returned `id` or use paired nodes (Set/Code) to persist it inside the workflow.
  5. Add another Exa node in the same workflow set to **Get Research Task** and reference the saved `id` to poll results until the status becomes `completed`.
  6. Inspect the response for `insights`, `sources`, `outline`, or generated assets, then continue your workflow (e.g., send a Slack summary or populate a database).

  For bulk monitoring, use **List Research Tasks** and apply parameters for pagination, status filtering, or creation date ranges.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Exa API documentation](https://docs.exa.ai)
  * [Exa API reference](https://docs.exa.ai/reference/search)

  ## Development

  To work on this node locally:

  ```bash
  # Install dependencies
  npm install

  # Build the node
  npm run build

  # Link for local testing
  npm link

  # In your n8n installation directory
  cd ~/.n8n/custom
  npm link n8n-nodes-exa-official

  # Start n8n
  n8n start
  ```

  ## License

  [MIT](https://github.com/exa-labs/n8n-integration/blob/main/LICENSE)

ai_documentation_summary:
  {"purpose":"The Exa node enables intelligent web search and research using the Exa AI-powered API, supporting semantic search, content extraction, and long-running research tasks with AI-generated insights and structured outputs.","capabilities":["Perform semantic or keyword-based web searches (auto, neural, keyword, fast)","Filter results by domain, date, category, and text content","Extract text, highlights, and summaries from web pages","Discover pages similar to a given URL","Generate AI-powered answers to queries using research capabilities","Create and manage long-running research tasks (with support for Research and Research Pro)","Poll research tasks for status, findings, and generated artifacts","List and monitor research task history with pagination and filtering"],"authentication":"API key required; obtain from the Exa dashboard at https://dashboard.exa.ai under API Keys","commonUseCases":["Finding up-to-date research papers or industry trends","Automating content summarization from web sources","Comparing open-source technologies or frameworks","Monitoring long-term research projects with AI-generated insights","Extracting structured data from websites with domain or category filters"],"limitations":[],"relatedNodes":["n8n-nodes-base","n8n-nodes-web","n8n-nodes-database","n8n-nodes-slack"]}


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-01-07 20:08:16
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-01-07T20:08:16.052Z
ai_summary_generated_at: 2026-01-08 10:45:32
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":"The ScrapegraphAI node enables users to extract structured data from webpages using ScrapegraphAI's advanced scraping and data extraction capabilities, supporting operations like converting webpages to markdown, extracting specific data, and scraping search results.","capabilities":["Convert a webpage to markdown (Markdownify)","Extract specific data from a webpage (Smart Scraper)","Extract data from search results (Search Scraper)"],"authentication":"API key required","commonUseCases":["Extracting product details from e-commerce websites","Converting website content into structured markdown for documentation","Scraping search engine results for data analysis"],"limitations":[],"relatedNodes":["Web Scraper","Data Extractor","Markdown Converter"]}


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

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

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

npm_readme:
  # Prisma AIRS n8n Community Node

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

  ## Features

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

  ## Installation

  ### Prerequisites

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

  ### For End Users

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

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

  ### For Developers & Testing

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

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

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

  ## Configuration

  ### 1. Create Prisma AIRS Credentials

  In your n8n instance:

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

  ### 2. Add Node to Workflow

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

  ## Usage Examples

  ### Basic Prompt Scanning

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

  ### Async Large Content Scanning

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

  ### Dual Scanning with Context

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

  ### Batch Scanning Multiple Items

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

  ### Data Masking for Sensitive Content

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

  ### Dynamic Profile Override

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

  Or using a profile UUID:

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

  ## API Response Format

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

  ### Attribution Metadata

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

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

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

  ## Configuration Options

  ### Required Parameters

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

  ### Optional Parameters

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

  ## Error Handling

  The node includes comprehensive error handling:

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

  ## Testing

  ### Unit Tests

  ```bash
  npm test
  ```

  ### Integration Testing

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



  ## Development

  ### Building

  ```bash
  npm run build
  ```

  ### Linting

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

  ### Watching for Changes

  ```bash
  npm run dev
  ```

  ## Security Considerations

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

  ## Support

  For issues and questions:

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

  ## License

  MIT License - See LICENSE file for details

  ## Contributing

  Contributions are welcome! To contribute:

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

  ## Changelog

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

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

  ### Version 0.1.1
  - Bug fixes and stability improvements

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

ai_documentation_summary:
  {"purpose":"The Prisma AIRS n8n node scans AI prompts and responses for security threats using Palo Alto Networks Prisma AIRS API, enabling real-time threat detection and sensitive data masking within n8n workflows.","capabilities":["Prompt scanning","Response scanning","Dual scanning (prompt and response with context)","Batch scanning (up to 5 items)","Data masking of sensitive content","Contextual grounding (up to 100K characters)","Dynamic profile selection via name or UUID","Sync and async scanning (2MB and 5MB limits respectively)","Regional support (US, EU, India, Custom)","Automatic attribution metadata (workflowId, executionId, etc.)"],"authentication":"API key (x-pan-token) required; can be configured with region and optional profile name or UUID","commonUseCases":["Scanning user inputs for malicious content in AI chatbots","Validating AI-generated responses for compliance and safety","Masking sensitive data (e.g., credit cards) in AI outputs","Running large content scans asynchronously with polling","Applying different security profiles based on content type or sensitivity"],"limitations":["Batch scanning limited to 5 items","Sync scanning limited to 2MB; async to 5MB","Context must be under 100K characters for dual scanning","No support for custom AI models beyond those defined in Prisma AIRS profiles"],"relatedNodes":["AI Content Moderation","Data Masking","Security Compliance","Workflow Attribution"]}


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

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

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

npm_readme:
  # n8n-nodes-razorpay

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

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

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

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

  ## Installation

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

  ## Operations

  This node supports the following operations across different Razorpay resources:

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

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

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

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

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

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

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

  ## Credentials

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

  ### Prerequisites

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

  ### Getting Your API Credentials

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

  ### Setting up Credentials in n8n

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


  ### Authentication Methods

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

  ## Compatibility

  Tested locally against n8n v1.104.2.

  ## Usage

  ### Installing the Razorpay Community Node in n8n

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

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

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

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

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

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

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

  # Restart your n8n instance
  ```

  #### Method 3: Install via Docker

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

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

  ### Using the Razorpay Node

  Once installed:

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

  ### Getting Started Tips

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

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

  ## Resources

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

ai_documentation_summary:
  {"purpose":"The Razorpay node enables integration with Razorpay's payment gateway API to perform operations like creating payment links, fetching orders and payments, managing refunds, and handling invoices and disputes within n8n workflows.","capabilities":["Create Payment Links","Fetch All Orders","Fetch Payment Details","Fetch All Payments","Fetch All Refunds","Fetch Settlement Details","Fetch All Settlements","Fetch Invoices for Subscription","Fetch All Disputes"],"authentication":"API key authentication using Key ID and Key Secret (Test or Live keys from Razorpay Dashboard)","commonUseCases":["Automating payment processing and order management","Creating customer payment links with customizable expiry and amount","Fetching payment and refund details for financial reporting","Monitoring disputes and settlements for fraud or reconciliation","Integrating with subscription-based services via invoice retrieval"],"limitations":[],"relatedNodes":["Payment Processing","Order Management","Financial Reporting","Webhook Integration"]}


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

updated_at: 2026-01-07 20:08:16
author_name: gaswelder
author_github_url: https://github.com/Fibery-inc/n8n-nodes-fibery.git
npm_package_name: @fibery/n8n-nodes-fibery
npm_version: 0.1.19
community_fetched_at: 2026-01-07T20:08:16.055Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "entity",
      "options": [
        {
          "name": "Database",
          "value": "database"
        },
        {
          "name": "Entity",
          "value": "entity"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many databases",
          "description": "Get many databases from the workspace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "database"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an entity",
          "description": "Create a new entity"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an entity",
          "description": "Delete an entity"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an entity",
          "description": "Get an entity"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many entities",
          "description": "Get many entities from a database"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an entity",
          "description": "Update an entity"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "entity"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

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

npm_readme:
  # n8n-nodes-fibery

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

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

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

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

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

  ## Installation

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

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

  ## Operations

  ### Database

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

  ### Entity

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

  ### Triggers

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

  ## Credentials

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

  ### Using API Key

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

  ## Compatibility

  Tested on: 1.111.0

  ## Resources

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

ai_documentation_summary:
  {"purpose":"The Fibery n8n node enables users to read, write, update, and delete data in Fibery, integrating Fibery's work platform into n8n workflows for automation.","capabilities":["List databases in a workspace","Create, read, update, and delete entities","Search and list entities by query","Trigger workflows based on Fibery webhooks (events)"],"authentication":"API Key required","commonUseCases":["Automating data entry into Fibery from external systems","Syncing tasks or records between n8n and Fibery","Monitoring Fibery events via webhooks to trigger actions","Updating records in Fibery based on workflow conditions"],"limitations":["Only supports API key authentication","No support for OAuth2 or other authentication methods","Limited to operations defined in the current version (no advanced filters or bulk operations beyond basic entity operations)"],"relatedNodes":["Webhook triggers","Database operations nodes","Data transformation nodes"]}


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-01-07 20:08:16
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-01-07T20:08:16.055Z
ai_summary_generated_at: 2026-01-08 10:45:32
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":"The Easy Redmine node enables n8n users to interact with the Easy Redmine platform by managing entities such as Issues, Accounts, Leads, Opportunities, Personal Contacts, and Attendance through CRUD operations and comment additions.","capabilities":["Get one entity by ID","Get many entities with filtering via easy query ID","Create new accounts, leads, opportunities, issues, attendance records","Update existing entities with specific fields","Add comments to entities","Manage primary billing and contact information for accounts","Handle custom fields across entities"],"authentication":"API key required; provided via user profile in Easy Redmine instance","commonUseCases":["Create or update customer accounts with contact and billing details","Track employee attendance with arrival/departure times","Create and manage project issues with assigned users, priorities, and due dates","Log leads and opportunities in CRM with project and account associations","Add comments to issues or leads for collaboration"],"limitations":["Primary billing and contact information fields are complex and require full structure input","Some fields (e.g., Name) are mapped differently in the schema (e.g., known as 'firstname' in accounts)","No support for advanced Redmine features like worklogs or time tracking beyond attendance","Limited documentation for personal contacts due to truncation in README"],"relatedNodes":["n8n nodes for CRM integration","n8n nodes for project management","n8n nodes for data synchronization"]}


node_type: @orisma/n8n-nodes-taximail.taximail
package_name: @orisma/n8n-nodes-taximail
display_name: Taximail
description: Send Email, SMS, OTP via Taximail API with AI content generation or check status/verify OTP
category: AI Agent Tools
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: worngsakorn-orm
author_github_url: https://github.com/wongsakorn-orm/n8n-nodes-taximail.git
npm_package_name: @orisma/n8n-nodes-taximail
npm_version: 1.0.12
community_fetched_at: 2026-01-07T20:08:16.056Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "email",
      "options": [
        {
          "name": "Check Status",
          "value": "check_status"
        },
        {
          "name": "Send Email",
          "value": "email"
        },
        {
          "name": "Send SMS",
          "value": "sms"
        },
        {
          "name": "Send SMS OTP",
          "value": "sms_otp"
        },
        {
          "name": "Verify OTP",
          "value": "verify_otp"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Check Status",
      "value": "check_status"
    },
    {
      "name": "Send Email",
      "value": "email"
    },
    {
      "name": "Send SMS",
      "value": "sms"
    },
    {
      "name": "Send SMS OTP",
      "value": "sms_otp"
    },
    {
      "name": "Verify OTP",
      "value": "verify_otp"
    }
  ]

npm_readme:
  # n8n-nodes-taximail

  This is an n8n community node. It lets you use **Taximail** in your n8n AI Agent workflows as a Tool.

  **Taximail** is a communication service for sending transactional emails and SMS globally. This node allows AI Agents to send messages via Taximail, verify OTP codes, and check message delivery status with intelligent context awareness.

  [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)  
  [AI Agent Configuration](#ai-agent-configuration)  
  [Resources](#resources)

  ---

  ## Installation

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

  Once installed, the `Taximail` node will be available as a **Tool** for AI Agent nodes to use directly.

  ---

  ## Operations

  - **Send Email**: Send transactional emails via Taximail (with `template_key` or custom content).
  - **Send SMS**: Send SMS via Taximail (with `template_key` or custom text).
  - **Send SMS OTP**: Send OTP verification codes via SMS (requires `template_key`).
  - **Verify OTP**: Verify OTP codes entered by users.
  - **Check Status**: Check delivery status of sent messages.

  ---

  ## Credentials

  You will need **Taximail API credentials** to use this node.

  ### Getting Your API Credentials:

  1. Sign up or log in at [https://www.taximail.com](https://www.taximail.com)
  2. Navigate to the Integration section in your dashboard
  3. Generate your API Key and Secret Key
  4. Follow this guide for detailed steps:  
     [https://www.taximail.com/en/support/using-taximail/learn-about-api-integrations](https://www.taximail.com/en/support/using-taximail/learn-about-api-integrations)

  ### Adding Credentials in n8n:

  1. In n8n, create a new credential
  2. Select **"Taximail API"** as the credential type
  3. Enter your credentials:
     - **API Key**: Your Taximail API Key from the Integration section
     - **Secret Key**: Your Taximail Secret Key from the Integration section

  ---

  ## Compatibility

  - Minimum n8n version: `1.45.0` (with AI Agent Tool support)
  - Tested on: `1.45.0`, `1.46.0`
  - No known incompatibilities

  ---

  ## Usage

  This node is designed to be used with **AI Agents** in n8n with intelligent context handling.

  ### Email Operations:

  - **Send Email**: Requires recipient email, sender email, sender name, and either:
    - A `template_key` for using a pre-defined template, or
    - Custom subject and HTML content
  - Returns a `message_id` that can be used to check delivery status later

  ### SMS Operations:

  - **Send SMS**: Requires recipient phone number (MSISDN format with country code) and either:
    - A `template_key` for using a pre-defined template, or
    - Custom SMS text (keep under 160 characters)
  - Returns a `message_id` that can be used to check delivery status later

  ### Smart OTP Operations:

  - **Send SMS OTP**: Requires recipient phone number and a `template_key` (mandatory for OTP)
  - **Verify OTP**: The AI Agent automatically uses the `message_id` from recent OTP sending - no need to ask users for it again!
  - Returns verification status (success/failure)

  ### Status Operations:

  - **Check Status**: Requires a `message_id` from any previous send operation
  - Returns detailed delivery status information

  ### AI Agent Integration:

  When used with AI Agents, the node can:

  - **Smart Context Handling**: Automatically remembers `message_id` from sent OTPs
  - **Intelligent Verification**: Never asks users for `message_id` when it's already available in conversation
  - Detect message type based on context (email vs SMS)
  - Convert phone numbers to proper MSISDN format
  - Ask for missing required parameters
  - Track message delivery with the returned `message_id`

  ### Language support:

  The node works with any language supported by the AI Agent (Thai, English, etc.).

  ---

  ## AI Agent Configuration

  For optimal performance, configure your AI Agent with the following prompt structure:

  ### Recommended AI Agent Prompt:

  ```
  You are a Taximail Communication Assistant, an AI agent specialized in helping users send emails, SMS, and manage OTP communications through the Taximail service.

  ## IMPORTANT: Context Memory Rules

  - **ALWAYS remember information from the current conversation**
  - **When you send an OTP, AUTOMATICALLY save the Message ID for verification**
  - **If user provides an OTP code, use the MOST RECENT Message ID from the conversation**
  - **DO NOT ask for Message ID again if it was already provided in this conversation**

  ## Smart OTP Verification Flow:

  1. When sending OTP → Save Message ID automatically
  2. When user provides OTP code → Use the saved Message ID immediately
  3. Only ask for Message ID if no OTP was sent in this conversation

  ## Example Smart Flow:

  User: "Send OTP to +66891234567"
  You: _Send OTP_ → "OTP sent! Message ID: ABC123 saved for verification"
  User: "The code is 1234"
  You: _Verify immediately using ABC123_ → "Verifying code 1234..."

  Remember: **NEVER ask for information you already have from the conversation context!**
  ```

  ### Memory Configuration:

  Use **Simple Memory** node to store conversation context:

  - **Memory Key**: `taximail_context`
  - **Store**: Message IDs, phone numbers, and verification status
  - **Auto-retrieve**: Recent OTP Message IDs for verification

  ### Example Conversation Flow:

  **Smart Behavior (✅ Correct):**

  ```
  User: "Send OTP to +66891234567"
  Agent: [Sends OTP] "OTP sent successfully! Message ID: XYZ789 saved for verification"
  User: "The OTP code is 5678"
  Agent: [Auto-verifies with XYZ789] "Verifying code 5678 with saved Message ID..."
  ```

  **Poor Behavior (❌ Avoid):**

  ```
  User: "Send OTP to +66891234567"
  Agent: [Sends OTP] "OTP sent successfully! Message ID: XYZ789"
  User: "The OTP code is 5678"
  Agent: "Please provide the Message ID to verify" ← Wrong! Should use XYZ789
  ```

  ---

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Taximail API Key Creation Guide](https://www.taximail.com/en/support/using-taximail/learn-about-api-integrations)
  - [Taximail Platform Documentation](https://www.taximail.com/en/support/using-taximail)
  - [n8n AI Agent Documentation](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/)

ai_documentation_summary:
  {"purpose":"The Taximail node enables AI Agents in n8n to send transactional emails and SMS, send and verify OTP codes, and check message delivery status using Taximail's API with intelligent context handling and automated message ID tracking.","capabilities":["Send emails with predefined templates or custom content","Send SMS messages with predefined templates or custom text (under 160 characters)","Send SMS OTP verification codes using a template key","Verify OTP codes using the automatically saved message ID","Check the delivery status of sent messages using a message ID","Smart context handling: automatically remembers message IDs and avoids redundant user prompts"],"authentication":"API Key and Secret Key required from Taximail dashboard","commonUseCases":["Sending transactional emails or SMS to customers","Automated OTP verification flows for login or account recovery","Tracking message delivery status after sending","Integrating with AI Agents for natural language communication with context-aware message handling"],"limitations":[],"relatedNodes":["AI Agent nodes","Simple Memory node (for context storage)","n8n community nodes with tool support"]}


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

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

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

npm_readme:
  # n8n-nodes-infranodus

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

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

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

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

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

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

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

  ## Installation

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

  ### For automatic installation

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

  ### For manual installation:

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

  0. Install the local version of n8n

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

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

  ```bash
  docker volume create n8n_data

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

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

  ```bash
  npx n8n
  ```

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

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

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

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

  1. Launch the local version of n8n

  - If it's installed globally:

  ```bash
  n8n start
  ```

  - If it's installed through Docker:

  Start the Docker n8n instsance:

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

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

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

  1. Install the node

  Change to the nodes folder:

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

  If it doesn't exist, create it first:

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

  2. Install the node into this folder:

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

  3. Then restart n8n

  ## Local Node Development

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

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

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

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

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

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

  ```bash
  npm install
  ```

  2. Make the necessary changes and build the node

  ```bash
  npm build
  ```

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

  ```bash
  npm link
  ```

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

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

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

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

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

  5. Then run the n8n instance locally using the

  ```bash
  n8n start
  ```

  ### To Update the Local Node in n8n

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

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

  ```bash
  npm run build
  ```

  2. Restart n8n:

  ```bash
  n8n start
  ```

  ## Operations

  The node supports the following operations:

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

  ## Credentials

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

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

  ## Compatibility

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

  ## Usage

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

  ## Resources

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

  ## Version history

  v 0.1.8 (2025-12-09)

  - better naming convention for create / update graph

  v 0.1.7 (2025-12-03)

  - bug fixes
  - improve installation instructions

  v 0.1.5 (2025-12-03)

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

  v 0.1.4 (2025-10-25)

  - Fix bugs with duplicate tool definitions

  v 0.1.3 (2025-09-17)

  - Fix bugs and incorrect tool settings

  v 0.1.0 (2025-09-11)

  - Initial release

ai_documentation_summary:
  {"purpose":"The InfraNodus Graph RAG node enables users to build and query knowledge graphs using the InfraNodus API, providing AI-powered insights into content topics and gaps, and enhancing RAG workflows with graph-based expert advice without requiring OpenAI keys or complex vector store setups.","capabilities":["Create a knowledge graph","Retrieve a knowledge graph","Generate a question based on content gaps in a knowledge graph","Prompt a knowledge graph expert"],"authentication":"API token required (Bearer authentication via InfraNodus account)","commonUseCases":["Identifying content gaps in marketing or research materials","Augmenting RAG workflows with structured knowledge graph insights","Using graph-based AI to improve information retrieval quality","Building domain-specific knowledge graphs as experts in LLM workflows"],"limitations":[],"relatedNodes":["RAG nodes","Knowledge graph nodes","AI content analysis nodes"]}


node_type: n8n-nodes-syncmate.whatsAuto
package_name: n8n-nodes-syncmate
display_name: WhatsApp Notifications by SyncMate
description: Send WhatsApp messages or media using SyncMate Assistro API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: heratassistro
author_github_url: https://github.com/heratshah-collab/
npm_package_name: n8n-nodes-syncmate
npm_version: 1.0.19
community_fetched_at: 2026-01-07T20:08:16.057Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Message",
          "value": "message"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "normal",
      "options": [
        {
          "name": "Send Notification",
          "value": "normal",
          "action": "Send a notification",
          "description": "Send a WhatsApp notification to a phone number"
        },
        {
          "name": "Send Group Message",
          "value": "group",
          "action": "Send a group message",
          "description": "Send a message to a WhatsApp group"
        },
        {
          "name": "Send Newsletter",
          "value": "newsletter",
          "action": "Send a newsletter",
          "description": "Send a message to a WhatsApp channel/newsletter"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send Notification",
      "value": "normal",
      "action": "Send a notification",
      "description": "Send a WhatsApp notification to a phone number"
    },
    {
      "name": "Send Group Message",
      "value": "group",
      "action": "Send a group message",
      "description": "Send a message to a WhatsApp group"
    },
    {
      "name": "Send Newsletter",
      "value": "newsletter",
      "action": "Send a newsletter",
      "description": "Send a message to a WhatsApp channel/newsletter"
    }
  ]

npm_readme:
  # n8n-nodes-syncmate

  Send WhatsApp messages or media using **SyncMate Assistro API** in n8n workflows.

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

  ---

  ## Features

  - Send text messages via WhatsApp
  - Send images, videos, documents, and other media
  - OAuth2 authentication with Assistro API
  - Designed for **n8n workflows**
  - Easy to integrate into existing automation

  ---

  ## Installation

  ### Install via npm

  ```bash
  npm install n8n-nodes-syncmate

ai_documentation_summary:
  {"purpose":"Sends WhatsApp messages or media (such as images, videos, and documents) using the SyncMate Assistro API within n8n workflows.","capabilities":["Send text messages via WhatsApp","Send images, videos, documents, and other media","Integrate with n8n workflows","Supports OAuth2 authentication"],"authentication":"OAuth2 authentication with Assistro API","commonUseCases":["Automated customer notifications via WhatsApp","Sending order confirmations or updates","Delivering marketing messages or alerts","Sharing files or media with clients"],"limitations":[],"relatedNodes":["n8n-nodes-base","n8n-nodes-base.whatsapp"]}


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-01-07 20:08:16
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.26
community_fetched_at: 2026-01-07T20:08:16.058Z
ai_summary_generated_at: 2026-01-08 10:45:32
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":"The Straker Verify node allows users to interact with the Straker Verify API to create projects with translation files and download completed translated files within n8n workflows.","capabilities":["Create a new project with translation files","Download translated files from a completed project"],"authentication":"API key required","commonUseCases":["Automating translation project setup in workflows","Downloading translated content after completion of translation tasks"],"limitations":[],"relatedNodes":["n8n-nodes-base","n8n-nodes-utils"]}


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

updated_at: 2026-01-07 20:08:16
author_name: templated.io
author_github_url: https://github.com/templated-io/
npm_package_name: n8n-nodes-templated
npm_version: 0.2.2
community_fetched_at: 2026-01-07T20:08:16.058Z
ai_summary_generated_at: 2026-01-08 10:45:32
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"
            }
          }
        },
        {
          "name": "Retrieve a Render",
          "value": "retrieveRender",
          "action": "Retrieve a render",
          "routing": {
            "request": {
              "url": "=/v1/render/{{$parameter[\"renderId\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Retrieve a Template",
          "value": "retrieveTemplate",
          "action": "Retrieve a template",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/v1/template/{{$parameter[\"templateId\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "List All Templates",
          "value": "listTemplates",
          "action": "List all templates",
          "routing": {
            "request": {
              "url": "/v1/templates",
              "method": "GET"
            }
          }
        },
        {
          "name": "List Template Layers",
          "value": "listTemplateLayers",
          "action": "List template layers",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/v1/template/{{$parameter[\"templateId\"]}}/layers",
              "method": "GET"
            }
          }
        },
        {
          "name": "List Template Renders",
          "value": "listTemplateRenders",
          "action": "List template renders",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/v1/template/{{$parameter[\"templateId\"]}}/renders",
              "method": "GET"
            }
          }
        },
        {
          "name": "Merge Renders",
          "value": "mergeRenders",
          "action": "Merge renders",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/v1/render/merge",
              "method": "POST"
            }
          }
        },
        {
          "name": "Custom API Call",
          "value": "__CUSTOM_API_CALL__"
        }
      ],
      "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"
        }
      }
    },
    {
      "name": "Retrieve a Render",
      "value": "retrieveRender",
      "action": "Retrieve a render",
      "routing": {
        "request": {
          "url": "=/v1/render/{{$parameter[\"renderId\"]}}",
          "method": "GET"
        }
      }
    },
    {
      "name": "Retrieve a Template",
      "value": "retrieveTemplate",
      "action": "Retrieve a template",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/v1/template/{{$parameter[\"templateId\"]}}",
          "method": "GET"
        }
      }
    },
    {
      "name": "List All Templates",
      "value": "listTemplates",
      "action": "List all templates",
      "routing": {
        "request": {
          "url": "/v1/templates",
          "method": "GET"
        }
      }
    },
    {
      "name": "List Template Layers",
      "value": "listTemplateLayers",
      "action": "List template layers",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/v1/template/{{$parameter[\"templateId\"]}}/layers",
          "method": "GET"
        }
      }
    },
    {
      "name": "List Template Renders",
      "value": "listTemplateRenders",
      "action": "List template renders",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/v1/template/{{$parameter[\"templateId\"]}}/renders",
          "method": "GET"
        }
      }
    },
    {
      "name": "Merge Renders",
      "value": "mergeRenders",
      "action": "Merge renders",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/v1/render/merge",
          "method": "POST"
        }
      }
    },
    {
      "name": "Custom API Call",
      "value": "__CUSTOM_API_CALL__"
    }
  ]

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 and PDF generation service that allows you to create dynamic visual content from templates. With it's drag-and-drop editor and robust API, you can automate the creation of marketing images, 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 or PDFs from dynamic templates. Here are the operations you can use:

  | Name | Operation | Description | Documentation Link |
  |------|-----------|-------------|-------------------|
  | Create Render | render:create | Creates an image or PDF file with JSON data and your template. Supports JPEG, PNG, WebP, and PDF formats with customizable layers. | [Link](https://templated.io/docs/renders/create/) |
  | Retrieve Render | render:retrieve | 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 | render:merge | Merges multiple rendered PDFs into a single PDF document. Useful for combining multiple pages or documents. | [Link](https://templated.io/docs/renders/merge/) |
  | Retrieve Template | template:retrieve | Retrieves details of a specific template by its ID including metadata and layer information. | [Link](https://templated.io/docs/templates/retrieve/) |
  | List All Templates | template:list | Lists all templates in your account with pagination and filtering options. | [Link](https://templated.io/docs/templates/list/) |
  | List Template Layers | template:layers | Lists all available layers of a specific template for customization and dynamic content mapping. | [Link](https://templated.io/docs/templates/layers/) |
  | List Template Renders | template:renders | Lists all renders created from a specific template with pagination support. | [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
  - **Current version**: 0.2.2
  - **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
  - **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

  ### Advanced Features

  - **Dynamic Layer Customization**: Control text content, colors, fonts, images, borders, and visibility
  - **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
  - **Conditional Logic**: Hide/show layers dynamically based on your workflow data
  - **Error Handling**: Graceful handling of missing templates or invalid parameters

  ### 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":"The Templated node automates the creation of dynamic images and PDFs using Templated's API, enabling workflows to generate personalized visual content such as marketing materials, product images, invoices, and documents from templates with customizable layers and data inputs.","capabilities":["Create images or PDFs from templates with support for JPEG, PNG, WebP, and PDF formats","Retrieve a specific render by ID to check status and get the generated file URL","Merge multiple PDF renders into a single document","Retrieve template details including metadata and layer information","List all templates with pagination and filtering","List template layers for dynamic content mapping","List renders created from a specific template","Dynamic layer customization (text, colors, fonts, images, visibility)","Conditional logic to hide/show layers based on workflow data","Template search and resource selection via dropdown or ID"],"authentication":"API key required. Users must sign up for a Templated account, create a template, and obtain an API key from the dashboard to authenticate in n8n.","commonUseCases":["Marketing automation (social media posts, banners, ads)","E-commerce (product images with dynamic pricing or branding)","Document generation (certificates, invoices, reports, contracts)","SaaS applications (user-specific dashboards or documents)","Social media content automation"],"limitations":[],"relatedNodes":["Database nodes","API nodes","Webhook nodes","Email nodes","File storage nodes"]}


