# nodes

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

updated_at: 2026-03-25 21:19:40
author_name: valkiriaaquatica
author_github_url: https://github.com/valkiriaaquatica/n8n-terraform-cloud.git
npm_package_name: n8n-nodes-terraform-cloud
npm_version: 1.1.4
community_fetched_at: 2026-03-25T21:19:40.642Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "workspace",
      "options": [
        {
          "name": "Workspace",
          "value": "workspace"
        },
        {
          "name": "Run",
          "value": "run"
        },
        {
          "name": "Project",
          "value": "project"
        },
        {
          "name": "GitHub App Installation",
          "value": "githubAppInstallation"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create Workspace",
          "value": "create",
          "action": "Create a workspace",
          "description": "Create a new workspace in an organization"
        },
        {
          "name": "Delete Workspace",
          "value": "delete",
          "action": "Delete a workspace",
          "description": "Delete a workspace by ID"
        },
        {
          "name": "Get Workspace Details",
          "value": "get",
          "action": "Get workspace details",
          "description": "Fetch workspace info including VCS settings"
        },
        {
          "name": "Get Workspace State",
          "value": "getState",
          "action": "Get workspace state metadata",
          "description": "Fetch the latest state version metadata (and download URL)"
        },
        {
          "name": "List Workspaces",
          "value": "list",
          "action": "List workspaces",
          "description": "List workspaces in an organization"
        },
        {
          "name": "Update Workspace",
          "value": "update",
          "action": "Update a workspace",
          "description": "Update workspace settings by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "workspace"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Add Run Comment",
          "value": "addComment",
          "action": "Add a comment to a run",
          "description": "Attach a comment to a run"
        },
        {
          "name": "Apply Run",
          "value": "apply",
          "action": "Apply a run",
          "description": "Apply a run that is pending/approved"
        },
        {
          "name": "Cancel Run",
          "value": "cancel",
          "action": "Cancel a run",
          "description": "Cancel a running plan/apply"
        },
        {
          "name": "Create Plan (Manual Apply)",
          "value": "createPlanManualApply",
          "action": "Create a plan that waits for manual apply",
          "description": "Start a plan and leave it pending for manual apply/discard"
        },
        {
          "name": "Create Plan Run",
          "value": "createPlan",
          "action": "Create plan only run",
          "description": "Start a plan-only run in a workspace (plan-only flag)"
        },
        {
          "name": "Discard Run",
          "value": "discard",
          "action": "Discard a run",
          "description": "Discard a run that is waiting or paused"
        },
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get run status",
          "description": "Get the status/details of a run"
        },
        {
          "name": "List by Workspace",
          "value": "list",
          "action": "List runs",
          "description": "List runs for a workspace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "run"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List Projects",
          "value": "list",
          "action": "List projects",
          "description": "List projects in an organization"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List Installations",
          "value": "list",
          "action": "List github app installations",
          "description": "List GitHub App installations for an organization"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "githubAppInstallation"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Workspace",
      "value": "create",
      "action": "Create a workspace",
      "description": "Create a new workspace in an organization"
    },
    {
      "name": "Delete Workspace",
      "value": "delete",
      "action": "Delete a workspace",
      "description": "Delete a workspace by ID"
    },
    {
      "name": "Get Workspace Details",
      "value": "get",
      "action": "Get workspace details",
      "description": "Fetch workspace info including VCS settings"
    },
    {
      "name": "Get Workspace State",
      "value": "getState",
      "action": "Get workspace state metadata",
      "description": "Fetch the latest state version metadata (and download URL)"
    },
    {
      "name": "List Workspaces",
      "value": "list",
      "action": "List workspaces",
      "description": "List workspaces in an organization"
    },
    {
      "name": "Update Workspace",
      "value": "update",
      "action": "Update a workspace",
      "description": "Update workspace settings by ID"
    },
    {
      "name": "Add Run Comment",
      "value": "addComment",
      "action": "Add a comment to a run",
      "description": "Attach a comment to a run"
    },
    {
      "name": "Apply Run",
      "value": "apply",
      "action": "Apply a run",
      "description": "Apply a run that is pending/approved"
    },
    {
      "name": "Cancel Run",
      "value": "cancel",
      "action": "Cancel a run",
      "description": "Cancel a running plan/apply"
    },
    {
      "name": "Create Plan (Manual Apply)",
      "value": "createPlanManualApply",
      "action": "Create a plan that waits for manual apply",
      "description": "Start a plan and leave it pending for manual apply/discard"
    },
    {
      "name": "Create Plan Run",
      "value": "createPlan",
      "action": "Create plan only run",
      "description": "Start a plan-only run in a workspace (plan-only flag)"
    },
    {
      "name": "Discard Run",
      "value": "discard",
      "action": "Discard a run",
      "description": "Discard a run that is waiting or paused"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get run status",
      "description": "Get the status/details of a run"
    },
    {
      "name": "List by Workspace",
      "value": "list",
      "action": "List runs",
      "description": "List runs for a workspace"
    },
    {
      "name": "List Projects",
      "value": "list",
      "action": "List projects",
      "description": "List projects in an organization"
    },
    {
      "name": "List Installations",
      "value": "list",
      "action": "List github app installations",
      "description": "List GitHub App installations for an organization"
    }
  ]

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

  # n8n Terraform Cloud Nodes

  Custom n8n nodes to work with HashiCorp Terraform Cloud: manage runs, workspaces, projects, and state metadata.

  ## Nodes included
  - **TerraformCloud**: Run operations (create plan/manual apply, apply, cancel, discard, add comment), list runs by workspace, get run status, list projects, list workspaces, fetch latest workspace state metadata.

  ## What you can do (quick overview)
  ### Runs
  - Create plan-only runs or plans that wait for manual apply in a workspace.
  - Apply, cancel, or discard an existing run.
  - Add comments to a run.
  - List runs per workspace or fetch the status of a specific run.

  ### Workspaces
  - Create workspaces with vcs, variables, executions, directories...
  - List workspaces in an organization.
  - Fetch workspace details (includes current/latest run).
  - Fetch the current workspace state (state version + download URL).

  ### Projects
  - List projects in an organization.

  ## Credentials
  You will need an api token credential to interact with Terraform Cloud.

  ### Credentials for creating Workspace with VCS from Github App

  To create a workspace whose VCS source is a **GitHub App**, you must use a **User API Token**.  
  An **Organization API Token is not sufficient** for this purpose.

  #### How to create a User API Token

  1. Click on your profile picture in the upper-right corner.
  2. Go to **Account Settings**.
  3. Navigate to **Tokens**.
  4. Click **Create API Token**.


  ## Example flows

  ### General Overview
  ![alt text](image-1.png)

  ### Launch a plan and check its status
  1) TerraformCloud node → Resource `Run` → Operation `Create Plan (Manual Apply)` → set Workspace ID + message.  
  ![alt text](image-3.png)

  2) TerraformCloud node → Resource `Run` → Operation `Get Status` → use the `runId` from step 1.  
  ![alt text](image-4.png)

  ### Fetch workspace tf state
  1) TerraformCloud node → Resource `Workspace` → Operation `Get Workspace State`.  
  2) Provide `workspaceId` or enable `Resolve Workspace by Name` with `stateOrganization` + `workspaceName`.  
  ![alt text](image-5.png)

  ### Discard a Run from a Workspace
  1) TerraformCloud node → Resource `Run` → Operation `Discard a run`. 
  ![alt text](image.png)

  ### Create a Workspace
  1) TerraformCloud node → Resource `Run` → Operation `Create a Workspace`.There are a multiple options on the creations: vcs control, auto apply, variables...
  ![alt text](image-2.png)

  ## Requirements
  - Terraform Cloud API token with access to the target organization/workspaces.
  - n8n 1.0+ (tested on 2.0.3).

  ## Quick start
  ```bash
  npm install
  npm run dev   # starts n8n with the custom nodes linked
  ```

  ### Build and lint
  ```bash
  npm run build
  npm run lint
  ```

ai_documentation_summary:
  {"purpose":"This n8n node enables interaction with the HashiCorp Terraform Cloud API to manage runs, workspaces, projects, and state metadata.","capabilities":["Create plan-only runs or manual apply plans","Apply, cancel, or discard existing runs","Add comments to runs","List runs by workspace","Get status of a specific run","List projects in an organization","List workspaces in an organization","Create workspaces with VCS, variables, and executions","Fetch workspace details including current/latest run","Fetch workspace state metadata and download URL"],"authentication":"API token required (User API Token for GitHub App VCS, Organization API Token for general use)","commonUseCases":["Automating Terraform plan and apply workflows","Monitoring run status in CI/CD pipelines","Managing workspace configurations and state","Discarding failed or incomplete runs"],"limitations":["Organization API Token is insufficient for creating workspaces with GitHub App VCS (User API Token required)","Requires n8n 1.0+ (tested on 2.0.3)"],"relatedNodes":[]}


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

updated_at: 2026-03-25 21:19:40
author_name: bilalararou
author_github_url: https://github.com/Nuelink/n8n-nodes-nuelink.git
npm_package_name: @nuelink/n8n-nodes-nuelink
npm_version: 1.0.4
community_fetched_at: 2026-03-25T21:19:40.643Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "post",
      "options": [
        {
          "name": "Post",
          "value": "post"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createPost",
      "options": [
        {
          "name": "Create",
          "value": "createPost",
          "action": "Create post",
          "routing": {
            "request": {
              "url": "/pabbly",
              "method": "POST"
            }
          },
          "description": "Create a new post on Nuelink"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "post"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "createPost",
      "action": "Create post",
      "routing": {
        "request": {
          "url": "/pabbly",
          "method": "POST"
        }
      },
      "description": "Create a new post on Nuelink"
    }
  ]

npm_readme:
  # n8n-nodes-nuelink

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

  Nuelink is a social media automation and scheduling platform that helps creators, brands, and businesses streamline their content distribution across multiple social media platforms.

  [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

  - **Create Post**: Allows you to create a new post on Nuelink, specifying the content and the settings.

  ## Credentials

  Users need to authenticate with Nuelink to use this node. To set up authentication:
  1. Sign up for a Nuelink account at [Nuelink](https://nuelink.com).
  2. Create a new automation in the Nuelink dashboard.
  3. Obtain your API key from the automation settings.
  4. In n8n, add a new credential for Nuelink and enter your API key.

  ## Compatibility

  This node is compatible with n8n version 1.36.0 and above. It has been tested against the latest stable version of n8n.

  ## Usage

  1. Add a **Trigger** node (e.g., Webhook or Cron).
  2. Add the **Nuelink** node and choose an operation (e.g., Create Post).
  3. Select or create your API credentials.
  4. Configure your input data (e.g., post content, categories, image URLs).
  5. Connect additional nodes (e.g., filters, conditions, notifications) as needed.

  > **Note**  
  > This node is intended for users who are already familiar with n8n.  
  > If you're new to n8n, check out the [Try it out guide](https://docs.n8n.io/try-it-out/) to get started quickly.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Nuelink](https://nuelink.com)
  * [Nuelink help center](https://help.nuelink.com)

ai_documentation_summary:
  {"purpose":"This n8n community node enables users to interact with the Nuelink API for social media automation and content scheduling.","capabilities":["Create posts on Nuelink","Specify post content and settings","Schedule content distribution across multiple platforms"],"authentication":"API key required","commonUseCases":["Automating social media content distribution","Scheduling posts for creators and brands","Streamlining multi-platform content management"],"limitations":["Intended for users already familiar with n8n workflow automation","Limited to basic post creation operations as per current documentation"],"relatedNodes":["Webhook","Cron","Filter","Condition","Notification"]}


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

updated_at: 2026-03-25 21:19:40
author_name: bcharleson
author_github_url: https://github.com/r-Howitzer/
npm_package_name: n8n-nodes-heyreach
npm_version: 1.0.5
community_fetched_at: 2026-03-25T21:19:40.644Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "campaign",
      "options": [
        {
          "name": "Campaign",
          "value": "campaign"
        },
        {
          "name": "Inbox",
          "value": "inbox"
        },
        {
          "name": "Lead",
          "value": "lead"
        },
        {
          "name": "LinkedIn Account",
          "value": "linkedInAccount"
        },
        {
          "name": "List",
          "value": "list"
        },
        {
          "name": "My Network",
          "value": "myNetwork"
        },
        {
          "name": "Stat",
          "value": "stats"
        },
        {
          "name": "Webhook",
          "value": "webhook"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getById",
      "options": [
        {
          "name": "Add Leads",
          "value": "addLeads",
          "action": "Add leads to campaign",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/campaign/AddLeadsToCampaign",
              "body": {
                "campaignId": "={{$parameter[\"campaignId\"]}}",
                "accountLeadPairs": "={{$parameter[\"accountLeadPairs\"].pair.map(pair => ({\n                                    linkedInAccountId: parseInt(pair.linkedInAccountId),\n                                    lead: {\n                                        ...pair.lead.details,\n                                        customUserFields: pair.lead.details.customUserFields?.field || []\n                                    }\n                                }))}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get",
          "value": "getById",
          "action": "Retrieve a campaign",
          "routing": {
            "request": {
              "qs": {
                "campaignId": "={{$parameter[\"campaignId\"]}}"
              },
              "url": "/campaign/GetById",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Leads",
          "value": "getLeads",
          "action": "Retrieve leads from campaign",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/campaign/GetLeadsFromCampaign",
              "body": {
                "limit": "={{$parameter[\"limit\"]}}",
                "offset": "={{$parameter[\"offset\"]}}",
                "timeTo": "={{$parameter[\"additionalFields\"][\"timeTo\"]}}",
                "timeFrom": "={{$parameter[\"additionalFields\"][\"timeFrom\"]}}",
                "campaignId": "={{$parameter[\"campaignId\"]}}",
                "timeFilter": "={{$parameter[\"additionalFields\"][\"timeFilter\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Retrieve all campaigns",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/campaign/GetAll",
              "body": {
                "limit": "={{$parameter[\"limit\"]}}",
                "offset": "={{$parameter[\"offset\"]}}",
                "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}",
                "statuses": "={{$parameter[\"additionalFields\"][\"statuses\"]}}",
                "accountIds": "={{$parameter[\"additionalFields\"][\"accountIds\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Many For Lead",
          "value": "getCampaignsForLead",
          "action": "Retrieve campaigns for a lead",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/campaign/GetCampaignsForLead",
              "body": {
                "email": "={{$parameter[\"additionalFields\"][\"email\"]}}",
                "limit": "={{$parameter[\"limit\"]}}",
                "offset": "={{$parameter[\"offset\"]}}",
                "linkedinId": "={{$parameter[\"additionalFields\"][\"linkedinId\"]}}",
                "profileUrl": "={{$parameter[\"profileUrl\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Pause",
          "value": "pause",
          "action": "Pause a campaign",
          "routing": {
            "request": {
              "qs": {
                "campaignId": "={{$parameter[\"campaignId\"]}}"
              },
              "url": "/campaign/Pause",
              "body": {},
              "method": "POST"
            }
          }
        },
        {
          "name": "Resume",
          "value": "resume",
          "action": "Resume a campaign",
          "routing": {
            "request": {
              "qs": {
                "campaignId": "={{$parameter[\"campaignId\"]}}"
              },
              "url": "/campaign/Resume",
              "body": {},
              "method": "POST"
            }
          }
        },
        {
          "name": "Stop Lead",
          "value": "stopLeadInCampaign",
          "action": "Stop a lead in campaign",
          "routing": {
            "request": {
              "url": "/campaign/StopLeadInCampaign",
              "body": {
                "leadUrl": "={{$parameter[\"leadUrl\"]}}",
                "campaignId": "={{$parameter[\"campaignId\"]}}",
                "leadMemberId": "={{$parameter[\"leadMemberId\"]}}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "campaign"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getOverallStats",
      "options": [
        {
          "name": "Get Overall",
          "value": "getOverallStats",
          "action": "Retrieve overall statistics",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/stats/GetOverallStats",
              "body": {
                "endDate": "={{$parameter[\"additionalFields\"][\"endDate\"]}}",
                "startDate": "={{$parameter[\"additionalFields\"][\"startDate\"]}}",
                "accountIds": "={{$parameter[\"accountIds\"]}}",
                "campaignIds": "={{$parameter[\"campaignIds\"]}}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "stats"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createWebhook",
      "options": [
        {
          "name": "Create",
          "value": "createWebhook",
          "action": "Create a new webhook",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/webhooks/CreateWebhook",
              "body": {
                "eventType": "={{$parameter[\"eventType\"]}}",
                "webhookUrl": "={{$parameter[\"webhookUrl\"]}}",
                "campaignIds": "={{ $parameter[\"campaignIds\"] ?? [] }}",
                "webhookName": "={{$parameter[\"webhookName\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Delete",
          "value": "deleteWebhook",
          "action": "Delete a webhook",
          "routing": {
            "request": {
              "qs": {
                "webhookId": "={{$parameter[\"webhookId\"]}}"
              },
              "url": "/webhooks/DeleteWebhook",
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Get",
          "value": "getWebhookById",
          "action": "Retrieve a single webhook",
          "routing": {
            "request": {
              "qs": {
                "webhookId": "={{$parameter[\"webhookId\"]}}"
              },
              "url": "/webhooks/GetWebhookById",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Many",
          "value": "getAllWebhooks",
          "action": "Retrieve all webhooks",
          "routing": {
            "request": {
              "url": "/webhooks/GetAllWebhooks",
              "body": {
                "limit": "={{$parameter[\"limit\"]}}",
                "offset": "={{$parameter[\"offset\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Update",
          "value": "updateWebhook",
          "action": "Update an existing webhook",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "qs": {
                "webhookId": "={{$parameter[\"webhookId\"]}}"
              },
              "url": "/webhooks/UpdateWebhook",
              "body": {
                "isActive": "={{$parameter[\"additionalFields\"][\"isActive\"]}}",
                "eventType": "={{$parameter[\"additionalFields\"][\"eventType\"]}}",
                "webhookUrl": "={{$parameter[\"additionalFields\"][\"webhookUrl\"]}}",
                "campaignIds": "={{ ($parameter[\"additionalFields\"]?.[\"eventType\"] === \"EVERY_MESSAGE_REPLY_RECEIVED\" || $parameter[\"additionalFields\"]?.[\"eventType\"] === \"LEAD_TAG_UPDATED\") ? [] : $parameter[\"additionalFields\"]?.[\"campaignIds\"] ?? null }}",
                "webhookName": "={{$parameter[\"additionalFields\"][\"webhookName\"]}}"
              },
              "method": "PATCH"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhook"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMyNetworkForSender",
      "options": [
        {
          "name": "Get",
          "value": "getMyNetworkForSender",
          "action": "Retrieve list of network connections for a sender account",
          "routing": {
            "request": {
              "url": "/MyNetwork/GetMyNetworkForSender",
              "body": {
                "pageSize": "={{$parameter[\"pageSize\"]}}",
                "senderId": "={{$parameter[\"senderId\"]}}",
                "pageNumber": "={{$parameter[\"pageNumber\"]}}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "myNetwork"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getListById",
      "options": [
        {
          "name": "Add Leads",
          "value": "addLeadsToList",
          "action": "Add leads to a list",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/list/AddLeadsToList",
              "body": {
                "leads": "={{$parameter[\"wrapperLeads\"][\"leads\"].map(lead => ({\n                                ...lead,\n                                customUserFields: lead.customUserFields?.field || []\n                            }))}}",
                "listId": "={{$parameter[\"listId\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Create Empty",
          "value": "createEmptyList",
          "action": "Create an empty list",
          "routing": {
            "request": {
              "url": "/list/CreateEmptyList",
              "body": {
                "name": "={{$parameter[\"listName\"]}}",
                "type": "={{$parameter[\"listType\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Delete Leads (By LinkedIn ID)",
          "value": "deleteLeadsFromList",
          "action": "Delete leads from a list by LinkedIn ID",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/list/DeleteLeadsFromList",
              "body": {
                "listId": "={{$parameter[\"listId\"]}}",
                "leadMemberIds": "={{$parameter[\"leadMemberIds\"]}}"
              },
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Delete Leads (By Profile URL)",
          "value": "deleteLeadsFromListByProfileUrl",
          "action": "Delete leads from a list by LinkedIn profile URL",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/list/DeleteLeadsFromListByProfileUrl",
              "body": {
                "listId": "={{$parameter[\"listId\"]}}",
                "profileUrls": "={{$parameter[\"leadProfileUrls\"]}}"
              },
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Get",
          "value": "getListById",
          "action": "Retrieve a list",
          "routing": {
            "request": {
              "qs": {
                "listId": "={{$parameter[\"listId\"]}}"
              },
              "url": "/list/GetById",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Companies",
          "value": "getCompaniesFromList",
          "action": "Retrieve companies from a list",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/list/GetCompaniesFromList",
              "body": {
                "limit": "={{$parameter[\"limit\"]}}",
                "listId": "={{$parameter[\"listId\"]}}",
                "offset": "={{$parameter[\"offset\"]}}",
                "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Leads",
          "value": "getLeadsFromList",
          "action": "Retrieve leads from a list",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/list/GetLeadsFromList",
              "body": {
                "limit": "={{$parameter[\"limit\"]}}",
                "listId": "={{$parameter[\"listId\"]}}",
                "offset": "={{$parameter[\"offset\"]}}",
                "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}",
                "createdTo": "={{$parameter[\"additionalFields\"][\"createdTo\"]}}",
                "createdFrom": "={{$parameter[\"additionalFields\"][\"createdFrom\"]}}",
                "leadLinkedInId": "={{$parameter[\"additionalFields\"][\"leadLinkedInId\"]}}",
                "leadProfileUrl": "={{$parameter[\"additionalFields\"][\"leadProfileUrl\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Lists",
          "value": "getListsForLead",
          "action": "Retrieve lists associated with a specific lead",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/list/GetListsForLead",
              "body": {
                "email": "={{$parameter[\"additionalFields\"][\"email\"]}}",
                "limit": "={{$parameter[\"limit\"]}}",
                "offset": "={{$parameter[\"offset\"]}}",
                "linkedinId": "={{$parameter[\"additionalFields\"][\"linkedinId\"]}}",
                "profileUrl": "={{$parameter[\"additionalFields\"][\"profileUrl\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Many",
          "value": "getAllLists",
          "action": "Retrieve all lists",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/list/GetAll",
              "body": {
                "limit": "={{$parameter[\"limit\"]}}",
                "offset": "={{$parameter[\"offset\"]}}",
                "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}",
                "listType": "={{$parameter[\"additionalFields\"][\"listType\"]}}",
                "campaignIds": "={{$parameter[\"additionalFields\"][\"campaignIds\"]}}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "list"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getConversationsV2",
      "options": [
        {
          "name": "Get Many",
          "value": "getConversationsV2",
          "action": "Retrieve all LinkedIn conversations",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/inbox/GetConversations",
              "body": {
                "limit": "={{$parameter[\"limit\"]}}",
                "offset": "={{$parameter[\"offset\"]}}",
                "filters": {
                  "seen": "={{$parameter[\"additionalFields\"][\"seen\"]}}",
                  "campaignIds": "={{$parameter[\"additionalFields\"][\"campaignIds\"]}}",
                  "searchString": "={{$parameter[\"additionalFields\"][\"searchString\"]}}",
                  "leadLinkedInId": "={{$parameter[\"additionalFields\"][\"leadLinkedInId\"]}}",
                  "leadProfileUrl": "={{$parameter[\"additionalFields\"][\"leadProfileUrl\"]}}",
                  "linkedInAccountIds": "={{$parameter[\"additionalFields\"][\"linkedInAccountIds\"]}}"
                }
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Chatroom",
          "value": "getChatroom",
          "action": "Retrieve a specific LinkedIn conversation and messages",
          "routing": {
            "request": {
              "url": "=/inbox/GetChatroom/{{$parameter[\"accountId\"]}}/{{$parameter[\"conversationId\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Send Message",
          "value": "sendMessage",
          "action": "Send a message to a LinkedIn conversation",
          "routing": {
            "request": {
              "url": "/inbox/SendMessage",
              "body": {
                "message": "={{$parameter[\"message\"]}}",
                "subject": "={{$parameter[\"subject\"]}}",
                "conversationId": "={{$parameter[\"conversationId\"]}}",
                "linkedInAccountId": "={{$parameter[\"linkedInAccountId\"]}}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "inbox"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAllLinkedInAccounts",
      "options": [
        {
          "name": "Get Many",
          "value": "getAllLinkedInAccounts",
          "action": "Retrieve a list of LinkedIn accounts",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/li_account/GetAll",
              "body": {
                "limit": "={{$parameter[\"limit\"]}}",
                "offset": "={{$parameter[\"offset\"]}}",
                "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get",
          "value": "getLinkedInAccountById",
          "action": "Retrieve a LinkedIn account",
          "routing": {
            "request": {
              "qs": {
                "accountId": "={{$parameter[\"accountId\"]}}"
              },
              "url": "/li_account/GetById",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "linkedInAccount"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getLead",
      "options": [
        {
          "name": "Get",
          "value": "getLead",
          "action": "Retrieve the details of a specific lead",
          "routing": {
            "request": {
              "url": "/lead/GetLead",
              "body": {
                "profileUrl": "={{$parameter[\"profileUrl\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Add Tags",
          "value": "addTagsToLead",
          "action": "Add tags to a lead",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/lead/AddTags",
              "body": {
                "tags": "={{$parameter[\"tags\"]}}",
                "leadLinkedInId": "={{$parameter[\"additionalFields\"][\"leadLinkedInId\"]}}",
                "leadProfileUrl": "={{$parameter[\"additionalFields\"][\"profileUrl\"]}}",
                "createTagIfNotExisting": "={{$parameter[\"createTagIfNotExisting\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Tags",
          "value": "getTagsForLead",
          "action": "Retrieve all tags for a lead",
          "routing": {
            "request": {
              "url": "/lead/GetTags",
              "body": {
                "profileUrl": "={{$parameter[\"profileUrl\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Replace Tags",
          "value": "replaceTags",
          "action": "Replace all existing tags for a lead",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/lead/ReplaceTags",
              "body": {
                "tags": "={{$parameter[\"tags\"]}}",
                "leadLinkedInId": "={{$parameter[\"additionalFields\"][\"leadLinkedInId\"]}}",
                "leadProfileUrl": "={{$parameter[\"additionalFields\"][\"profileUrl\"]}}",
                "createTagIfNotExisting": "={{$parameter[\"createTagIfNotExisting\"]}}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "lead"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Add Leads",
      "value": "addLeads",
      "action": "Add leads to campaign",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/campaign/AddLeadsToCampaign",
          "body": {
            "campaignId": "={{$parameter[\"campaignId\"]}}",
            "accountLeadPairs": "={{$parameter[\"accountLeadPairs\"].pair.map(pair => ({\n                                    linkedInAccountId: parseInt(pair.linkedInAccountId),\n                                    lead: {\n                                        ...pair.lead.details,\n                                        customUserFields: pair.lead.details.customUserFields?.field || []\n                                    }\n                                }))}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get",
      "value": "getById",
      "action": "Retrieve a campaign",
      "routing": {
        "request": {
          "qs": {
            "campaignId": "={{$parameter[\"campaignId\"]}}"
          },
          "url": "/campaign/GetById",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get Leads",
      "value": "getLeads",
      "action": "Retrieve leads from campaign",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/campaign/GetLeadsFromCampaign",
          "body": {
            "limit": "={{$parameter[\"limit\"]}}",
            "offset": "={{$parameter[\"offset\"]}}",
            "timeTo": "={{$parameter[\"additionalFields\"][\"timeTo\"]}}",
            "timeFrom": "={{$parameter[\"additionalFields\"][\"timeFrom\"]}}",
            "campaignId": "={{$parameter[\"campaignId\"]}}",
            "timeFilter": "={{$parameter[\"additionalFields\"][\"timeFilter\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Retrieve all campaigns",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/campaign/GetAll",
          "body": {
            "limit": "={{$parameter[\"limit\"]}}",
            "offset": "={{$parameter[\"offset\"]}}",
            "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}",
            "statuses": "={{$parameter[\"additionalFields\"][\"statuses\"]}}",
            "accountIds": "={{$parameter[\"additionalFields\"][\"accountIds\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Many For Lead",
      "value": "getCampaignsForLead",
      "action": "Retrieve campaigns for a lead",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/campaign/GetCampaignsForLead",
          "body": {
            "email": "={{$parameter[\"additionalFields\"][\"email\"]}}",
            "limit": "={{$parameter[\"limit\"]}}",
            "offset": "={{$parameter[\"offset\"]}}",
            "linkedinId": "={{$parameter[\"additionalFields\"][\"linkedinId\"]}}",
            "profileUrl": "={{$parameter[\"profileUrl\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Pause",
      "value": "pause",
      "action": "Pause a campaign",
      "routing": {
        "request": {
          "qs": {
            "campaignId": "={{$parameter[\"campaignId\"]}}"
          },
          "url": "/campaign/Pause",
          "body": {},
          "method": "POST"
        }
      }
    },
    {
      "name": "Resume",
      "value": "resume",
      "action": "Resume a campaign",
      "routing": {
        "request": {
          "qs": {
            "campaignId": "={{$parameter[\"campaignId\"]}}"
          },
          "url": "/campaign/Resume",
          "body": {},
          "method": "POST"
        }
      }
    },
    {
      "name": "Stop Lead",
      "value": "stopLeadInCampaign",
      "action": "Stop a lead in campaign",
      "routing": {
        "request": {
          "url": "/campaign/StopLeadInCampaign",
          "body": {
            "leadUrl": "={{$parameter[\"leadUrl\"]}}",
            "campaignId": "={{$parameter[\"campaignId\"]}}",
            "leadMemberId": "={{$parameter[\"leadMemberId\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Overall",
      "value": "getOverallStats",
      "action": "Retrieve overall statistics",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/stats/GetOverallStats",
          "body": {
            "endDate": "={{$parameter[\"additionalFields\"][\"endDate\"]}}",
            "startDate": "={{$parameter[\"additionalFields\"][\"startDate\"]}}",
            "accountIds": "={{$parameter[\"accountIds\"]}}",
            "campaignIds": "={{$parameter[\"campaignIds\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Create",
      "value": "createWebhook",
      "action": "Create a new webhook",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/webhooks/CreateWebhook",
          "body": {
            "eventType": "={{$parameter[\"eventType\"]}}",
            "webhookUrl": "={{$parameter[\"webhookUrl\"]}}",
            "campaignIds": "={{ $parameter[\"campaignIds\"] ?? [] }}",
            "webhookName": "={{$parameter[\"webhookName\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Delete",
      "value": "deleteWebhook",
      "action": "Delete a webhook",
      "routing": {
        "request": {
          "qs": {
            "webhookId": "={{$parameter[\"webhookId\"]}}"
          },
          "url": "/webhooks/DeleteWebhook",
          "method": "DELETE"
        }
      }
    },
    {
      "name": "Get",
      "value": "getWebhookById",
      "action": "Retrieve a single webhook",
      "routing": {
        "request": {
          "qs": {
            "webhookId": "={{$parameter[\"webhookId\"]}}"
          },
          "url": "/webhooks/GetWebhookById",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get Many",
      "value": "getAllWebhooks",
      "action": "Retrieve all webhooks",
      "routing": {
        "request": {
          "url": "/webhooks/GetAllWebhooks",
          "body": {
            "limit": "={{$parameter[\"limit\"]}}",
            "offset": "={{$parameter[\"offset\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Update",
      "value": "updateWebhook",
      "action": "Update an existing webhook",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "qs": {
            "webhookId": "={{$parameter[\"webhookId\"]}}"
          },
          "url": "/webhooks/UpdateWebhook",
          "body": {
            "isActive": "={{$parameter[\"additionalFields\"][\"isActive\"]}}",
            "eventType": "={{$parameter[\"additionalFields\"][\"eventType\"]}}",
            "webhookUrl": "={{$parameter[\"additionalFields\"][\"webhookUrl\"]}}",
            "campaignIds": "={{ ($parameter[\"additionalFields\"]?.[\"eventType\"] === \"EVERY_MESSAGE_REPLY_RECEIVED\" || $parameter[\"additionalFields\"]?.[\"eventType\"] === \"LEAD_TAG_UPDATED\") ? [] : $parameter[\"additionalFields\"]?.[\"campaignIds\"] ?? null }}",
            "webhookName": "={{$parameter[\"additionalFields\"][\"webhookName\"]}}"
          },
          "method": "PATCH"
        }
      }
    },
    {
      "name": "Get",
      "value": "getMyNetworkForSender",
      "action": "Retrieve list of network connections for a sender account",
      "routing": {
        "request": {
          "url": "/MyNetwork/GetMyNetworkForSender",
          "body": {
            "pageSize": "={{$parameter[\"pageSize\"]}}",
            "senderId": "={{$parameter[\"senderId\"]}}",
            "pageNumber": "={{$parameter[\"pageNumber\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Add Leads",
      "value": "addLeadsToList",
      "action": "Add leads to a list",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/list/AddLeadsToList",
          "body": {
            "leads": "={{$parameter[\"wrapperLeads\"][\"leads\"].map(lead => ({\n                                ...lead,\n                                customUserFields: lead.customUserFields?.field || []\n                            }))}}",
            "listId": "={{$parameter[\"listId\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Create Empty",
      "value": "createEmptyList",
      "action": "Create an empty list",
      "routing": {
        "request": {
          "url": "/list/CreateEmptyList",
          "body": {
            "name": "={{$parameter[\"listName\"]}}",
            "type": "={{$parameter[\"listType\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Delete Leads (By LinkedIn ID)",
      "value": "deleteLeadsFromList",
      "action": "Delete leads from a list by LinkedIn ID",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/list/DeleteLeadsFromList",
          "body": {
            "listId": "={{$parameter[\"listId\"]}}",
            "leadMemberIds": "={{$parameter[\"leadMemberIds\"]}}"
          },
          "method": "DELETE"
        }
      }
    },
    {
      "name": "Delete Leads (By Profile URL)",
      "value": "deleteLeadsFromListByProfileUrl",
      "action": "Delete leads from a list by LinkedIn profile URL",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/list/DeleteLeadsFromListByProfileUrl",
          "body": {
            "listId": "={{$parameter[\"listId\"]}}",
            "profileUrls": "={{$parameter[\"leadProfileUrls\"]}}"
          },
          "method": "DELETE"
        }
      }
    },
    {
      "name": "Get",
      "value": "getListById",
      "action": "Retrieve a list",
      "routing": {
        "request": {
          "qs": {
            "listId": "={{$parameter[\"listId\"]}}"
          },
          "url": "/list/GetById",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get Companies",
      "value": "getCompaniesFromList",
      "action": "Retrieve companies from a list",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/list/GetCompaniesFromList",
          "body": {
            "limit": "={{$parameter[\"limit\"]}}",
            "listId": "={{$parameter[\"listId\"]}}",
            "offset": "={{$parameter[\"offset\"]}}",
            "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Leads",
      "value": "getLeadsFromList",
      "action": "Retrieve leads from a list",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/list/GetLeadsFromList",
          "body": {
            "limit": "={{$parameter[\"limit\"]}}",
            "listId": "={{$parameter[\"listId\"]}}",
            "offset": "={{$parameter[\"offset\"]}}",
            "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}",
            "createdTo": "={{$parameter[\"additionalFields\"][\"createdTo\"]}}",
            "createdFrom": "={{$parameter[\"additionalFields\"][\"createdFrom\"]}}",
            "leadLinkedInId": "={{$parameter[\"additionalFields\"][\"leadLinkedInId\"]}}",
            "leadProfileUrl": "={{$parameter[\"additionalFields\"][\"leadProfileUrl\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Lists",
      "value": "getListsForLead",
      "action": "Retrieve lists associated with a specific lead",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/list/GetListsForLead",
          "body": {
            "email": "={{$parameter[\"additionalFields\"][\"email\"]}}",
            "limit": "={{$parameter[\"limit\"]}}",
            "offset": "={{$parameter[\"offset\"]}}",
            "linkedinId": "={{$parameter[\"additionalFields\"][\"linkedinId\"]}}",
            "profileUrl": "={{$parameter[\"additionalFields\"][\"profileUrl\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Many",
      "value": "getAllLists",
      "action": "Retrieve all lists",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/list/GetAll",
          "body": {
            "limit": "={{$parameter[\"limit\"]}}",
            "offset": "={{$parameter[\"offset\"]}}",
            "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}",
            "listType": "={{$parameter[\"additionalFields\"][\"listType\"]}}",
            "campaignIds": "={{$parameter[\"additionalFields\"][\"campaignIds\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Many",
      "value": "getConversationsV2",
      "action": "Retrieve all LinkedIn conversations",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/inbox/GetConversations",
          "body": {
            "limit": "={{$parameter[\"limit\"]}}",
            "offset": "={{$parameter[\"offset\"]}}",
            "filters": {
              "seen": "={{$parameter[\"additionalFields\"][\"seen\"]}}",
              "campaignIds": "={{$parameter[\"additionalFields\"][\"campaignIds\"]}}",
              "searchString": "={{$parameter[\"additionalFields\"][\"searchString\"]}}",
              "leadLinkedInId": "={{$parameter[\"additionalFields\"][\"leadLinkedInId\"]}}",
              "leadProfileUrl": "={{$parameter[\"additionalFields\"][\"leadProfileUrl\"]}}",
              "linkedInAccountIds": "={{$parameter[\"additionalFields\"][\"linkedInAccountIds\"]}}"
            }
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Chatroom",
      "value": "getChatroom",
      "action": "Retrieve a specific LinkedIn conversation and messages",
      "routing": {
        "request": {
          "url": "=/inbox/GetChatroom/{{$parameter[\"accountId\"]}}/{{$parameter[\"conversationId\"]}}",
          "method": "GET"
        }
      }
    },
    {
      "name": "Send Message",
      "value": "sendMessage",
      "action": "Send a message to a LinkedIn conversation",
      "routing": {
        "request": {
          "url": "/inbox/SendMessage",
          "body": {
            "message": "={{$parameter[\"message\"]}}",
            "subject": "={{$parameter[\"subject\"]}}",
            "conversationId": "={{$parameter[\"conversationId\"]}}",
            "linkedInAccountId": "={{$parameter[\"linkedInAccountId\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Many",
      "value": "getAllLinkedInAccounts",
      "action": "Retrieve a list of LinkedIn accounts",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/li_account/GetAll",
          "body": {
            "limit": "={{$parameter[\"limit\"]}}",
            "offset": "={{$parameter[\"offset\"]}}",
            "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get",
      "value": "getLinkedInAccountById",
      "action": "Retrieve a LinkedIn account",
      "routing": {
        "request": {
          "qs": {
            "accountId": "={{$parameter[\"accountId\"]}}"
          },
          "url": "/li_account/GetById",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get",
      "value": "getLead",
      "action": "Retrieve the details of a specific lead",
      "routing": {
        "request": {
          "url": "/lead/GetLead",
          "body": {
            "profileUrl": "={{$parameter[\"profileUrl\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Add Tags",
      "value": "addTagsToLead",
      "action": "Add tags to a lead",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/lead/AddTags",
          "body": {
            "tags": "={{$parameter[\"tags\"]}}",
            "leadLinkedInId": "={{$parameter[\"additionalFields\"][\"leadLinkedInId\"]}}",
            "leadProfileUrl": "={{$parameter[\"additionalFields\"][\"profileUrl\"]}}",
            "createTagIfNotExisting": "={{$parameter[\"createTagIfNotExisting\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Tags",
      "value": "getTagsForLead",
      "action": "Retrieve all tags for a lead",
      "routing": {
        "request": {
          "url": "/lead/GetTags",
          "body": {
            "profileUrl": "={{$parameter[\"profileUrl\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Replace Tags",
      "value": "replaceTags",
      "action": "Replace all existing tags for a lead",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/lead/ReplaceTags",
          "body": {
            "tags": "={{$parameter[\"tags\"]}}",
            "leadLinkedInId": "={{$parameter[\"additionalFields\"][\"leadLinkedInId\"]}}",
            "leadProfileUrl": "={{$parameter[\"additionalFields\"][\"profileUrl\"]}}",
            "createTagIfNotExisting": "={{$parameter[\"createTagIfNotExisting\"]}}"
          },
          "method": "POST"
        }
      }
    }
  ]

npm_readme:
  #  n8n-nodes-heyreach
  This is a **HeyReach** Community Node for n8n, enabling seamless integration with **HeyReach** in your workflows.  
  **HeyReach** is a powerful LinkedIn automation platform designed to help you scale and optimize your outreach campaigns.  
  This project make it easy to manage LinkedIn campaigns and automate your outreach directly from your workflows.

  [License](#license)  
  [Installation](#installation)  
  [Available Operations](#available-operations)  
  [Credentials](#credentials)  
  [Resources](#resources)  
  [Folder Structure](#folder-structure)

  ## License
  This project is licensed under the **MIT License**. See the [LICENSE](LICENSE.md) file for details.

  ## Installation
  ### Community Nodes (Recommended)
  1. Navigate to **n8n** and sign in.
  2. Go to Settings > Community Nodes
  3. Click Install
  4. Enter `n8n-nodes-heyreach` and click Download
  5. Restart your n8n instance
  6. The HeyReach node will appear in your node palette
  --- 

  ### Local Setup 
  1. Clone the repository.
  2. Run `npm install` to install dependencies.
  3. Before running locally make sure `baseURL` which can be found in `HeyReach.node.ts` is set to dev or staging endpoints.
  4. Run `npm run build` each time you have change or the for the very first time.
  5. Reference the official [n8n documentation](https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally/) for running and testing custom nodes locally

  ## Credentials
  Steps to obtain **API KEY** needed for authentication.
  1. Go to **[HeyReach app](https://app.heyreach.io/)** and sign in.
  2. Navigate to the **Integrations** section.
  3. Find the **n8n** card and click **Connect Now**.
  4. Click **New API Key** to generate an API key.
  5. **Copy** the generated API key.
  6. In **n8n**, create a new **HeyReach connection**.
  7. **Paste** the API key into the connection settings and save it.  

  ✅ That’s it — your HeyReach account is now connected to n8n! 🎉

  ## Available Operations

  ### 🔧 Campaign Management

  - **Retrieve all campaigns** – Get a list of all campaigns.
  - **Retrieve a campaign** – Get details of a specific campaign.
  - **Resume a campaign** – Resume a paused campaign.
  - **Pause a campaign** – Pause an active campaign.
  - **Stop a lead in campaign** – Stop a specific lead within a campaign.
  - **Add leads to campaign** – Add one or multiple leads to a campaign.
  - **Retrieve leads from campaign** – Get leads from a campaign.
  - **Retrieve campaigns for a lead** – Find all campaigns that a specific lead belongs to.
  ---

  ### 💬 Inbox

  - **Retrieve all LinkedIn conversations** - Get a list of all LinkedIn conversations.
  - **Retrieve a specific LinkedIn conversation and messages** - Retrieve details of a particular LinkedIn conversation along with all associated messages.
  - **Send a message to a LinkedIn conversation** - Send a new message to a specific LinkedIn conversation.
  ---

  ### 🧑‍💼 Lead

  - **Retrieve the details of a specific lead** - Get detailed information about a specific lead.
  - **Add tags to a lead** - Add one or more tags to a lead to help categorize or filter.
  - **Retrieve all tags for a lead** - Retrieve all tags associated with a specific lead.
  - **Replace all existing tags for a lead** - Replace the current tags on a lead with a new set of tags.
  ---

  ### 🔗 LinkedIn Account Actions

  - **Retrieve a list of LinkedIn accounts** - Get all LinkedIn accounts connected to the system.
  - **Retrieve a LinkedIn account** - Get details of a specific LinkedIn account.
  ---

  ### 📋 List Actions

  - **Retrieve a list** - Get a specific list of leads.
  - **Retrieve all lists** - Get all available lead lists.
  - **Retrieve leads from a list** - Get all leads within a specific list.
  - **Delete leads from a list by LinkedIn ID** - Remove one or more leads from a list using their LinkedIn IDs.
  - **Delete leads from a list by LinkedIn profile URL** - Remove leads from a list using their LinkedIn profile URLs.
  - **Retrieve companies from a list** - Get all associated companies from a specific list.
  - **Add leads to a list** - Add one or more leads to a given list.
  - **Retrieve lists associated with a specific lead** - Get all lists that include a specific lead.
  - **Create an empty list** - Create a new list with no leads.
  ---

  ### 🌐 My Network Actions

  - **Retrieve list of network connections for a sender account** - Get all network connections associated with a given sender LinkedIn account.

  ---

  ### 📊 Stats Actions

  - **Retrieve overall statistics** - Get general statistics across the system, such as lead or campaign performance.

  ---

  ### 🪝 Webhook Actions

  - **Retrieve all webhooks** - Get a list of all configured webhooks.
  - **Retrieve a single webhook** - Get the details of a specific webhook.

  ## Resources

    [HeyReach API documentation](https://documenter.getpostman.com/view/23808049/2sA2xb5F75#61f5ef5d-5f31-4da9-b6af-ef0a6f128146)    

  ## Folder Structure

  - `nodes/HeyReach/operations/` – Contains folders based on the available features.  
    - Each feature has its own folder.
    - `operations` files specify the category of the endpoints and request params for each API call.
    - `fields` files describe the fields required for each request.
  - The starting point for the integration is `HeyReach.node.ts`.  
    - Any new operations should be registered in this file.

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with the HeyReach LinkedIn automation platform to manage outreach campaigns, handle conversations, and organize leads directly within n8n workflows.","capabilities":["Retrieve and manage LinkedIn campaigns (list, get details, pause, resume, stop)","Add, retrieve, and remove leads from campaigns","Manage LinkedIn conversations (list, retrieve messages, send messages)","Organize leads into lists (create, add, remove, retrieve)","Tag and categorize leads","Retrieve LinkedIn account details and network connections","Retrieve system statistics and webhook configurations","Retrieve lead details and associated companies"],"authentication":"API Key required (obtained from HeyReach app Integrations section)","commonUseCases":["Automating LinkedIn outreach campaigns from n8n","Managing lead lists and tagging for segmentation","Handling LinkedIn conversations and messaging","Retrieving campaign performance statistics"],"limitations":["Requires manual installation via n8n Community Nodes or local repository setup","Local development requires manual configuration of baseURL to dev or staging endpoints","Community node status may imply less official support compared to official n8n nodes"],"relatedNodes":["HTTP Request","Webhook","Code"]}


node_type: n8n-nodes-blooio.blooioMessaging
package_name: n8n-nodes-blooio
display_name: Blooio Messaging
description: Send messages via the Blooio API (v3)
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: dave_xt
author_github_url: https://github.com/blooio/
npm_package_name: n8n-nodes-blooio
npm_version: 0.1.2
community_fetched_at: 2026-03-25T21:19:40.644Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Message",
          "value": "message"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "action": "Send a message",
          "routing": {
            "request": {
              "url": "=/v1/api/messages",
              "method": "POST",
              "headers": {
                "Idempotency-Key": "={{$parameter[\"idempotencyKey\"]}}"
              }
            }
          },
          "description": "Send a single text or attachment message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send",
      "value": "send",
      "action": "Send a message",
      "routing": {
        "request": {
          "url": "=/v1/api/messages",
          "method": "POST",
          "headers": {
            "Idempotency-Key": "={{$parameter[\"idempotencyKey\"]}}"
          }
        }
      },
      "description": "Send a single text or attachment message"
    }
  ]

npm_readme:
  # n8n-nodes-blooio

  This is an n8n community node for [Blooio](https://blooio.com). It lets you send and receive iMessages, RCS, SMS, and more through the Blooio API in your n8n workflows.

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

  ## Installation

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

  ## Operations

  ### Messages

  - **Send Message** - Send text messages and attachments via iMessage/SMS/RCS
  - **Get Message** - Retrieve complete message details including delivery status
  - **Get Message Status** - Check the delivery status of a message
  - **Cancel Message** - Cancel a queued or scheduled message

  ### Contacts

  - **Check Capabilities** - Check if a phone number or email supports iMessage, SMS, or RCS

  ### Webhooks

  - **Get Webhook** - Get the currently configured webhook URL
  - **Set Webhook** - Configure webhook URL for receiving inbound messages and delivery notifications

  ## Credentials

  ### API Key Authentication

  1. Sign up for a Blooio account at [https://blooio.com](https://blooio.com)
  2. Navigate to your Dashboard
  3. Go to Settings > API Keys
  4. Create a new API key or copy an existing one
  5. In n8n, create a new Blooio credential:
     - Select "API Key" as the authentication method
     - Paste your API key
     - Save the credential

  ## Compatibility

  Compatible with n8n@1.60.0 or later

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Blooio API Documentation](https://docs.blooio.com)
  - [Blooio Dashboard](https://dashboard.blooio.com)
  - [Support](mailto:support@blooio.com)

ai_documentation_summary:
  {"purpose":"A community n8n node that enables sending and receiving iMessages, RCS, and SMS through the Blooio API v3.","capabilities":["Send text messages with attachments via iMessage/SMS/RCS","Retrieve complete message details including delivery status","Check delivery status of specific messages","Cancel queued or scheduled messages","Check phone number or email capabilities for iMessage, SMS, or RCS support","Configure inbound message and delivery notification webhooks"],"authentication":"API Key","commonUseCases":["Automated customer communication via SMS or RCS","Two-way messaging workflows with delivery confirmation","Checking recipient device capabilities before sending","Scheduling and managing message delivery"],"limitations":["Requires a separate Blooio account and API key","Compatible only with n8n version 1.60.0 or later"],"relatedNodes":["HTTP Request","Webhook"]}


node_type: n8n-nodes-veed.veed
package_name: n8n-nodes-veed
display_name: VEED AI Video API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: dmytrobaltak
author_github_url: https://github.com/veedstudio/
npm_package_name: n8n-nodes-veed
npm_version: 1.2.4
community_fetched_at: 2026-03-25T21:19:40.645Z
ai_summary_generated_at: 2026-03-25 22:51:43
description:
  Generate AI talking videos from an image and audio file using the Veed Fabric API. Automate creation of realistic talking videos, animation videos and ai avatars directly in your n8n workflows.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "fabric",
      "options": [
        {
          "name": "Fabric",
          "value": "fabric",
          "description": "Generate talking head videos"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generateVideo",
      "options": [
        {
          "name": "Generate Video",
          "value": "generateVideo",
          "action": "Generate a video using fabric model",
          "description": "Generate a talking head video from image and audio"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "fabric"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate Video",
      "value": "generateVideo",
      "action": "Generate a video using fabric model",
      "description": "Generate a talking head video from image and audio"
    }
  ]

npm_readme:
  # n8n-nodes-veed

  Generate AI talking videos from images and audio using the Veed Fabric API. Automate creation of realistic talking videos, animation videos and AI avatars directly in your n8n workflows.

  ## Features

  - **Fabric Video Generation**: Create AI-powered talking head videos from images and audio
  - Powered by [fal.ai](https://fal.ai)
  - Support for multiple model versions (Standard & Fast)
  - Real-time progress tracking via streaming status updates
  - Configurable timeouts

  ## Installation

  ### Community Nodes (Recommended)

  1. Go to **Settings > Community Nodes** in n8n
  2. Search for `veed`
  3. Click **Install**

  ### Manual Installation

  ```bash
  npm install n8n-nodes-veed
  ```

  ## Prerequisites

  - A fal.ai account ([sign up](https://fal.ai))
  - A fal.ai personal API key ([get your key](https://fal.ai/dashboard/keys))
  - n8n version 0.200.0 or higher
  - Node.js 22 or higher

  ## Setup

  1. In n8n, create a new **Fal.ai API** credential
  2. Paste your personal API key
  3. Add the **VEED AI Video API** node to your workflow

  ## Usage

  ### Fabric Video Generation

  Generate realistic talking head videos from a still image and audio file.

  #### Parameters

  **Image URL** (required)

  - Portrait image URL for the talking head
  - Best results: Front-facing photos, clear facial features
  - Supported formats: JPG, PNG, WebP

  **Audio URL** (required)

  - Speech audio URL for lip sync
  - Supported formats: MP3, WAV, M4A, AAC

  **Model Version**

  - **Fabric 1.0**: Lower price
  - **Fabric 1.0 Fast**: Faster generation, higher price

  **Resolution**

  - `480p`: Faster generation
  - `720p`: Higher quality

  **Aspect Ratio**

  - `16:9`: Landscape (YouTube, presentations)
  - `9:16`: Portrait (TikTok, Instagram Stories, Reels)
  - `1:1`: Square (Instagram Feed, LinkedIn)

  #### Options (Advanced)

  **Timeout** (default: 10 minutes)

  - Maximum time to wait for generation
  - Recommended: 10+ minutes for longer videos, 15+ for 720p
  - Range: 1-60 minutes
  - Note: The node uses fal.ai's streaming API for real-time status updates

  ## 🎬 Showcase Workflows

  > **Note:** These workflow examples are available in the repository for local development/testing only. They are not included in the published npm package.

  Ready-to-use workflow templates demonstrating the Veed Fabric node in complete pipelines:

  ### 1. **Simple Text-to-Video** (Beginner-Friendly)

  A minimal workflow to test the Veed Fabric node with pre-made assets.

  **What it does:**

  - Uses demo image and audio URLs
  - Generates a talking head video using Fabric Fast model
  - Shows generation progress and results
  - Formats output with video URL and generation time

  **Import:** `dev-workflow-examples/simple-text-to-video.json`

  ---

  ### 2. **Complete Text-to-Video Ad Generator** (Advanced)

  Full automated pipeline from text prompt to social media post.

  **What it does:**

  ```
  Text Prompt ("animated bear advertising sunglasses")
      ↓
  🤖 OpenAI GPT-4o-mini → Generates ad script + character description
      ↓
  🎨 OpenAI DALL-E 3 → Creates character image
      ↓
  🎙️ StreamElements TTS → Converts script to voice (FREE)
      ↓
  🎬 Veed Fabric → Generates talking head video
      ↓
  🐦 Twitter/X → Posts video with caption
  ```

  **Import:** `dev-workflow-examples/text-to-video-showcase.json`

  **Services used:**

  - 💰 **OpenAI GPT-4o-mini** ($5 free trial, ~$0.01/video) - Script generation
  - 💰 **OpenAI DALL-E 3** ($5 free trial, ~$0.04/image) - Image generation
  - ✅ **StreamElements TTS** (FREE, no API key needed) - Text-to-speech
  - 💰 **fal.ai** (Pay-per-use, ~$0.08-0.20/second) - Video generation
  - ✅ **Twitter/X API** (FREE tier) - Social posting

  ---

  ### 💡 Quick Start with Showcase Workflows

  > **Prerequisites:** These workflows are only available when running the node in development mode. See [Development](#development) section below for setup instructions.

  1. **Import a workflow:**

     ```
     n8n (localhost:5678) → Workflows → Import from File → Select JSON from dev-workflow-examples/
     ```

  2. **Set up credentials:**
     - **Simple workflow:** Only fal.ai API key required
     - **Advanced workflow:** OpenAI API key, Twitter OAuth2 credentials, fal.ai API key

  3. **Customize:**
     - **Simple:** Replace imageUrl and audioUrl in "📝 Set Demo Image & Audio" node
     - **Advanced:** Change adPrompt in "📝 Set Ad Concept" node
     - Adjust video settings (resolution, aspect ratio)

  4. **Execute and wait:**
     - Click "Test Workflow" button
     - Watch progress in execution logs

  5. **Use your video:**
     - Get video URL from output
     - Download and use in your content
     - Automatically posted to Twitter (advanced workflow)

  ## Performance

  - **Generation time**: Depending on audio length and video resolution
  - **Progress updates**: Real-time progress shown in execution logs
  - **Timeout handling**: Configurable timeout with clear error messages

  ## Troubleshooting

  Having issues? See the [Troubleshooting Guide](docs/TROUBLESHOOTING.md) for detailed solutions to common problems:

  - Authentication errors
  - Generation timeouts
  - Invalid URL errors
  - Rate limits
  - Network issues
  - And more...

  ## Compatibility

  - **n8n**: 0.200.0+
  - **Node.js**: 22+
  - **Supported platforms**: Linux, macOS, Windows

  ## Resources

  - [Veed Fabric Model on fal.ai](https://fal.ai/models/veed/fabric-1.0)
  - [Fabric Playground](https://fal.ai/models/veed/fabric-1.0/playground)
  - [fal.ai Documentation](https://docs.fal.ai)
  - [Report Issues](https://github.com/veedstudio/n8n-nodes-veed/issues)
  - [n8n Community Forum](https://community.n8n.io)

  ## Development

  ### Build

  ```bash
  pnpm build
  ```

  ### Test

  ```bash
  pnpm test          # Run all tests
  pnpm test:watch    # Watch mode
  pnpm test:coverage # Coverage report
  ```

  ### Local Development

  ```bash
  pnpm dev  # Starts n8n with your node at localhost:5678
  ```

  For detailed testing instructions, see [docs/TESTING.md](docs/TESTING.md)

  ## Contributing

  Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests
  5. Run `pnpm lint:fix`
  6. Submit a pull request

  ### n8n Community Node Restrictions

  When contributing, be aware of n8n's community node restrictions:

  - **❌ No `setTimeout` or `setInterval`**: These global timers are not allowed.
  - **✅ Required properties**: All nodes must have `usableAsTool` property
  - **✅ Credentials**: Must have `icon` and `test` properties

  ## License

  MIT

  ## Support

  For issues and questions:

  - [GitHub Issues](https://github.com/veedstudio/n8n-nodes-veed/issues)
  - [n8n Community Forum](https://community.n8n.io)

  ---

ai_documentation_summary:
  {"purpose":"Generates AI-powered talking head videos from images and audio files using the Veed Fabric API, supporting multiple model versions and real-time progress tracking.","capabilities":["Create talking head videos from image and audio","Generate animation videos and AI avatars","Support for Fabric 1.0 and Fabric 1.0 Fast models","Configurable resolution (480p, 720p)","Configurable aspect ratios (16:9, 9:16, 1:1)","Real-time progress tracking via streaming status updates","Configurable timeouts (1-60 minutes)"],"authentication":"API key required (fal.ai personal API key)","commonUseCases":["Text-to-video content creation","Social media video generation (TikTok, Instagram, YouTube)","Automated ad generation pipelines","AI avatar creation for presentations"],"limitations":["Requires fal.ai account and API key","Requires n8n version 0.200.0 or higher","Requires Node.js 22 or higher","Showcase workflows only available in development mode","Generation time depends on audio length and video resolution"],"relatedNodes":["fal.ai API","OpenAI GPT-4o-mini","OpenAI DALL-E 3","StreamElements TTS","Twitter/X API"]}


node_type: @vlm-run/n8n-nodes-vlmrun.vlmRun
package_name: @vlm-run/n8n-nodes-vlmrun
display_name: VLM Run
description: Interact with VLM Run API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: shahrear-vlm
author_github_url: https://github.com/vlm-run/n8n-nodes-vlmrun.git
npm_package_name: @vlm-run/n8n-nodes-vlmrun
npm_version: 2.2.9
community_fetched_at: 2026-03-25T21:19:40.646Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "document",
      "options": [
        {
          "name": "Analyze Audio",
          "value": "audio",
          "action": "Analyze audio",
          "description": "Analyze audio files for transcription, speaker identification, sentiment analysis, and more"
        },
        {
          "name": "Analyze Document",
          "value": "document",
          "action": "Analyze document",
          "description": "Extract structured data from documents such as resumes, invoices, presentations, and more"
        },
        {
          "name": "Analyze Image",
          "value": "image",
          "action": "Analyze image",
          "description": "Extract information or generate captions from images"
        },
        {
          "name": "Analyze Video",
          "value": "video",
          "action": "Analyze video",
          "description": "Extract insights or transcribe content from video files"
        },
        {
          "name": "Execute Agent",
          "value": "executeAgent",
          "action": "Execute agent",
          "description": "Execute an agent"
        },
        {
          "name": "Manage Files",
          "value": "file",
          "action": "Manage files",
          "description": "List uploaded files or upload new files to VLM Run"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Analyze Audio",
      "value": "audio",
      "action": "Analyze audio",
      "description": "Analyze audio files for transcription, speaker identification, sentiment analysis, and more"
    },
    {
      "name": "Analyze Document",
      "value": "document",
      "action": "Analyze document",
      "description": "Extract structured data from documents such as resumes, invoices, presentations, and more"
    },
    {
      "name": "Analyze Image",
      "value": "image",
      "action": "Analyze image",
      "description": "Extract information or generate captions from images"
    },
    {
      "name": "Analyze Video",
      "value": "video",
      "action": "Analyze video",
      "description": "Extract insights or transcribe content from video files"
    },
    {
      "name": "Execute Agent",
      "value": "executeAgent",
      "action": "Execute agent",
      "description": "Execute an agent"
    },
    {
      "name": "Manage Files",
      "value": "file",
      "action": "Manage files",
      "description": "List uploaded files or upload new files to VLM Run"
    }
  ]

npm_readme:
  <div align="center">
  <p align="center" style="width: 100%;">
      <img src="https://raw.githubusercontent.com/vlm-run/.github/refs/heads/main/profile/assets/vlm-black.svg" alt="VLM Run Logo" width="80" style="margin-bottom: -5px; color: #2e3138; vertical-align: middle; padding-right: 5px;"><br>
  </p>
  <h2>n8n-nodes-vlmrun</h2>
  <p align="center">
  <a href="https://vlm.run"><b>Website</b></a> | <a href="https://app.vlm.run/"><b>Platform</b></a> | <a href="https://docs.vlm.run/"><b>Docs</b></a> | <a href="https://docs.vlm.run/blog"><b>Blog</b></a> | <a href="https://discord.gg/4jgyECY4rq"><b>Discord</b></a>
  </p>
  <p align="center">
  <a href="https://www.npmjs.com/package/@vlm-run/n8n-nodes-vlmrun"><img alt="NPM Version" src="https://badge.fury.io/js/%40vlm-run%2Fn8n-nodes-vlmrun.svg"></a>
  <a href="https://github.com/vlm-run/n8n-nodes-vlmrun/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/vlm-run/n8n-nodes-vlmrun.svg"></a>
  <a href="https://discord.gg/4jgyECY4rq"><img alt="Discord" src="https://img.shields.io/badge/discord-chat-purple?color=%235765F2&label=discord&logo=discord"></a>
  <a href="https://twitter.com/vlmrun"><img alt="Twitter Follow" src="https://img.shields.io/twitter/follow/vlmrun.svg?style=social&logo=twitter"></a>
  </p>
  </div>

  This is an n8n community node. It lets you use [VLM Run](https://vlm.run) in your n8n workflows.

  VLM Run is a unified gateway for Visual AI that enables you to extract structured data from unstructured visual content like images, videos, audio, and documents using Vision Language Models (VLMs).


  ## 💾 Installation

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

  ```bash
  npm i @vlm-run/n8n-nodes-vlmrun
  ```

  ## ⚙️ Operations

  - **Analyze Audio**: Analyze audio files for transcription, speaker identification, sentiment analysis, and more.
  - **Analyze Document**: Extract structured data from documents such as resumes, invoices, presentations, and more.
  - **Analyze Image**: Extract information or generate captions from images.
  - **Analyze Video**: Extract insights or transcribe content from video files.
  - **Manage Files**: List uploaded files or upload new files to VLM Run.

  ## 🔑 Credentials

  1. Sign up for a VLM Run account at [vlm.run](https://app.vlm.run/)
  2. Get your API key from the dashboard
  3. Use the API key in the n8n VLM Run node credentials

  ## 📖 Usage

  1. **Configure Credentials**:
     - Add your VLM Run API credentials in n8n
     - Set the API base URL (default: https://api.vlm.run/v1)

  2. **Add VLM Run Node**:
     - Search for "VLM Run" in the n8n nodes panel
     - Add it to your workflow

  3. **Configure Node**:
     - Select the operation (Analyze Audio, Analyze Document, Analyze Image, Analyze Video, or Manage Files)
     - Provide the required input fields (such as file data, model, or domain)
     - Configure any additional parameters as needed

  4. **Run the workflow** to process your visual or audio data with VLM Run's AI models.

  ## 📸 Screenshots

  Here are some screenshots of the n8n-nodes-vlmrun in action:

  ![VLM Run Node Overview](assets/vlmrun-overview.png)
  _Overview of the VLM Run node in n8n_

  ![VLM Run Workflow Example](assets/vlmrun-workflow.png)
  _Example workflow using the VLM Run node_

  ## 🔗 Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [VLM Run Documentation](https://docs.vlm.run/introduction)
  - [VLM Run API Reference](https://docs.vlm.run/api-reference/v1/health)
  - [Example Workflows](https://n8n.io/workflows)

  ## 🛠️ Example Use Cases

  - Extracting structured data from resumes, invoices, or utility bills
  - Cataloging and captioning product images
  - Transcribing and analyzing audio interviews or calls
  - Extracting insights from video content
  - Managing files in your VLM Run account from n8n workflows

  ## 📄 License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the VLM Run API to process visual and audio content using Vision Language Models.","capabilities":["Analyze audio files for transcription and sentiment analysis","Analyze documents to extract structured data (resumes, invoices, presentations)","Analyze images to extract information or generate captions","Analyze video files for insights or transcription","Manage files (list or upload) in the VLM Run account"],"authentication":"API key required","commonUseCases":["Extracting structured data from resumes, invoices, or utility bills","Cataloging and captioning product images","Transcribing and analyzing audio interviews or calls","Extracting insights from video content"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-campaignkit.campaignKit
package_name: n8n-nodes-campaignkit
display_name: CampaignKit
description: Email validation and verification with CampaignKit
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: campaignkit
author_github_url: https://github.com/campaignkit-cc/
npm_package_name: n8n-nodes-campaignkit
npm_version: 1.0.3
community_fetched_at: 2026-03-25T21:19:40.646Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "validateEmail",
      "options": [
        {
          "name": "Validate Email",
          "value": "validateEmail",
          "action": "Validate a single email address",
          "description": "Validate a single email address"
        },
        {
          "name": "Validate Batch",
          "value": "validateBatch",
          "action": "Validate multiple email addresses",
          "description": "Validate multiple email addresses"
        },
        {
          "name": "Get Job Status",
          "value": "getJobStatus",
          "action": "Get validation job status",
          "description": "Get the status of a validation job"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Validate Email",
      "value": "validateEmail",
      "action": "Validate a single email address",
      "description": "Validate a single email address"
    },
    {
      "name": "Validate Batch",
      "value": "validateBatch",
      "action": "Validate multiple email addresses",
      "description": "Validate multiple email addresses"
    },
    {
      "name": "Get Job Status",
      "value": "getJobStatus",
      "action": "Get validation job status",
      "description": "Get the status of a validation job"
    }
  ]

npm_readme:
  # n8n-nodes-campaignkit

  This is an n8n community node for [CampaignKit Email Validation](https://campaignkit.cc). It lets you validate email addresses and receive notifications when validation jobs complete in your n8n workflows.

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

  ## Installation

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

  ### Community Node Installation

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

  ### Manual Installation

  If you're self-hosting n8n, you can install the node manually:

  ```bash
  npm install n8n-nodes-campaignkit
  ```

  For Docker-based installations, add the package to your n8n Docker image or install it in your running container.

  ## Operations

  ### CampaignKit Node

  The main CampaignKit node supports the following operations:

  #### Validate Email
  Validates a single email address and returns detailed verification results.

  **Input:**
  - `email` (string, required): The email address to validate

  **Output:**
  ```json
  {
    "email": "user@example.com",
    "is_valid": true,
    "is_risky": false,
    "is_invalid": false,
    "is_disposable": false,
    "is_role_email": false,
    "is_catchall": false,
    "is_blacklisted": false,
    "is_free_email": true,
    "is_mx_found": true,
    "is_smtp_valid": true,
    "score": 10,
    "classifier": "valid",
    "domain": "example.com",
    "mx_record": "mail.example.com",
    "smtp_provider": "Google",
    "free_email_provider": "Gmail",
    "did_you_mean": ""
  }
  ```

  #### Validate Batch
  Validates multiple email addresses as a batch job.

  **Input:**
  - `emails` (string, required): Email addresses to validate (one per line)
  - `label` (string, optional): Label for the validation job

  **Output:**
  ```json
  {
    "job_id": 12345,
    "email_count": 100,
    "status": "pending",
    "label": "My Email List",
    "created_at": "2025-01-15T10:00:00Z"
  }
  ```

  #### Get Job Status
  Retrieves the status and results of a validation job.

  **Input:**
  - `jobId` (number, required): The ID of the validation job

  **Output:**
  ```json
  {
    "job_id": 12345,
    "account_id": 456,
    "label": "My Email List",
    "state": "done",
    "email_count": 100,
    "valid_count": 85,
    "invalid_count": 10,
    "risky_count": 5,
    "deliverable_count": 85,
    "undeliverable_count": 15,
    "credits_used": 100,
    "progress": 100,
    "created_at": "2025-01-15T10:00:00Z",
    "started_at": "2025-01-15T10:00:05Z",
    "finished_at": "2025-01-15T10:05:00Z"
  }
  ```

  ### CampaignKit Trigger

  The CampaignKit Trigger node responds to events from CampaignKit.

  #### Job Completed
  Triggers when a validation job is completed.

  **Output:**
  ```json
  {
    "event": "validation.job.completed",
    "job_id": 12345,
    "account_id": 456,
    "label": "My Email List",
    "state": "done",
    "email_count": 100,
    "deliverable_count": 85,
    "undeliverable_count": 15,
    "risky_count": 5,
    "credits_used": 100,
    "created_at": "2025-01-15T10:00:00Z",
    "finished_at": "2025-01-15T10:05:00Z"
  }
  ```

  ## Credentials

  To use this node, you need a CampaignKit API key.

  ### Getting Your API Key

  1. Sign up for a [CampaignKit account](https://app.campaignkit.cc)
  2. Navigate to **Settings** > **API Keys**
  3. Create a new API key or copy an existing one

  ### Configuring Credentials in n8n

  1. In your n8n workflow, add a CampaignKit node
  2. Click on **Credentials** > **Create New**
  3. Select **CampaignKit API**
  4. Enter your API key
  5. (Optional) Modify the Base URL if using a custom instance
  6. Click **Save**

  The credential will be automatically tested by making a request to `/v1/account/me`.

  ## Example Workflows

  ### Example 1: Validate Single Email

  ```
  Manual Trigger → CampaignKit (Validate Email) → Filter (is_valid = true) → Send Email
  ```

  1. Trigger workflow manually or via webhook
  2. Use **CampaignKit** node with **Validate Email** operation
  3. Filter results to only include valid emails
  4. Send confirmation email for valid addresses

  ### Example 2: Batch Validation with Notification

  ```
  Schedule Trigger → HTTP Request (Get Emails) → CampaignKit (Validate Batch) → Wait → CampaignKit (Get Job Status) → Send Notification
  ```

  1. Schedule workflow to run daily
  2. Fetch email list from your database/API
  3. Start batch validation with CampaignKit
  4. Wait for job to complete (or use webhook trigger)
  5. Get final job results
  6. Send summary notification

  ### Example 3: Webhook-Based Batch Validation

  ```
  CampaignKit Trigger (Job Completed) → Filter (deliverable_count > 0) → HTTP Request (Update Database) → Slack Notification
  ```

  1. **CampaignKit Trigger** listens for job completion
  2. Filter to only process jobs with deliverable emails
  3. Update your database with results
  4. Send Slack notification with summary

  ## Understanding Email Validation Scores

  CampaignKit assigns each email a score from 0-10:

  - **10**: Valid - All checks passed, email is deliverable
  - **9**: Valid but unverified - Syntax and MX checks passed, but SMTP verification failed
  - **2**: Risky - Email exists but may be a spam trap or temporary
  - **0**: Invalid - Email will bounce

  ### Key Output Fields

  - `is_valid`: Email is deliverable (score 9-10)
  - `is_invalid`: Email will bounce (score 0)
  - `is_risky`: Email is suspicious (score 2)
  - `is_disposable`: Temporary/disposable email service
  - `is_role_email`: Generic role address (info@, support@, etc.)
  - `is_catchall`: Domain accepts all email addresses
  - `is_blacklisted`: Email is on CampaignKit's blacklist
  - `did_you_mean`: Suggested correction for typos

  ## API Rate Limits

  CampaignKit API has the following limits:

  - **Authenticated requests**: Based on your account plan
  - **Batch validation**: Uses credits based on email count
  - **Webhook delivery**: Up to 5 retry attempts with exponential backoff

  Monitor your credit usage via the `/v1/account/billing/balance` endpoint or in your CampaignKit dashboard.

  ## Troubleshooting

  ### Credential Test Fails

  - Verify your API key is correct
  - Check that your CampaignKit account is active
  - Ensure the Base URL is correct (default: `https://api.campaignkit.cc`)

  ### Webhook Not Receiving Events

  - Ensure your n8n instance is accessible from the internet
  - Check that the workflow is activated
  - Verify webhook was created successfully in CampaignKit dashboard
  - Check n8n execution logs for incoming webhook requests

  ### Batch Job Stuck in "Pending"

  - Large batches may take time to process
  - Use the **Get Job Status** operation to monitor progress
  - Jobs process at approximately 100-500 emails/minute depending on validation type

  ### "Insufficient Credits" Error

  - Check your account credit balance
  - Purchase additional credits in your CampaignKit dashboard
  - Contact support@campaignkit.cc for billing assistance

  ## Development

  ### Building the Node

  ```bash
  npm install
  npm run build
  ```

  ### Local Testing

  1. Build the node
  2. Link it to your n8n installation:
     ```bash
     npm link
     cd ~/.n8n/nodes
     npm link n8n-nodes-campaignkit
     ```
  3. Restart n8n

  ### Project Structure

  ```
  n8n-nodes-campaignkit/
  ├── credentials/
  │   └── CampaignKitApi.credentials.ts
  ├── nodes/
  │   └── CampaignKit/
  │       ├── CampaignKit.node.ts
  │       └── CampaignKitTrigger.node.ts
  ├── types/
  │   └── CampaignKit.types.ts
  ├── package.json
  ├── tsconfig.json
  └── README.md
  ```

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [CampaignKit API Documentation](https://campaignkit.cc/docs)
  - [CampaignKit Dashboard](https://app.campaignkit.cc)
  - [CampaignKit Support](mailto:support@campaignkit.cc)

  ## Compatibility

  - n8n version: 0.220.0 or higher
  - Node.js version: 18.x or higher

  ## License

  [MIT](LICENSE)

  ## Version History

  ### 0.1.0 (Initial Release)
  - ✅ Validate Email operation
  - ✅ Validate Batch operation
  - ✅ Get Job Status operation
  - ✅ Job Completed webhook trigger
  - ✅ API Key authentication
  - ✅ Comprehensive error handling

  ## Support

  For issues related to:
  - **This n8n node**: Open an issue on [GitHub](https://github.com/yourusername/CampaignKit/issues)
  - **CampaignKit API**: Contact support@campaignkit.cc
  - **n8n platform**: Visit [n8n community forum](https://community.n8n.io)

ai_documentation_summary:
  {"purpose":"Validates email addresses individually or in batches using CampaignKit's API and provides detailed verification results including deliverability scores and risk indicators.","capabilities":["Validate single email addresses","Validate multiple email addresses in batch jobs","Retrieve status and results of validation jobs","Provide detailed email verification metrics (MX, SMTP, blacklist, disposable, role-based)","Offer email typo suggestions","Support webhook triggers for job completion events"],"authentication":"API key required","commonUseCases":["Email list cleaning before sending campaigns","Automated email verification workflows with batch processing","Integrating with CRM or database updates upon validation completion","Filtering invalid or risky emails before outreach"],"limitations":["Batch validation requires credits based on email count","Webhook delivery limited to 5 retry attempts with exponential backoff","Rate limits vary by account plan"],"relatedNodes":["n8n-nodes-base.manualTrigger","n8n-nodes-base.httpRequest","n8n-nodes-base.filter","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.webhook"]}


node_type: n8n-nodes-verifiemail.verifiEmail
package_name: n8n-nodes-verifiemail
display_name: Verifi Email
description: Email validation and domain health check using VerifiEmail API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  {
  "type": "main"
  }
  ]

updated_at: 2026-03-25 21:19:40
author_name: jiteshdugar
author_github_url: https://github.com/verifi-email/verifi-email-n8n-node.git
npm_package_name: n8n-nodes-verifiemail
npm_version: 1.3.1
community_fetched_at: 2026-03-25T21:19:40.647Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "validateEmail",
      "options": [
        {
          "name": "Validate Email Address",
          "value": "validateEmail",
          "action": "Validate an email address",
          "description": "Validate a Single Email Address"
        },
        {
          "name": "Validate Multiple Emails",
          "value": "bulkValidateEmails",
          "action": "Validate multiple email addresses",
          "description": "Validate Multiple Email Addresses in Bulk"
        },
        {
          "name": "Check Domain Health",
          "value": "checkDomainHealth",
          "action": "Check domain health",
          "description": "Check Domain Health and Configuration"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Validate Email Address",
      "value": "validateEmail",
      "action": "Validate an email address",
      "description": "Validate a Single Email Address"
    },
    {
      "name": "Validate Multiple Emails",
      "value": "bulkValidateEmails",
      "action": "Validate multiple email addresses",
      "description": "Validate Multiple Email Addresses in Bulk"
    },
    {
      "name": "Check Domain Health",
      "value": "checkDomainHealth",
      "action": "Check domain health",
      "description": "Check Domain Health and Configuration"
    }
  ]

npm_readme:
  # n8n-nodes-verifi-email

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

  A powerful n8n node for seamless email validation using the [Verifi.Email](https://verifi.email) API. Validate email addresses with enterprise-grade accuracy while maintaining complete privacy and security.

  ## Features

  - **Seamless Integration** - Easy-to-use n8n node for email validation workflows
  - **High Accuracy** - Enterprise-grade email validation with detailed results
  - **Privacy-First** - Secure and private API that doesn't store your data
  - **Real-time Validation** - Instant email verification results
  - **Bulk Processing** - Validate multiple emails efficiently in n8n workflows
  - **Detailed Responses** - Comprehensive validation data including deliverability, syntax, and more

  ## Installation

  ### Install via n8n Community Nodes

  1. Go to **Settings** → **Community Nodes** in your n8n instance
  2. Click **Install a Community Node**
  3. Enter: `n8n-nodes-verifi-email`
  4. Click **Install**

  ### Manual Installation

  ```bash
  # In your n8n installation directory
  npm install n8n-nodes-verifi-email
  ```

  ## Setup

  ### 1. Get Your API Key

  1. Visit [Verifi.Email Registration](https://app.verifi.email/register)
  2. Create your free account
  3. Get your API key from the dashboard

  ### 2. Configure Credentials

  1. In n8n, go to **Credentials**
  2. Click **Add Credential** → **Verifi.Email API**
  3. Enter your API key
  4. Save the credential

  ## Usage

  ### Basic Email Validation

  1. Add the **Verifi.Email** node to your workflow
  2. Select your configured credentials
  3. Choose operation: **Validate Email**
  4. Enter the email address to validate
  5. Execute the workflow

  ### Example Workflow

  ```json
  {
    "email": "test@example.com",
    "validation_result": {
      "is_valid": true,
      "is_deliverable": true,
      "is_risky": false,
      "syntax_valid": true,
      "domain_exists": true,
      "mailbox_exists": true,
      "disposable": false,
      "role_account": false,
      "free_provider": false
    }
  }
  ```

  ### Bulk Validation

  Use n8n's **Split In Batches** node to process multiple emails:

  1. **Read Data** → Email list
  2. **Split In Batches** → Process in chunks
  3. **Verifi.Email** → Validate each email
  4. **Merge** → Combine results

  ## Node Operations

  ### Validate Email
  Validates a single email address and returns comprehensive results.

  **Parameters:**
  - `email` (string, required): Email address to validate

  **Output:**
  - `is_valid` (boolean): Overall validation result
  - `is_deliverable` (boolean): Whether email can receive messages
  - `is_risky` (boolean): Risk assessment for the email
  - `syntax_valid` (boolean): Email syntax validation
  - `domain_exists` (boolean): Domain existence check
  - `mailbox_exists` (boolean): Mailbox existence verification
  - `disposable` (boolean): Whether it's a disposable email
  - `role_account` (boolean): Whether it's a role-based email
  - `free_provider` (boolean): Whether it's from a free email provider

  ## API Documentation

  For detailed API documentation and advanced features, visit: [https://verifi.email/docs](https://verifi.email/docs)

  ## Use Cases

  - **Lead Validation** - Clean your lead lists before marketing campaigns
  - **User Registration** - Validate emails during sign-up processes
  - **Data Cleaning** - Remove invalid emails from existing databases
  - **Email Marketing** - Improve deliverability by validating subscriber lists
  - **Form Validation** - Real-time email validation in web forms
  - **CRM Integration** - Validate contacts automatically in your CRM workflows

  ## Example Workflows

  ### Marketing List Cleanup
  ```
  Google Sheets → Split In Batches → Verifi.Email → Filter Valid → Update Sheet
  ```

  ### Real-time Form Validation
  ```
  Webhook → Verifi.Email → Conditional Logic → Send Response
  ```

  ### CRM Contact Validation
  ```
  CRM Trigger → Verifi.Email → Update Contact Status → Slack Notification
  ```

  ## Error Handling

  The node includes comprehensive error handling for:
  - Invalid API keys
  - Rate limit exceeded
  - Malformed email addresses
  - Network connectivity issues
  - API service unavailable

  ## Rate Limits

  Please refer to your [Verifi.Email dashboard](https://app.verifi.email) for current rate limits and usage statistics.

  ## Support

  - **Documentation**: [https://verifi.email/docs](https://verifi.email/docs)
  - **Website**: [https://verifi.email](https://verifi.email)
  - **Issues**: Report issues on this GitHub repository
  - **API Support**: Contact us on **contact@verifi.email**

  ## Contributing

  We welcome contributions! Please feel free to submit issues and pull requests.

  ### Development Setup

  1. Clone this repository
  2. Install dependencies: `npm install`
  3. Build the node: `npm run build`
  4. Link to your n8n installation: `npm link`
  5. In your n8n directory: `npm link n8n-nodes-verifi-email`

  ### Testing

  ```bash
  npm run test
  npm run lint
  ```

  ## Changelog

  ### v1.0.0
  - Initial release
  - Email validation functionality
  - Comprehensive validation results
  - Error handling and rate limiting

  ## License

  [MIT](LICENSE.md)

  ---

  **Secure • Private • Accurate**

  Transform your email workflows with reliable validation powered by Verifi.Email and n8n automation.

ai_documentation_summary:
  {"purpose":"Validates email addresses and checks domain health using the Verifi.Email API, providing detailed results on deliverability, syntax, and mailbox existence.","capabilities":["Single email validation","Bulk email processing","Disposable email detection","Role-based account detection","Free provider identification","Syntax validation","Domain existence check","Mailbox existence verification","Risk assessment"],"authentication":"API key required","commonUseCases":["Lead validation before marketing campaigns","User registration verification","Data cleaning for databases","Email marketing list improvement","Real-time form validation"],"limitations":["Rate limits apply (check Verifi.Email dashboard)","Requires external API key setup"],"relatedNodes":["Split In Batches","Filter","Update Sheet","Webhook","Conditional Logic"]}


node_type: n8n-nodes-graphorlm.graphor
package_name: n8n-nodes-graphorlm
display_name: Graphor
description: Interact with Graphor API for document processing, RAG, and AI-powered document chat
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: thiagohirano
author_github_url: https://github.com/thiagohirano/
npm_package_name: n8n-nodes-graphorlm
npm_version: 0.1.12
community_fetched_at: 2026-03-25T21:19:40.648Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "chat",
      "options": [
        {
          "name": "Chat",
          "value": "chat",
          "description": "Ask questions about your documents"
        },
        {
          "name": "Extraction",
          "value": "extraction",
          "description": "Extract structured data from documents"
        },
        {
          "name": "Flow",
          "value": "flow",
          "description": "Manage and run RAG flows"
        },
        {
          "name": "Source",
          "value": "source",
          "description": "Manage document sources"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "askQuestion",
      "options": [
        {
          "name": "Ask Question",
          "value": "askQuestion",
          "action": "Ask a question about your documents",
          "description": "Ask a question about your documents"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chat"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "extractData",
      "options": [
        {
          "name": "Extract Data",
          "value": "extractData",
          "action": "Extract structured data from documents",
          "description": "Extract structured data from documents using JSON Schema"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "extraction"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "run",
      "options": [
        {
          "name": "Deploy",
          "value": "deploy",
          "action": "Deploy a flow",
          "description": "Deploy a flow to make it accessible via API"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all flows",
          "description": "List all flows in your project"
        },
        {
          "name": "Run",
          "value": "run",
          "action": "Run a flow",
          "description": "Execute a deployed flow with a query"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "flow"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a source",
          "description": "Delete a source from your project"
        },
        {
          "name": "Get Elements",
          "value": "getElements",
          "action": "Get source elements",
          "description": "Get structured elements from a processed source"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all sources",
          "description": "List all sources in your project"
        },
        {
          "name": "Process",
          "value": "process",
          "action": "Process a source",
          "description": "Process a source with OCR/parsing"
        },
        {
          "name": "Upload File",
          "value": "uploadFile",
          "action": "Upload a file",
          "description": "Upload a file to your project"
        },
        {
          "name": "Upload From GitHub",
          "value": "uploadGithub",
          "action": "Upload from Git Hub",
          "description": "Upload content from a GitHub repository"
        },
        {
          "name": "Upload From URL",
          "value": "uploadUrl",
          "action": "Upload from URL",
          "description": "Upload content from a web page URL"
        },
        {
          "name": "Upload From YouTube",
          "value": "uploadYoutube",
          "action": "Upload from You Tube",
          "description": "Upload content from a YouTube video"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "source"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Ask Question",
      "value": "askQuestion",
      "action": "Ask a question about your documents",
      "description": "Ask a question about your documents"
    },
    {
      "name": "Extract Data",
      "value": "extractData",
      "action": "Extract structured data from documents",
      "description": "Extract structured data from documents using JSON Schema"
    },
    {
      "name": "Deploy",
      "value": "deploy",
      "action": "Deploy a flow",
      "description": "Deploy a flow to make it accessible via API"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all flows",
      "description": "List all flows in your project"
    },
    {
      "name": "Run",
      "value": "run",
      "action": "Run a flow",
      "description": "Execute a deployed flow with a query"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a source",
      "description": "Delete a source from your project"
    },
    {
      "name": "Get Elements",
      "value": "getElements",
      "action": "Get source elements",
      "description": "Get structured elements from a processed source"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all sources",
      "description": "List all sources in your project"
    },
    {
      "name": "Process",
      "value": "process",
      "action": "Process a source",
      "description": "Process a source with OCR/parsing"
    },
    {
      "name": "Upload File",
      "value": "uploadFile",
      "action": "Upload a file",
      "description": "Upload a file to your project"
    },
    {
      "name": "Upload From GitHub",
      "value": "uploadGithub",
      "action": "Upload from Git Hub",
      "description": "Upload content from a GitHub repository"
    },
    {
      "name": "Upload From URL",
      "value": "uploadUrl",
      "action": "Upload from URL",
      "description": "Upload content from a web page URL"
    },
    {
      "name": "Upload From YouTube",
      "value": "uploadYoutube",
      "action": "Upload from You Tube",
      "description": "Upload content from a YouTube video"
    }
  ]

npm_readme:
  # n8n-nodes-graphorlm

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

  This is an n8n community node that lets you interact with [Graphor](https://graphorlm.com) - an intelligent document processing platform with RAG pipelines, document chat, and data extraction capabilities.

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

  ## Installation

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

  ### npm

  ```bash
  npm install n8n-nodes-graphorlm
  ```

  ### n8n Desktop/Cloud

  1. Go to **Settings** > **Community Nodes**
  2. Select **Install**
  3. Enter `n8n-nodes-graphorlm` and agree to the risks
  4. Click **Install**

  ## Nodes

  This package includes two nodes:

  1. **Graphor** - Full-featured node with all operations
  2. **Graphor Tool** - Simplified node optimized for AI Agents

  Both nodes can be used as tools with n8n AI Agents (like the AI Agent node with OpenAI, Anthropic, etc.)

  ## Operations

  ### Chat
  - **Ask Question**: Ask questions about your documents using natural language with conversational memory support

  ### Extraction
  - **Extract Data**: Extract structured data from documents using JSON Schema definitions

  ### Flow
  - **List**: List all flows in your project
  - **Run**: Execute a deployed RAG flow with a query
  - **Deploy**: Deploy a flow to make it accessible via API

  ### Source
  - **List**: List all sources in your project
  - **Upload File**: Upload a file (PDF, DOCX, images, audio, video)
  - **Upload From URL**: Ingest content from a web page URL
  - **Upload From GitHub**: Ingest content from a public GitHub repository
  - **Upload From YouTube**: Ingest content from a YouTube video
  - **Process**: Process a source with OCR/parsing (Basic, Hi-Res, Hi-Res FT, MAI, GraphorLM)
  - **Get Elements**: Get structured elements from a processed source
  - **Delete**: Delete a source from your project

  ## Credentials

  To use this node, you need a Graphor API token:

  1. Log in to your [Graphor account](https://app.graphorlm.com)
  2. Go to **Settings** > **API Tokens**
  3. Create a new API token
  4. Copy the token (it starts with `grlm_`)

  ## Supported File Types

  - **Documents**: PDF, DOC, DOCX, ODT, TXT, MD, HTML
  - **Presentations**: PPT, PPTX
  - **Spreadsheets**: CSV, TSV, XLS, XLSX
  - **Images**: PNG, JPG, JPEG, TIFF, BMP, HEIC
  - **Audio**: MP3, WAV, M4A, OGG, FLAC
  - **Video**: MP4, MOV, AVI, MKV, WEBM

  ## Processing Methods

  | Method | Description |
  |--------|-------------|
  | **Basic** | Fast processing with heuristic classification |
  | **Hi-Res** | High resolution processing with advanced layout detection |
  | **Hi-Res FT** | Fine-tuned high resolution processing |
  | **MAI** | Multi-modal AI processing |
  | **GraphorLM** | Graphor proprietary processing method |

  ## Compatibility

  - n8n version 1.0.0 or later
  - Node.js 18.0.0 or later

  ## Resources

  - [Graphor Introduction](https://docs.graphorlm.com/introduction)
  - [Graphor Documentation](https://docs.graphorlm.com)
  - [Graphor API Reference](https://docs.graphorlm.com/api-reference/overview)
  - [API Tokens Guide](https://docs.graphorlm.com/guides/api-tokens)
  - [Data Ingestion Guide](https://docs.graphorlm.com/guides/data-ingestion)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Graphor API for document processing, RAG pipelines, and AI-powered document chat.","capabilities":["Ask questions about documents using natural language with conversational memory","Extract structured data from documents using JSON Schema definitions","List and execute deployed RAG flows","Deploy flows to make them accessible via API","List and manage document sources","Upload files from local disk, URLs, GitHub, and YouTube","Process documents with various methods (Basic, Hi-Res, Hi-Res FT, MAI, GraphorLM)","Retrieve structured elements from processed sources","Delete sources from projects"],"authentication":"API key required (Graphor API token starting with 'grlm_')","commonUseCases":["Document Q&A with conversational memory","Structured data extraction from PDFs and other documents","Document ingestion and processing for RAG applications","AI agent tool integration for document analysis"],"limitations":["Requires a paid Graphor account with API token access","Processing methods vary in complexity and resource requirements","Some advanced features may require GraphorLM-specific processing"],"relatedNodes":["n8n-nodes-core.aiAgent","n8n-nodes-core.httpRequest","n8n-nodes-core.code"]}


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

updated_at: 2026-03-25 21:19:40
author_name: maciejw94
author_github_url: https://github.com/Narf-AI/n8n-scrapingfish.git
npm_package_name: n8n-nodes-scrapingfish
npm_version: 0.1.3
community_fetched_at: 2026-03-25T21:19:40.648Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-scrapingfish

  This is an n8n community node for [Scrapingfish](https://scrapingfish.com/), a web scraping API. It allows you to scrape web pages, render JavaScript, and extract structured data directly within your n8n workflows.

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

  ## Installation

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

  ## Operations

  This node provides a single operation to scrape a URL with various options:

  - **URL**: The target URL to scrape.
  - **Render JS**: Enable to render JavaScript on the page.
  - **Additional Fields**:
    - **Extraction Rules**: Define CSS selectors to extract structured JSON data.
    - **JS Scenario**: Execute a sequence of browser actions.
    - **Headers**: Forward custom HTTP headers.
    - **Timeouts**: Configure request, trial, and rendering timeouts.

  ## Credentials

  To use this node, you need a Scrapingfish API key.

  1. Sign up at [scrapingfish.com](https://scrapingfish.com/) to get your API key.
  2. In your n8n instance, go to **Credentials > New**.
  3. Search for "Scrapingfish API" and add your API key.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Scrapingfish API Documentation](https://scrapingfish.com/docs)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"A community node that interacts with the Scrapingfish API to scrape web pages, render JavaScript, and extract structured data within n8n workflows.","capabilities":["Scrape any URL","Render JavaScript on the page","Extract structured JSON data using CSS selectors","Execute custom browser actions via JS scenarios","Forward custom HTTP headers","Configure request, trial, and rendering timeouts"],"authentication":"API key required","commonUseCases":["Extracting dynamic content from websites","Parsing e-commerce product data","Monitoring price changes across multiple sites","Automating data collection from JavaScript-heavy pages"],"limitations":["Requires a paid Scrapingfish API key","Limited to Scrapingfish's supported domains and features","No built-in error handling for failed extractions"],"relatedNodes":["n8n HTTP Request","n8n Webhook","n8n Code"]}


node_type: @handelsregister/n8n-nodes-handelsregister-ai.handelsregisterAi
package_name: @handelsregister/n8n-nodes-handelsregister-ai
display_name: handelsregister.ai
description: Interact with handelsregister.ai API to query German business registry data
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: padho
author_github_url: https://github.com/Handelsregister-AI/n8n-nodes-handelsregister-ai.git
npm_package_name: @handelsregister/n8n-nodes-handelsregister-ai
npm_version: 0.2.1
community_fetched_at: 2026-03-25T21:19:40.649Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "fetchOrganization",
      "options": [
        {
          "name": "Fetch Organization",
          "value": "fetchOrganization",
          "action": "Fetch organization details",
          "description": "Get comprehensive information about a German company"
        },
        {
          "name": "Search Organizations",
          "value": "searchOrganizations",
          "action": "Search organizations",
          "description": "Search German companies with filters and pagination"
        },
        {
          "name": "Fetch Document",
          "value": "fetchDocument",
          "action": "Fetch document",
          "description": "Download official PDF documents from the German business registry"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Fetch Organization",
      "value": "fetchOrganization",
      "action": "Fetch organization details",
      "description": "Get comprehensive information about a German company"
    },
    {
      "name": "Search Organizations",
      "value": "searchOrganizations",
      "action": "Search organizations",
      "description": "Search German companies with filters and pagination"
    },
    {
      "name": "Fetch Document",
      "value": "fetchDocument",
      "action": "Fetch document",
      "description": "Download official PDF documents from the German business registry"
    }
  ]

npm_readme:
  # @handelsregister/n8n-nodes-handelsregister-ai

  This is an n8n community node that allows you to interact with the [Handelsregister.ai](https://handelsregister.ai) API to query German business registry data.

  ## Installation

  ### Community Node

  1. In n8n, go to **Settings** > **Community Nodes**
  2. Click **Install**
  3. Enter `@handelsregister/n8n-nodes-handelsregister-ai`
  4. Click **Install**

  ### Manual Installation

  ```bash
  npm install @handelsregister/n8n-nodes-handelsregister-ai
  ```

  ## Features

  - **Fetch Organization**: Get comprehensive information about a German company including financial data, related persons, and publications
  - **Search Organizations**: Search German companies with filters and pagination
  - **Fetch Document**: Download official PDF documents from the German business registry

  ## Setup

  1. Get your API key from [Handelsregister.ai](https://handelsregister.ai)
  2. In n8n, add credentials:
     - Go to **Credentials** > **New**
     - Select **Handelsregister.ai API**
     - Enter your API key
     - Save the credentials

  ## Usage

  ### Fetch Organization

  Get comprehensive information about a German company:
  - **Query**: Company name, registration number or search query (e.g., "Konux GmbH aus München")
  - **Features**: Select additional data to include:
    - Financial KPI (1 Credit)
    - Balance Sheet Accounts (3 Credits)
    - Profit and Loss Account (3 Credits)
    - Related Persons (2 Credits)
    - Shareholders (5 Credits)
    - Publications (1 Credit)
    - News (10 Credits)
    - Insolvency Publications (1 Credit)
    - Annual Financial Statements (5 Credits)
    - Website Content (0 Credits - requires AI Mode to be enabled)
  - **AI Mode**: Enable AI-powered search for better results (enabled by default)

  ### Search Organizations

  Search German companies with filters and pagination:
  - **Query**: Search query (minimum 2 characters, e.g., "Konux")
  - **Additional Fields**:
    - Skip: Number of results to skip
    - Limit: Results per page (1-100)
    - Postal Code Filter: Filter by postal code

  ### Fetch Document

  Download official PDF documents from the German business registry:
  - **Company ID**: Unique company entity ID from search results
  - **Document Type**: 
    - Shareholders List
    - Current Extract (AD)
    - Historical Extract (CD)

  ## Example Workflows

  ### Fetch Organization with Features
  ```json
  {
    "nodes": [
      {
        "parameters": {
          "operation": "fetchOrganization",
          "q": "Konux GmbH aus München",
          "features": ["financial_kpi", "related_persons"],
          "ai_search": true
        },
        "name": "handelsregister.ai",
        "type": "@handelsregister/n8n-nodes-handelsregister-ai.handelsregisterAi",
        "typeVersion": 1,
        "position": [250, 300]
      }
    ]
  }
  ```

  ### Search Organizations with Filters
  ```json
  {
    "nodes": [
      {
        "parameters": {
          "operation": "searchOrganizations",
          "q": "tech",
          "additionalFields": {
            "limit": 20,
            "postal_code": "80331"
          }
        },
        "name": "Search Organizations",
        "type": "@handelsregister/n8n-nodes-handelsregister-ai.handelsregisterAi",
        "typeVersion": 1,
        "position": [250, 300]
      }
    ]
  }
  ```

  ### Fetch Document Workflow
  ```json
  {
    "nodes": [
      {
        "parameters": {
          "operation": "fetchDocument",
          "company_id": "{{ $json.entity_id }}",
          "document_type": "shareholders_list"
        },
        "name": "Fetch Document",
        "type": "@handelsregister/n8n-nodes-handelsregister-ai.handelsregisterAi",
        "typeVersion": 1,
        "position": [450, 300]
      }
    ]
  }
  ```

  ### Batch Company Processing
  Use this workflow to process multiple companies from a spreadsheet or database:

  1. **Spreadsheet/Database Node** → Read company names
  2. **handelsregister.ai Node** → Use `searchOrganizations` to find companies
  3. **Filter Node** → Filter results based on criteria
  4. **handelsregister.ai Node** → Use `fetchOrganization` to get detailed data
  5. **Output Node** → Save results to database or file

  ## Development

  ```bash
  # Install dependencies
  npm install

  # Build the node
  npm run build

  # Run in development mode
  npm run dev
  ```

  ## License

  [MIT](LICENSE.md)

  ## Support

  For issues and feature requests, please visit the [GitHub repository](https://github.com/Handelsregister-AI/n8n-nodes-handelsregister-ai).

ai_documentation_summary:
  {"purpose":"This n8n community node enables querying German business registry data via the Handelsregister.ai API, supporting organization searches, detailed company information retrieval, and official document downloads.","capabilities":["Fetch comprehensive organization data including financial KPIs, balance sheets, profit/loss, related persons, shareholders, publications, news, and annual financial statements","Search German companies with customizable filters (postal code) and pagination (skip/limit)","Download official PDF documents (Shareholders List, Current Extract, Historical Extract)","AI-powered search for enhanced query results","Batch processing support for multiple companies"],"authentication":"API key required","commonUseCases":["Comprehensive company due diligence and background checks","Automated German business registry data collection","Financial data extraction for business intelligence","Document retrieval for legal or compliance verification"],"limitations":["Website Content feature requires AI Mode to be enabled","Some data features have associated credit costs","Search query minimum length of 2 characters required","Community node (may require manual installation)"],"relatedNodes":["Spreadsheet Node","Database Node","Filter Node","Output Node"]}


node_type: n8n-nodes-wpforms.wpformsTrigger
package_name: n8n-nodes-wpforms
display_name: WPForms Trigger
description: Starts a workflow when a WPForms form is submitted
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: wpforms
author_github_url: https://github.com/awesomemotive/wpforms-n8n-nodes.git
npm_package_name: n8n-nodes-wpforms
npm_version: 0.1.4
community_fetched_at: 2026-03-25T21:19:40.650Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  ## n8n WPForms Trigger node

  NPM package name: `n8n-nodes-wpforms`

  This repository contains custom n8n nodes for WPForms integration, providing triggers and actions to automate workflows with WPForms data.

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

  ## Build and Install the Node Package

  ### 1. Install Dependencies
  ```bash
  npm install
  ```

  ### 2. Build the Project
  ```bash
  npm run build
  ```
  This command will:
  - Clean the `dist` directory
  - Compile TypeScript files
  - Build icons using gulp
  - Generate the distributable files

  ### 3. Link the Package Locally
  ```bash
  npm link
  ```

  ### 4. Set Up Custom Nodes Directory
  ```bash
  # Create custom directory in n8n home
  mkdir -p ~/.n8n/custom
  cd ~/.n8n/custom

  # Initialize npm in the custom directory
  npm init -y
  ```

  ### 5. Link Node to n8n Instance
  ```bash
  # Link your custom node to n8n (run from ~/.n8n/custom)
  npm link n8n-nodes-wpforms
  ```

  ### 6. Configure n8n Environment
  Set the environment variable to tell n8n where to find custom nodes:

  **For Linux/Mac:**
  ```bash
  export N8N_CUSTOM_EXTENSIONS="$HOME/.n8n/custom"
  ```

  **For Windows (PowerShell):**
  ```powershell
  $env:N8N_CUSTOM_EXTENSIONS="$HOME\.n8n\custom"
  ```

  ### 7. Start n8n
  ```bash
  n8n start
  ```

  ### 8. Verify Installation
  1. Open n8n in your browser (usually `http://localhost:5678`)
  2. Look for your custom nodes in the node palette
  3. You should see "WPForms" nodes available

  ## Setup and Usage Instructions for WPForms Trigger Node

  ### Prerequisites

  - A WordPress site with the WPForms plugin + WPForms n8n addon installed and activated.
  - An n8n instance.

  ### Installation

  1.  Go to your n8n instance.
  2.  Go to **Settings > Community Nodes**.
  3.  Click **Install a community node**.
  4.  Enter `n8n-nodes-wpforms` in the **npm package name** field.
  5.  Click **Install**.

  ### Configuration

  1.  In your n8n workflow, add the **WPForms Trigger** node.
  2.  Configure the node settings:
      *   **Secret Key**: Enter a secret key. This key must match the secret key configured in your WPForms n8n addon settings. It is used to verify the integrity of the data received.
      *   **Timestamp Skew**: Set the allowed time difference in seconds between your server and the WPForms server. The default is 300 seconds.
      *   **Output Schema**: Choose the output format. 'Default' provides a structured JSON object, while 'Raw' provides the raw request body and headers.
  3.  The node will display a webhook URL. Copy this URL.
  4.  In the Form Builder, go to the Marketing > n8n tab.
  5.  Enable n8n integration.
  6.  Paste the webhook URL from n8n.
  7.  Copy Secret Key and paste it to the WPForms Trigger node.
  8.  Save your form settings.

  ### Usage

  Now, whenever the selected form is submitted, it will trigger your n8n workflow. The form data will be available in the node's output.

  ## Development Workflow 

  In Linux/MacOS or Windows using PS 7 shell:

  ```bash
  cd /path/to/wpforms-n8n-nodes/

  # Build and link after changes
  npm run build && npm link

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

  In your n8n instance, re-link the node and restart n8n:
  ```bash
  cd ~/.n8n/custom

  # Re-link node and restart n8n:
  npm link n8n-nodes-wpforms && n8n start
  ```

  ## Testing Your Node 

  ```bash
  # Check for linting errors
  npm run lint

  # Auto-fix linting errors when possible
  npm run lintfix
  ```

  ## Publishing  

  First you need to bump the version. This needs to be reflected both in the package.json & the package-lock.json.  

  You can also do that using `npm version` - this will also create the new tag:  

  ```bash
  npm version patch  # for bug fixes (0.1.2 → 0.1.3)
  npm version minor  # for new features (0.1.2 → 0.2.0)
  npm version major  # for breaking changes (0.1.2 → 1.0.0)
  ```

  Next, you need to push the change in the main branch and also create/push a tag starting with `v`, e.g. v0.1.3

  We are publishing automatically to npm each time a tag is pushed in the repo.  
  Alongside that, a GitHub Release is also created.  

  ## More information

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

  ## License

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

ai_documentation_summary:
  {"purpose":"Triggers an n8n workflow automatically when a form is submitted via the WPForms plugin on a WordPress site.","capabilities":["Starts a workflow on form submission","Validates data integrity using a secret key","Configurable timestamp skew tolerance","Flexible output schema (structured JSON or raw request body/headers)"],"authentication":"Secret Key (must match WPForms n8n addon configuration)","commonUseCases":["Lead capture automation","Contact form follow-up workflows","Data validation and processing triggers"],"limitations":["Requires WPForms plugin and WPForms n8n addon to be installed on the WordPress site","Requires manual installation of the custom n8n node package"],"relatedNodes":["n8n-nodes-wpforms.wpformsAction","n8n-nodes-wpforms.wpformsWebhook"]}


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

updated_at: 2026-03-25 21:19:40
author_name: saber_kurama
author_github_url: https://github.com/Saber-Kurama/
npm_package_name: n8n-nodes-ada
npm_version: 0.1.6
community_fetched_at: 2026-03-25T21:19:40.650Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "data-analysis",
      "options": [
        {
          "name": "Data Analysis",
          "value": "data-analysis"
        },
        {
          "name": "Data Interpretation",
          "value": "data-interpretation"
        },
        {
          "name": "Data Visualization",
          "value": "data-visualization"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "jsonDataAnalysis",
      "options": [
        {
          "name": "JSON Data Analysis",
          "value": "jsonDataAnalysis",
          "action": "Analyze JSON data",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/platform_api/PythonDataAnalysis",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "data-analysis"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "interpretJsonData",
      "options": [
        {
          "name": "Interpret JSON Data",
          "value": "interpretJsonData",
          "action": "Interpret JSON data",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/platform_api/DataInterpretation",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "data-interpretation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "visualizeJsonData",
      "options": [
        {
          "name": "Visualize JSON Data",
          "value": "visualizeJsonData",
          "action": "Visualize JSON data",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/platform_api/EchartsVisualization",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "data-visualization"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "JSON Data Analysis",
      "value": "jsonDataAnalysis",
      "action": "Analyze JSON data",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/platform_api/PythonDataAnalysis",
          "method": "POST"
        }
      }
    },
    {
      "name": "Interpret JSON Data",
      "value": "interpretJsonData",
      "action": "Interpret JSON data",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/platform_api/DataInterpretation",
          "method": "POST"
        }
      }
    },
    {
      "name": "Visualize JSON Data",
      "value": "visualizeJsonData",
      "action": "Visualize JSON data",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/platform_api/EchartsVisualization",
          "method": "POST"
        }
      }
    }
  ]

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

  # n8n-nodes-ada

  This repo contains AdaApi's community node for n8n.

  ## Installation

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

  ## Credentials

  ### Apply for an API Key
  You can easily create and manage your API Key in the [ADA official website](https://ada.im/home?ada_data_=&utm_source=n8n&utm_medium=landingpage&utm_infeluncer=landingpage&utm_campain=landingpage&utm_content=landingpage) - API. To begin with, You need to register for an ADA account.

  Once on the homepage, click the bottom left corner to access the API management dashboard.

  ![apply_apikey_1.png](https://d1551jsgrpwivo.cloudfront.net/apply_apikey_1.png)

  Here, you can create new APIs and set the credit consumption limit for each API. A single account can create up to 10 APIs.

  ![apply_apikey_2.png](https://d1551jsgrpwivo.cloudfront.net/apply_apikey_2.png)

  After successful creation, you can copy the API Key to set credentials. You can also view the credit consumption of each API and manage your APIs.

  ![apply_apikey_3.png](https://d1551jsgrpwivo.cloudfront.net/apply_apikey_3.png)

  #### **Credit Rules:**

  - Calling a single tool consumes 20 credits.
  - You will get 500 free credits per month for ADA Free account,  with each batch of credits valid for three months.
  - When credits run out, you can purchase more or upgrade your account on the ADA Billing page. Each batch of purchased credits is valid for three months. Expiration dates and billing details are available on the [ADA website-Billing](https://ada.im/udsl/#/system/billing).
  ![apply_apikey_4.png](https://d1551jsgrpwivo.cloudfront.net/apply_apikey_4.png)

  ## Usage

  Add Ada to a workflow.


  ![Add Ada to Workflow](https://d1551jsgrpwivo.cloudfront.net/ada-workflow1.png)

  Configure a basic query and hit "Execute step" to try a search.

  ![Add AdaApi](https://d1551jsgrpwivo.cloudfront.net/ada-workflow2.png)

  ![Test  AdaApi](https://d1551jsgrpwivo.cloudfront.net/ada-workflow2.png)


  ## License

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

ai_documentation_summary:
  {"purpose":"This n8n community node allows users to interact with the Ada API for data analysis and AI-driven tasks within n8n workflows.","capabilities":["Execute queries via the Ada API","Perform data analysis tasks","Manage API credentials and credit limits","Support for batch credit consumption"],"authentication":"API Key required","commonUseCases":["Automated data analysis workflows","Integrating AI-driven insights into n8n processes","Credit-based API usage management"],"limitations":["Free accounts receive only 500 credits per month","Each API call consumes 20 credits","Credits expire after three months","Maximum of 10 APIs per account"],"relatedNodes":["n8n-nodes-http.request","n8n-nodes-ada.ada"]}


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

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

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

npm_readme:
  # @jetbrains/n8n-nodes-youtrack

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

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

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

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

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

  ## Installation

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

  ## Operations

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

  ### YouTrack Node

  The YouTrack node supports the following resources and operations:

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

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

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

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

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

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

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

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

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

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

  ### YouTrack Trigger Node

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

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

  ## Credentials

  This node uses permanent token authentication to connect to YouTrack.

  ### Prerequisites

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

  ### Authentication Setup

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

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

  ## Compatibility

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

  ## Usage

  ### Command Execute

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

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

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

  ### Custom Fields

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

  ### Issue Queries

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

  ### Webhooks

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

  ## Resources

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

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

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation with JetBrains YouTrack by providing API operations for issues, projects, users, and webhooks.","capabilities":["Execute YouTrack commands on issues (bulk operations supported)","Manage issues (create, delete, get, list, update)","Manage issue drafts (create, delete, get, list, update)","Manage projects (get, list, get fields schema, get issues)","Manage saved queries (create, list)","Manage tags (add, remove, list, get issue tags)","Manage users (get, list, get profiles, get notifications, get saved queries, get tags, get time tracking)","Manage user groups (get, list members, list)","Manage work items (add, update, delete)","Add comments to issues (add, list)"],"authentication":"Permanent token authentication","commonUseCases":["Automating issue creation and updates based on external triggers","Bulk updating issue properties via natural language commands","Integrating YouTrack events into n8n workflows via webhooks","Automating time tracking and work item logging","Managing project and user data programmatically"],"limitations":["The `vote+1` command cannot be used on your own issues","Usernames in commands must be valid YouTrack logins","Requires YouTrack REST API access (cloud or self-hosted)","Requires n8n version that supports community nodes with API version 1"],"relatedNodes":["Webhook Trigger","HTTP Request","Code"]}


node_type: n8n-nodes-openmrs.openMrs
package_name: n8n-nodes-openmrs
display_name: OpenMRS
description: Interact with OpenMRS FHIR R4 API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: monfortbrian
author_github_url: https://github.com/monfortbrian/
npm_package_name: n8n-nodes-openmrs
npm_version: 1.2.1
community_fetched_at: 2026-03-25T21:19:40.653Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "patient",
      "options": [
        {
          "name": "Condition",
          "value": "condition"
        },
        {
          "name": "Custom API Call",
          "value": "customApiCall"
        },
        {
          "name": "Diagnostic Report",
          "value": "diagnosticReport"
        },
        {
          "name": "Encounter",
          "value": "encounter"
        },
        {
          "name": "Medication Statement",
          "value": "medicationStatement"
        },
        {
          "name": "Observation",
          "value": "observation"
        },
        {
          "name": "Patient",
          "value": "patient"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "searchByIdentifier",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a patient",
          "description": "Get a patient by UUID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many patients",
          "description": "Get many patients"
        },
        {
          "name": "Search by Identifier",
          "value": "searchByIdentifier",
          "action": "Search patient by identifier",
          "description": "Search patient by OpenMRS ID or National ID"
        },
        {
          "name": "Search by Name",
          "value": "searchByName",
          "action": "Search patient by name",
          "description": "Search patient by name (partial match supported)"
        },
        {
          "name": "Search by Phone",
          "value": "searchByPhone",
          "action": "Search patient by phone",
          "description": "Search patient by phone number"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "patient"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a resource",
          "description": "Get a resource by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many resources",
          "description": "Get many resources"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "encounter",
            "observation",
            "diagnosticReport",
            "condition",
            "medicationStatement"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "customApiCall",
      "options": [
        {
          "name": "Custom API Call",
          "value": "customApiCall",
          "action": "Make custom API call",
          "description": "Make a custom API call to OpenMRS"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "customApiCall"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get a patient",
      "description": "Get a patient by UUID"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many patients",
      "description": "Get many patients"
    },
    {
      "name": "Search by Identifier",
      "value": "searchByIdentifier",
      "action": "Search patient by identifier",
      "description": "Search patient by OpenMRS ID or National ID"
    },
    {
      "name": "Search by Name",
      "value": "searchByName",
      "action": "Search patient by name",
      "description": "Search patient by name (partial match supported)"
    },
    {
      "name": "Search by Phone",
      "value": "searchByPhone",
      "action": "Search patient by phone",
      "description": "Search patient by phone number"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a resource",
      "description": "Get a resource by ID"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many resources",
      "description": "Get many resources"
    },
    {
      "name": "Custom API Call",
      "value": "customApiCall",
      "action": "Make custom API call",
      "description": "Make a custom API call to OpenMRS"
    }
  ]

npm_readme:
  # n8n-nodes-openmrs

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

  Community node for [n8n](https://n8n.io/) providing OpenMRS FHIR R4 integration with intelligent patient search, clinical data access, and healthcare workflow automation.

  ---

  ## What's New in v1.2.0

  **Smart Patient Search** - No more memorizing UUIDs!
  - Search by OpenMRS ID: `131280865`
  - Search by Name: `Patricia Lewis` (partial matching)
  - Search by Phone: `+254712345678`

  ---

  ## Features

  ### Intelligent Patient Lookup

  Real-world clinics don't use UUIDs. Search patients the way healthcare workers actually do:

  - **By Identifier** - OpenMRS ID, National ID, Facility Number
  - **By Name** - First name, last name, or partial matches
  - **By Phone** - Mobile number in any format
  - **By UUID** - For system integrations

  ### Complete FHIR R4 Coverage

  Access all essential clinical resources:

  | Resource | What You Get | Common Use Cases |
  |----------|-------------|------------------|
  | **Patient** | Demographics, identifiers, contacts | Registration, identity verification |
  | **Encounter** | Visits, admissions, consultations | Attendance tracking, visit history |
  | **Observation** | Labs, vitals, diagnostic results | Trend analysis, clinical alerts |
  | **Diagnostic Report** | Imaging, pathology reports | Disease progression tracking |
  | **Condition** | Diagnoses, active problems | Differential diagnosis, comorbidities |
  | **Medication Statement** | Current & past medications | Treatment history, drug interactions |

  ### Developer-Friendly

  - **Simple Auth** - HTTP Basic Authentication
  - **Pagination** - Handle large datasets efficiently
  - **Error Handling** - Clear error messages and continue-on-fail support
  - **Custom API Calls** - Direct access to any OpenMRS FHIR endpoint

  ### Built for Global Health

  - Optimized for low-bandwidth environments
  - Works with OpenMRS 2.x and 3.x
  - Compatible with DHIS2 workflows
  - Supports both cloud and on-premise deployments

  ---

  ## Installation

  ### Via n8n Community Nodes (Recommended)

  1. Open n8n
  2. Go to **Settings** → **Community Nodes**
  3. Click **Install a community node**
  4. Enter: `n8n-nodes-openmrs`
  5. Click **Install**

  ### Via npm
  ```bash
  npm install n8n-nodes-openmrs
  ```

  ### From Source
  ```bash
  git clone https://github.com/monfortbrian/n8n-nodes-openmrs.git
  cd n8n-nodes-openmrs
  npm install
  npm run build
  npm link
  ```

  ---

  ## Quick Start

  ### 1. Configure Credentials

  1. In n8n, go to **Credentials** → **New**
  2. Search for **OpenMRS API**
  3. Configure:
     - **Base URL**: `https://demo.openmrs.org/openmrs` (include `/openmrs`)
     - **Username**: `admin`
     - **Password**: `Admin123`
  4. Test & Save

  ### 2. Search Patient by OpenMRS ID
  ```
  Add Node → OpenMRS
  ├─ Resource: Patient
  ├─ Operation: Search by Identifier
  └─ Identifier: 131280865
  ```

  **Result:** Complete patient record instantly

  ### 3. Find Patient by Name
  ```
  Add Node → OpenMRS
  ├─ Resource: Patient
  ├─ Operation: Search by Name
  └─ Name: Patricia
  ```

  **Result:** All patients with "Patricia" in their name

  ---

  ## Examples

  ### Example 1: Patient Search by ID (Real-World)

  **Instead of this (nobody remembers):**
  ```
  UUID: 7826f08a-0258-4fb1-ba69-2af192f392db
  ```

  **Do this:**
  ```
  OpenMRS ID: 131280865
  ```

  **n8n Workflow:**
  1. Add OpenMRS node
  2. Resource: **Patient**
  3. Operation: **Search by Identifier**
  4. Identifier: `131280865`
  5. Execute

  **Output:** Full patient FHIR record

  ---

  ### Example 2: Get Patient Lab Results
  ```
  1. Add OpenMRS node
  2. Resource: Observation
  3. Operation: Get Many
  4. Patient UUID: 7826f08a-0258-4fb1-ba69-2af192f392db
  5. Limit: 50
  6. Execute
  ```

  **Output:** Up to 50 most recent lab results with values, units, reference ranges

  ---

  ### Example 3: Track Patient Visit History
  ```
  1. Add OpenMRS node
  2. Resource: Encounter
  3. Operation: Get Many
  4. Patient UUID: 7826f08a-0258-4fb1-ba69-2af192f392db
  5. Return All: true
  6. Execute
  ```

  **Output:** Complete visit timeline from first to last encounter

  ---

  ### Example 4: Custom FHIR Query

  Use the **Custom API Call** resource for advanced queries:
  ```
  1. Add OpenMRS node
  2. Resource: Custom API Call
  3. HTTP Method: GET
  4. Endpoint: /ws/fhir2/R4/Patient
  5. Query Parameters:
     - name: birthdate
     - value: gt1990-01-01
  6. Execute
  ```

  **Output:** All patients born after January 1, 1990

  ---

  ## Real-World Use Cases

  ### Clinical Workflows

  **Patient Admission Dashboard**
  ```
  Webhook Trigger
  → OpenMRS: Search by OpenMRS ID
  → OpenMRS: Get Encounters (last 6 months)
  → OpenMRS: Get Observations (recent labs)
  → Code: Calculate risk scores
  → Display: Admission summary
  ```

  **Lost-to-Follow-Up Recovery**
  ```
  Schedule (weekly)
  → OpenMRS: Get All Patients on ART
  → Code: Filter last visit > 28 days
  → OpenMRS: Search by Phone
  → SMS: "Medication ready for pickup"
  → DHIS2: Update tracker
  ```

  ### Data Analytics

  **Disease Surveillance**
  ```
  Schedule (every 6 hours)
  → OpenMRS: Get Conditions (last 6h)
  → Code: Filter cholera, measles, meningitis
  → Code: Check outbreak threshold
  → DHIS2: Post to IDSR module
  → SMS: Alert district officer
  ```

  **Lab Turnaround Time Monitoring**
  ```
  OpenMRS: Observation created
  → Calculate: Order time - Result time
  → IF > 48 hours
    → Alert lab manager
    → DHIS2: Post performance indicator
  ```

  ### Global Health

  - HIV/TB treatment adherence tracking
  - Maternal health visit reminders
  - Vaccine defaulter identification
  - Stockout prevention for ARVs

  ---

  ## API Reference

  ### Supported Resources

  - `Patient` - Demographics, identifiers
  - `Encounter` - Visits, admissions
  - `Observation` - Labs, vitals, diagnostics
  - `Diagnostic Report` - Imaging, pathology
  - `Condition` - Diagnoses, problems
  - `Medication Statement` - Prescriptions, dispensing
  - `Custom API Call` - Any FHIR endpoint

  ### Patient Operations

  - **Search by Identifier** - OpenMRS ID, National ID
  - **Search by Name** - Partial name matching
  - **Search by Phone** - Phone number search
  - **Get** - Retrieve by UUID
  - **Get Many** - Retrieve all (paginated)

  ### Other Resource Operations

  - **Get** - Retrieve single resource by UUID
  - **Get Many** - Retrieve all for patient (paginated)

  ### Pagination

  All `Get Many` and search operations support:
  - **Return All**: `true/false`
  - **Limit**: `1-100` (default: 50)

  ---

  ## FHIR Endpoints Used
  ```
  GET /ws/fhir2/R4/Patient?identifier={id}
  GET /ws/fhir2/R4/Patient?name={name}
  GET /ws/fhir2/R4/Patient?telecom={phone}
  GET /ws/fhir2/R4/Patient/{uuid}
  GET /ws/fhir2/R4/Encounter?patient={uuid}&_count=50
  GET /ws/fhir2/R4/Observation?patient={uuid}&_count=50
  GET /ws/fhir2/R4/DiagnosticReport?patient={uuid}&_count=50
  GET /ws/fhir2/R4/Condition?patient={uuid}&_count=50
  GET /ws/fhir2/R4/MedicationStatement?patient={uuid}&_count=50
  ```

  ---

  ## Compatibility

  - **n8n**: 0.187.0 or higher
  - **OpenMRS**: 2.3+ with FHIR2 module
  - **Node.js**: 18.0.0 or higher

  ---

  ## Troubleshooting

  ### Node doesn't appear
  ```bash
  # Check installation
  npm list -g n8n-nodes-openmrs

  # Clear cache
  rm -rf ~/.n8n/cache

  # Restart n8n
  n8n start
  ```

  ### Authentication fails

  - Include `/openmrs` in Base URL
  - Verify credentials in OpenMRS
  - Check FHIR2 module is enabled

  ### Empty search results

  - Patient may not exist with that identifier
  - Try different search criteria
  - Verify FHIR2 module configuration

  ### Build errors (for developers)
  ```bash
  # Clean rebuild
  rm -rf node_modules dist
  npm install
  npm run build
  ```

  ---

  ## Development

  ### Building
  ```bash
  npm run build      # Compile TypeScript
  npm run dev        # Watch mode
  npm run lint       # Check code quality
  npm run lintfix    # Auto-fix issues
  ```

  ### Testing Locally
  ```bash
  # Build and link
  npm run build
  npm link

  # Start n8n
  n8n start

  # Test in n8n UI
  # Your node appears as "OpenMRS"
  ```

  ### Publishing
  ```bash
  # Bump version
  npm version minor  # 1.1.0 → 1.2.0

  # Publish
  npm publish

  # Push to GitHub
  git push origin main --tags
  ```

  ---

  ## Contributing

  Contributions welcome! Please:

  1. Fork the repository
  2. Create feature branch: `git checkout -b feature/amazing-feature`
  3. Commit changes: `git commit -m 'Add amazing feature'`
  4. Push: `git push origin feature/amazing-feature`
  5. Open Pull Request

  ---

  ## Changelog

  ### [1.2.0] - 2026-03-05

  **Added**
  - Patient search by OpenMRS ID/identifier
  - Patient search by name (partial matching)
  - Patient search by phone number
  - Custom API Call resource for advanced queries

  **Changed**
  - Improved error messages
  - Better TypeScript types
  - Updated documentation

  ### [1.1.0] - 2026-03-03

  **Added**
  - 6 FHIR resources (Patient, Encounter, Observation, etc.)
  - Get and Get Many operations
  - Pagination support

  ### [1.0.0] - 2026-03-01

  **Added**
  - Initial release
  - Basic FHIR R4 support

  ---

  ## License

  [MIT License](LICENSE)

  Copyright © 2026 Monfort Brian N.

  ---

  ## Support

  - **Issues**: [GitHub Issues](https://github.com/monfortbrian/n8n-nodes-openmrs/issues)
  - **Discussions**: [GitHub Discussions](https://github.com/monfortbrian/n8n-nodes-openmrs/discussions)
  - **n8n Community**: [n8n Forum](https://community.n8n.io/)

  ---

  ## Acknowledgments

  Built for healthcare workers in low-resource settings. Enabling better patient outcomes through data interoperability and workflow automation.

  **Made with ❤️ for global health**

ai_documentation_summary:
  {"purpose":"This n8n node enables interaction with the OpenMRS FHIR R4 API, facilitating healthcare workflow automation, patient data access, and clinical information retrieval.","capabilities":["Search patients by OpenMRS ID, National ID, Facility Number, Name, or Phone","Retrieve Patient demographics and identifiers","Access Encounter data for visit history tracking","Fetch Observation data for labs and vitals","Retrieve Diagnostic Reports for imaging and pathology","Access Condition data for diagnoses and comorbidities","Retrieve Medication Statements for treatment history","Execute custom FHIR API queries via HTTP methods","Support pagination for large datasets","Handle both OpenMRS 2.x and 3.x versions"],"authentication":"HTTP Basic Authentication (Username and Password)","commonUseCases":["Patient admission dashboard creation","Lost-to-follow-up recovery workflows","Disease surveillance and outbreak tracking","Lab turnaround time monitoring","HIV/TB treatment adherence tracking"],"limitations":["Requires valid OpenMRS FHIR R4 API credentials","Base URL must include '/openmrs' path segment","Some advanced FHIR features may require custom API calls"],"relatedNodes":["n8n-nodes-code.code","n8n-nodes-http.request","n8n-nodes-sms.messenger","n8n-nodes-dhis2.dhis2"]}


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

updated_at: 2026-03-25 21:19:40
author_name: hagairaja-mrscraper
author_github_url: https://github.com/mrscraper-com/
npm_package_name: n8n-nodes-mrscraper
npm_version: 1.2.0
community_fetched_at: 2026-03-25T21:19:40.654Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "rerun",
      "options": [
        {
          "name": "Rerun",
          "value": "rerun"
        },
        {
          "name": "Result",
          "value": "result"
        },
        {
          "name": "Create Scraper",
          "value": "createScraper"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "manual",
      "options": [
        {
          "name": "Run Manual Scraper",
          "value": "manual",
          "action": "Run manual scraper",
          "routing": {
            "request": {
              "url": "/api/v1/scrapers-manual-rerun",
              "method": "POST"
            }
          },
          "description": "Run manual scraper given a Scraper ID and get the result"
        },
        {
          "name": "Run General Agent Scraper",
          "value": "generalAgent",
          "action": "Run general agent scraper",
          "routing": {
            "request": {
              "url": "/api/v1/scrapers-ai-rerun",
              "method": "POST"
            }
          },
          "description": "Run general agent scraper given a Scraper ID and get the result"
        },
        {
          "name": "Run Listing Agent Scraper",
          "value": "listingAgent",
          "action": "Run listing agent scraper",
          "routing": {
            "request": {
              "url": "/api/v1/scrapers-ai-rerun",
              "method": "POST"
            }
          },
          "description": "Run listing agent scraper given a Scraper ID and get the result"
        },
        {
          "name": "Run Map Agent Scraper",
          "value": "mapAgent",
          "action": "Run map agent scraper",
          "routing": {
            "request": {
              "url": "/api/v1/scrapers-ai-rerun",
              "method": "POST"
            }
          },
          "description": "Run map agent scraper given a Scraper ID and get the result"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "rerun"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get results",
          "routing": {
            "request": {
              "url": "=/api/v1/results?filters[scraperId]={{$parameter.scraperId}}&page={{$parameter.page}}&pageSize={{$parameter.pageSize}}&sort={{$parameter.sort}}&sortOrder={{$parameter.sortOrder}}",
              "method": "GET"
            }
          },
          "description": "Get results based on given page number, page size, filters, and sorting"
        },
        {
          "name": "Get Latest",
          "value": "getLatest",
          "action": "Get latest results",
          "routing": {
            "request": {
              "url": "=/api/v1/results?filters[scraperId]={{$parameter.scraperId}}&page=1&pageSize={{$parameter.pageSize}}&sort=createdAt&sortOrder=DESC",
              "method": "GET"
            }
          },
          "description": "Get N latest results"
        },
        {
          "name": "Get Detail",
          "value": "get",
          "action": "Get result detail",
          "routing": {
            "request": {
              "url": "=/api/v1/results/{{$parameter.resultId}}",
              "method": "GET"
            }
          },
          "description": "Get a result detail by its ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "result"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generalAgent",
      "options": [
        {
          "name": "Create General Agent Scraper",
          "value": "generalAgent",
          "action": "Create general agent",
          "routing": {
            "send": {
              "type": "body",
              "value": "general",
              "property": "graph"
            },
            "request": {
              "url": "/api/v1/scrapers-ai",
              "method": "POST"
            }
          },
          "description": "Create a general agent scraper using input link and message"
        },
        {
          "name": "Create Listing Agent Scraper",
          "value": "listingAgent",
          "action": "Create listing agent",
          "routing": {
            "send": {
              "type": "body",
              "value": "listing",
              "property": "graph"
            },
            "request": {
              "url": "/api/v1/scrapers-ai",
              "method": "POST"
            }
          },
          "description": "Create a listing agent scraper using input link and message"
        },
        {
          "name": "Create Map Agent Scraper",
          "value": "mapAgent",
          "action": "Create map agent",
          "routing": {
            "send": {
              "type": "body",
              "value": "map",
              "property": "graph"
            },
            "request": {
              "url": "/api/v1/scrapers-ai",
              "method": "POST"
            }
          },
          "description": "Create a map agent scraper using input link and message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "createScraper"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Run Manual Scraper",
      "value": "manual",
      "action": "Run manual scraper",
      "routing": {
        "request": {
          "url": "/api/v1/scrapers-manual-rerun",
          "method": "POST"
        }
      },
      "description": "Run manual scraper given a Scraper ID and get the result"
    },
    {
      "name": "Run General Agent Scraper",
      "value": "generalAgent",
      "action": "Run general agent scraper",
      "routing": {
        "request": {
          "url": "/api/v1/scrapers-ai-rerun",
          "method": "POST"
        }
      },
      "description": "Run general agent scraper given a Scraper ID and get the result"
    },
    {
      "name": "Run Listing Agent Scraper",
      "value": "listingAgent",
      "action": "Run listing agent scraper",
      "routing": {
        "request": {
          "url": "/api/v1/scrapers-ai-rerun",
          "method": "POST"
        }
      },
      "description": "Run listing agent scraper given a Scraper ID and get the result"
    },
    {
      "name": "Run Map Agent Scraper",
      "value": "mapAgent",
      "action": "Run map agent scraper",
      "routing": {
        "request": {
          "url": "/api/v1/scrapers-ai-rerun",
          "method": "POST"
        }
      },
      "description": "Run map agent scraper given a Scraper ID and get the result"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get results",
      "routing": {
        "request": {
          "url": "=/api/v1/results?filters[scraperId]={{$parameter.scraperId}}&page={{$parameter.page}}&pageSize={{$parameter.pageSize}}&sort={{$parameter.sort}}&sortOrder={{$parameter.sortOrder}}",
          "method": "GET"
        }
      },
      "description": "Get results based on given page number, page size, filters, and sorting"
    },
    {
      "name": "Get Latest",
      "value": "getLatest",
      "action": "Get latest results",
      "routing": {
        "request": {
          "url": "=/api/v1/results?filters[scraperId]={{$parameter.scraperId}}&page=1&pageSize={{$parameter.pageSize}}&sort=createdAt&sortOrder=DESC",
          "method": "GET"
        }
      },
      "description": "Get N latest results"
    },
    {
      "name": "Get Detail",
      "value": "get",
      "action": "Get result detail",
      "routing": {
        "request": {
          "url": "=/api/v1/results/{{$parameter.resultId}}",
          "method": "GET"
        }
      },
      "description": "Get a result detail by its ID"
    },
    {
      "name": "Create General Agent Scraper",
      "value": "generalAgent",
      "action": "Create general agent",
      "routing": {
        "send": {
          "type": "body",
          "value": "general",
          "property": "graph"
        },
        "request": {
          "url": "/api/v1/scrapers-ai",
          "method": "POST"
        }
      },
      "description": "Create a general agent scraper using input link and message"
    },
    {
      "name": "Create Listing Agent Scraper",
      "value": "listingAgent",
      "action": "Create listing agent",
      "routing": {
        "send": {
          "type": "body",
          "value": "listing",
          "property": "graph"
        },
        "request": {
          "url": "/api/v1/scrapers-ai",
          "method": "POST"
        }
      },
      "description": "Create a listing agent scraper using input link and message"
    },
    {
      "name": "Create Map Agent Scraper",
      "value": "mapAgent",
      "action": "Create map agent",
      "routing": {
        "send": {
          "type": "body",
          "value": "map",
          "property": "graph"
        },
        "request": {
          "url": "/api/v1/scrapers-ai",
          "method": "POST"
        }
      },
      "description": "Create a map agent scraper using input link and message"
    }
  ]

npm_readme:
  # n8n-nodes-mrscraper
  ![](./mrscraper.jpeg)

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

  **MrScraper** is an AI-powered web scraping tool that allows users to extract structured data from websites without needing extensive coding skills. User can create scraper once via chatting with our agent and use the same logic on other URLs.

  Main page: https://mrscraper.com

  [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

  _List of operations supported:_

  ### Create AI Scraper
  Create AI scraper programmatically. The nodes behave just like the code explained in this [docs](https://docs.mrscraper.com/docs/guides/programmatically#step-4-create-detail-scraper). There are 3 supported AI scrapers:
  1. General Agent Scraper: Retrieves URL HTML and converts it to a targeted JSON structure based on your prompt. Ideal for detail pages
  2. Listing Agent Scraper: Scrapes data from search results or listing pages with pagination, infinite scroll, or load more buttons
  3. Map Agent Scraper: Scrapes URLs from a starting URL until the specified number of unique URLs has been collected. Ideal for URL scraping on complex landing page.

  ### Rerun
  Re-execute your MrScraper scraping agent that you've developed on our platform or from the create AI Scraper. We provide 4 different operations corresponding to the 4 agent types available (manual only available from platform):
  1. Manual Scraper: Step-by-step scraping agent
  2. General Agent Scraper: Given a new URL, the agent retrieves its HTML and converts it to the same targeted JSON structure based on your previous prompt.
  3. Listing Agent Scraper: Given a new URL, the agent perform pagination clicking, infinite scroll, or load more buttons and scrape the data following the previous run when creating the scraper.
  4. Map Agent Scraper: Re-execute the map agent scraper.

  This operation provides parameters that match those in the MrScraper platform.

  ### Result
  Retrieve scraping results from MrScraper database:
  1. Get Many: Returns results in table format with pagination (page number, page size), filters, and sorting options
  2. Get Latest: Returns N most recent scraping results based on scraper ID
  3. Get Detail: Returns detailed scraping results including data, screenshots, and HTML

  ## Credentials

  **MrScraper API Token**

  MrScraper API token is the only authentication method available for this node. You can find your API key in the MrScraper API Tokens page.

  ## Compatibility

  This node has been tested with the following versions of N8N:
  - N8N 2.0.3

  ## Usage

  1. Develop your scraping agent (manual/general/listing/map) through our [platform](https://mrscraper.com)
  2. Activate scraper API access
  3. Integrate the param into n8n rerun operation
  4. Retrieve scraping result with n8n result operation


  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [MrScraper API documentation](https://docs.mrscraper.com/docs/getting-started/overview)

ai_documentation_summary:
  {"purpose":"This n8n community node enables workflow automation by interacting with the MrScraper API to extract structured data from websites using AI-powered scraping agents.","capabilities":["Create AI scrapers programmatically (General, Listing, Map agents)","Rerun existing scrapers with parameters matching the MrScraper platform","Retrieve scraping results (Get Many, Get Latest, Get Detail)","Handle pagination, infinite scroll, and load more buttons","Convert URL HTML to targeted JSON structures based on prompts"],"authentication":"API Token (MrScraper API Token required)","commonUseCases":["Extracting structured data from detail pages","Scraping search results or listing pages with pagination","Collecting URLs from complex landing pages","Automating data extraction workflows without coding"],"limitations":["Requires prior setup of scraping agents on the MrScraper platform","Limited to n8n version 2.0.3 (as per tested compatibility)","Manual scraping operations must be configured via the platform first"],"relatedNodes":["n8n-nodes-webhook","n8n-nodes-http-request","n8n-nodes-code"]}


node_type: n8n-nodes-webmetic.webmetic
package_name: n8n-nodes-webmetic
display_name: Webmetic
description: Get company visits data from Webmetic with date range filtering
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: webmetic
author_github_url: https://github.com/webmetic-gmbh/
npm_package_name: n8n-nodes-webmetic
npm_version: 0.4.1
community_fetched_at: 2026-03-25T21:19:40.655Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "newVisits",
      "options": [
        {
          "name": "New Visits",
          "value": "newVisits",
          "description": "Get companies that have visited a domain for the first time"
        },
        {
          "name": "Intensive Visits",
          "value": "intensiveVisits",
          "description": "Get companies that have had intensive visits to a domain"
        },
        {
          "name": "Returning Visits",
          "value": "returningVisits",
          "description": "Get companies that have visited a domain multiple times"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get new visits",
          "routing": {
            "request": {
              "url": "/new-visits",
              "method": "GET"
            }
          },
          "description": "Get a list of companies that have visited the specified domain for the first time"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "newVisits"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get intensive visits",
          "routing": {
            "request": {
              "url": "/intensive-visits",
              "method": "GET"
            }
          },
          "description": "Get a list of companies that have had intensive visits to the specified domain"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "intensiveVisits"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get returning visits",
          "routing": {
            "request": {
              "url": "/returning-visits",
              "method": "GET"
            }
          },
          "description": "Get a list of companies that have visited the specified domain multiple times"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "returningVisits"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get new visits",
      "routing": {
        "request": {
          "url": "/new-visits",
          "method": "GET"
        }
      },
      "description": "Get a list of companies that have visited the specified domain for the first time"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get intensive visits",
      "routing": {
        "request": {
          "url": "/intensive-visits",
          "method": "GET"
        }
      },
      "description": "Get a list of companies that have had intensive visits to the specified domain"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get returning visits",
      "routing": {
        "request": {
          "url": "/returning-visits",
          "method": "GET"
        }
      },
      "description": "Get a list of companies that have visited the specified domain multiple times"
    }
  ]

npm_readme:
  # n8n-nodes-webmetic

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

  [Webmetic](https://webmetic.de) provides company visitor tracking data for sales and marketing teams.

  [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

  * **New Visits**
    * Get: Retrieve a list of companies that have visited a specified domain for the first time
  * **Intensive Visits**
    * Get: Retrieve a list of companies that have had intensive visits to a specified domain
  * **Returning Visits**
    * Get: Retrieve a list of companies that have visited a specified domain multiple times

  ## Credentials

  To use this node, you need:

  1. A Webmetic API key - Get yours from [Webmetic](https://webmetic.de)
  2. Configure the API key in n8n's credentials

  ## Compatibility

  * Requires n8n version 0.172.0 or later
  * Tested with n8n version 1.0.0+

  ## Usage

  1. Add the Webmetic node to your workflow
  2. Create new Webmetic API credentials:
     - Enter your API key (starts with `wmtc_`)
  3. Configure the node:
     - Select "New Visits", "Intensive Visits", or "Returning Visits" as the resource
     - Select "Get" as the operation
     - Enter the domain you want to track (e.g., `example.com`)
     - Optional: Configure additional fields for date filtering:
       - **From Date**: Start date or relative time period (default: "-30 days")
       - **To Date**: End date or "now" for current date (default: "now")
  4. Execute the node to retrieve company visitor data

  The node returns valuable sales intelligence about companies and their visiting behavior on your domain.

  ### Date Format Examples:
  - **Relative times**: `-30 days`, `-12 hours`, `-45 minutes`, `-7 days`
  - **Absolute dates**: `2023-01-01`, `2023-12-31`  
  - **Current**: `now`
  - **Minutes**: `-15 minutes`, `-30 minutes`, `-90 minutes`

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Webmetic API documentation](https://hub.webmetic.de/docs)

ai_documentation_summary:
  {"purpose":"Retrieves company visitor tracking data from Webmetic for sales and marketing teams, including new, intensive, and returning visits to specified domains.","capabilities":["Retrieve new company visits to a domain","Retrieve companies with intensive visits to a domain","Retrieve companies with multiple returning visits to a domain","Filter results by date range using relative times or absolute dates","Return company visitor data as JSON"],"authentication":"API key required","commonUseCases":["Sales intelligence gathering","Marketing campaign tracking","Lead generation from domain visits","Competitor analysis via visitor data"],"limitations":["Requires valid Webmetic API key","Requires n8n version 0.172.0 or later","Data access depends on Webmetic API availability and permissions"],"relatedNodes":["n8n-nodes-webmetic.webmetic","n8n-nodes-http.request","n8n-nodes-webhook"]}


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

credentials_required: []
outputs:
  [
  "main"
  ]

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

npm_readme:
  # n8n-nodes-tazzoai

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

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

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

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

  ## Installation

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

  Or install directly via npm:

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

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

  ## Operations

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

  ## Credentials

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

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


  ## Usage

  ### Using the Node in a Workflow

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

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

  ### Sample Output

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

  ## Resources

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

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

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


node_type: n8n-nodes-cloudinary.cloudinary
package_name: n8n-nodes-cloudinary
display_name: Cloudinary
description: Upload to Cloudinary
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: cloudinary
author_github_url: https://github.com/cloudinary/
npm_package_name: n8n-nodes-cloudinary
npm_version: 0.0.9
community_fetched_at: 2026-03-25T21:19:40.656Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload"
        },
        {
          "name": "Update Asset",
          "value": "updateAsset"
        },
        {
          "name": "Admin",
          "value": "admin"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "uploadUrl",
      "options": [
        {
          "name": "Upload From URL",
          "value": "uploadUrl",
          "action": "Upload an asset from URL",
          "description": "Upload an asset from URL"
        },
        {
          "name": "Upload File",
          "value": "uploadFile",
          "action": "Upload an asset from file data",
          "description": "Upload an asset from file data"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "upload"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "updateTags",
      "options": [
        {
          "name": "Update Asset Tags",
          "value": "updateTags",
          "action": "Update asset tags",
          "description": "Update tags for an existing asset"
        },
        {
          "name": "Update Asset Structured Metadata",
          "value": "updateMetadata",
          "action": "Update asset structured metadata",
          "description": "Update structured metadata for an existing asset"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "updateAsset"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getTags",
      "options": [
        {
          "name": "Get Tags",
          "value": "getTags",
          "action": "Get tags for a resource type",
          "description": "Get all tags for a specific resource type"
        },
        {
          "name": "Get Metadata Fields",
          "value": "getMetadataFields",
          "action": "Get metadata fields definitions",
          "description": "Get all metadata fields definitions"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "admin"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Upload From URL",
      "value": "uploadUrl",
      "action": "Upload an asset from URL",
      "description": "Upload an asset from URL"
    },
    {
      "name": "Upload File",
      "value": "uploadFile",
      "action": "Upload an asset from file data",
      "description": "Upload an asset from file data"
    },
    {
      "name": "Update Asset Tags",
      "value": "updateTags",
      "action": "Update asset tags",
      "description": "Update tags for an existing asset"
    },
    {
      "name": "Update Asset Structured Metadata",
      "value": "updateMetadata",
      "action": "Update asset structured metadata",
      "description": "Update structured metadata for an existing asset"
    },
    {
      "name": "Get Tags",
      "value": "getTags",
      "action": "Get tags for a resource type",
      "description": "Get all tags for a specific resource type"
    },
    {
      "name": "Get Metadata Fields",
      "value": "getMetadataFields",
      "action": "Get metadata fields definitions",
      "description": "Get all metadata fields definitions"
    }
  ]

npm_readme:
  # Cloudinary node

  Use the Cloudinary node to automate work in Cloudinary, and integrate Cloudinary with other applications. n8n has built-in support for a wide range of Cloudinary features, including uploading assets, managing tags, and updating metadata.

  On this page, you'll find a list of operations the Cloudinary node supports.

  ## Operations

  * Asset
  	* Upload from URL/file
  	* Update asset tags
  	* Update asset metadata fields
  	* Get tags
  	* Get structured metadata definitions

  ## Supported authentication methods

  - API key & API secret

  ## Authentication 
  ### Using API key

  To configure this credential, you'll need a [Cloudinary Account](https://cloudinary.com/users/register_free) and:

  - A **Cloud name**
  - An **API Key**
  - An **API Secret**

  If you're a user with a Master admin, Admin, or Technical admin role, you can find your API keys and other credentials on the API Keys page of the Cloudinary Console Settings:

  1. Navigate to the API Keys pages in the [settings page](https://console.cloudinary.com/settings/api-keys).
  2. Click on **+ Generate New API Key**.
  3. Copy the API Key and API Secret.
  4. From the top of the page copy the **Cloud name**.
  5. Enter the cloud name, api key and api secret to your n8n credential.


  ## Related resources

  Refer to [Cloudinary's documentation](https://cloudinary.com/documentation/programmable_media_guides) for more information on this service.

ai_documentation_summary:
  {"purpose":"Automates work in Cloudinary by enabling asset uploads, tag management, and metadata updates through n8n workflows.","capabilities":["Upload assets from URL or file","Update asset tags","Update asset metadata fields","Retrieve asset tags","Get structured metadata definitions"],"authentication":"API key & API secret","commonUseCases":["Automating image uploads to Cloudinary","Managing and organizing media assets with tags","Updating metadata for existing assets"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-tmpfiles.tmpfiles
package_name: n8n-nodes-tmpfiles
display_name: Tmpfiles
description: Upload files to Tmpfiles and get a temporary URL
category: Community
development_style: declarative
version: 1
operations:
  [
  {
  "name": "Upload",
  "value": "upload",
  "action": "Upload file to tmpfiles"
  }
  ]

credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: mookielian
author_github_url: https://github.com/MookieLian/
npm_package_name: n8n-nodes-tmpfiles
npm_version: 2.1.0
community_fetched_at: 2026-03-25T21:19:40.657Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "tmpfiles",
      "options": [
        {
          "name": "Tmpfile",
          "value": "tmpfiles"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload file to tmpfiles"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tmpfiles"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

npm_readme:
  # n8n-nodes-tmpfiles

  This is an n8n community node for using the `tmpfiles.org` service in your n8n workflows. It uploads a binary file and returns a temporary download URL.

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

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

  ---

  Profile: https://gravatar.com/mookielian

  ---

  ## Installation

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

  Quick steps:

  1. In n8n UI → Settings → Community Nodes → Install a community node
  2. Package name: `n8n-nodes-tmpfiles`
  3. Click Install and restart n8n if prompted

  For self-hosted CLI:

  ```bash
  npm install n8n-nodes-tmpfiles
  ```

  ## Supported Operations

  - Upload File: Accepts a binary field, uploads it to `tmpfiles.org` API, and returns a temporary URL.

  ## Credentials

  - Not required. `tmpfiles.org` does not require authentication.

  ## Compatibility

  - n8n Nodes API Version: 1
  - Tested with current n8n versions. No known incompatibilities.

  ## Usage

  1. Add the `Tmpfiles` node to your workflow.
  2. Set `Input Data Field Name` to the name of your binary property (e.g., `data`).
  3. Execute the node; the output contains the temporary URL of the uploaded file.

  Tip: Chain this after a node that provides binary data (e.g., HTTP Request / Read Binary File).

  ## Resources

  - [n8n community nodes docs](https://docs.n8n.io/integrations/#community-nodes)
  - `tmpfiles.org` API: `https://tmpfiles.org/api/v1/upload`

  ## Version History

  - 0.1.0: Initial release

ai_documentation_summary:
  {"purpose":"Uploads binary files to the tmpfiles.org service and returns a temporary download URL for sharing or temporary storage.","capabilities":["Upload binary files to tmpfiles.org","Generate temporary download URLs","Accept binary data from input fields","Return temporary URL as output"],"authentication":"None","commonUseCases":["Temporary file sharing","Storing large files temporarily","Workflow intermediate file storage","File distribution without permanent hosting"],"limitations":["URLs are temporary and may expire","File size limits apply to tmpfiles.org service","No authentication or access control","Files are not permanently stored"],"relatedNodes":["HTTP Request","Read Binary File","Binary File","Webhook"]}


node_type: @ionos-cloud/n8n-nodes-ionos-cloud.ionosCloudDns
package_name: @ionos-cloud/n8n-nodes-ionos-cloud
display_name: IONOS Cloud (Cloud DNS)
description: Interact with IONOS Cloud DNS API v1
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: rijeshharidas
author_github_url: https://github.com/ionos-cloud/n8n-nodes-ionos-cloud.git
npm_package_name: @ionos-cloud/n8n-nodes-ionos-cloud
npm_version: 1.0.8
community_fetched_at: 2026-03-25T21:19:40.657Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "zone",
      "options": [
        {
          "name": "DNSSEC",
          "value": "dnssec",
          "description": "Manage DNSSEC keys"
        },
        {
          "name": "Quota",
          "value": "quota",
          "description": "Get quota information"
        },
        {
          "name": "Record",
          "value": "record",
          "description": "Manage DNS records"
        },
        {
          "name": "Reverse Record",
          "value": "reverseRecord",
          "description": "Manage reverse DNS records"
        },
        {
          "name": "Secondary Zone",
          "value": "secondaryZone",
          "description": "Manage secondary DNS zones"
        },
        {
          "name": "Zone",
          "value": "zone",
          "description": "Manage primary DNS zones"
        },
        {
          "name": "Zone File",
          "value": "zoneFile",
          "description": "Import/export zone files in BIND format"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a zone",
          "routing": {
            "request": {
              "url": "",
              "method": "POST"
            }
          },
          "description": "Create a DNS zone"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a zone",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/{{$parameter.zoneId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a DNS zone"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a zone",
          "routing": {
            "request": {
              "url": "=/{{$parameter.zoneId}}",
              "method": "GET"
            }
          },
          "description": "Get a DNS zone"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many zones",
          "routing": {
            "request": {
              "url": "",
              "method": "GET"
            }
          },
          "description": "Get many DNS zones"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a zone",
          "routing": {
            "request": {
              "url": "=/{{$parameter.zoneId}}",
              "method": "PUT"
            }
          },
          "description": "Update a DNS zone"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "zone"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a record",
          "routing": {
            "request": {
              "url": "=/{{$parameter.zoneId}}/records",
              "method": "POST"
            }
          },
          "description": "Create a DNS record"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a record",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/{{$parameter.zoneId}}/records/{{$parameter.recordId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a DNS record"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a record",
          "routing": {
            "request": {
              "url": "=/{{$parameter.zoneId}}/records/{{$parameter.recordId}}",
              "method": "GET"
            }
          },
          "description": "Get a DNS record"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many records",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "={{ $parameter.zoneId ? \"/\" + $parameter.zoneId + \"/records\" : \"/records\" }}",
              "method": "GET"
            }
          },
          "description": "Get many DNS records"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a record",
          "routing": {
            "request": {
              "url": "=/{{$parameter.zoneId}}/records/{{$parameter.recordId}}",
              "method": "PUT"
            }
          },
          "description": "Update a DNS record"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "record"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a secondary zone",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/secondaryzones",
              "method": "POST"
            }
          },
          "description": "Create a secondary zone"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a secondary zone",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a secondary zone"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a secondary zone",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}",
              "method": "GET"
            }
          },
          "description": "Get a secondary zone"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many secondary zones",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/secondaryzones",
              "method": "GET"
            }
          },
          "description": "Get many secondary zones"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a secondary zone",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}",
              "method": "PUT"
            }
          },
          "description": "Update a secondary zone"
        },
        {
          "name": "AXFR Get",
          "value": "axfrGet",
          "action": "Get AXFR status",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}/axfr",
              "method": "GET"
            }
          },
          "description": "Get AXFR status for a secondary zone"
        },
        {
          "name": "AXFR Start",
          "value": "axfrStart",
          "action": "Start AXFR transfer",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}/axfr",
              "method": "PUT"
            }
          },
          "description": "Trigger AXFR transfer for a secondary zone"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "secondaryZone"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a zone file",
          "routing": {
            "request": {
              "url": "=/{{$parameter.zoneId}}/zonefile",
              "method": "GET"
            }
          },
          "description": "Export a zone file in BIND format"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a zone file",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/{{$parameter.zoneId}}/zonefile",
              "method": "PUT",
              "headers": {
                "Content-Type": "text/plain"
              }
            }
          },
          "description": "Import a zone file in BIND format"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "zoneFile"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get quota",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/quota",
              "method": "GET"
            }
          },
          "description": "Get quota information"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "quota"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create DNSSEC keys",
          "routing": {
            "request": {
              "url": "=/{{$parameter.zoneId}}/keys",
              "method": "POST"
            }
          },
          "description": "Create DNSSEC keys for a zone"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete DNSSEC keys",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/{{$parameter.zoneId}}/keys",
              "method": "DELETE"
            }
          },
          "description": "Delete DNSSEC keys for a zone"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get DNSSEC keys",
          "routing": {
            "request": {
              "url": "=/{{$parameter.zoneId}}/keys",
              "method": "GET"
            }
          },
          "description": "Get DNSSEC keys for a zone"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dnssec"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a reverse record",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/reverserecords",
              "method": "POST"
            }
          },
          "description": "Create a reverse DNS record"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a reverse record",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/reverserecords/{{$parameter.reverserecordId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a reverse DNS record"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a reverse record",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/reverserecords/{{$parameter.reverserecordId}}",
              "method": "GET"
            }
          },
          "description": "Get a reverse DNS record"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many reverse records",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/reverserecords",
              "method": "GET"
            }
          },
          "description": "Get many reverse DNS records"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a reverse record",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/reverserecords/{{$parameter.reverserecordId}}",
              "method": "PUT"
            }
          },
          "description": "Update a reverse DNS record"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "reverseRecord"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a zone",
      "routing": {
        "request": {
          "url": "",
          "method": "POST"
        }
      },
      "description": "Create a DNS zone"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a zone",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/{{$parameter.zoneId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a DNS zone"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a zone",
      "routing": {
        "request": {
          "url": "=/{{$parameter.zoneId}}",
          "method": "GET"
        }
      },
      "description": "Get a DNS zone"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many zones",
      "routing": {
        "request": {
          "url": "",
          "method": "GET"
        }
      },
      "description": "Get many DNS zones"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a zone",
      "routing": {
        "request": {
          "url": "=/{{$parameter.zoneId}}",
          "method": "PUT"
        }
      },
      "description": "Update a DNS zone"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a record",
      "routing": {
        "request": {
          "url": "=/{{$parameter.zoneId}}/records",
          "method": "POST"
        }
      },
      "description": "Create a DNS record"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a record",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/{{$parameter.zoneId}}/records/{{$parameter.recordId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a DNS record"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a record",
      "routing": {
        "request": {
          "url": "=/{{$parameter.zoneId}}/records/{{$parameter.recordId}}",
          "method": "GET"
        }
      },
      "description": "Get a DNS record"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many records",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "={{ $parameter.zoneId ? \"/\" + $parameter.zoneId + \"/records\" : \"/records\" }}",
          "method": "GET"
        }
      },
      "description": "Get many DNS records"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a record",
      "routing": {
        "request": {
          "url": "=/{{$parameter.zoneId}}/records/{{$parameter.recordId}}",
          "method": "PUT"
        }
      },
      "description": "Update a DNS record"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a secondary zone",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/secondaryzones",
          "method": "POST"
        }
      },
      "description": "Create a secondary zone"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a secondary zone",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a secondary zone"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a secondary zone",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}",
          "method": "GET"
        }
      },
      "description": "Get a secondary zone"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many secondary zones",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/secondaryzones",
          "method": "GET"
        }
      },
      "description": "Get many secondary zones"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a secondary zone",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}",
          "method": "PUT"
        }
      },
      "description": "Update a secondary zone"
    },
    {
      "name": "AXFR Get",
      "value": "axfrGet",
      "action": "Get AXFR status",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}/axfr",
          "method": "GET"
        }
      },
      "description": "Get AXFR status for a secondary zone"
    },
    {
      "name": "AXFR Start",
      "value": "axfrStart",
      "action": "Start AXFR transfer",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}/axfr",
          "method": "PUT"
        }
      },
      "description": "Trigger AXFR transfer for a secondary zone"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a zone file",
      "routing": {
        "request": {
          "url": "=/{{$parameter.zoneId}}/zonefile",
          "method": "GET"
        }
      },
      "description": "Export a zone file in BIND format"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a zone file",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/{{$parameter.zoneId}}/zonefile",
          "method": "PUT",
          "headers": {
            "Content-Type": "text/plain"
          }
        }
      },
      "description": "Import a zone file in BIND format"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get quota",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/quota",
          "method": "GET"
        }
      },
      "description": "Get quota information"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create DNSSEC keys",
      "routing": {
        "request": {
          "url": "=/{{$parameter.zoneId}}/keys",
          "method": "POST"
        }
      },
      "description": "Create DNSSEC keys for a zone"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete DNSSEC keys",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/{{$parameter.zoneId}}/keys",
          "method": "DELETE"
        }
      },
      "description": "Delete DNSSEC keys for a zone"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get DNSSEC keys",
      "routing": {
        "request": {
          "url": "=/{{$parameter.zoneId}}/keys",
          "method": "GET"
        }
      },
      "description": "Get DNSSEC keys for a zone"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a reverse record",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/reverserecords",
          "method": "POST"
        }
      },
      "description": "Create a reverse DNS record"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a reverse record",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/reverserecords/{{$parameter.reverserecordId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a reverse DNS record"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a reverse record",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/reverserecords/{{$parameter.reverserecordId}}",
          "method": "GET"
        }
      },
      "description": "Get a reverse DNS record"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many reverse records",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/reverserecords",
          "method": "GET"
        }
      },
      "description": "Get many reverse DNS records"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a reverse record",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/reverserecords/{{$parameter.reverserecordId}}",
          "method": "PUT"
        }
      },
      "description": "Update a reverse DNS record"
    }
  ]

npm_readme:
[cell repeats an earlier one in this file: 19360 characters]

ai_documentation_summary:
  {"purpose":"This node enables interaction with the IONOS Cloud DNS API v1 to manage DNS zones, records, DNSSEC, and zone transfers within n8n workflows.","capabilities":["Manage DNS zones","Create and update DNS records (15 types)","Manage DNSSEC","Handle zone transfers","Query DNS records","Delete DNS records"],"authentication":"API key required (Cloud API Bearer token)","commonUseCases":["Automating DNS record updates for new domain deployments","Managing DNS configurations for multi-domain setups","Enabling DNSSEC for security","Syncing DNS changes across environments"],"limitations":["Limited to DNS-specific operations (unlike other IONOS nodes that cover infrastructure, certificates, CDN, and AI)"],"relatedNodes":["IONOS Cloud (Infrastructure)","IONOS Cloud (Certificate Manager)","IONOS Cloud (CDN)","IONOS Cloud (AI Model Hub)","IONOS Cloud Chat Model"]}


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-03-25 21:19:40
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-03-25T21:19:40.658Z
ai_summary_generated_at: 2026-03-25 22:51:43
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":"This n8n community node enables automation of telephony workflows by interacting with the KrispCall API to manage contacts, send messages, and handle webhooks.","capabilities":["Create contacts","Delete contacts","Send SMS messages","Send MMS messages","Retrieve voicemails","Retrieve phone numbers","Create webhooks","Delete webhooks"],"authentication":"API key required","commonUseCases":["Automating customer communication via SMS/MMS","Managing CRM contacts through telephony integration","Handling incoming voicemails automatically","Setting up real-time event notifications via webhooks"],"limitations":["Community node (may require manual installation)","Requires a separate KrispCall account and API key"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.credentialManager"]}


node_type: n8n-nodes-chainstream.chainstream
package_name: n8n-nodes-chainstream
display_name: Chainstream
description: Consume Chainstream API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  {
  "type": "main"
  }
  ]

updated_at: 2026-03-25 21:19:40
author_name: quantum01io
author_github_url: https://github.com/chainstream-io/
npm_package_name: n8n-nodes-chainstream
npm_version: 0.0.92
community_fetched_at: 2026-03-25T21:19:40.659Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "token",
      "options": [
        {
          "name": "Token",
          "value": "token"
        },
        {
          "name": "Wallet",
          "value": "wallet"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Candles",
          "value": "candles",
          "action": "Get token price candles",
          "description": "Get token price candles"
        },
        {
          "name": "Creation",
          "value": "creation",
          "action": "Get token creation information",
          "description": "Get token creation information"
        },
        {
          "name": "Detail",
          "value": "detail",
          "action": "Get detail of token",
          "description": "Get detail of token"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a token",
          "description": "Get a token"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many tokens",
          "description": "Get many tokens"
        },
        {
          "name": "Holders",
          "value": "holders",
          "action": "Get holders of a token",
          "description": "Get holders of a token"
        },
        {
          "name": "Liquidity",
          "value": "liquidity",
          "action": "Get all pools containing this token",
          "description": "Get all pools containing this token"
        },
        {
          "name": "Market Data",
          "value": "marketData",
          "action": "Get token market data",
          "description": "Get token market data"
        },
        {
          "name": "Metadata",
          "value": "metadata",
          "action": "Get metadata of token",
          "description": "Get metadata of token"
        },
        {
          "name": "Mint And Burn",
          "value": "mintAndBurn",
          "action": "Get mint and burn information for a token",
          "description": "Get mint and burn information for a token"
        },
        {
          "name": "Price by Time",
          "value": "price",
          "action": "Get token price at a specific timestamp",
          "description": "Get token price at a specific timestamp"
        },
        {
          "name": "Prices",
          "value": "prices",
          "action": "Get historical price data for a token",
          "description": "Get historical price data for a token"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search token informaton by criteria",
          "description": "Search token information by criteria"
        },
        {
          "name": "Security",
          "value": "security",
          "action": "Get token security information",
          "description": "Get token security information"
        },
        {
          "name": "Stats",
          "value": "stats",
          "action": "Get token statistics",
          "description": "Get token statistics"
        },
        {
          "name": "Top Holders",
          "value": "topHolders",
          "action": "Get the top 20 holders for a token",
          "description": "Get the top 20 holders for a token"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "token"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "balance",
      "options": [
        {
          "name": "Balance",
          "value": "balance",
          "action": "Get wallet balance",
          "description": "Get wallet balance"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "wallet"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Candles",
      "value": "candles",
      "action": "Get token price candles",
      "description": "Get token price candles"
    },
    {
      "name": "Creation",
      "value": "creation",
      "action": "Get token creation information",
      "description": "Get token creation information"
    },
    {
      "name": "Detail",
      "value": "detail",
      "action": "Get detail of token",
      "description": "Get detail of token"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a token",
      "description": "Get a token"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many tokens",
      "description": "Get many tokens"
    },
    {
      "name": "Holders",
      "value": "holders",
      "action": "Get holders of a token",
      "description": "Get holders of a token"
    },
    {
      "name": "Liquidity",
      "value": "liquidity",
      "action": "Get all pools containing this token",
      "description": "Get all pools containing this token"
    },
    {
      "name": "Market Data",
      "value": "marketData",
      "action": "Get token market data",
      "description": "Get token market data"
    },
    {
      "name": "Metadata",
      "value": "metadata",
      "action": "Get metadata of token",
      "description": "Get metadata of token"
    },
    {
      "name": "Mint And Burn",
      "value": "mintAndBurn",
      "action": "Get mint and burn information for a token",
      "description": "Get mint and burn information for a token"
    },
    {
      "name": "Price by Time",
      "value": "price",
      "action": "Get token price at a specific timestamp",
      "description": "Get token price at a specific timestamp"
    },
    {
      "name": "Prices",
      "value": "prices",
      "action": "Get historical price data for a token",
      "description": "Get historical price data for a token"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search token informaton by criteria",
      "description": "Search token information by criteria"
    },
    {
      "name": "Security",
      "value": "security",
      "action": "Get token security information",
      "description": "Get token security information"
    },
    {
      "name": "Stats",
      "value": "stats",
      "action": "Get token statistics",
      "description": "Get token statistics"
    },
    {
      "name": "Top Holders",
      "value": "topHolders",
      "action": "Get the top 20 holders for a token",
      "description": "Get the top 20 holders for a token"
    },
    {
      "name": "Balance",
      "value": "balance",
      "action": "Get wallet balance",
      "description": "Get wallet balance"
    }
  ]

npm_readme:
  **Version:** 0.0.92
  **Status:** Submitted to Creator Portal, awaiting approval  
  **Compatible with:** n8n v1.0.0+ (tested on v1.113.0)

  # n8n-nodes-chainstream

  [![Verified on MseeP](https://mseep.ai/badge.svg)](https://mseep.ai/app/bd76f121-1c8f-4f5d-9c65-1eac5d81b6af)

  `n8n-nodes-chainstream` is an n8n community node that enables workflows to access real-time blockchain data via [Chainstream](https://chainstream.io). It supports token, wallet, and trade queries across multiple chains, and is designed for reuse, easy extension, and straightforward review.

  ---

  ## 🚀 Installation

  ```bash
  npm install n8n-nodes-chainstream
  ```

  - Restart n8n to load the new community node.
  - Add the Chainstream node to your workflow and configure credentials.

  ---

  ## 🔐 Credentials

  Create a new credential in n8n:

  - **API Client ID** — Chainstream public key
  - **API Client Secret** — Chainstream private key

  ⚠️ Do not commit real keys to your repository or exported workflows. Use placeholders in templates and bind credentials after import.

  ---

  ## ⚡ Quickstart

  1. Go to **Workflows → Import** in n8n and upload `/templates/workflow.json` from this repo.
  2. Run:

     ```bash
     npm install n8n-nodes-chainstream
     ```

  3. Create and bind your Chainstream credential.
  4. Configure a trigger (e.g., Telegram, webhook, cron).
  5. Run the workflow and inspect the Chainstream node output.

  > Note: `/templates/workflow.json` uses credential placeholders. Replace them after import.

  ---

  ## 🧪 Example Node Configuration

  **Node:** Chainstream

  - **Credentials:** ChainstreamApi
  - **Resource:** token
  - **Operation:** get
  - **Chain ID:** 137
  - **Token Address:** `0x1234...abcd`
  - **Options:** (leave default)

  **Example output:**

  ```json
  {
  	"symbol": "ABC",
  	"name": "Token ABC",
  	"decimals": 18,
  	"address": "0x..."
  }
  ```

  For batch runs, use expressions or upstream nodes to supply dynamic parameters.

  ---

  ## 📚 Supported Resources

  Short summary of supported resources (full mapping in `DEVELOPER.md`):

  - **token** — metadata, prices, holders, liquidity, security, mint/burn
  - **trade** — listings, activities, leaderboards
  - **wallet** — balance queries

  ---

  ## 🧑‍💻 Developer Notes

  The `execute` method builds requests dynamically:

  1. Reads `resource` and `operation` per item
  2. Calls `buildRequest()` to map to `{ method, path, qs }`
  3. Sends request via `chainstreamApiRequest()`
  4. Wraps response with `constructExecutionMetaData()`
  5. Handles errors via `NodeOperationError`, respects `continueOnFail`

  Full handler mapping and endpoint patterns are in `DEVELOPER.md`.

  ---

  ## 🛠️ Troubleshooting

  - **Invalid resource/operation** → check for typos
  - **Bad parameters** → test with single item before batching
  - **API errors** → inspect node output, verify credentials
  - **Batch runs** → enable `Continue On Fail` to capture per-item errors

  Debug tips:

  - Use **Executions** view to inspect inputs/outputs
  - Add a **Set** node to test static parameters
  - Start with one item to simplify debugging

  ---

  ## 🧪 Contributing & CI

  ```bash
  npm run build   # Compile TypeScript
  npm run lint    # Run ESLint
  npm run test    # Run Jest tests
  ```

  - `prepublishOnly` runs build + lint before publishing
  - Use GitHub Actions to automate lint/build/test
  - Keep TypeScript strict and ESLint green

  To add a new operation:

  1. Add handler in `buildRequest()`
  2. Extract parameters via `getNodeParameter(..., i)`
  3. Return `{ method, path, qs? }`
  4. Add tests and update `DEVELOPER.md`

  ---

  ## 📦 Templates & Reviewer Guidance

  - `/templates/workflow.json` — example workflow
  - `/templates/README-template.md` — import instructions
  - If reviewers lack production keys, provide:
    - mock API
    - test account
    - recorded executions

  When submitting:

  - Include repo link, npm package name/version
  - Provide install steps and sample outputs
  - Add screenshots if possible

  ---

  ## 📬 Contact & Support

  - Maintainer: Chainstream Team – [ai@chainstream.io](mailto:ai@chainstream.io)
  - Issues & PRs: [GitHub Issues](https://github.com/chainstream-io/n8n-nodes-chainstream/issues)

  ---

  ## 📄 License

  MIT

  ---

ai_documentation_summary:
  {"purpose":"This n8n community node enables workflows to consume the Chainstream API for real-time blockchain data, supporting queries for tokens, wallets, and trades across multiple chains.","capabilities":["Token metadata retrieval (prices, holders, liquidity, security, mint/burn)","Trade activity queries (listings, activities, leaderboards)","Wallet balance queries","Multi-chain support","Batch processing with error continuation"],"authentication":"API key required (API Client ID and API Client Secret)","commonUseCases":["Real-time token price monitoring","Wallet balance tracking across chains","Trade activity and leaderboard analysis","Liquidity and security monitoring for DeFi tokens"],"limitations":["Node status is awaiting approval in the Creator Portal","Requires manual credential binding after import","Full endpoint mapping documentation is in a separate DEVELOPER.md file"],"relatedNodes":["n8n-nodes-base.webhook","n8n-nodes-base.set","n8n-nodes-base.code"]}


node_type: n8n-nodes-copyseeker.copyseeker
package_name: n8n-nodes-copyseeker
display_name: Copyseeker
description: Reverse image search and copyright analysis
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: copyseeker
author_github_url: https://github.com/man-tas/
npm_package_name: n8n-nodes-copyseeker
npm_version: 1.0.5
community_fetched_at: 2026-03-25T21:19:40.660Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "image",
      "options": [
        {
          "name": "Image",
          "value": "image"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "reverseSearch",
      "options": [
        {
          "name": "Reverse Search",
          "value": "reverseSearch",
          "action": "Perform reverse image search",
          "description": "Find where an image appears online"
        },
        {
          "name": "Site-Specific Search",
          "value": "siteSearch",
          "action": "Search specific site for image",
          "description": "Search for image on a specific website"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Reverse Search",
      "value": "reverseSearch",
      "action": "Perform reverse image search",
      "description": "Find where an image appears online"
    },
    {
      "name": "Site-Specific Search",
      "value": "siteSearch",
      "action": "Search specific site for image",
      "description": "Search for image on a specific website"
    }
  ]

npm_readme:
  # n8n-nodes-copyseeker

  n8n community node for [Copyseeker](https://copyseeker.net) - Reverse Image Search API

  [Installation](#installation) • [Configuration](#configuration) • [Operations](#operations) • [Use Cases](#use-cases) • [Support](#support)

  ## Installation

  ### Via n8n Community Nodes

  1. Go to **Settings** > **Community Nodes**
  2. Click **Install**
  3. Enter `n8n-nodes-copyseeker`
  4. Click **Install**

  ### Via npm
  ```bash
  npm install n8n-nodes-copyseeker
  ```

  ## Prerequisites

  Get your API key from [RapidAPI Copyseeker](https://rapidapi.com/copyseeker1-copyseeker-default/api/reverse-image-search-by-copyseeker)

  ## Configuration

  1. Add **Copyseeker** node to workflow
  2. Click **Create New Credentials**
  3. Enter your RapidAPI key
  4. Save

  ## Operations

  ### Reverse Image Search

  Find where an image appears online.

  **Input:**
  - Image URL (required)
  - Return Full Response (optional)
  - Filter by Minimum Rank (optional)
  - Include Visual Similar Images (optional)

  **Output:**
  ```json
  {
    "bestGuess": "logo design",
    "totalMatches": 15,
    "highestRankedSource": {
      "url": "https://example.com",
      "title": "Example Website",
      "rank": 8.5
    },
    "topEntities": ["Web Design", "Logo", "Branding"],
    "visuallySimilarCount": 23,
    "allPages": [],
    "entities": [],
    "visuallySimilar": []
  }
  ```

  ### Site-Specific Search

  Search for an image on a specific website.

  **Input:**
  - Image URL (required)
  - Target Site (required) - domain without protocol
  - Return Full Response (optional)
  - Filter by Minimum Rank (optional)
  - Include Visual Similar Images (optional)

  ## Use Cases

  ### Copyright Protection
  Monitor unauthorized use of your images across the web.

  ### E-commerce Visual Search
  Enable customers to find products by uploading images.

  ### Brand Protection
  Detect counterfeit products and unauthorized logo usage.

  ### Content Moderation
  Filter duplicate or previously flagged content.

  ### Fraud Detection
  Verify profile photos in dating apps, insurance claims, job applications.

  ### Fact-Checking
  Verify image authenticity and track original sources.

  ## Page Authority Scores

  | Score | Authority |
  |-------|-----------|
  | 8.0-10.0 | Very High - Major sites, likely original |
  | 6.0-7.9 | High - Established sites |
  | 4.0-5.9 | Medium - Regular sites |
  | 2.0-3.9 | Low - Smaller sites |
  | 0.0-1.9 | Very Low - New or low-authority |

  ## Best Practices

  **Do:**
  - Use direct image URLs (.jpg, .png, .gif, .webp)
  - Keep images under 10MB
  - Implement error handling
  - Cache results when possible
  - Use minimum rank filtering

  **Don't:**
  - Use HTML page URLs
  - Include protocol in Target Site
  - Exceed rate limits
  - Process same image repeatedly

  ## Troubleshooting

  **No matches found**
  - Verify URL is direct and public
  - Image may be too new to index

  **Rate limit exceeded**
  - Check RapidAPI plan limits
  - Add delays between requests

  **Invalid credentials**
  - Verify RapidAPI key
  - Check subscription status

  ## Support

  - [Copyseeker Website](https://copyseeker.net)
  - [GitHub Issues](https://github.com/man-tas/n8n-nodes-copyseeker/issues)
  - [RapidAPI Page](https://rapidapi.com/copyseeker1-copyseeker-default/api/reverse-image-search-by-copyseeker)

  ## License

  MIT

  ---

  Built for the n8n community • [Documentation](https://docs.n8n.io/integrations/community-nodes/)

ai_documentation_summary:
  {"purpose":"A n8n community node that performs reverse image search and copyright analysis using the Copyseeker API to find where images appear online.","capabilities":["Reverse image search to find image sources","Site-specific image search","Visual similarity detection","Return best guess and entity analysis","Filter results by minimum rank","Return full response data including all pages"],"authentication":"RapidAPI key required","commonUseCases":["Copyright protection monitoring","E-commerce visual search","Brand protection and counterfeit detection","Content moderation","Fraud detection in profile photos"],"limitations":["Requires direct image URLs (not HTML page URLs)","Images must be under 10MB","Subject to RapidAPI rate limits","May not find very new or unindexed images","Target Site parameter should not include protocol"],"relatedNodes":[]}


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

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

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

npm_readme:
  # 🤖 Famulor for n8n

  <div align="center">

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

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

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

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

  ---

  </div>

  ## English

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

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

  ### Why Famulor?

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

  ---

  ## Deutsch

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

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

  ### Warum Famulor?

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

  ---

  ## Installation

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

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

  ---

  ## Operations / Operationen

  ### English

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

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

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

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

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

  ### Deutsch

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

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

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

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

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

  ---

  ## Credentials / Anmeldedaten

  ### English

  **Quick Setup in 3 Steps**

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

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

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

  ### Deutsch

  **Schnelle Einrichtung in 3 Schritten**

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

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

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

  ---

  ## Compatibility / Kompatibilität

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

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

  ---

  ## Usage / Verwendung

  ### English

  #### 🎯 Getting Started

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

  #### 📞 Making Phone Calls (Actions)

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

  #### 🤖 Managing Assistants (Actions)

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

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

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

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

  ### Deutsch

  #### 🎯 Erste Schritte

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

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

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

  #### 🤖 Assistenten verwalten (Aktionen)

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

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

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

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

  ---

  ## Resources / Ressourcen

  ### English

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

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

  ### Deutsch

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

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

  ---

  ## About Famulor / Über Famulor

  ### English

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

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

  ### Deutsch

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

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

  ---

  <div align="center">

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

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

  *Built with ❤️ by the Famulor team*

  </div>

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


node_type: n8n-nodes-mfr.mfr
package_name: n8n-nodes-mfr
display_name: mfr - Field Service Management
description: Field service management app for scheduling technicians.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: apps_makeitfuture
author_github_url: https://github.com/anemesMakeitfuture/mfr-field-service-management.git
npm_package_name: n8n-nodes-mfr
npm_version: 0.1.13
community_fetched_at: 2026-03-25T21:19:40.661Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "company",
      "options": [
        {
          "name": "Company",
          "value": "company"
        },
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Appointment",
          "value": "appointment"
        },
        {
          "name": "Item Type",
          "value": "itemType"
        },
        {
          "name": "Service Object",
          "value": "serviceObject"
        },
        {
          "name": "Service Request",
          "value": "serviceRequest"
        },
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "User",
          "value": "user"
        },
        {
          "name": "Report",
          "value": "report"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a company",
          "description": "Get a company"
        },
        {
          "name": "Get Many",
          "value": "listCompanies",
          "action": "List companies",
          "description": "List Companies"
        },
        {
          "name": "Create One",
          "value": "createCompany",
          "action": "Create a company",
          "description": "Create a Company"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "company"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listContacts",
      "options": [
        {
          "name": "Get Many",
          "value": "listContacts",
          "action": "List contacts",
          "description": "List Contacts"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createAppointment",
      "options": [
        {
          "name": "Create One",
          "value": "createAppointment",
          "action": "Create an appointment",
          "description": "Create an Appointment"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "appointment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createItemType",
      "options": [
        {
          "name": "Create One",
          "value": "createItemType",
          "action": "Create an item type",
          "description": "Create an Item Type"
        },
        {
          "name": "Get One",
          "value": "getItemType",
          "action": "Get an item type",
          "description": "Get an Item Type"
        },
        {
          "name": "Get Many",
          "value": "listItemTypes",
          "action": "List item types",
          "description": "List Item Types"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "itemType"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createServiceObject",
      "options": [
        {
          "name": "Create One",
          "value": "createServiceObject",
          "action": "Create a service object",
          "description": "Create a Service Object"
        },
        {
          "name": "Get One Service Object",
          "value": "getServiceObject",
          "action": "Get a service object by id",
          "description": "Get a Service Object by ID"
        },
        {
          "name": "Get Many Service Objects",
          "value": "listServiceObjects",
          "action": "Get all service objects",
          "description": "Get all Service Objects"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "serviceObject"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createServiceRequest",
      "options": [
        {
          "name": "Create One",
          "value": "createServiceRequest",
          "action": "Create a service request",
          "description": "Create a Service Request"
        },
        {
          "name": "Get One",
          "value": "getServiceRequest",
          "action": "Get a service request by id",
          "description": "Get a Service Request by ID"
        },
        {
          "name": "Delete One",
          "value": "deleteServiceRequest",
          "action": "Delete a service request",
          "description": "Delete a Service Request"
        },
        {
          "name": "Add Tags to Service Request",
          "value": "addTagsToServiceRequest",
          "action": "Add a tag to a service request",
          "description": "Add a tag to a service request"
        },
        {
          "name": "Remove Tag From Service Request",
          "value": "removeTagFromServiceRequest",
          "action": "Remove a tag from service request",
          "description": "Remove a tag from service request"
        },
        {
          "name": "Get Many Service Requests",
          "value": "listServiceRequests",
          "action": "Get a list of all service requests",
          "description": "Get a list of all service requests, with Service Objects and Products, Steps, Reports, Appointments and Items expanded"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "serviceRequest"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "uploadDocument",
      "options": [
        {
          "name": "Upload One",
          "value": "uploadDocument",
          "action": "Upload document",
          "description": "Upload Document"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listUsers",
      "options": [
        {
          "name": "Get Many Users",
          "value": "listUsers",
          "action": "Get all users",
          "description": "Get all Users"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generateReportFromReportDefinition",
      "options": [
        {
          "name": "Generate Report",
          "value": "generateReportFromReportDefinition",
          "action": "Generate report from report definition",
          "description": "Generate Report from Report Definition"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "report"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get a company",
      "description": "Get a company"
    },
    {
      "name": "Get Many",
      "value": "listCompanies",
      "action": "List companies",
      "description": "List Companies"
    },
    {
      "name": "Create One",
      "value": "createCompany",
      "action": "Create a company",
      "description": "Create a Company"
    },
    {
      "name": "Get Many",
      "value": "listContacts",
      "action": "List contacts",
      "description": "List Contacts"
    },
    {
      "name": "Create One",
      "value": "createAppointment",
      "action": "Create an appointment",
      "description": "Create an Appointment"
    },
    {
      "name": "Create One",
      "value": "createItemType",
      "action": "Create an item type",
      "description": "Create an Item Type"
    },
    {
      "name": "Get One",
      "value": "getItemType",
      "action": "Get an item type",
      "description": "Get an Item Type"
    },
    {
      "name": "Get Many",
      "value": "listItemTypes",
      "action": "List item types",
      "description": "List Item Types"
    },
    {
      "name": "Create One",
      "value": "createServiceObject",
      "action": "Create a service object",
      "description": "Create a Service Object"
    },
    {
      "name": "Get One Service Object",
      "value": "getServiceObject",
      "action": "Get a service object by id",
      "description": "Get a Service Object by ID"
    },
    {
      "name": "Get Many Service Objects",
      "value": "listServiceObjects",
      "action": "Get all service objects",
      "description": "Get all Service Objects"
    },
    {
      "name": "Create One",
      "value": "createServiceRequest",
      "action": "Create a service request",
      "description": "Create a Service Request"
    },
    {
      "name": "Get One",
      "value": "getServiceRequest",
      "action": "Get a service request by id",
      "description": "Get a Service Request by ID"
    },
    {
      "name": "Delete One",
      "value": "deleteServiceRequest",
      "action": "Delete a service request",
      "description": "Delete a Service Request"
    },
    {
      "name": "Add Tags to Service Request",
      "value": "addTagsToServiceRequest",
      "action": "Add a tag to a service request",
      "description": "Add a tag to a service request"
    },
    {
      "name": "Remove Tag From Service Request",
      "value": "removeTagFromServiceRequest",
      "action": "Remove a tag from service request",
      "description": "Remove a tag from service request"
    },
    {
      "name": "Get Many Service Requests",
      "value": "listServiceRequests",
      "action": "Get a list of all service requests",
      "description": "Get a list of all service requests, with Service Objects and Products, Steps, Reports, Appointments and Items expanded"
    },
    {
      "name": "Upload One",
      "value": "uploadDocument",
      "action": "Upload document",
      "description": "Upload Document"
    },
    {
      "name": "Get Many Users",
      "value": "listUsers",
      "action": "Get all users",
      "description": "Get all Users"
    },
    {
      "name": "Generate Report",
      "value": "generateReportFromReportDefinition",
      "action": "Generate report from report definition",
      "description": "Generate Report from Report Definition"
    }
  ]

npm_readme:
  # n8n-nodes-mfr

  This is an n8n community node. It lets you use mfr – Field Service Management in your n8n workflows.

  mfr – Field Service Management is a cloud platform for creating, scheduling and tracking service requests, assets, appointments, technicians, reports and related documents.


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

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

  ## Installation

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

  ## Operations


  - Get a Company
  - Create a Company
  - List Companies
  - Create a Service Request
  - Get a Service Request
  - List Service Requests
  - Delete a Service Request
  - Generate Report
  - Add Tags to Service Request
  - Remove Tag from Service Request
  - Upload Document
  - Appointment
  - Create an Appointment
  - Create an Item Type
  - Get an Item Type
  - List Item Types
  - Create a Service Object
  - Get a Service Object
  - List Service Objects
  - List Users
  - Watch Events Trigger – subscribe to real‑time change events from mfr

  ## Credentials

  The basic auth method is used for the requests.

  ## Compatibility

  1.98.0

  ## Usage

  Add the mfr Field Service node to your workflow and choose a Resource and Operation from the dropdown. Map the required fields using n8n data‑pinning or expressions.

  Example ideas:

  Create a Service Request when a support ticket is opened

  Trigger: Zendesk, Freshdesk, etc.

  Node: Create a Company (if customer doesn’t exist)

  Node: Create a Service Request

  Node: Slack / Email → notify dispatcher.

  Generate a PDF report nightly for completed service requests

  Trigger: Cron (daily 02:00)

  Node: List Service Requests (filter status = completed, updatedYesterday)

  Loop: Generate Report → store in S3 / email to customer.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [mfr API Documentation and Auth](https://documenter.getpostman.com/view/3999268/TVYCAzpK#intro)

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with mfr – Field Service Management to automate scheduling, tracking, and reporting for service requests, technicians, and assets.","capabilities":["Create and manage companies","Create, retrieve, list, and delete service requests","Generate reports","Manage tags on service requests","Upload documents","Create and manage appointments","Manage item types","Manage service objects","List users","Subscribe to real-time change events"],"authentication":"Basic auth","commonUseCases":["Automatically create service requests when support tickets are opened from Zendesk or Freshdesk","Generate nightly PDF reports for completed service requests and store them in cloud storage","Notify dispatchers via Slack or email when new service requests are created"],"limitations":["Community node (may not be maintained by n8n core team)","Requires external API documentation for detailed field mapping"],"relatedNodes":["Cron Trigger","Slack","Email","S3","Zendesk"]}


node_type: n8n-nodes-tomba.tomba
package_name: n8n-nodes-tomba
display_name: Tomba
description: Consume Tomba API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: mohamed_ben
author_github_url: https://github.com/tomba-io/
npm_package_name: n8n-nodes-tomba
npm_version: 0.1.5
community_fetched_at: 2026-03-25T21:19:40.662Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "domain",
      "options": [
        {
          "name": "Company",
          "value": "company",
          "description": "Search for companies using natural language or structured filters"
        },
        {
          "name": "Custom API Call",
          "value": "customApiCall",
          "description": "Make an authenticated HTTP request to any Tomba API endpoint. Tomba auth is handled automatically."
        },
        {
          "name": "Domain",
          "value": "domain",
          "description": "Domain search, status, location, similar, technology, autocomplete"
        },
        {
          "name": "Email",
          "value": "email",
          "description": "Email finder, verifier, sources, enrichment, count, format"
        },
        {
          "name": "Finder",
          "value": "finder",
          "description": "Author finder, LinkedIn finder"
        },
        {
          "name": "Phone",
          "value": "phone",
          "description": "Phone finder, phone validator"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "domainSearch",
      "options": [
        {
          "name": "Autocomplete",
          "value": "Autocomplete",
          "action": "Find company names and retrieve logo and domain information",
          "description": "Find company names and retrieve logo and domain information"
        },
        {
          "name": "Domain Search",
          "value": "domainSearch",
          "action": "Get every email address found on the internet using a given domain name with sources",
          "description": "Get every email address found on the internet using a given domain name, with sources"
        },
        {
          "name": "Domain Status",
          "value": "DomainStatus",
          "action": "Find domain status if is webmail or disposable",
          "description": "Find domain status if is webmail or disposable"
        },
        {
          "name": "Location",
          "value": "location",
          "action": "Get employees location based on the domain name",
          "description": "Get employees location based on the domain name"
        },
        {
          "name": "Similar",
          "value": "similar",
          "action": "Retrieve similar domains based on a specific domain",
          "description": "Retrieve similar domains based on a specific domain"
        },
        {
          "name": "Technology",
          "value": "technology",
          "action": "Retrieve the technologies used by a specific domain",
          "description": "Retrieve the technologies used by a specific domain"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "domain"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "emailFinder",
      "options": [
        {
          "name": "Email Count",
          "value": "EmailCount",
          "action": "Find total email addresses we have for one domain",
          "description": "Find total email addresses we have for one domain"
        },
        {
          "name": "Email Enrichment",
          "value": "emailEnrichment",
          "action": "Look up person and company data based on an email",
          "description": "Look up person and company data based on an email"
        },
        {
          "name": "Email Finder",
          "value": "emailFinder",
          "action": "Generate or retrieve the most likely email address from a domain name a first name and a last name",
          "description": "Generate or retrieve the most likely email address from a domain name, a first name and a last name"
        },
        {
          "name": "Email Format",
          "value": "emailFormat",
          "action": "Retrieve the email format patterns used by a specific domain",
          "description": "Retrieve the email format patterns used by a specific domain"
        },
        {
          "name": "Email Sources",
          "value": "emailSources",
          "action": "Find email address source somewhere on the web",
          "description": "Find email address source somewhere on the web"
        },
        {
          "name": "Email Verifier",
          "value": "emailVerifier",
          "action": "Verify the deliverability of an email address",
          "description": "Verify the deliverability of an email address"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "email"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "authorFinder",
      "options": [
        {
          "name": "Author Finder",
          "value": "authorFinder",
          "action": "Generate or retrieve the most likely email address from a blog post url",
          "description": "Generate or retrieve the most likely email address from a blog post URL"
        },
        {
          "name": "LinkedIn Finder",
          "value": "linkedinFinder",
          "action": "Generate or retrieve the most likely email address from a linkedin url",
          "description": "Generate or retrieve the most likely email address from a LinkedIn URL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "finder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "phoneFinder",
      "options": [
        {
          "name": "Phone Finder",
          "value": "phoneFinder",
          "action": "Search for phone numbers based on an email domain or linkedin url",
          "description": "Search for phone numbers based on an email, domain, or LinkedIn URL"
        },
        {
          "name": "Phone Validator",
          "value": "phoneValidator",
          "action": "Validate a phone number and retrieve its associated information",
          "description": "Validate a phone number and retrieve its associated information"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "phone"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "searchCompanies",
      "options": [
        {
          "name": "Search Companies",
          "value": "searchCompanies",
          "action": "Search for companies using natural language queries or structured filters",
          "description": "Search for companies using natural language queries or structured filters"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "company"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "customApiCall",
      "options": [
        {
          "name": "Custom API Call",
          "value": "customApiCall",
          "action": "Make a custom authenticated api call to the tomba api",
          "description": "Make an authenticated HTTP request to any Tomba API endpoint"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "customApiCall"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Autocomplete",
      "value": "Autocomplete",
      "action": "Find company names and retrieve logo and domain information",
      "description": "Find company names and retrieve logo and domain information"
    },
    {
      "name": "Domain Search",
      "value": "domainSearch",
      "action": "Get every email address found on the internet using a given domain name with sources",
      "description": "Get every email address found on the internet using a given domain name, with sources"
    },
    {
      "name": "Domain Status",
      "value": "DomainStatus",
      "action": "Find domain status if is webmail or disposable",
      "description": "Find domain status if is webmail or disposable"
    },
    {
      "name": "Location",
      "value": "location",
      "action": "Get employees location based on the domain name",
      "description": "Get employees location based on the domain name"
    },
    {
      "name": "Similar",
      "value": "similar",
      "action": "Retrieve similar domains based on a specific domain",
      "description": "Retrieve similar domains based on a specific domain"
    },
    {
      "name": "Technology",
      "value": "technology",
      "action": "Retrieve the technologies used by a specific domain",
      "description": "Retrieve the technologies used by a specific domain"
    },
    {
      "name": "Email Count",
      "value": "EmailCount",
      "action": "Find total email addresses we have for one domain",
      "description": "Find total email addresses we have for one domain"
    },
    {
      "name": "Email Enrichment",
      "value": "emailEnrichment",
      "action": "Look up person and company data based on an email",
      "description": "Look up person and company data based on an email"
    },
    {
      "name": "Email Finder",
      "value": "emailFinder",
      "action": "Generate or retrieve the most likely email address from a domain name a first name and a last name",
      "description": "Generate or retrieve the most likely email address from a domain name, a first name and a last name"
    },
    {
      "name": "Email Format",
      "value": "emailFormat",
      "action": "Retrieve the email format patterns used by a specific domain",
      "description": "Retrieve the email format patterns used by a specific domain"
    },
    {
      "name": "Email Sources",
      "value": "emailSources",
      "action": "Find email address source somewhere on the web",
      "description": "Find email address source somewhere on the web"
    },
    {
      "name": "Email Verifier",
      "value": "emailVerifier",
      "action": "Verify the deliverability of an email address",
      "description": "Verify the deliverability of an email address"
    },
    {
      "name": "Author Finder",
      "value": "authorFinder",
      "action": "Generate or retrieve the most likely email address from a blog post url",
      "description": "Generate or retrieve the most likely email address from a blog post URL"
    },
    {
      "name": "LinkedIn Finder",
      "value": "linkedinFinder",
      "action": "Generate or retrieve the most likely email address from a linkedin url",
      "description": "Generate or retrieve the most likely email address from a LinkedIn URL"
    },
    {
      "name": "Phone Finder",
      "value": "phoneFinder",
      "action": "Search for phone numbers based on an email domain or linkedin url",
      "description": "Search for phone numbers based on an email, domain, or LinkedIn URL"
    },
    {
      "name": "Phone Validator",
      "value": "phoneValidator",
      "action": "Validate a phone number and retrieve its associated information",
      "description": "Validate a phone number and retrieve its associated information"
    },
    {
      "name": "Search Companies",
      "value": "searchCompanies",
      "action": "Search for companies using natural language queries or structured filters",
      "description": "Search for companies using natural language queries or structured filters"
    },
    {
      "name": "Custom API Call",
      "value": "customApiCall",
      "action": "Make a custom authenticated api call to the tomba api",
      "description": "Make an authenticated HTTP request to any Tomba API endpoint"
    }
  ]

npm_readme:
  # [<img src="https://tomba.io/logo.svg" alt="Tomba" width="25"/>](https://tomba.io/) Tomba.io n8n Nodes

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

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

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

  ## Installation

  ### Install from n8n Integrations (Recommended)

  The easiest way to install Tomba is directly from the [n8n Tomba integration page](https://n8n.io/integrations/tomba/):

  1. **Sign in to n8n** — Sign in to n8n, open the editor, and click **+** in the top right to open the Nodes panel.
  2. **Search for Tomba** — Type "Tomba" in the search field to find the node.
  3. **Add to Workflow** — Click on the Tomba node to add it to your workflow.

  ### Install via Community Nodes

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

  1. Go to Settings (Cogwheel)
  2. Click on "Community Nodes"
  3. Enter "n8n-nodes-tomba" into the text box
  4. Click on "I understand the risk ..."
  5. Click on "Install"

  ## Operations

  ### Company

  - **[Search Companies](https://developer.tomba.io/#reveal-search)** - Search for companies using natural language queries or structured filters (location, industry, size, technologies, and more)

  ### Domain

  - **[Autocomplete](https://docs.tomba.io/api/domain-suggestions#get-domain-suggestions)** - Find company names and retrieve logo and domain information
  - **[Domain Search](https://docs.tomba.io/api/finder#domain-search)** - Get every email address found on the internet using a given domain name, with sources
  - **[Domain Status](https://docs.tomba.io/api/~endpoints#domain-status)** - Find domain status if is webmail or disposable
  - **[Location](https://docs.tomba.io/api/finder#location)** - Get employees location based on the domain name
  - **[Similar](https://docs.tomba.io/api/~endpoints#similar)** - Retrieve similar domains based on a specific domain
  - **[Technology](https://docs.tomba.io/api/~endpoints#technology)** - Retrieve the technologies used by a specific domain

  ### Email

  - **[Email Count](https://docs.tomba.io/api/finder#email-count)** - Find total email addresses we have for one domain
  - **[Email Enrichment](https://docs.tomba.io/api/finder#email-enrichment)** - Look up person and company data based on an email
  - **[Email Finder](https://docs.tomba.io/api/finder#email-finder)** - Generate or retrieve the most likely email address from a domain name, a first name and a last name
  - **[Email Format](https://docs.tomba.io/api/finder#email-format)** - Retrieve the email format patterns used by a specific domain
  - **[Email Sources](https://docs.tomba.io/api/~endpoints#email-sources)** - Find email address source somewhere on the web
  - **[Email Verifier](https://docs.tomba.io/api/verifier#email-verifier)** - Verify the deliverability of an email address

  ### Finder

  - **[Author Finder](https://docs.tomba.io/api/finder#author-finder)** - Generate or retrieve the most likely email address from a blog post URL
  - **[LinkedIn Finder](https://docs.tomba.io/api/finder#linkedin-finder)** - Generate or retrieve the most likely email address from a LinkedIn URL

  ### Phone

  - **[Phone Finder](https://docs.tomba.io/api/phone#phone-finder)** - Search for phone numbers based on an email, domain, or LinkedIn URL
  - **[Phone Validator](https://docs.tomba.io/api/phone#phone-validator)** - Validate a phone number and retrieve its associated information

  ### Custom API Call

  Make any authenticated HTTP request directly to the [Tomba API](https://developer.tomba.io/) — useful for endpoints not yet covered by a dedicated operation. Tomba credentials (API Key & Secret) are automatically injected into every request.

  ## Credentials

  To use the Tomba node, you need to authenticate with your Tomba API credentials. Follow these steps to set up authentication:

  ### Getting Your API Credentials

  1. Sign up for a free account at [Tomba.io](https://tomba.io)
  2. Navigate to your [API Settings](https://app.tomba.io/api) in your Tomba dashboard
  3. Copy your **API Key** and **Secret Key**

  ### Setting Up Credentials in n8n

  1. In your n8n workflow, add a Tomba node
  2. Click on the **Credential to connect with** dropdown
  3. Select **Create New** and choose **Tomba API**
  4. Enter your credentials:
     - **API Key**: Your Tomba API key
     - **Secret**: Your Tomba secret key
  5. Click **Save** to store your credentials securely

  The Tomba node supports all Tomba API features, including email finding, verification, enrichment, phone finding, company search, and domain analysis. Your credentials will be used to authenticate all requests to the Tomba API.

  ### Using Tomba Credentials with the HTTP Request Node

  You can also use your Tomba credentials directly in the n8n **HTTP Request** node to call any Tomba API endpoint:

  1. Add an **HTTP Request** node to your workflow
  2. Set **Authentication** to **Predefined Credential Type**
  3. Set **Credential Type** to **Tomba API**
  4. Select your existing Tomba credential
  5. Configure the URL (`https://api.tomba.io/v1/...`) and request details

  n8n will automatically inject the `X-Tomba-Key` and `X-Tomba-Secret` headers on every request. See the [Custom API operations docs](https://docs.n8n.io/integrations/custom-operations/) for more details.

  ## Usage

  The Tomba node provides powerful email intelligence capabilities for your n8n workflows. Here are some common usage examples:

  ### Example 1: Email Verification Workflow

  This workflow verifies the deliverability of email addresses:

  **Nodes needed:**

  - **Manual Trigger** (or any trigger node)
  - **Tomba** node

  **Setup:**

  1. Add a Manual Trigger node to start your workflow
  2. Add a Tomba node and connect it to the trigger
  3. Configure the Tomba node:
     - **Operation**: Email Verifier
     - **Email**: Enter the email address to verify (e.g., `test@example.com`)
  4. Execute the workflow to get verification results

  ### Example 2: Domain Email Discovery

  Find all email addresses associated with a company domain:

  **Setup:**

  1. Add a trigger node
  2. Add a Tomba node with these settings:
     - **Operation**: Domain Search
     - **Domain**: Company domain (e.g., `stripe.com`)
     - **Limit**: Number of results to return
     - **Filters**: Optional filters for department, type, etc.

  ### Example 3: Email Finder for Lead Generation

  Generate email addresses using names and company domains:

  **Setup:**

  1. Add a trigger node
  2. Add a Tomba node with:
     - **Operation**: Email Finder
     - **Domain**: Target company domain
     - **First Name**: Contact's first name
     - **Last Name**: Contact's last name

  ### Example 4: Phone Number Discovery

  Find phone numbers associated with emails or domains:

  **Setup:**

  1. Add a trigger node
  2. Add a Tomba node with:
     - **Operation**: Phone Finder
     - **Search Type**: Choose Email, Domain, or LinkedIn
     - Configure the relevant field based on your search type

  ### Example 5: Company Search

  Search for companies matching specific criteria:

  **Setup:**

  1. Add a trigger node
  2. Add a Tomba node with:
     - **Resource**: Company
     - **Operation**: Search Companies
     - **Page**: `1`
     - **Filters**: Expand to add any combination of:
       - **Location Country** → Include: `US, CA`
       - **Industry** → Include: `SaaS, Fintech`
       - **Size** → Include: `51-200, 201-500`
       - **Technologies** → Include: `React, AWS` / Exclude: `PHP`
       - **Founded**, **Revenue**, **Type**, **Keywords**, and more

  ### Example 6: Custom API Call

  Call any Tomba API endpoint not covered by a dedicated operation:

  **Setup:**

  1. Add a trigger node
  2. Add a Tomba node with:
     - **Resource**: Custom API Call
     - **Method**: `GET` (or POST, PUT, etc.)
     - **Endpoint**: `/me` (relative to `https://api.tomba.io/v1`)
     - Optionally add **Query Parameters**, **Body**, or extra **Headers**

  Tomba credentials are injected automatically — no manual header setup needed.

  ### Example 7: Company Intelligence Workflow

  Gather comprehensive company data:

  **Setup:**

  1. **Domain Search**: Find all emails for a domain
  2. **Location**: Get company location data
  3. **Technology**: Discover technologies used
  4. **Similar**: Find similar companies

  ### Pro Tips

  - Use the **Return All** option in Domain Search for comprehensive results
  - Combine multiple operations in sequence for enriched data
  - Use filters in Domain Search to target specific departments
  - In **Search Companies**, combine multiple filters (location, industry, size, technologies) for precise targeting
  - Use **Custom API Call** to access any new Tomba endpoint without waiting for a dedicated node update
  - The **HTTP Request** node with Tomba credentials works identically to Custom API Call — choose whichever fits your workflow
  - Cache results using n8n's built-in functionality to avoid duplicate API calls
  - Set up error handling for rate limits and invalid inputs

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Tomba Email Finder](https://tomba.io)
  - [Tomba API docs](https://docs.tomba.io/introduction)
  - [Tomba knowledge base](https://help.tomba.io/en/)

  ## Test the node

  You can test your node as you build it by running it in a local n8n instance.

  ### Install n8n using npm

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

  ### Clone git repository

  ```bash
  git clone https://github.com/tomba-io/n8n-nodes-tomba.git
  cd n8n-nodes-tomba/
  ```

  ### Available Scripts

  | Script      | Command                  | Description                              |
  | ----------- | ------------------------ | ---------------------------------------- |
  | Build       | `npm run build`          | Compile the node for production          |
  | Watch       | `npm run build:watch`    | Watch for changes and recompile          |
  | Dev         | `npm run dev`            | Run the node in development mode         |
  | Lint        | `npm run lint`           | Check code for linting errors            |
  | Lint Fix    | `npm run lint:fix`       | Automatically fix linting errors         |
  | Release     | `npm run release`        | Create a new release                     |
  | Pre-publish | `npm run prepublishOnly` | Run pre-release checks before publishing |

  ### Publish it locally

  ```bash
  # In the node directory
  npm run build
  npm link
  ```

  ### Install the node into your local n8n instance

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

  > Make sure you run <b>npm link n8n-nodes-tomba</b> in the nodes directory within your n8n installation. This is probably something like <b>~/.n8n/nodes/</b>

  ## More information

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

  ## License

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

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with the Tomba.io API to perform email intelligence, domain analysis, company research, and contact discovery within automated workflows.","capabilities":["Search companies using natural language or structured filters","Find and verify email addresses by domain, name, or LinkedIn URL","Autocomplete domain names and retrieve logo/domain info","Get domain status (webmail, disposable, etc.)","Retrieve employee locations based on domain","Find similar domains and technologies used by a domain","Count total emails for a domain","Enrich person and company data from an email","Generate likely email addresses from first/last name and domain","Find email sources on the web"],"authentication":"API Key & Secret Key required","commonUseCases":["Lead generation and prospecting","Email verification and deliverability checks","Sales outreach automation","Domain research and competitor analysis","Employee directory building"],"limitations":["Community node (requires manual installation if not using n8n Integrations)","Requires valid Tomba.io API credentials","Subject to Tomba's API rate limits and terms of service"],"relatedNodes":["HTTP Request","Webhook","Code"]}


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-03-25 21:19:40
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-03-25T21:19:40.662Z
ai_summary_generated_at: 2026-03-25 22:51:43
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":"This n8n community node enables automation of OnlyFans workflows by providing access to the unofficial OnlyFans API for managing accounts, fans, media, messaging, and banking operations.","capabilities":["Manage OnlyFans accounts (create, disconnect, re-authenticate)","Retrieve account profile details and model start dates","List and manage fans (active, expired, latest)","Handle chat interactions (messages, media, notifications)","Send and manage mass messages","Manage media vault and CDN uploads (up to 500MB)","Configure banking and payout details","Generate and manage free trial links","Monitor chargeback statistics and ratios","Create client sessions for embedded authentication"],"authentication":"API Key required","commonUseCases":["Automated content distribution via mass messaging","Fan engagement and management workflows","Media organization and CDN uploads","Banking and tax compliance automation","Free trial link subscriber tracking"],"limitations":["Unofficial API (may not be fully supported by OnlyFans)","Chat message deletion limited to messages sent within 24 hours","Media upload size limit of 500MB","Free trial link features require prior scraping of subscribers"],"relatedNodes":["n8n HTTP Request","n8n Webhook","n8n Code Node"]}


