# nodes

node_type: n8n-nodes-pingen2.pingen
package_name: n8n-nodes-pingen2
display_name: Pingen
description: Send physical postal letters through the Pingen API — invoices, reminders, contracts, any PDF.
category: Communication
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: pingencom
author_github_url: https://github.com/pingencom/
npm_package_name: n8n-nodes-pingen2
npm_version: 0.2.4
community_fetched_at: 2026-07-14T14:40:34.674Z
ai_summary_generated_at: 2026-07-14 15:01:34
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "letter",
      "options": [
        {
          "name": "Letter",
          "value": "letter"
        },
        {
          "name": "Batch",
          "value": "batch"
        },
        {
          "name": "Letter Event",
          "value": "letterEvent"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "uploadAndCreate",
      "options": [
        {
          "name": "Upload & Create",
          "value": "uploadAndCreate",
          "action": "Upload and create a letter",
          "description": "Upload a PDF and create a letter"
        },
        {
          "name": "Send",
          "value": "send",
          "action": "Send a letter",
          "description": "Send an already created letter"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a letter",
          "description": "Get details of a specific letter"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many letters",
          "description": "List letters in your organisation"
        },
        {
          "name": "Calculate Price",
          "value": "calculatePrice",
          "action": "Calculate letter price",
          "description": "Calculate price before sending"
        },
        {
          "name": "Cancel",
          "value": "cancel",
          "action": "Cancel a letter",
          "description": "Cancel a letter not yet sent"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "letter"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "uploadAndCreate",
      "options": [
        {
          "name": "Upload & Create",
          "value": "uploadAndCreate",
          "action": "Upload and create a batch",
          "description": "Upload a PDF and create a batch"
        },
        {
          "name": "Send",
          "value": "send",
          "action": "Send a batch",
          "description": "Send a created batch"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a batch",
          "description": "Get details of a specific batch"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many batches",
          "description": "List batches"
        },
        {
          "name": "Cancel",
          "value": "cancel",
          "action": "Cancel a batch",
          "description": "Cancel a batch not yet sent"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a batch",
          "description": "Delete a batch"
        },
        {
          "name": "Get Statistics",
          "value": "getStatistics",
          "action": "Get batch statistics",
          "description": "Get statistics for a batch"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "batch"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAllForLetter",
      "options": [
        {
          "name": "Get for Letter",
          "value": "getAllForLetter",
          "action": "Get events for a letter",
          "description": "Get events for a specific letter"
        },
        {
          "name": "Get Issues",
          "value": "getIssues",
          "action": "Get many letter issue events",
          "description": "List letter issue events"
        },
        {
          "name": "Get Undeliverable",
          "value": "getUndeliverable",
          "action": "Get many undeliverable letter events",
          "description": "List undeliverable letter events"
        },
        {
          "name": "Get Delivered",
          "value": "getDelivered",
          "action": "Get many delivered letter events",
          "description": "List delivered letter events"
        },
        {
          "name": "Get Sent",
          "value": "getSent",
          "action": "Get many sent letter events",
          "description": "List sent letter events"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "letterEvent"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Upload & Create",
      "value": "uploadAndCreate",
      "action": "Upload and create a letter",
      "description": "Upload a PDF and create a letter",
      "resource": "letter"
    },
    {
      "name": "Send",
      "value": "send",
      "action": "Send a letter",
      "description": "Send an already created letter",
      "resource": "letter"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a letter",
      "description": "Get details of a specific letter",
      "resource": "letter"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many letters",
      "description": "List letters in your organisation",
      "resource": "letter"
    },
    {
      "name": "Calculate Price",
      "value": "calculatePrice",
      "action": "Calculate letter price",
      "description": "Calculate price before sending",
      "resource": "letter"
    },
    {
      "name": "Cancel",
      "value": "cancel",
      "action": "Cancel a letter",
      "description": "Cancel a letter not yet sent",
      "resource": "letter"
    },
    {
      "name": "Upload & Create",
      "value": "uploadAndCreate",
      "action": "Upload and create a batch",
      "description": "Upload a PDF and create a batch",
      "resource": "batch"
    },
    {
      "name": "Send",
      "value": "send",
      "action": "Send a batch",
      "description": "Send a created batch",
      "resource": "batch"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a batch",
      "description": "Get details of a specific batch",
      "resource": "batch"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many batches",
      "description": "List batches",
      "resource": "batch"
    },
    {
      "name": "Cancel",
      "value": "cancel",
      "action": "Cancel a batch",
      "description": "Cancel a batch not yet sent",
      "resource": "batch"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a batch",
      "description": "Delete a batch",
      "resource": "batch"
    },
    {
      "name": "Get Statistics",
      "value": "getStatistics",
      "action": "Get batch statistics",
      "description": "Get statistics for a batch",
      "resource": "batch"
    },
    {
      "name": "Get for Letter",
      "value": "getAllForLetter",
      "action": "Get events for a letter",
      "description": "Get events for a specific letter",
      "resource": "letterEvent"
    },
    {
      "name": "Get Issues",
      "value": "getIssues",
      "action": "Get many letter issue events",
      "description": "List letter issue events",
      "resource": "letterEvent"
    },
    {
      "name": "Get Undeliverable",
      "value": "getUndeliverable",
      "action": "Get many undeliverable letter events",
      "description": "List undeliverable letter events",
      "resource": "letterEvent"
    },
    {
      "name": "Get Delivered",
      "value": "getDelivered",
      "action": "Get many delivered letter events",
      "description": "List delivered letter events",
      "resource": "letterEvent"
    },
    {
      "name": "Get Sent",
      "value": "getSent",
      "action": "Get many sent letter events",
      "description": "List sent letter events",
      "resource": "letterEvent"
    }
  ]

npm_readme:
  # n8n-nodes-pingen2

  Send physical postal mail directly from [n8n](https://n8n.io) workflows using the [Pingen](https://pingen.com) API.

  Invoices, reminders, contracts, any PDF — dispatched as real letters across Europe, Switzerland and the UK.

  ## Requirements

  - A [Pingen account](https://pingen.com) (free signup)
  - n8n 1.0+ running on Node.js ≥ 20.15

  ## Installation

  In n8n: **Settings → Community Nodes → Install** and enter:

  ```
  n8n-nodes-pingen2
  ```

  ## Setup

  ### 1. Create a Pingen API app

  1. Log in at [identity.pingen.com](https://identity.pingen.com) (or [identity-staging.pingen.com](https://identity-staging.pingen.com) for Staging)
  2. Go to **API Access → Create Developer-App** (Client Credentials flow)
  3. Copy the **Client ID** and **Client Secret**

  The node requests all scopes it needs (`letter batch organisation_read webhook`) at token-exchange time — no scope picker on the Pingen side.

  ### 2. Add credential in n8n

  In n8n: **Credentials → New →** pick either:

  - **Pingen OAuth2 API** (for production)
  - **Pingen Staging OAuth2 API** (for testing — no real letters sent, no credits consumed)

  Paste Client ID + Secret and save. These credentials extend n8n's built-in OAuth2 (client-credentials grant), so n8n obtains and refreshes the access token for you.

  ### 3. Use the Pingen node

  Add the **Pingen** node to your workflow. Pick **Environment** (Production or Staging) — this selects which credential the node uses. Then pick your **Organisation** from the dropdown (auto-loaded from your Pingen account).

  ## Testing in Staging

  Pingen provides a free staging environment for development. Letters sent against staging are **not printed or mailed** and **don't consume credits**.

  **Setup is separate from production:**

  1. Create a second app at [identity-staging.pingen.com](https://identity-staging.pingen.com)
  2. In n8n, create a second credential using **Pingen Staging OAuth2 API** (not Pingen OAuth2 API) — staging and production client IDs/secrets are not interchangeable
  3. In the Pingen node, set **Environment → Staging** — the node switches to `api-staging.pingen.com` and uses the staging credential automatically

  Switch back to **Environment → Production** when going live. Each environment uses its own credential, so there is no cross-contamination.

  ## Example use cases

  Ready-to-import workflow JSON lives in [`docs/examples/`](./docs/examples/README.md).

  ### 1. Send an invoice when a Stripe payment succeeds

  ```
  Stripe trigger (invoice.paid)
    → HTTP Request (download invoice PDF)
    → Pingen (Resource: Letter, Operation: Upload & Create, Auto Send: true)
  ```
  → [`docs/examples/stripe-invoice-letter.json`](./docs/examples/stripe-invoice-letter.json)

  ### 2. Monthly batch of reminders

  ```
  Cron (1st of month)
    → Postgres: fetch overdue customers → PDF generator
    → Pingen (Resource: Batch, Operation: Upload & Create)
    → Pingen (Resource: Batch, Operation: Send, per-country delivery products)
  ```
  → [`docs/examples/monthly-reminders-batch.json`](./docs/examples/monthly-reminders-batch.json)

  ### 3. React to a delivery event in real time

  ```
  Pingen Trigger (Event Type: Delivered, with webhook secret)
    → Slack: notify ops channel
  ```
  → [`docs/examples/delivery-webhook-to-slack.json`](./docs/examples/delivery-webhook-to-slack.json)

  Prefer this over cron polling — you get the event the moment Pingen emits it, the node verifies the HMAC signature for you, and there are no wasted API calls. Need polling anyway (e.g. to backfill events from before the workflow existed)? Use the **Letter Event → Get Delivered** operation with a `created_at[gte]` filter.

  ## Resources & Operations

  Pick a **Resource** (Letter / Batch / Letter Event), then an **Operation**. Fields appear below the Operation selector.

  ### Resource: Letter

  | Operation | Description |
  |---|---|
  | Upload & Create | Upload a PDF and create a letter. Enable Auto Send to dispatch immediately. |
  | Send | Send a previously created letter (useful if you want to review price/recipient first). |
  | Get | Fetch one letter by ID. |
  | Get Many | List letters in the organisation (with paging/sort/filter). |
  | Calculate Price | Compute cost for a given country + delivery product before sending. |
  | Cancel | Cancel a letter that hasn't been dispatched. |

  ### Resource: Batch

  | Operation | Description |
  |---|---|
  | Upload & Create | Upload a PDF containing multiple letters and create a batch. |
  | Send | Send a created batch — specify delivery product per recipient country. |
  | Get | Get one batch by ID. |
  | Get Many | List batches (with paging/sort/filter). |
  | Cancel | Cancel a batch not yet sent. |
  | Delete | Delete a batch. |
  | Get Statistics | Aggregate stats (letter count, status breakdown) for a batch. |

  ### Resource: Letter Event

  | Operation | Description |
  |---|---|
  | Get for Letter | Events for a specific letter (status changes, delivery milestones). |
  | Get Issues | All `issue` events across the organisation (e.g. failed validation, held mail). |
  | Get Undeliverable | All `undeliverable` events. |
  | Get Delivered | All `delivered` events. |
  | Get Sent | All `sent` events. |

  ## Receiving webhooks

  Use the **Pingen Trigger** node to start a workflow when Pingen pushes an event.

  ### Event types

  | Event | When it fires |
  |---|---|
  | `Issues` | Pre-send validation rejected the letter (content inspection failure, bad format, policy check). The letter is **not** dispatched. |
  | `Sent` | Letter handed off to the postal carrier. |
  | `Delivered` | Letter arrived at the recipient. |
  | `Undeliverable` | Carrier tried and failed — returned the letter (e.g. wrong address discovered at delivery). |

  ### Setup — one trigger per event type

  One Pingen Trigger node = one event type = one URL. This keeps each branch of your workflow focused on a single concern (single-responsibility) and surfaces which events you're subscribed to directly in the canvas.

  The trigger **registers and removes the webhook in Pingen for you** — when you activate the workflow n8n creates the subscription in your organisation, and when you deactivate it n8n deletes it. No manual setup in the Pingen panel.

  1. Drag a **Pingen Trigger** onto the canvas. Pick **Environment** and **Organisation** (same as the action node), then an **Event Type** (Issues / Sent / Delivered / Undeliverable). The Webhook URL's path ends in `/issues`, `/sent`, `/delivered` or `/undeliverable` so it is self-documenting.
  2. Generate a strong random string (max 32 chars) and paste it into **Webhook Secret** (e.g. `openssl rand -hex 16`). It is registered as the webhook's signing key and used to verify the HMAC-SHA256 signature on every incoming request.
  3. **Activate the workflow.** n8n registers the webhook in Pingen automatically — nothing to paste in the Pingen panel. (During editing, use **"Listen for test event"** + the Test URL as usual.)
  4. Need more event types? Add another Pingen Trigger and repeat — one per event type you care about.

  ### Test URL vs Production URL (how n8n webhooks work)

  The trigger node shows **two URLs**:

  | URL | When it is live | Expires | Use for |
  |---|---|---|---|
  | **Test URL** | Only while you're in the editor and clicked **"Listen for test event"** | 2 minutes or first event | Development / fast iteration. Pingen's **"Send test webhook"** button can target this while the listener is armed. |
  | **Production URL** | Only while the workflow is **active** (toggle top-right) | Never — as long as the workflow stays active | Production — real delivery events. Also works with Pingen's "Send test webhook" if you want to smoke-test a live deployment. |

  **This is an n8n platform constraint — not something this node can change.** Day-to-day testing uses the Test URL + "Listen for test event". Once you're happy, just **activate the workflow** — n8n registers the Production URL in Pingen for you.

  ### Output shape

  The node unwraps Pingen's JSON:API envelope so downstream nodes see flat fields:

  ```json
  {
    "eventType": "delivered",
    "id": "<webhook event uuid>",
    "type": "webhook_delivered",
    "url": "https://your.webhook/url",
    "created_at": "2020-11-19T09:42:48+0100",
    "letter_id": "<letter uuid>",
    "event_id": "<letters_events uuid>",
    "organisation_id": "<organisation uuid>"
  }
  ```

  `reason` is included for `issues` events; `corrected_address` for `undeliverable`. `included[]` is forwarded as-is when non-empty.

  ### Security

  HMAC-SHA256 signature is verified **first**, before any other request inspection — an unauthenticated caller gets a generic `401` without learning whether the content-type, body shape, or anything else matched. Comparison is timing-safe (`crypto.timingSafeEqual`).

  ### Retries

  If the webhook URL is unreachable or returns non-2xx, Pingen retries on a fixed schedule (1 min, 5 min, 10 min, 1 h, 2 h, 4 h) then gives up. Keep the workflow idempotent — the same event may arrive more than once on flapping connections.

  ## Registered mail

  Registered letters require a recipient address that overrides the one printed on the PDF. When you set **Delivery Product → Registered** in the Send or Upload & Create operation:

  - **Recipient Address** is **required** (throws an error if missing)
  - **Sender Address** is optional but recommended

  ## Address validation limits

  Pingen enforces strict character limits on registered-mail addresses. The node validates before submitting:

  | Field | Max length | Notes |
  |---|---|---|
  | Name | 45 | Required |
  | Street | 40 | Either street+number OR pobox required |
  | House number | 10 | |
  | PO Box | 45 | Alternative to street+number |
  | ZIP | 8 | Required |
  | City | 25 | Required |
  | Country | 2 | ISO 3166-1 alpha-2 (e.g. CH, DE, AT) — **uppercase required** |

  ## Preset IDs

  Pingen lets you pre-configure delivery defaults (product, print mode, address position…) as a **preset** in their web UI. Once created, the preset's UUID appears in the URL or API response.

  - Create presets at `app.pingen.com → Settings → Presets`
  - Paste the UUID into the **Preset ID** field on Upload & Create
  - Per-call parameters still override the preset

  ## Paging, Sorting, Filtering (Get Many, Letter Events)

  All "list" operations expose structured fields:

  | Field | Purpose |
  |---|---|
  | **Page Number** | 1-based page (leave 0 for server default) |
  | **Page Size** | Items per page (max 100) |
  | **Sort** | JSON:API sort expression, e.g. `-created_at,name` (prefix with `-` for descending) |
  | **Additional Filters** | Key/value pairs — each becomes `filter[key]=value` on the URL |

  Under the hood these compose into `?page[number]=2&page[limit]=50&sort=-created_at&filter[status]=sent`. See [Pingen API docs](https://api.pingen.com/documentation) for available filter/sort keys per endpoint.

  ## Error handling

  - Network / 5xx failures on idempotent requests (GET/PUT/DELETE/HEAD) are **retried up to 3 times** with exponential backoff + jitter.
  - POST / PATCH mutations include an **Idempotency-Key** header — retries are safe (Pingen deduplicates server-side).
  - `429 Too Many Requests` always retries and honours `Retry-After`.
  - Errors surface the Pingen message (`errors[].detail`, `errors[].title`, `error.message`, or `message`). Multiple errors are joined with `; `.
  - Enable **Continue On Fail** in the node settings to turn errors into output items instead of halting the workflow.

  ## FAQ

  **Why do I get `[403]` immediately?**
  The node requests the scopes `letter batch organisation_read webhook` at token exchange. If your Pingen plan doesn't grant one of those, Pingen returns 403. Check your plan's API access tier.

  **Staging credentials don't work against production (or vice versa). Why?**
  Pingen issues separate apps per environment. Create one at `identity.pingen.com` for production and another at `identity-staging.pingen.com` for staging — they have different Client IDs/Secrets and are not interchangeable.

  **How do I get a letter's tracking URL / delivery proof?**
  Use the **Letter — Get** operation; the returned `attributes` include tracking info. For delivery-triggered workflows use the **Pingen Trigger** node.

  ## License

  MIT — see [LICENSE](LICENSE).

  ## Contributing

  See [CONTRIBUTING.md](CONTRIBUTING.md) for local development, testing, and release workflow.

  ## About

  This is the **official Pingen package** for n8n, maintained by Pingen GmbH.

ai_documentation_summary:
  {"purpose":"The Pingen node sends physical postal letters from n8n workflows via the Pingen API. It supports uploading PDFs, creating and sending letters or batches, checking prices/statuses, and retrieving letter delivery events.","capabilities":["Upload a PDF and create a letter","Automatically send a letter after creation","Send a previously created letter","Get a letter by ID","List letters with paging, sorting, and filtering","Calculate letter price by country and delivery product","Cancel a letter that has not been dispatched","Upload a multi-letter PDF and create a batch","Send a batch with delivery products per recipient country","Get, list, cancel, delete, and retrieve statistics for batches"],"authentication":"OAuth2 client credentials using a Pingen API app Client ID and Client Secret. Separate credentials are used for Production and Staging.","commonUseCases":["Send invoices as postal letters when Stripe payments succeed","Send monthly reminder letters in batches from CRM or database data","Calculate postage costs before sending letters","Track sent, delivered, undeliverable, and issue events for mailed letters","Test mailing workflows in Pingen Staging without printing letters or consuming credits"],"limitations":["Requires a Pingen account and API app","Production and Staging client IDs/secrets are separate and not interchangeable","Staging letters are not printed or mailed and do not consume credits","Letters can only be cancelled if they have not been dispatched","Postal dispatch is described for Europe, Switzerland, and the UK"],"relatedNodes":["Pingen Trigger","HTTP Request","Stripe Trigger","Postgres","Cron"]}


node_type: @call-e/n8n-nodes-calle.calle
package_name: @call-e/n8n-nodes-calle
display_name: CALL-E
description: Create and monitor CALL-E AI-agent phone-call tasks
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: guokangf
author_github_url: https://github.com/CALLE-AI/n8n-nodes-calle.git
npm_package_name: @call-e/n8n-nodes-calle
npm_version: 0.1.4
community_fetched_at: 2026-07-14T14:40:34.674Z
ai_summary_generated_at: 2026-07-14 15:01:34
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "call",
      "options": [
        {
          "name": "Call",
          "value": "call"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a call task",
          "description": "Create a CALL-E call task"
        },
        {
          "name": "Create and Wait",
          "value": "createAndWait",
          "action": "Create a call task and wait for completion",
          "description": "Create a CALL-E call task and poll until it reaches a terminal status"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a call task",
          "description": "Get a CALL-E call task by ID"
        },
        {
          "name": "List Events",
          "value": "listEvents",
          "action": "List call task events",
          "description": "List developer events for a CALL-E call task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "call"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a call task",
      "description": "Create a CALL-E call task",
      "resource": "call"
    },
    {
      "name": "Create and Wait",
      "value": "createAndWait",
      "action": "Create a call task and wait for completion",
      "description": "Create a CALL-E call task and poll until it reaches a terminal status",
      "resource": "call"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a call task",
      "description": "Get a CALL-E call task by ID",
      "resource": "call"
    },
    {
      "name": "List Events",
      "value": "listEvents",
      "action": "List call task events",
      "description": "List developer events for a CALL-E call task",
      "resource": "call"
    }
  ]

npm_readme:
  # @call-e/n8n-nodes-calle

  This package provides an n8n community node for CALL-E AI-agent phone-call workflows. It lets n8n workflows create CALL-E call tasks, fetch their status, wait for completion, and read developer events.

  [n8n](https://n8n.io/) is a workflow automation platform. [CALL-E](https://www.heycall-e.com/) provides a Developer API for server-side AI-agent phone-call tasks.

  ## Installation

  Install this package as an n8n community node:

  ```bash
  npm install @call-e/n8n-nodes-calle
  ```

  For local development, run:

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

  The development server starts n8n with the CALL-E node linked into the local custom nodes directory.

  ## Credentials

  Create a `CALL-E API` credential in n8n with:

  - `API Key`: Open [CALL-E dashboard → API Keys](https://dashboard.heycall-e.com/account/api-keys), then select **Create API key** in the upper-right corner. The value is stored as a password field.
  - `Base URL`: Defaults to `https://api.heycall-e.com`.
  - `Request Timeout (MS)`: Timeout for each individual CALL-E API request.

  Do not expose CALL-E API keys in browser code, workflow logs, screenshots, or issue reports.

  ## Operations

  The first release focuses on the `Call` resource:

  - `Create`: Creates a CALL-E call task.
  - `Get`: Gets one CALL-E call task by ID.
  - `Create and Wait`: Creates a call task, then polls until the task reaches `completed`, `failed`, or `canceled`.
  - `List Events`: Lists developer events for one call task.

  `Cancel` is not included in this release because the current CALL-E Developer API and server SDKs do not expose a cancel call task API.

  ## Call Parameters

  `Create` and `Create and Wait` support:

  - `Phone Number`: Required E.164 number, for example `+14155550100`.
  - `Task`: Required phone agent task boundary and expected outcome.
  - `Idempotency Key`: Required. The default expression is based on the n8n execution ID and item index; override it with a business key when you need duplicate prevention across workflow retries.
  - `Locale`: Optional language and locale hint, for example `en-US`.
  - `Region`: Optional routing or country/region hint, for example `US`.
  - `Metadata`: Optional JSON object returned with the call task for business-system correlation.
  - `Result Schema`: Optional JSON object schema for task-level structured output.
  - `Recipient Result Schema`: Optional JSON object schema for recipient-level structured output.
  - `Webhook URL`: Optional callback URL for terminal CALL-E events.

  `Create and Wait` also supports:

  - `Polling Interval (MS)`: How often n8n polls CALL-E for the current call status.
  - `Timeout (MS)`: Maximum total wait time before the node fails.

  ## Outputs

  The node returns the raw CALL-E API response for the selected operation:

  - `Create` returns the created call task.
  - `Get` returns the current call task.
  - `Create and Wait` returns the final call task after a terminal status.
  - `List Events` returns the CALL-E events response.

  If n8n `Continue On Fail` is enabled, the node returns an item with an `error` field instead of stopping the workflow.

  ## Safety

  Phone calls are real-world side effects. Use this node only when the workflow has explicit user intent to place the call.

  Operational safeguards:

  - Use E.164 phone numbers.
  - Use stable idempotency keys to prevent duplicate call tasks.
  - Keep API keys in n8n credentials only.
  - Avoid logging full phone numbers or secrets in workflow outputs.
  - For recurring reminders, let the n8n workflow or host scheduler manage recurrence. CALL-E should handle one call task per scheduled workflow run.
  - Keep workflows inactive until credentials, recipient numbers, task wording, and test paths are reviewed.
  - Stop a running n8n execution from the n8n execution view if a call workflow needs cancellation.
  - Do not use this node for emergency, medical, legal, or financial advice workflows without an appropriate human-reviewed safety process.

  `Create and Wait` has a node-level timeout. If the timeout expires, the n8n execution fails or returns an error item when `Continue On Fail` is enabled. A timeout does not guarantee that the provider-side call has been canceled; check CALL-E for the latest call status.

  ## Compatibility

  This package is intended for current n8n community node development flows using `@n8n/node-cli`.

  ## Release

  This package is published from this repository through `.github/workflows/publish.yml`.

  To publish a release, make sure `package.json` and `package-lock.json` have the target version, then push a matching tag:

  ```bash
  git tag v0.1.2
  git push origin v0.1.2
  ```

  The workflow validates that the tag version matches `package.json`, runs lint, tests, build, and publishes with npm provenance.

  For npm Trusted Publishing, configure npm with:

  - Repository owner: `CALLE-AI`
  - Repository name: `n8n-nodes-calle`
  - Workflow filename: `publish.yml`
  - Environment: leave blank unless the workflow is later changed to use one

  If Trusted Publishing is not configured, add an npm automation token as the GitHub Actions secret `NPM_TOKEN`.

  ## Resources

  - [Create or manage CALL-E API keys](https://dashboard.heycall-e.com/account/api-keys) — select **Create API key** in the upper-right corner.
  - [CALL-E Developer Docs](https://docs.heycall-e.com/)
  - [CALL-E API Reference](https://docs.heycall-e.com/#/api-reference)
  - [CALL-E SDKs](https://docs.heycall-e.com/#/sdks)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)

ai_documentation_summary:
  {"purpose":"Creates and monitors CALL-E AI-agent phone-call tasks from n8n workflows. It can start calls, fetch status, wait for terminal completion, and read developer events.","capabilities":["Create a CALL-E call task","Get a call task by ID","Create a call task and poll until completed, failed, or canceled","List developer events for a call task","Configure call parameters including phone number, task, idempotency key, locale, region, metadata, result schemas, and webhook URL","Configure polling interval and timeout for create-and-wait workflows"],"authentication":"API key required via a CALL-E API credential in n8n; includes API Key, Base URL defaulting to https://api.heycall-e.com, and per-request timeout.","commonUseCases":["Trigger AI-agent phone calls from automated workflows","Monitor call task status until completion","Retrieve structured call results and metadata for business-system correlation","Receive or inspect developer events for a call task","Run scheduled reminder or follow-up call workflows with stable idempotency keys"],"limitations":["Cancel operation is not included because the current CALL-E Developer API and server SDKs do not expose a cancel call task API","Create and Wait timeout does not guarantee the provider-side call has been canceled; check CALL-E for the latest status","Phone numbers should be E.164 formatted","Not recommended for emergency, medical, legal, or financial advice workflows without an appropriate human-reviewed safety process"],"relatedNodes":[]}


node_type: @pmartino/n8n-nodes-360dialog.dialog360Trigger
package_name: @pmartino/n8n-nodes-360dialog
display_name: 360dialog Trigger
description: Starts the workflow when a WhatsApp message arrives via 360dialog
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: pmartino
author_github_url: https://github.com/pmartinonales/n8n-nodes-360dialog.git
npm_package_name: @pmartino/n8n-nodes-360dialog
npm_version: 0.3.0
community_fetched_at: 2026-07-14T14:40:34.675Z
ai_summary_generated_at: 2026-07-14 15:01:34
npm_readme:
  # n8n-nodes-360dialog

  This is an n8n community node for the [360dialog](https://www.360dialog.com/) WhatsApp Business Messaging API. It lets you send WhatsApp messages from your workflows and trigger workflows when WhatsApp messages arrive.

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

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

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation. The package name is `@pmartino/n8n-nodes-360dialog`.

  ## Credentials

  Create a **360dialog API** credential with your Messaging API key. Generate or copy the key in the [360dialog Hub](https://hub.360dialog.com/) under WhatsApp Accounts → API Keys. The key is sent as the `D360-API-KEY` header on every request, and the credential test calls the `/health_status` endpoint.

  ## Operations

  The **360dialog** node supports:

  ### Message

  - **Send Text** — plain text message with an optional link preview.
  - **Send Media** — image, video, document or audio from a publicly reachable HTTPS URL, with optional caption and (for documents) filename.
  - **Send Template** — approved template messages, usable outside the 24-hour customer service window. Pick the template from a live dropdown (approved templates only, one entry per name + language) and the node generates the input fields automatically from the template definition (`/message_templates`): one field per body variable (positional `{{1}}` or named `{{order_id}}`), header text variable or header media URL, and dynamic URL button / copy-code coupon values. Meta's `components[]` payload is assembled for you — URL button values are percent-encoded automatically.

  ### Account

  - **Get Health Status** — checks the health of your Messaging API channel.

  Recipient phone numbers are normalized automatically (leading `+`, spaces, dashes and parentheses are stripped).

  If a free-form message is rejected because the 24-hour customer service window has closed (error 131047), the node surfaces a clear error suggesting the Send Template operation.

  ## Trigger

  The **360dialog Trigger** node starts a workflow when a WhatsApp user sends a message to your number.

  - **Webhook lifecycle**: 360dialog delivers events to a single webhook URL per number (`POST /v1/configs/webhook`). Activating the workflow points that webhook at n8n and remembers the previously configured URL; deactivating restores it. Only one active consumer per number can receive events at a time.
  - **Outbound echo filtering**: the webhook also carries the business's own outbound messages — these are dropped, so workflows that reply to messages don't trigger themselves in a loop.
  - **Deduplication**: webhook delivery is at-least-once. The trigger remembers recently seen WhatsApp message IDs (24 hours, last 500) in workflow static data and ignores redeliveries.
  - **Timestamps** are converted from Unix epoch seconds to ISO-8601 UTC.
  - Status update events (sent/delivered/read/failed) are acknowledged but do not trigger the workflow.

  ## Compatibility

  Requires n8n 1.x. Built and tested against the 360dialog Cloud API hosting (`waba-v2.360dialog.io`).

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [360dialog Messaging API documentation](https://docs.360dialog.com/docs/messaging-api)

ai_documentation_summary:
  {"purpose":"Starts n8n workflows when inbound WhatsApp messages arrive via the 360dialog WhatsApp Business Messaging API. It manages the 360dialog webhook configuration for a WhatsApp number and emits only relevant incoming user messages.","capabilities":["Trigger workflows on incoming WhatsApp user messages","Register the n8n webhook URL with 360dialog when the workflow is activated","Restore the previously configured webhook URL when the workflow is deactivated","Filter outbound business message echoes to avoid self-triggering loops","Deduplicate repeated webhook deliveries using WhatsApp message IDs","Convert Unix epoch timestamps to ISO-8601 UTC","Acknowledge status update events without triggering the workflow"],"authentication":"360dialog API key required; sent as the D360-API-KEY header using a 360dialog API credential.","commonUseCases":["Start an automation when a customer sends a WhatsApp message","Build WhatsApp chatbot or auto-reply workflows","Route inbound WhatsApp messages to support, CRM, or ticketing systems","Process incoming customer requests from a 360dialog WhatsApp Business number"],"limitations":["360dialog supports only a single webhook URL per number, so only one active consumer can receive events at a time","Status update events such as sent, delivered, read, and failed are acknowledged but do not trigger the workflow","Requires n8n 1.x","Built and tested against 360dialog Cloud API hosting at waba-v2.360dialog.io"],"relatedNodes":["360dialog"]}


node_type: @pmartino/n8n-nodes-360dialog.dialog360
package_name: @pmartino/n8n-nodes-360dialog
display_name: 360dialog
description: Send WhatsApp messages via the 360dialog Messaging API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: pmartino
author_github_url: https://github.com/pmartinonales/n8n-nodes-360dialog.git
npm_package_name: @pmartino/n8n-nodes-360dialog
npm_version: 0.3.0
community_fetched_at: 2026-07-14T14:40:34.676Z
ai_summary_generated_at: 2026-07-14 15:01:34
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Account",
          "value": "account"
        },
        {
          "name": "Message",
          "value": "message"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendText",
      "options": [
        {
          "name": "Send Media",
          "value": "sendMedia",
          "action": "Send a media message",
          "description": "Send an image, video, document or audio message from a public URL"
        },
        {
          "name": "Send Template",
          "value": "sendTemplate",
          "action": "Send a template message",
          "description": "Send an approved template message (works outside the 24-hour customer service window)"
        },
        {
          "name": "Send Text",
          "value": "sendText",
          "action": "Send a text message",
          "description": "Send a plain text message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getHealthStatus",
      "options": [
        {
          "name": "Get Health Status",
          "value": "getHealthStatus",
          "action": "Get the health status",
          "description": "Check the health status of your Messaging API channel"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send Media",
      "value": "sendMedia",
      "action": "Send a media message",
      "description": "Send an image, video, document or audio message from a public URL",
      "resource": "message"
    },
    {
      "name": "Send Template",
      "value": "sendTemplate",
      "action": "Send a template message",
      "description": "Send an approved template message (works outside the 24-hour customer service window)",
      "resource": "message"
    },
    {
      "name": "Send Text",
      "value": "sendText",
      "action": "Send a text message",
      "description": "Send a plain text message",
      "resource": "message"
    },
    {
      "name": "Get Health Status",
      "value": "getHealthStatus",
      "action": "Get the health status",
      "description": "Check the health status of your Messaging API channel",
      "resource": "account"
    }
  ]

npm_readme:
  # n8n-nodes-360dialog

  This is an n8n community node for the [360dialog](https://www.360dialog.com/) WhatsApp Business Messaging API. It lets you send WhatsApp messages from your workflows and trigger workflows when WhatsApp messages arrive.

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

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

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation. The package name is `@pmartino/n8n-nodes-360dialog`.

  ## Credentials

  Create a **360dialog API** credential with your Messaging API key. Generate or copy the key in the [360dialog Hub](https://hub.360dialog.com/) under WhatsApp Accounts → API Keys. The key is sent as the `D360-API-KEY` header on every request, and the credential test calls the `/health_status` endpoint.

  ## Operations

  The **360dialog** node supports:

  ### Message

  - **Send Text** — plain text message with an optional link preview.
  - **Send Media** — image, video, document or audio from a publicly reachable HTTPS URL, with optional caption and (for documents) filename.
  - **Send Template** — approved template messages, usable outside the 24-hour customer service window. Pick the template from a live dropdown (approved templates only, one entry per name + language) and the node generates the input fields automatically from the template definition (`/message_templates`): one field per body variable (positional `{{1}}` or named `{{order_id}}`), header text variable or header media URL, and dynamic URL button / copy-code coupon values. Meta's `components[]` payload is assembled for you — URL button values are percent-encoded automatically.

  ### Account

  - **Get Health Status** — checks the health of your Messaging API channel.

  Recipient phone numbers are normalized automatically (leading `+`, spaces, dashes and parentheses are stripped).

  If a free-form message is rejected because the 24-hour customer service window has closed (error 131047), the node surfaces a clear error suggesting the Send Template operation.

  ## Trigger

  The **360dialog Trigger** node starts a workflow when a WhatsApp user sends a message to your number.

  - **Webhook lifecycle**: 360dialog delivers events to a single webhook URL per number (`POST /v1/configs/webhook`). Activating the workflow points that webhook at n8n and remembers the previously configured URL; deactivating restores it. Only one active consumer per number can receive events at a time.
  - **Outbound echo filtering**: the webhook also carries the business's own outbound messages — these are dropped, so workflows that reply to messages don't trigger themselves in a loop.
  - **Deduplication**: webhook delivery is at-least-once. The trigger remembers recently seen WhatsApp message IDs (24 hours, last 500) in workflow static data and ignores redeliveries.
  - **Timestamps** are converted from Unix epoch seconds to ISO-8601 UTC.
  - Status update events (sent/delivered/read/failed) are acknowledged but do not trigger the workflow.

  ## Compatibility

  Requires n8n 1.x. Built and tested against the 360dialog Cloud API hosting (`waba-v2.360dialog.io`).

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [360dialog Messaging API documentation](https://docs.360dialog.com/docs/messaging-api)

ai_documentation_summary:
  {"purpose":"Sends WhatsApp messages through the 360dialog WhatsApp Business Messaging API and can support workflows that react to incoming WhatsApp messages via the companion trigger node.","capabilities":["Send plain text WhatsApp messages with optional link preview","Send media messages from publicly reachable HTTPS URLs, including image, video, document, and audio","Add optional captions to media messages and filenames for documents","Send approved WhatsApp template messages outside the 24-hour customer service window","Load approved templates dynamically from 360dialog and generate template input fields automatically","Populate body variables, header variables, header media URLs, dynamic URL buttons, and copy-code coupon values for templates","Automatically assemble Meta components payloads for template messages","Automatically percent-encode dynamic URL button values","Get Messaging API channel health status","Normalize recipient phone numbers by removing leading plus signs, spaces, dashes, and parentheses"],"authentication":"API key required. Create a 360dialog API credential using the Messaging API key from the 360dialog Hub; it is sent as the D360-API-KEY header.","commonUseCases":["Send WhatsApp notifications or alerts from n8n workflows","Send approved WhatsApp template messages for transactional updates outside the 24-hour service window","Send media such as documents, images, videos, or audio files to WhatsApp users","Check the health status of a 360dialog Messaging API channel","Build WhatsApp chat workflows using the companion trigger node for inbound messages"],"limitations":["Requires n8n 1.x","Built and tested against the 360dialog Cloud API hosting at waba-v2.360dialog.io","Media files must be available from a publicly reachable HTTPS URL","Free-form messages may be rejected outside the 24-hour customer service window; use approved templates instead","360dialog supports only one webhook URL per number, so only one active consumer per number can receive events at a time"],"relatedNodes":["360dialog Trigger"]}


node_type: n8n-nodes-vapiai.vapi
package_name: n8n-nodes-vapiai
display_name: Vapi
description: Interact with the Vapi voice AI platform
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: mitrax24
author_github_url: https://github.com/ajit-kihor/
npm_package_name: n8n-nodes-vapiai
npm_version: 1.0.15
community_fetched_at: 2026-07-14T14:40:34.677Z
ai_summary_generated_at: 2026-07-14 15:01:34
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "call",
      "options": [
        {
          "name": "Assistant",
          "value": "assistant"
        },
        {
          "name": "Call",
          "value": "call"
        },
        {
          "name": "File",
          "value": "file"
        },
        {
          "name": "Phone Number",
          "value": "phoneNumber"
        },
        {
          "name": "Squad",
          "value": "squad"
        },
        {
          "name": "Tool",
          "value": "tool"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a call",
          "description": "Create an outbound call or batch of calls"
        },
        {
          "name": "Delete Data",
          "value": "deleteData",
          "action": "Delete call data",
          "description": "Delete call data for retention or compliance"
        },
        {
          "name": "End",
          "value": "end",
          "action": "End a call",
          "description": "End an active call"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a call",
          "description": "Retrieve a call by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List calls",
          "description": "List and filter calls"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a call",
          "description": "Update mutable call fields"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "call"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an assistant",
          "description": "Create an assistant"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an assistant",
          "description": "Delete an assistant"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an assistant",
          "description": "Retrieve an assistant"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List assistants",
          "description": "List assistants"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an assistant",
          "description": "Update an assistant"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "assistant"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Buy",
          "value": "buy",
          "action": "Buy a phone number",
          "description": "Provision or import a phone number"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a phone number",
          "description": "Release or delete a phone number"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a phone number",
          "description": "Get a phone number"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List phone numbers",
          "description": "List phone numbers"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a phone number",
          "description": "Update routing, assistant, provider, or webhook settings"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "phoneNumber"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a squad",
          "description": "Create a squad"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a squad",
          "description": "Delete a squad"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a squad",
          "description": "Retrieve a squad"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List squads",
          "description": "List squads"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a squad",
          "description": "Update a squad"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "squad"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a tool",
          "description": "Create a tool"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a tool",
          "description": "Delete a tool"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a tool",
          "description": "Get a tool by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List tools",
          "description": "List tools"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a tool",
          "description": "Update a tool"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tool"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Upload / Create",
          "value": "create",
          "action": "Upload a file",
          "description": "Upload a file for knowledge bases and assistant artifacts"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a file",
          "description": "Delete a file"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a file",
          "description": "Get a file by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List files",
          "description": "List files"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a file",
          "description": "Update mutable file fields"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a call",
      "description": "Create an outbound call or batch of calls",
      "resource": "call"
    },
    {
      "name": "Delete Data",
      "value": "deleteData",
      "action": "Delete call data",
      "description": "Delete call data for retention or compliance",
      "resource": "call"
    },
    {
      "name": "End",
      "value": "end",
      "action": "End a call",
      "description": "End an active call",
      "resource": "call"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a call",
      "description": "Retrieve a call by ID",
      "resource": "call"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List calls",
      "description": "List and filter calls",
      "resource": "call"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a call",
      "description": "Update mutable call fields",
      "resource": "call"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an assistant",
      "description": "Create an assistant",
      "resource": "assistant"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an assistant",
      "description": "Delete an assistant",
      "resource": "assistant"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an assistant",
      "description": "Retrieve an assistant",
      "resource": "assistant"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List assistants",
      "description": "List assistants",
      "resource": "assistant"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an assistant",
      "description": "Update an assistant",
      "resource": "assistant"
    },
    {
      "name": "Buy",
      "value": "buy",
      "action": "Buy a phone number",
      "description": "Provision or import a phone number",
      "resource": "phoneNumber"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a phone number",
      "description": "Release or delete a phone number",
      "resource": "phoneNumber"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a phone number",
      "description": "Get a phone number",
      "resource": "phoneNumber"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List phone numbers",
      "description": "List phone numbers",
      "resource": "phoneNumber"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a phone number",
      "description": "Update routing, assistant, provider, or webhook settings",
      "resource": "phoneNumber"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a squad",
      "description": "Create a squad",
      "resource": "squad"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a squad",
      "description": "Delete a squad",
      "resource": "squad"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a squad",
      "description": "Retrieve a squad",
      "resource": "squad"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List squads",
      "description": "List squads",
      "resource": "squad"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a squad",
      "description": "Update a squad",
      "resource": "squad"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a tool",
      "description": "Create a tool",
      "resource": "tool"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a tool",
      "description": "Delete a tool",
      "resource": "tool"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a tool",
      "description": "Get a tool by ID",
      "resource": "tool"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List tools",
      "description": "List tools",
      "resource": "tool"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a tool",
      "description": "Update a tool",
      "resource": "tool"
    },
    {
      "name": "Upload / Create",
      "value": "create",
      "action": "Upload a file",
      "description": "Upload a file for knowledge bases and assistant artifacts",
      "resource": "file"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a file",
      "description": "Delete a file",
      "resource": "file"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a file",
      "description": "Get a file by ID",
      "resource": "file"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List files",
      "description": "List files",
      "resource": "file"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a file",
      "description": "Update mutable file fields",
      "resource": "file"
    }
  ]

npm_readme:
  # n8n-nodes-vapiai

  An n8n community node package for [Vapi](https://vapi.ai), the developer platform for building voice AI agents over phone, web, and SIP by orchestrating STT, LLM, and TTS with tools, squads, files, analytics, scorecards, and evals.

  This package provides two nodes:

  - **Vapi**: Main operation node for the Vapi REST API
  - **Vapi Trigger**: Webhook trigger node for Vapi server/client message events

  ## Supported Resources and Operations

  ### Calls

  | Operation | Description |
  |-----------|-------------|
  | Create | Create an outbound call or batch of outbound calls |
  | Get | Retrieve a call by ID |
  | List | List calls with filters |
  | End | End an active call |
  | Update | Update mutable call fields with Raw Body support for newer API fields |
  | Delete Data | Trigger call data deletion for retention or compliance |

  ### Assistants

  | Operation | Description |
  |-----------|-------------|
  | Create | Create an assistant with model, voice, server, monitor, hook, analysis, and artifact fields |
  | Get | Retrieve an assistant by ID |
  | List | List assistants |
  | Update | Update an assistant |
  | Delete | Delete an assistant |

  ### Phone Numbers

  | Operation | Description |
  |-----------|-------------|
  | Buy | Provision or import a phone number |
  | Get | Retrieve a phone number by ID |
  | List | List phone numbers |
  | Update | Update provider, assistant/squad/workflow routing, and server webhook settings |
  | Delete | Delete or release a phone number |

  Supported provider shapes include `vapi`, `twilio`, `telnyx`, `vonage`, and `byo-phone-number`. Provider-specific fields can be passed through **Advanced Raw Body (JSON)**.

  ### Squads

  | Operation | Description |
  |-----------|-------------|
  | Create | Create a squad for multi-assistant routing |
  | Get | Retrieve a squad by ID |
  | List | List squads |
  | Update | Update squad members and overrides |
  | Delete | Delete a squad |

  ### Tools

  | Operation | Description |
  |-----------|-------------|
  | Create | Create tools with structured fields or Raw Body |
  | Get | Retrieve a tool by ID |
  | List | List tools |
  | Update | Update a tool |
  | Delete | Delete a tool |

  The node exposes common fields for function/webhook tools, code tools, call-control tools, query/MCP tools, Slack/SMS, Google, and GoHighLevel integrations. It supports all current Vapi tool types via explicit fields and Raw Body. For newly added tool types, pass them directly as JSON via **Raw Body** according to the official tools documentation.

  ### Files

  | Operation | Description |
  |-----------|-------------|
  | Upload / Create | Upload a file from binary data, text content, or a URL |
  | Get | Retrieve a file by ID |
  | List | List files |
  | Update | Update mutable file fields such as name |
  | Delete | Delete a file |

  Files can be used as inputs to assistant knowledge bases, tools, and other assistant-side artifacts. n8n workflows can manage the full file lifecycle and then reference file IDs/URLs in assistant or tool Raw Body payloads.

  ## Installation

  ### In n8n

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

  ### Via npm

  ```bash
  npm install n8n-nodes-vapiai
  ```

  ## Credentials

  1. Go to **Credentials -> New**
  2. Search for **Vapi API**
  3. Enter your API key from the [Vapi Dashboard](https://dashboard.vapi.ai)

  All requests use:

  ```http
  Authorization: Bearer <VAPI_API_KEY>
  ```

  Base URL:

  ```text
  https://api.vapi.ai
  ```

  ## Raw Body Behavior

  Create and update operations use structured fields first, then merge **Advanced Raw Body (JSON)** last. That means Raw Body top-level keys override structured values.

  Example: if the node UI sets `assistantId` but Raw Body contains `{"assistantId":"new_assistant_id"}`, the request sent to Vapi uses `new_assistant_id`.

  ## Examples

  ### Create a Function Tool

  ```json
  {
    "type": "function",
    "function": {
      "name": "get_weather",
      "description": "Get current weather for a location",
      "parameters": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "description": "City name"
          }
        },
        "required": ["location"]
      }
    },
    "server": {
      "url": "https://your-server.com/weather"
    }
  }
  ```

  ### Attach a New Assistant to an Existing Phone Number

  Use **Phone Number -> Update** and set Raw Body:

  ```json
  {
    "assistantId": "new_assistant_id"
  }
  ```

  ### Update a Phone Number Server URL

  Use **Phone Number -> Update** with `provider` set to `twilio` and server fields in the UI, or pass Raw Body:

  ```json
  {
    "provider": "twilio",
    "server": {
      "url": "https://your-n8n.example/webhook/vapi",
      "timeoutSeconds": 20,
      "headers": {
        "x-vapi-secret": "shared-secret"
      }
    }
  }
  ```

  ### Create a Squad with Handoff Behavior

  ```json
  {
    "name": "front-desk-routing",
    "members": [
      {
        "assistantId": "front_desk_assistant_id",
        "assistantOverrides": {
          "firstMessage": "Thanks for calling. How can I help?"
        }
      },
      {
        "assistantId": "billing_assistant_id",
        "assistantOverrides": {
          "firstMessage": "I can help with billing."
        }
      }
    ],
    "membersOverrides": {
      "serverMessages": ["tool-calls", "end-of-call-report"]
    }
  }
  ```

  ### Workflow Ideas

  - Inbound call from a Vapi phone number -> Vapi Trigger -> n8n processes the payload and updates a CRM -> optional SMS or email follow-up.
  - Outbound campaign setup using Calls + Files, with a knowledge-base file uploaded from n8n and monitoring artifacts tracked in dashboards.
  - Assistant with code tools and GoHighLevel/Slack integration tools triggered by voice, orchestrated from n8n.
  - Compliance workflow that periodically calls **Call -> Delete Data** after your retention period.

  ## Vapi Trigger

  1. Add a **Vapi Trigger** node to your workflow
  2. Copy the generated Webhook URL
  3. Set it as the Server URL in Vapi at the org, assistant, phone number, or tool level
  4. Optionally enable **Verify Secret Header**

  Webhook registration is manual: n8n exposes the URL, and you copy it into the Vapi dashboard. The trigger does not create or delete Vapi server URLs automatically.

  The trigger supports **All Events** mode. In this mode every Vapi event is forwarded to n8n and the output includes a normalized `json.type` field so you can branch with an IF or Switch node.

  Common event types include:

  - `conversation-update`
  - `end-of-call-report`
  - `tool-calls`
  - `tool-calls-result`
  - `status-update`
  - `speech-update`
  - `transcript`
  - `transfer-destination-request`
  - `transfer-update`
  - `handoff-destination-request`
  - `assistant-request`
  - `knowledge-base-request`
  - `voice-request`
  - `assistant.started`
  - `assistant.speechStarted`
  - `workflow.node.started`
  - `chat.created`
  - `session.created`
  - `call.deleted`
  - `call.delete.failed`

  ### Secret Header Verification

  Enable **Verify Secret Header** when Vapi is configured to send a shared secret header. The trigger rejects requests unless the configured header name and value match. This is useful for protecting public n8n webhook URLs.

  ## Development

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

  This repository's `prepublishOnly` script runs build and lint before publishing.

  ## Resources

  - [Vapi Documentation](https://docs.vapi.ai)
  - [Vapi API Reference](https://docs.vapi.ai/api-reference)
  - [Vapi Tools](https://docs.vapi.ai/tools)
  - [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Interact with the Vapi voice AI platform from n8n to manage calls, assistants, phone numbers, squads, tools, and files via the Vapi REST API.","capabilities":["Create outbound calls or batches of outbound calls","Get, list, update, end, and delete call data","Create, get, list, update, and delete assistants","Buy, import, get, list, update, and delete phone numbers","Configure phone number routing to assistants, squads, workflows, and webhooks","Create, get, list, update, and delete squads for multi-assistant routing","Create, get, list, update, and delete Vapi tools","Configure function, webhook, code, call-control, query, MCP, Slack, SMS, Google, and GoHighLevel tools","Upload or create files from binary data, text content, or URLs","Get, list, update, and delete files"],"authentication":"API key required. Configure a Vapi API credential using an API key from the Vapi Dashboard; requests use Authorization: Bearer <VAPI_API_KEY>.","commonUseCases":["Create and manage outbound voice AI calling campaigns","Attach or update assistants on existing Vapi phone numbers","Configure inbound call routing from phone numbers to assistants, squads, workflows, or webhooks","Create assistants with models, voices, server settings, monitoring, hooks, analysis, and artifacts","Upload knowledge-base or artifact files and reference them in assistants or tools"],"limitations":["Newly added Vapi API fields or tool types may need to be passed through Advanced Raw Body JSON instead of structured UI fields."],"relatedNodes":["Vapi Trigger","Webhook","HTTP Request"]}


node_type: n8n-nodes-vapiai.vapiTrigger
package_name: n8n-nodes-vapiai
display_name: Vapi Trigger
description: Starts the workflow when Vapi sends a webhook event
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: mitrax24
author_github_url: https://github.com/ajit-kihor/
npm_package_name: n8n-nodes-vapiai
npm_version: 1.0.15
community_fetched_at: 2026-07-14T14:40:34.678Z
ai_summary_generated_at: 2026-07-14 15:01:34
npm_readme:
  # n8n-nodes-vapiai

  An n8n community node package for [Vapi](https://vapi.ai), the developer platform for building voice AI agents over phone, web, and SIP by orchestrating STT, LLM, and TTS with tools, squads, files, analytics, scorecards, and evals.

  This package provides two nodes:

  - **Vapi**: Main operation node for the Vapi REST API
  - **Vapi Trigger**: Webhook trigger node for Vapi server/client message events

  ## Supported Resources and Operations

  ### Calls

  | Operation | Description |
  |-----------|-------------|
  | Create | Create an outbound call or batch of outbound calls |
  | Get | Retrieve a call by ID |
  | List | List calls with filters |
  | End | End an active call |
  | Update | Update mutable call fields with Raw Body support for newer API fields |
  | Delete Data | Trigger call data deletion for retention or compliance |

  ### Assistants

  | Operation | Description |
  |-----------|-------------|
  | Create | Create an assistant with model, voice, server, monitor, hook, analysis, and artifact fields |
  | Get | Retrieve an assistant by ID |
  | List | List assistants |
  | Update | Update an assistant |
  | Delete | Delete an assistant |

  ### Phone Numbers

  | Operation | Description |
  |-----------|-------------|
  | Buy | Provision or import a phone number |
  | Get | Retrieve a phone number by ID |
  | List | List phone numbers |
  | Update | Update provider, assistant/squad/workflow routing, and server webhook settings |
  | Delete | Delete or release a phone number |

  Supported provider shapes include `vapi`, `twilio`, `telnyx`, `vonage`, and `byo-phone-number`. Provider-specific fields can be passed through **Advanced Raw Body (JSON)**.

  ### Squads

  | Operation | Description |
  |-----------|-------------|
  | Create | Create a squad for multi-assistant routing |
  | Get | Retrieve a squad by ID |
  | List | List squads |
  | Update | Update squad members and overrides |
  | Delete | Delete a squad |

  ### Tools

  | Operation | Description |
  |-----------|-------------|
  | Create | Create tools with structured fields or Raw Body |
  | Get | Retrieve a tool by ID |
  | List | List tools |
  | Update | Update a tool |
  | Delete | Delete a tool |

  The node exposes common fields for function/webhook tools, code tools, call-control tools, query/MCP tools, Slack/SMS, Google, and GoHighLevel integrations. It supports all current Vapi tool types via explicit fields and Raw Body. For newly added tool types, pass them directly as JSON via **Raw Body** according to the official tools documentation.

  ### Files

  | Operation | Description |
  |-----------|-------------|
  | Upload / Create | Upload a file from binary data, text content, or a URL |
  | Get | Retrieve a file by ID |
  | List | List files |
  | Update | Update mutable file fields such as name |
  | Delete | Delete a file |

  Files can be used as inputs to assistant knowledge bases, tools, and other assistant-side artifacts. n8n workflows can manage the full file lifecycle and then reference file IDs/URLs in assistant or tool Raw Body payloads.

  ## Installation

  ### In n8n

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

  ### Via npm

  ```bash
  npm install n8n-nodes-vapiai
  ```

  ## Credentials

  1. Go to **Credentials -> New**
  2. Search for **Vapi API**
  3. Enter your API key from the [Vapi Dashboard](https://dashboard.vapi.ai)

  All requests use:

  ```http
  Authorization: Bearer <VAPI_API_KEY>
  ```

  Base URL:

  ```text
  https://api.vapi.ai
  ```

  ## Raw Body Behavior

  Create and update operations use structured fields first, then merge **Advanced Raw Body (JSON)** last. That means Raw Body top-level keys override structured values.

  Example: if the node UI sets `assistantId` but Raw Body contains `{"assistantId":"new_assistant_id"}`, the request sent to Vapi uses `new_assistant_id`.

  ## Examples

  ### Create a Function Tool

  ```json
  {
    "type": "function",
    "function": {
      "name": "get_weather",
      "description": "Get current weather for a location",
      "parameters": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "description": "City name"
          }
        },
        "required": ["location"]
      }
    },
    "server": {
      "url": "https://your-server.com/weather"
    }
  }
  ```

  ### Attach a New Assistant to an Existing Phone Number

  Use **Phone Number -> Update** and set Raw Body:

  ```json
  {
    "assistantId": "new_assistant_id"
  }
  ```

  ### Update a Phone Number Server URL

  Use **Phone Number -> Update** with `provider` set to `twilio` and server fields in the UI, or pass Raw Body:

  ```json
  {
    "provider": "twilio",
    "server": {
      "url": "https://your-n8n.example/webhook/vapi",
      "timeoutSeconds": 20,
      "headers": {
        "x-vapi-secret": "shared-secret"
      }
    }
  }
  ```

  ### Create a Squad with Handoff Behavior

  ```json
  {
    "name": "front-desk-routing",
    "members": [
      {
        "assistantId": "front_desk_assistant_id",
        "assistantOverrides": {
          "firstMessage": "Thanks for calling. How can I help?"
        }
      },
      {
        "assistantId": "billing_assistant_id",
        "assistantOverrides": {
          "firstMessage": "I can help with billing."
        }
      }
    ],
    "membersOverrides": {
      "serverMessages": ["tool-calls", "end-of-call-report"]
    }
  }
  ```

  ### Workflow Ideas

  - Inbound call from a Vapi phone number -> Vapi Trigger -> n8n processes the payload and updates a CRM -> optional SMS or email follow-up.
  - Outbound campaign setup using Calls + Files, with a knowledge-base file uploaded from n8n and monitoring artifacts tracked in dashboards.
  - Assistant with code tools and GoHighLevel/Slack integration tools triggered by voice, orchestrated from n8n.
  - Compliance workflow that periodically calls **Call -> Delete Data** after your retention period.

  ## Vapi Trigger

  1. Add a **Vapi Trigger** node to your workflow
  2. Copy the generated Webhook URL
  3. Set it as the Server URL in Vapi at the org, assistant, phone number, or tool level
  4. Optionally enable **Verify Secret Header**

  Webhook registration is manual: n8n exposes the URL, and you copy it into the Vapi dashboard. The trigger does not create or delete Vapi server URLs automatically.

  The trigger supports **All Events** mode. In this mode every Vapi event is forwarded to n8n and the output includes a normalized `json.type` field so you can branch with an IF or Switch node.

  Common event types include:

  - `conversation-update`
  - `end-of-call-report`
  - `tool-calls`
  - `tool-calls-result`
  - `status-update`
  - `speech-update`
  - `transcript`
  - `transfer-destination-request`
  - `transfer-update`
  - `handoff-destination-request`
  - `assistant-request`
  - `knowledge-base-request`
  - `voice-request`
  - `assistant.started`
  - `assistant.speechStarted`
  - `workflow.node.started`
  - `chat.created`
  - `session.created`
  - `call.deleted`
  - `call.delete.failed`

  ### Secret Header Verification

  Enable **Verify Secret Header** when Vapi is configured to send a shared secret header. The trigger rejects requests unless the configured header name and value match. This is useful for protecting public n8n webhook URLs.

  ## Development

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

  This repository's `prepublishOnly` script runs build and lint before publishing.

  ## Resources

  - [Vapi Documentation](https://docs.vapi.ai)
  - [Vapi API Reference](https://docs.vapi.ai/api-reference)
  - [Vapi Tools](https://docs.vapi.ai/tools)
  - [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Starts an n8n workflow when Vapi sends webhook events, especially server/client message events from voice AI agents and calls.","capabilities":["Receive Vapi webhook events","Trigger workflows from Vapi server/client message events","Process inbound call payloads from Vapi phone numbers","Enable downstream automation such as CRM updates, SMS, email follow-ups, and compliance workflows"],"authentication":"Vapi API key via Bearer token is used for Vapi credentials; incoming webhook security can be handled by configuring Vapi server webhook headers such as a shared secret.","commonUseCases":["Trigger an n8n workflow when an inbound Vapi call event is received","Process Vapi call payloads and update a CRM","Send SMS or email follow-ups after Vapi call events","Receive assistant/tool-related server messages for workflow automation"],"limitations":[],"relatedNodes":["Vapi","Webhook"]}


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

updated_at: 2026-07-14 14:40:34
author_name: pullbay
author_github_url: https://github.com/Pullbay/
npm_package_name: n8n-nodes-pullbay
npm_version: 1.0.1
community_fetched_at: 2026-07-14T14:40:34.678Z
ai_summary_generated_at: 2026-07-14 15:01:34
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "appStore",
      "options": [
        {
          "name": "App Store",
          "value": "appStore"
        },
        {
          "name": "DuckDuckGo",
          "value": "duckDuckGo"
        },
        {
          "name": "Google News",
          "value": "googleNews"
        },
        {
          "name": "Google Play",
          "value": "googlePlay"
        },
        {
          "name": "Google Search",
          "value": "googleSearch"
        },
        {
          "name": "YouTube",
          "value": "youTube"
        }
      ],
      "description": "The service to use",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "fetchApp",
      "options": [
        {
          "name": "Fetch App",
          "value": "fetchApp",
          "action": "Get app details",
          "description": "Get app details by ID or bundle ID"
        },
        {
          "name": "Fetch Developer",
          "value": "fetchDeveloper",
          "action": "Get developer apps",
          "description": "Get apps by a developer"
        },
        {
          "name": "Fetch Reviews",
          "value": "fetchReviews",
          "action": "Get reviews",
          "description": "Get reviews for an app"
        },
        {
          "name": "Fetch Similar Apps",
          "value": "fetchSimilarApps",
          "action": "Get similar apps",
          "description": "Get similar apps"
        },
        {
          "name": "Search Apps",
          "value": "searchApps",
          "action": "Search apps",
          "description": "Search for apps"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "appStore"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search the web",
          "description": "Search the web"
        },
        {
          "name": "Search Images",
          "value": "searchImages",
          "action": "Search images",
          "description": "Search for images"
        },
        {
          "name": "Search News",
          "value": "searchNews",
          "action": "Search news",
          "description": "Search for news"
        },
        {
          "name": "Search Videos",
          "value": "searchVideos",
          "action": "Search videos",
          "description": "Search for videos"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "duckDuckGo"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "newsByCategory",
      "options": [
        {
          "name": "News By Category",
          "value": "newsByCategory",
          "action": "Get news by category",
          "description": "Get news articles by category"
        },
        {
          "name": "Search News",
          "value": "searchNews",
          "action": "Search news",
          "description": "Search for news articles"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "googleNews"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "fetchApp",
      "options": [
        {
          "name": "Fetch App",
          "value": "fetchApp",
          "action": "Get app details",
          "description": "Get app details by package name"
        },
        {
          "name": "Fetch Data Safety",
          "value": "fetchDataSafety",
          "action": "Get data safety",
          "description": "Get data safety information for an app"
        },
        {
          "name": "Fetch Permissions",
          "value": "fetchPermissions",
          "action": "Get permissions",
          "description": "Get permissions for an app"
        },
        {
          "name": "Fetch Reviews",
          "value": "fetchReviews",
          "action": "Get reviews",
          "description": "Get reviews for an app"
        },
        {
          "name": "Fetch Similar Apps",
          "value": "fetchSimilarApps",
          "action": "Get similar apps",
          "description": "Get similar apps"
        },
        {
          "name": "Search Apps",
          "value": "searchApps",
          "action": "Search apps",
          "description": "Search for apps"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "googlePlay"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search the web",
          "description": "Search the web via Google"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "googleSearch"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "fetchChannel",
      "options": [
        {
          "name": "Fetch Channel",
          "value": "fetchChannel",
          "action": "Get channel details",
          "description": "Get channel details"
        },
        {
          "name": "Fetch Comments",
          "value": "fetchComments",
          "action": "Get video comments",
          "description": "Get comments for a video"
        },
        {
          "name": "Fetch Trending",
          "value": "fetchTrending",
          "action": "Get trending videos",
          "description": "Get trending videos"
        },
        {
          "name": "Fetch Video",
          "value": "fetchVideo",
          "action": "Get video details",
          "description": "Get video details"
        },
        {
          "name": "Fetch Videos by Hashtag",
          "value": "fetchHashtag",
          "action": "Get videos by hashtag",
          "description": "Get videos by hashtag"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search YouTube",
          "description": "Search YouTube"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "youTube"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Fetch App",
      "value": "fetchApp",
      "action": "Get app details",
      "description": "Get app details by ID or bundle ID",
      "resource": "appStore"
    },
    {
      "name": "Fetch Developer",
      "value": "fetchDeveloper",
      "action": "Get developer apps",
      "description": "Get apps by a developer",
      "resource": "appStore"
    },
    {
      "name": "Fetch Reviews",
      "value": "fetchReviews",
      "action": "Get reviews",
      "description": "Get reviews for an app",
      "resource": "appStore"
    },
    {
      "name": "Fetch Similar Apps",
      "value": "fetchSimilarApps",
      "action": "Get similar apps",
      "description": "Get similar apps",
      "resource": "appStore"
    },
    {
      "name": "Search Apps",
      "value": "searchApps",
      "action": "Search apps",
      "description": "Search for apps",
      "resource": "appStore"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search the web",
      "description": "Search the web",
      "resource": "duckDuckGo"
    },
    {
      "name": "Search Images",
      "value": "searchImages",
      "action": "Search images",
      "description": "Search for images",
      "resource": "duckDuckGo"
    },
    {
      "name": "Search News",
      "value": "searchNews",
      "action": "Search news",
      "description": "Search for news",
      "resource": "duckDuckGo"
    },
    {
      "name": "Search Videos",
      "value": "searchVideos",
      "action": "Search videos",
      "description": "Search for videos",
      "resource": "duckDuckGo"
    },
    {
      "name": "News By Category",
      "value": "newsByCategory",
      "action": "Get news by category",
      "description": "Get news articles by category",
      "resource": "googleNews"
    },
    {
      "name": "Search News",
      "value": "searchNews",
      "action": "Search news",
      "description": "Search for news articles",
      "resource": "googleNews"
    },
    {
      "name": "Fetch App",
      "value": "fetchApp",
      "action": "Get app details",
      "description": "Get app details by package name",
      "resource": "googlePlay"
    },
    {
      "name": "Fetch Data Safety",
      "value": "fetchDataSafety",
      "action": "Get data safety",
      "description": "Get data safety information for an app",
      "resource": "googlePlay"
    },
    {
      "name": "Fetch Permissions",
      "value": "fetchPermissions",
      "action": "Get permissions",
      "description": "Get permissions for an app",
      "resource": "googlePlay"
    },
    {
      "name": "Fetch Reviews",
      "value": "fetchReviews",
      "action": "Get reviews",
      "description": "Get reviews for an app",
      "resource": "googlePlay"
    },
    {
      "name": "Fetch Similar Apps",
      "value": "fetchSimilarApps",
      "action": "Get similar apps",
      "description": "Get similar apps",
      "resource": "googlePlay"
    },
    {
      "name": "Search Apps",
      "value": "searchApps",
      "action": "Search apps",
      "description": "Search for apps",
      "resource": "googlePlay"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search the web",
      "description": "Search the web via Google",
      "resource": "googleSearch"
    },
    {
      "name": "Fetch Channel",
      "value": "fetchChannel",
      "action": "Get channel details",
      "description": "Get channel details",
      "resource": "youTube"
    },
    {
      "name": "Fetch Comments",
      "value": "fetchComments",
      "action": "Get video comments",
      "description": "Get comments for a video",
      "resource": "youTube"
    },
    {
      "name": "Fetch Trending",
      "value": "fetchTrending",
      "action": "Get trending videos",
      "description": "Get trending videos",
      "resource": "youTube"
    },
    {
      "name": "Fetch Video",
      "value": "fetchVideo",
      "action": "Get video details",
      "description": "Get video details",
      "resource": "youTube"
    },
    {
      "name": "Fetch Videos by Hashtag",
      "value": "fetchHashtag",
      "action": "Get videos by hashtag",
      "description": "Get videos by hashtag",
      "resource": "youTube"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search YouTube",
      "description": "Search YouTube",
      "resource": "youTube"
    }
  ]

npm_readme:
  # n8n-nodes-pullbay

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

  Pullbay is a data API that gives you structured access to public data from the Apple App Store, Google Play, Google Search, Google News, DuckDuckGo, and YouTube — no scraping infrastructure required.

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

  To install from the n8n GUI:

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

  Alternatively, install it manually:

  ```bash
  npm install n8n-nodes-pullbay
  ```

  ## Operations

  The Pullbay node is organized into resources, each exposing a set of operations.

  ### App Store

  - **Fetch App** — Get app details by App ID or Bundle ID.
  - **Fetch Developer** — Get all apps published by a developer.
  - **Fetch Reviews** — Get reviews for an app (sortable by recent or helpful).
  - **Fetch Similar Apps** — Get apps similar to a given app.
  - **Search Apps** — Search the App Store for apps.

  ### Google Play

  - **Fetch App** — Get app details by package name.
  - **Fetch Data Safety** — Get the data safety information for an app.
  - **Fetch Permissions** — Get the permissions requested by an app.
  - **Fetch Reviews** — Get reviews for an app (sortable by newest, rating, or helpfulness).
  - **Fetch Similar Apps** — Get apps similar to a given app.
  - **Search Apps** — Search Google Play for apps (filter by free/paid).

  ### Google Search

  - **Search** — Search the web via Google with country, language, and safe search options.

  ### Google News

  - **News By Category** — Get news articles by category (business, technology, sport, and more).
  - **Search News** — Search for news articles, with optional URL resolution.

  ### DuckDuckGo

  - **Search** — Search the web.
  - **Search Images** — Search for images.
  - **Search News** — Search for news.
  - **Search Videos** — Search for videos.

  All DuckDuckGo operations support region selection, pagination offset, safe search, and time range filtering.

  ### YouTube

  - **Fetch Channel** — Get channel details by ID, handle, or channel URL.
  - **Fetch Comments** — Get comments for a video (sortable by top or latest).
  - **Fetch Trending** — Get trending videos by country.
  - **Fetch Video** — Get video details (video or shorts).
  - **Fetch Videos by Hashtag** — Get videos for a given hashtag.
  - **Search** — Search YouTube for videos, channels, or playlists, with rich filters (duration, features, upload date, sort by, and more).

  ## Credentials

  You need a Pullbay account and an API key to use this node.

  1. Sign up at [Pullbay](https://pullbay.com) and obtain your API key from your dashboard.
  2. In n8n, create a new **Pullbay API** credential.
  3. Enter your **API Key**. The key is sent with each request via the `x-api-key` header.
  4. Optionally adjust the **Base URL** (defaults to `https://dashboard.pullbay.com`).

  See the [Pullbay documentation](https://docs.pullbay.com/) for more details.

  ## Compatibility

  Requires n8n with `n8nNodesApiVersion` 1. Tested against recent n8n releases. This node can also be used as an [AI tool](https://docs.n8n.io/advanced-ai/) within agent workflows.

  ## Usage

  1. Add the **Pullbay** node to your workflow.
  2. Select a **Resource** (for example, App Store).
  3. Select an **Operation** (for example, Search Apps).
  4. Fill in the required parameters and any optional **Additional Fields** (such as country or language).
  5. Execute the workflow to retrieve structured data.

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

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Pullbay Website](https://pullbay.com)
  - [Pullbay API Documentation](https://docs.pullbay.com/)

ai_documentation_summary:
  {"purpose":"The Pullbay node lets n8n workflows access structured public data through the Pullbay API. It supports data retrieval and search across the Apple App Store, Google Play, Google Search, Google News, DuckDuckGo, and YouTube.","capabilities":["Fetch Apple App Store app details by App ID or Bundle ID","Fetch Apple App Store developer apps, reviews, similar apps, and app search results","Fetch Google Play app details by package name","Fetch Google Play data safety information, permissions, reviews, similar apps, and app search results","Search Google web results with country, language, and safe search options","Retrieve Google News articles by category or search query","Search DuckDuckGo web, images, news, and videos with region, pagination, safe search, and time range filters","Fetch YouTube channel details, video details, comments, trending videos, hashtag videos, and search results","Use as an AI tool within n8n agent workflows"],"authentication":"API key required. Create a Pullbay API credential in n8n using a Pullbay API key, sent via the x-api-key header. Base URL is optional and defaults to https://dashboard.pullbay.com.","commonUseCases":["Monitor app store reviews and ratings for mobile apps","Research competitors across the Apple App Store and Google Play","Collect app metadata, permissions, and data safety information","Run automated Google, Google News, or DuckDuckGo searches","Track YouTube videos, channels, comments, trending content, and hashtag activity"],"limitations":["Requires a Pullbay account and API key","Requires n8n with n8nNodesApiVersion 1"],"relatedNodes":[]}


node_type: n8n-nodes-evolution-api.evolutionapi
package_name: n8n-nodes-evolution-api
display_name: evolutionapi
description: A Evolution API é um hub de canais com foco no WhatsApp
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:35
author_name: oriondesign
author_github_url: git+https://github.com/oriondesign2015/n8n-nodes-evolution-api.git
npm_package_name: n8n-nodes-evolution-api
npm_version: 1.0.4
community_fetched_at: 2026-07-14T14:40:35.993Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  ![image](https://github.com/user-attachments/assets/813b7b34-377c-42e8-9f1a-12e27e682c7f)

  <p align="center"><br>
  Este Community Nodes é uma solução 100% gratuita, criada com o intuito de simplificar e auxiliar toda a comunidade a integrar e utilizar ao máximo os principais recursos oferecidos pela <b>Evolution API v2.2+</b> em seus projetos no N8N. <b>Desenvolvido por OrionDesign.</b>
  </p>
  <br>
  	
  <div align="center">
    <img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.npmjs.org%2Fdownloads%2Fpoint%2Flast-year%2Fn8n-nodes-evolution-api&query=downloads&style=for-the-badge&label=Total%20de%20Downloads&labelColor=%230d1117&color=%23359514&cacheSeconds=30&link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2Fn8n-nodes-evolution-api" alt="Dynamic JSON Badge">
  </div>
  <br>
  </p>
  <p align="center">
    <a href="https://oriondesign.art.br/whatsapp1"><img src="https://github.com/user-attachments/assets/5a469114-2054-4f01-85b2-51a282518658" alt=”SetupOrion” ></a>     
    <a href="https://oriondesign.art.br/whatsapp2"><img src="https://github.com/user-attachments/assets/3e3580a9-ae8e-4209-84fc-cfc1c03a8f12" alt=”SetupOrion” ></a>     
    <a href="https://oriondesign.art.br/whatsapp3"><img src="https://github.com/user-attachments/assets/91aa7733-c09c-474f-9483-54cb678213d2" alt=”SetupOrion” ></a>
  </p>


  <h1></h1>

  <h3>⚙️ Requisitos</h3>

  Para utilizar o nosso **Community Node**, é necessário atender aos seguintes requisitos:  
  - **N8N** na versão **1.54.4** ou superior  
  - **Evolution API** na versão **2.2.0** ou superior  

  <h1></h1>

  <h3>📌 Recursos Disponíveis</h3>

  <h3>Instância</h3>
  🖥️ Este recurso oferece acesso completo às principais funcionalidades relacionadas às instâncias da Evolution API. Ele permite realizar operações essenciais, como criar novas instâncias, conectar-se a elas, obter informações detalhadas, personalizar comportamentos, monitorar presença, reiniciar e até mesmo excluir instâncias de forma prática e eficiente.
  <br>
  <details>
    <summary><b>Lista de operações</b></summary>
  	<details>
    	<summary>   ✅ <b> Criar Instancia</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Gerar Qr-Code</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Buscar Instancia</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Definir Comportamento</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Definir Presença</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Definir Proxy</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Buscar Proxy</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Desconectar WhatsApp</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Deletar Instancia</b></summary>
  	</details>
  </details>

  <h3> Mensagem</h3>
  ✉️ Este recurso concentra todas as funcionalidades relacionadas ao envio e gerenciamento de mensagens através da Evolution API. Com ele, você pode enviar diversos tipos de conteúdo como textos, imagens, vídeos, áudios, documentos, contatos, listas interativas, botões e até mesmo mensagens PIX. Cada tipo de mensagem possui opções avançadas como delay, mentions, replies e formatações especiais. O recurso foi desenvolvido para proporcionar uma experiência completa de comunicação, permitindo explorar ao máximo os recursos nativos do WhatsApp de forma simples e eficiente.
  <br>
  <details>
    <summary><b>Lista de operações</b></summary>
  	<details>
    	<summary>   ✅ <b> Enviar Texto</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Enviar Imagem</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Enviar Video</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Enviar Audio</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Enviar Documento</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Enviar Enquete</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Enviar Contato</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Enviar Lista</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Enviar Botão</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Enviar Pix</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Enviar Status</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Reagir a Mensagem</b></summary>
  	</details>
  </details>

  <h3>Grupo</h3>
  👥 Com este recurso, você conta com um conjunto completo de funcionalidades para gerenciamento de grupos no WhatsApp por meio da Evolution API. Ele abrange desde a criação e administração de grupos até o gerenciamento de participantes, configuração de permissões, links de convite e mensagens temporárias. Tudo foi projetado para oferecer controle eficiente e simplificado na administração de grupos.
  <br>
  <details>
    <summary><b>Lista de operações</b></summary>
  	<details>
    	<summary>   ✅ <b> Criar Grupo</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Atualizar Imagem do Grupo</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Atualizar Nome do Grupo</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Atualizar Descrição do Grupo</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Atualizar Configurações do Grupo</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Atualizar Membros</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Buscar Link de convite do Grupo</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Revogar Link de convite do Grupo</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Enviar Link de Convite do Grupo</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Encontrar Participantes</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Mensagens Temporarias</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Sair do Grupo</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Entrar no Grupo</b></summary>
  	</details>
  </details>

  <h3>Chat</h3>
  💬 Este recurso disponibiliza um conjunto abrangente de ferramentas para o gerenciamento de conversas e interações utilizando a Evolution API. Com ele, é possível verificar números, enviar e gerenciar mensagens, manipular arquivos de mídia, controlar status de leitura, administrar contatos e monitorar presença. Todas as operações são desenvolvidas para proporcionar um controle completo e eficiente das comunicações, facilitando a gestão tanto de conversas individuais quanto em grupo.
  <br>
  <details>
    <summary><b>Lista de operações</b></summary>
  	<details>
    	<summary>   ✅ <b> Verificar Numero</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Ler Mensagem</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Gerenciar Arquivoo</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Marcar como Não lido</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Deletar Mensagem</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Buscar Foto de Perfil</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Obter Midia em Base64</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Editar Mensagem</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Enviar Presença</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Bloquear Contato</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Buscar Contatos</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Procurar Mensagens</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Procurar Status</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Procurar Chats</b></summary>
  	</details>
  </details>

  <h3>Evento</h3>
  ⚡ Este recurso oferece mecanismos avançados para integração e monitoramento em tempo real das atividades da Evolution API. Ele permite configurar e gerenciar Webhooks e RabbitMQ, possibilitando o acompanhamento de eventos como mensagens recebidas, alterações em grupos, status de conexão e muito mais. Essas funcionalidades foram projetadas para garantir uma comunicação ágil e automatizada entre sua aplicação e a API, promovendo respostas imediatas a diferentes eventos do WhatsApp.
  <br>
  <details>
    <summary><b>Lista de operações</b></summary>
  	<details>
    	<summary>   ✅ <b> Webhook</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> RabbitMQ</b></summary>
  	</details>
  </details>

  <h3>Integração</h3>
  🔗 Este recurso disponibiliza uma ampla gama de conectores para integrar a Evolution API a diversas plataformas e serviços externos. Entre as possibilidades estão conexões com Chatwoot para atendimento ao cliente, Evolution Bot para automações, Typebot para fluxos conversacionais, além de integrações com Flowise e Dify para soluções de inteligência artificial. Essas integrações ampliam as capacidades da API, permitindo criar soluções robustas e automatizadas para diferentes cenários de negócios.
  <br>
  <details>
    <summary><b>Lista de operações</b></summary>
  	<details>
    	<summary>   ✅ <b> Chatwoot</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Evolution Bot</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Typebot</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Dify</b></summary>
  	</details>
  	<details>
    	<summary>   ✅ <b> Floise</b></summary>
  	</details>
  </details>

  <h1></h1>

  <h3>🤝 Contribuição</h3>

  Contribua para o crescimento deste projeto! Você pode ajudar de diversas formas:  
  - **Pull Requests**: Envie melhorias, correções ou novas funcionalidades.  
  - **Issues**: Relate problemas ou sugira novas ideias.  
  - **Sugestões**: Compartilhe suas opiniões e feedbacks.  
  - **Documentação**: Ajude a melhorar ou expandir a documentação existente.  

  <h1></h1>

  <h3>📌 Principais contribuidores</h3>
  <a align="center" href="https://github.com/oriondesign2015/n8n-nodes-evolution-api/graphs/contributors">
    <img src="https://contrib.rocks/image?repo=oriondesign2015/n8n-nodes-evolution-api" />
  </a>

  <h1></h1>
  <a href="https://star-history.com/#oriondesign2015/SetupOrion&Date">
   <picture>
     <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=oriondesign2015/SetupOrion&type=Date&theme=dark" />
     <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=oriondesign2015/SetupOrion&type=Date" />
     <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=oriondesign2015/SetupOrion&type=Date" />
   </picture>
  </a>

  <h1></h1>
  <p align="center">
  Desenvolvido com ❤️ por OrionDesign
  </p>

ai_documentation_summary:
  {"purpose":"A n8n community node that provides full integration with Evolution API v2.2+ to manage WhatsApp instances, send various message types, and administer groups.","capabilities":["Create, connect, search, and delete WhatsApp instances","Generate QR codes and configure proxy settings","Set instance behavior and presence status","Send text, images, videos, audio, documents, contacts, lists, buttons, PIX, and status messages","React to messages","Create, update, and manage WhatsApp groups (name, description, image, settings)","Manage group members and revoke/send invite links","Send temporary messages and handle group entry/exit","Support for mentions, replies, and message delays"],"authentication":"None (uses Evolution API credentials configured in the node settings)","commonUseCases":["Automated WhatsApp marketing campaigns","Customer support automation","Business messaging with media and interactive elements","Group management and moderation","Payment processing via PIX messages"],"limitations":["Requires n8n version 1.54.4 or higher","Requires Evolution API version 2.2.0 or higher","Free community node (may lack official support or updates)"],"relatedNodes":["whatsapp","evolution-api","webhook"]}


node_type: n8n-nodes-mcp.mcp
package_name: n8n-nodes-mcp
display_name: mcp
description: MCP nodes for n8n
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:35
author_name: GitHub Actions
author_github_url: git+https://github.com/nerding-io/n8n-nodes-mcp.git
npm_package_name: n8n-nodes-mcp
npm_version: 0.1.37
community_fetched_at: 2026-07-14T14:40:35.994Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  [![Verified on MseeP](https://mseep.ai/badge.svg)](https://mseep.ai/app/bd76f121-1c8f-4f5d-9c65-1eac5d81b6af)

  # n8n-nodes-mcp-client

  > **Important Note:**
  > The Server-Sent Events (SSE) transport is deprecated and replaced by the new HTTP Streamable transport. SSE remains available for legacy compatibility, but HTTP Streamable is now the recommended method for all new implementations.

  This is an n8n community node that lets you interact with Model Context Protocol (MCP) servers in your n8n workflows.

  MCP is a protocol that enables AI models to interact with external tools and data sources in a standardized way. This node allows you to connect to MCP servers, access resources, execute tools, and use prompts.

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

  [Installation](#installation)
  [Credentials](#credentials)
  [Environment Variables](#environment-variables)
  [Operations](#operations)
  [Using as a Tool](#using-as-a-tool)
  [Compatibility](#compatibility)
  [Resources](#resources)

  ## Getting Started

  Official Quickstart Video:

  [![MCP Client Node Quickstart](/assets/mcp-n8n.png)](https://youtu.be/1t8DQL-jUJk)



  ### Community Videos

  Shoutout to all the creators of the following n8n community videos that are great resources for learning how to use this node:

  - [Is MCP the Future of N8N AI Agents? (Fully Tested!)](https://youtu.be/sb5hCcFYPIE)
  - [Connect N8N AI Agents to EVERYTHING using MCP?](https://youtu.be/tTDRgkD-120)
  - [Build an AI Agent That Can Use Any Tool (MCP in n8n Tutorial)](https://www.youtube.com/watch?v=SVZe2rdhYmA)
  - [The NEW N8N MCP is an Absolute Game-Changer (Brave Search MCP)](https://youtu.be/RxXS_FpJyGM)
  - [MCP & n8n Automation: The Ultimate Guide for MCP AI Agents (2025)](https://www.youtube.com/watch?v=mbQsnrxHPwE)
  - [REVOLUÇÃO na criação de AGENTES no N8N com o MCP Server!!!](https://www.youtube.com/watch?v=zgH85dJcs5c) (Portuguese)

  If you have a great video that you'd like to share, please let me know and I'll add it to the list!

  #### Interested a deeper dive into MCP?

  Check out my YouTube Series [MCP Explained](https://www.youtube.com/playlist?list=PLjOCx_PNfJ4S_oOSqrMi6t9_x1GllvQZO) for more information about the Model Context Protocol.

  ### Security Assessment
  [![MseeP.ai Security Assessment Badge](https://mseep.net/pr/nerding-io-n8n-nodes-mcp-badge.png)](https://mseep.ai/app/nerding-io-n8n-nodes-mcp)


  ## Installation

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

  Also pay attention to Environment Variables for [using tools in AI Agents](#using-as-a-tool). It's mandatory to set the `N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE` environment variable to `true` if you want to use the MCP Client node as a tool in AI Agents.

  ## Credentials

  The MCP Client node supports three types of credentials to connect to an MCP server:

  ### Command-line Based Transport (STDIO)

  ![MCP Client STDIO Credentials](./assets/credentials.png)

  - **Command**: The command to start the MCP server
  - **Arguments**: Optional arguments to pass to the server command
  - **Environment Variables**: Variables to pass to the server in NAME=VALUE format

  ### HTTP Streamable Transport (Recommended)

  - **HTTP Streamable URL**: The HTTP endpoint that supports streaming responses (e.g., http://localhost:3001/stream)
  - **Additional Headers**: Optional headers to send with requests (format: name:value, one per line)

  HTTP Streamable is the recommended and modern method for all new integrations, providing better efficiency and flexibility compared to SSE.

  #### Example: Using a Local MCP Server with HTTP Streamable

  This example shows how to connect to a locally running MCP server using HTTP Streamable:

  1. Start a local MCP server that supports HTTP Streamable:
     ```bash
     npx @modelcontextprotocol/server-example-streamable
     ```

  2. Configure MCP Client credentials:
     - In the node settings, select **Connection Type**: `HTTP Streamable`
     - Create new credentials of type **MCP Client (HTTP Streamable) API**
     - Set **HTTP Streamable URL**: `http://localhost:3001/stream`
     - Add any required headers for authentication

  3. Create a workflow using the MCP Client node:
     - Add an MCP Client node
     - Set the Connection Type to `HTTP Streamable`
     - Select your HTTP Streamable credentials
     - Execute the workflow to see the results

  ### Server-Sent Events (SSE) Transport (Deprecated, still available for legacy use)

  - **SSE URL**: The URL of the SSE endpoint (default: http://localhost:3001/sse)
  - **Messages Post Endpoint**: Optional custom endpoint for posting messages if different from the SSE URL
  - **Additional Headers**: Optional headers to send with requests (format: name:value, one per line)

  > **Deprecated:** SSE is deprecated and will not receive further updates, but remains available for legacy compatibility. For new projects, use HTTP Streamable.

  #### Example: Using a Local MCP Server with SSE (legacy)

  This example shows how to connect to a locally running MCP server using Server-Sent Events (SSE):

  1. Start a local MCP server that supports SSE:
     ```bash
     npx @modelcontextprotocol/server-example-sse
     ```

  2. Configure MCP Client credentials:
     - In the node settings, select **Connection Type**: `Server-Sent Events (SSE)`
     - Create new credentials of type **MCP Client (SSE) API**
     - Set **SSE URL**: `http://localhost:3001/sse`
     - Add any required headers for authentication

  3. Create a workflow using the MCP Client node:
     - Add an MCP Client node
     - Set the Connection Type to `Server-Sent Events (SSE)`
     - Select your SSE credentials
     - Execute the workflow to see the results

  > **Note:** For new projects, HTTP Streamable is strongly recommended.

  ## Environment Variables

  The MCP Client node supports passing environment variables to MCP servers using the command-line based transport in two ways:

  ### 1. Using the Credentials UI

  You can add environment variables directly in the credentials configuration:

  ![Environment Variables in Credentials](./assets/credentials-envs.png)

  This method is useful for individual setups and testing. The values are stored securely as credentials in n8n.

  ### 2. Using Docker Environment Variables

  For Docker deployments, you can pass environment variables directly to your MCP servers by prefixing them with `MCP_`:

  ```yaml
  version: '3'

  services:
    n8n:
      image: n8nio/n8n
      environment:
        - MCP_BRAVE_API_KEY=your-api-key-here
        - MCP_OPENAI_API_KEY=your-openai-key-here
        - MCP_CUSTOM_SETTING=some-value
      # other configuration...
  ```

  These environment variables will be automatically passed to your MCP servers when they are executed.

  ### Example: Using Brave Search MCP Server

  This example shows how to set up and use the Brave Search MCP server:

  1. Install the Brave Search MCP server:
     ```bash
     npm install -g @modelcontextprotocol/server-brave-search
     ```

  2. Configure MCP Client credentials:
     - **Command**: `npx`
     - **Arguments**: `-y @modelcontextprotocol/server-brave-search`
     - **Environment Variables**: `BRAVE_API_KEY=your-api-key` Add a variables (space comma or newline separated)

  3. Create a workflow that uses the MCP Client node:
     - Add an MCP Client node
     - Select the "List Tools" operation to see available search tools
     - Add another MCP Client node
     - Select the "Execute Tool" operation
     - Choose the "brave_search" tool
     - Set Parameters to: `{"query": "latest AI news"}`

  ![Brave Search Example](./assets/brave-search-example.png)

  The node will execute the search and return the results in the output.

  ### Example: Multi-Server Setup with AI Agent

  This example demonstrates how to set up multiple MCP servers in a production environment and use them with an AI agent:

  1. Configure your docker-compose.yml file:

  ```yaml
  version: '3'

  services:
    n8n:
      image: n8nio/n8n
      environment:
        # MCP server environment variables
        - MCP_BRAVE_API_KEY=your-brave-api-key
        - MCP_OPENAI_API_KEY=your-openai-key
        - MCP_SERPER_API_KEY=your-serper-key
        - MCP_WEATHER_API_KEY=your-weather-api-key

        # Enable community nodes as tools
        - N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
      ports:
        - "5678:5678"
      volumes:
        - ~/.n8n:/home/node/.n8n
  ```

  2. Create multiple MCP Client credentials in n8n:

     **Brave Search Credentials**:
     - Command: `npx`
     - Arguments: `-y @modelcontextprotocol/server-brave-search`

     **OpenAI Tools Credentials**:
     - Command: `npx`
     - Arguments: `-y @modelcontextprotocol/server-openai`

     **Web Search Credentials**:
     - Command: `npx`
     - Arguments: `-y @modelcontextprotocol/server-serper`

     **Weather API Credentials**:
     - Command: `npx`
     - Arguments: `-y @modelcontextprotocol/server-weather`

  3. Create an AI Agent workflow:
     - Add an AI Agent node
     - Enable MCP Client as a tool
     - Configure different MCP Client nodes with different credentials
     - Create a prompt that uses multiple data sources

  ![Multi-Server Setup](./assets/multi-server-example.png)

  Example AI Agent prompt:
  ```
  I need you to help me plan a trip. First, search for popular destinations in {destination_country}.
  Then, check the current weather in the top 3 cities.
  Finally, find some recent news about travel restrictions for these places.
  ```

  With this setup, the AI agent can use multiple MCP tools across different servers, all using environment variables configured in your Docker deployment.

  ## Operations

  The MCP Client node supports the following operations:

  ![MCP Client Operations](./assets/operations.png)

  - **Execute Tool** - Execute a specific tool with parameters
  - **Get Prompt** - Get a specific prompt template
  - **List Prompts** - Get a list of available prompts
  - **List Resources** - Get a list of available resources from the MCP server
  - **List Tools** - Get a list of available tools
  - **Read Resource** - Read a specific resource by URI

  ### Example: List Tools Operation

  ![List Tools Example](./assets/list-tools.png)

  The List Tools operation returns all available tools from the MCP server, including their names, descriptions, and parameter schemas.

  ### Example: Execute Tool Operation

  ![Execute Tool Example](./assets/execute-tool.png)

  The Execute Tool operation allows you to execute a specific tool with parameters. Make sure to select the tool you want to execute from the dropdown menu.

  ## Using as a Tool

  This node can be used as a tool in n8n AI Agents. To enable community nodes as tools, you need to set the `N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE` environment variable to `true`.

  ### Setting the Environment Variable

  **If you're using a bash/zsh shell:**
  ```bash
  export N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
  n8n start
  ```

  **If you're using Docker:**
  Add to your docker-compose.yml file:
  ```yaml
  environment:
    - N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
  ```

  **If you're using the desktop app:**
  Create a `.env` file in the n8n directory:
  ```
  N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
  ```

  **If you want to set it permanently on Mac/Linux:**
  Add to your `~/.zshrc` or `~/.bash_profile`:
  ```bash
  export N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
  ```

  Example of an AI Agent workflow results:

  ![AI Agent Example](./assets/execute-tool-result.png)

  After setting this environment variable and restarting n8n, your MCP Client node will be available as a tool in AI Agent nodes.

  ## Compatibility

  - Requires n8n version 1.0.0 or later
  - Compatible with MCP Protocol version 1.0.0 or later
  - Supports both STDIO and SSE transports for connecting to MCP servers
  - SSE transport requires a server that implements the MCP Server-Sent Events specification

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Model Context Protocol Documentation](https://modelcontextprotocol.io/docs/)
  * [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk)
  * [MCP Transports Overview](https://modelcontextprotocol.io/docs/concepts/transports)
  * [Using SSE in MCP](https://github.com/modelcontextprotocol/typescript-sdk/blob/main/src/client/sse.ts)

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with Model Context Protocol (MCP) servers within workflows, allowing connection to external tools and data sources.","capabilities":["Connect to MCP servers via HTTP Streamable transport (recommended)","Connect to MCP servers via Server-Sent Events (SSE) transport (legacy)","Connect to MCP servers via Command-line/STDIO transport","Execute tools defined in MCP servers","Access resources from MCP servers","Use prompts with MCP servers","Pass environment variables to MCP servers (STDIO only)","Configure custom headers for API requests"],"authentication":"None - Uses credentials for connection configuration (URL, command, headers) rather than secret authentication","commonUseCases":["Integrating AI agents with external tools via MCP","Connecting n8n workflows to local MCP servers","Building AI agents that can use any tool through MCP","Accessing data sources through standardized MCP protocol"],"limitations":["Server-Sent Events (SSE) transport is deprecated and not recommended for new implementations","HTTP Streamable transport is the only recommended method for new projects","Environment variable passing is only supported with Command-line/STDIO transport"],"relatedNodes":["n8n-nodes-core.httpRequest","n8n-nodes-core.code"]}


node_type: n8n-nodes-pdfkit.pdfkit
package_name: n8n-nodes-pdfkit
display_name: pdfkit
description: Node for using PDFKit to tranform images into PDF, more functionality may be added later.
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:35
author_name: bramknuever
author_github_url: git+https://github.com/bramkn/n8n-nodes-pdfkit.git
npm_package_name: n8n-nodes-pdfkit
npm_version: 0.1.2
community_fetched_at: 2026-07-14T14:40:35.995Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  ![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)

  # n8n-nodes-pdfkit

  Use this node to convert images to PDF. At the moment only one option available to comnvert all images on a single item to a pdf. (will do this for each item)
  ![image](https://github.com/bramkn/n8n-nodes-pdfkit/assets/74856333/b18cf61e-f1fb-4165-859f-c95a01ecb982)


  ## License

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

ai_documentation_summary:
  {"purpose":"Converts images into PDF format using PDFKit, processing all images on a single item to create a single PDF document.","capabilities":["Convert images to PDF","Process multiple images per item","Generate one PDF per input item"],"authentication":"None","commonUseCases":["Batch converting image files to PDF documents","Creating PDF reports from image data"],"limitations":["Limited to converting all images on a single item","Additional functionality may be added in the future"],"relatedNodes":["n8n-nodes-core.pdf","n8n-nodes-core.binary"]}


node_type: n8n-nodes-openpix.openpix
package_name: n8n-nodes-openpix
display_name: openpix
description: n8n nodes for OpenPix
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:35
author_name: fersilva
author_github_url: git+https://github.com/open-pix/n8n-nodes-openpix.git
npm_package_name: n8n-nodes-openpix
npm_version: 0.3.0
community_fetched_at: 2026-07-14T14:40:35.996Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # n8n-nodes-openpix

  ![OpenPix N8N logo](img/openpix-n8n.png)

  [![NPM Version](https://badge.fury.io/js/n8n-nodes-openpix.svg?style=flat)](https://npmjs.org/package/n8n-nodes-openpix)

  [![https://nodei.co/npm/n8n-nodes-openpix.png?downloads=true&downloadRank=true&stars=true](https://nodei.co/npm/n8n-nodes-openpix.png?downloads=true&downloadRank=true&stars=true)](https://www.npmjs.com/package/n8n-nodes-openpix)

  n8n nodes for create charges and payments with [OpenPix](https://openpix.com.br)

  ## How to use

  ### Community Nodes (Recommended)

  1. Go to Settings > Community Nodes.
  2. Select Install.
  3. Enter `n8n-nodes-openpix` in _Enter npm package name._ field.
  4. Agree to the risks of using community nodes: select I understand the risks of installing unverified code from a public source.
  5. Select Install.

  ### Manual installation

  To get started install the package in your n8n root directory:

  `npm install n8n-nodes-openpix`

  ### Setup

  1. Go to Credentials.
  2. Select `Add Credential` button.
  3. Select `OpenPix API` from the _Search for app_ dropdown.
  4. Get your OpenPix API key from [API Getting Started](https://developers.openpix.com.br/docs/apis/api-getting-started).
  5. Enter your OpenPix API key in the _API Key_ field.

  ## API Reference

  - [OpenPix API](https://developers.openpix.com.br/docs/apis/api-getting-started)

  ## Contributing

  1. Fork it (<https://github.com/open-pix/n8n-nodes-openpix/fork>)
  2. Create your feature branch (`git checkout -b feature/fooBar`)
  3. Commit your changes (`git commit -m 'feat(fooBar) Add some fooBar'`)
  4. Push to the branch (`git push origin feature/fooBar`)
  5. Create a new Pull Request

ai_documentation_summary:
  {"purpose":"This n8n node enables the creation of charges and payments using the OpenPix Brazilian payment gateway API.","capabilities":["Create charges","Process payments","Integrate with OpenPix API"],"authentication":"API Key required","commonUseCases":["Accepting credit card payments in Brazil","Processing Pix transfers","Automated checkout workflows"],"limitations":["Limited to OpenPix-specific payment operations","Requires valid OpenPix API credentials"],"relatedNodes":["n8n-nodes-http.request","n8n-nodes-currency.convert"]}


node_type: n8n-nodes-bitrix.bitrix
package_name: n8n-nodes-bitrix
display_name: bitrix
description: n8n node for bitrix rest api
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:35
author_name: dewocom
author_github_url: git+https://github.com/dewocom/n8n-nodes-bitrix.git
npm_package_name: n8n-nodes-bitrix
npm_version: 1.3.0
community_fetched_at: 2026-07-14T14:40:35.997Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # n8n-nodes-bitrix

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

  **Bitrix24** is a powerful collaboration platform that includes CRM, tasks, projects, communications, and more — all in a unified workspace. This node allows you to interact with core Bitrix24 entities such as contacts, leads, companies, and deals.

  [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 in the n8n community nodes documentation.

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

  After installing the node, you can use it like any other node. n8n displays the node in search results in the **Nodes** panel.


  ---

  ## Operations

  This node supports the following Bitrix24 modules and operations:

  ### Modules

  * `crm.company`
  * `crm.contact`
  * `crm.deal`
  * `crm.lead`
  * (more coming soon)

  ### Supported operations per entity:

  * **Create** (Add a new entity)
  * **Get** (Get an entity by ID)
  * **Update** (Update an entity by ID)
  * **Delete** (Delete an entity by ID)
  * **List** (Query/filter entities)
  * **Get Fields Description** (Fetch metadata for custom fields)

  Each operation supports:

  * **Field-by-field input** or **raw JSON** input
  * Filtering, sorting, and field selection for list queries

  ---

  ## Credentials

  This node supports two authentication methods:

  ### 1. Bitrix Webhook

  Use a webhook URL from Bitrix24 (e.g. `https://yourdomain.bitrix24.ru/rest/1/abc123xyz/`).

  To set this up:

  * In Bitrix24, go to **Developer tools → Webhooks**
  * Create an inbound webhook and select required access
  * Copy the webhook URL and use it in credentials

  ### 2. OAuth2 (Bitrix24 REST API)

  If you want to use OAuth2:

  * Create an application in Bitrix24
  * Use the client ID, secret, and domain in the OAuth2 credential
  * Supports automatic token refresh and secure API access

  ---

  ## Compatibility

  * **Tested on:** `1.92.2`

  Known limitations:

  * Some custom fields in Bitrix may require extra formatting depending on field type.

  ---

  ## Usage

  When creating or updating records, you can choose to:

  * Fill fields one-by-one (dynamic list of available fields is loaded)
  * Or provide the full data in raw JSON

  When listing entities, you can:

  * Use simple filters (field, operator, value)
  * Or provide complex JSON filters (e.g., combined filters, nested conditions)

  Field names are loaded dynamically based on selected entity (e.g., `crm.contact`), making it easier to work with custom fields.

  ---

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Bitrix24 REST API documentation](https://training.bitrix24.com/rest_help/)
  * [Bitrix24 Webhooks Guide](https://apidocs.bitrix24.com/local-integrations/local-webhooks.html)

  ---

  ## Version history

  | Version  | Changes                                                                                                                    |
  |----------|----------------------------------------------------------------------------------------------------------------------------|
  | 1.0.0    | Initial release with support for CRM module (contact, company, deal, lead), including create/get/update/delete/list/fields |
  | 1.1.0    | Added support for both OAuth2 and Webhook auth, improved filter and JSON input modes                                       |
  | 1.2.x    | Bug-fixes. Added Custom Method                                                                                             |
  | 1.3.x    | Added Universal Methods for Core Elements ( crm.item.* )                                                                   |
  | Upcoming | Support for tasks, users, and activity logging                                                                             |

ai_documentation_summary:
  {"purpose":"Enables interaction with the Bitrix24 REST API to manage CRM entities like contacts, companies, deals, and leads within n8n workflows.","capabilities":["Create new CRM entities","Retrieve entities by ID","Update existing entities","Delete entities by ID","List and filter entities with sorting","Fetch custom field metadata","Support for both field-by-field and raw JSON input","Complex JSON filtering and nested conditions"],"authentication":"Bitrix Webhook URL or OAuth2","commonUseCases":["Synchronizing Bitrix24 contacts with other systems","Automating lead management workflows","Updating deal statuses based on external triggers","Batch processing companies or leads"],"limitations":["Some custom fields may require extra formatting depending on field type","Support for tasks, users, and activity logging is upcoming"],"relatedNodes":[]}


node_type: @devlikeapro/n8n-nodes-chatwoot.chatwoot
package_name: @devlikeapro/n8n-nodes-chatwoot
display_name: chatwoot
description: n8n node to connect with ChatWoot
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:35
author_name: devlikeapro
author_github_url: git+https://github.com/devlikeapro/n8n-nodes-chatwoot.git
npm_package_name: @devlikeapro/n8n-nodes-chatwoot
npm_version: 1.0.2
community_fetched_at: 2026-07-14T14:40:35.999Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # @devlikeapro/n8n-nodes-chatwoot

  <p align="center">
    <img src="./chatwoot.png" width='150px'/>
    <img src="./n8n.png" width='150px'/>
  </p>

  Automate your
  [**ChatWoot**](https://www.chatwoot.com/)
  workflows with
  [**n8n**](https://n8n.io/)
  !

  ![screenshot](node.png)

  [![npm version](https://img.shields.io/npm/v/@devlikeapro/n8n-nodes-chatwoot.svg)](https://www.npmjs.com/package/@devlikeapro/n8n-nodes-chatwoot)

  - GitHub: [devlikeapro/n8n-nodes-chatwoot](http://github.com/devlikeapro/n8n-nodes-chatwoot)
  - npm: [@devlikeapro/n8n-nodes-chatwoot](https://www.npmjs.com/package/@devlikeapro/n8n-nodes-chatwoot)
  - ChatWoot API reference: [https://www.chatwoot.com/developers/api/](https://www.chatwoot.com/developers/api/)
  - 👉 Generated from
    [ChatWoot OpenAPI](https://www.chatwoot.com/developers/api/)
    using
    [**devlikeapro/n8n-openapi-node**](https://github.com/devlikeapro/n8n-openapi-node)

  # Tables of Contents

  <!-- toc -->

  - [Installation](#installation)
  - [Usage](#usage)
    * [Credentials](#credentials)
      + [Platform](#platform)
      + [User](#user)
      + [Inbox](#inbox)
  - [Development](#development)
  - [Support the project](#support-the-project)

  <!-- tocstop -->

  # Installation
  Install [the community node package in your n8n instance](https://docs.n8n.io/integrations/community-nodes/installation/gui-install/):
  ```
  @devlikeapro/n8n-nodes-chatwoot
  ```

  # Usage
  1. Install the community package to your n8n instance.
  2. Add **ChatWoot API** **credentials** in **n8n**.
  3. Create a new workflow with the **ChatWoot** node.

  ## Credentials
  There are few types of credentials (accounts) that you can use to authenticate with ChatWoot API.

  For different ChatWoot API Endpoints you'll need different credentials - please
  refer to the [ChatWoot API documentation](https://www.chatwoot.com/developers/api/) for more information.

  We suggest you create **ChatWoot API** credentials in **n8n** for each type of account and name it `ChatWoot - {TYPE}` 
  for better clarity.

  ![](./screenshots/n8n-credentials.png)

  ### Platform
  This token can be obtained by the system admin after creating a platformApp. This token should be used to provision agent bots, accounts, users and their roles.

  ![](./screenshots/chatwoot-platform-token.png)

  ### User
  This token can be obtained by visiting the profile page or via rails console.
  ![](./screenshots/chatwoot-profile-token.png)

  or **Super Admin** token in some cases

  ![](./screenshots/chatwoot-admin-token.png)

  ### Inbox
  This token can be obtained by visiting the inbox settings page.

  ![](./screenshots/chatwoot-inbox-token.png)

  # Development
  The node is generated from the
  [ChatWoot OpenAPI](https://www.chatwoot.com/developers/api/)
  using
  [**devlikeapro/n8n-openapi-node**](https://github.com/devlikeapro/n8n-openapi-node).

  Likely the fix should be done in the OpenAPI specification file or in the generator itself.

  # Support the project

  You can support the project by donating a small amount to help us improve the project even more.
  - [https://patreon.com/devlikeapro](https://patreon.com/devlikeapro)

ai_documentation_summary:
  {"purpose":"An n8n community node that enables automation of ChatWoot workflows by connecting n8n instances to the ChatWoot API for managing conversations, bots, and accounts.","capabilities":["Manage platform-level operations (provisioning agents, accounts, users, roles)","Manage user-level operations via profile tokens","Manage inbox-level operations via inbox settings tokens","Support Super Admin token authentication","Automate ChatWoot API endpoints based on OpenAPI specification"],"authentication":"API Token (Platform, User, Inbox, or Super Admin tokens obtained from ChatWoot dashboard)","commonUseCases":["Automating customer support responses","Managing ChatWoot bot configurations","Syncing user data between n8n and ChatWoot","Automating inbox management tasks"],"limitations":["Requires specific API tokens for different scopes (Platform, User, Inbox)","Some fixes may require changes to the OpenAPI specification or generator"],"relatedNodes":["devlikeapro/n8n-openapi-node","ChatWoot API node"]}


node_type: n8n-nodes-a2a.a2a
package_name: n8n-nodes-a2a
display_name: a2a
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: bruno.growthsales
author_github_url: git+https://github.com/bruno-growthsales/n8n-nodes-a2a.git
npm_package_name: n8n-nodes-a2a
npm_version: 0.4.0
community_fetched_at: 2026-07-14T14:40:35.999Z
ai_summary_generated_at: 2026-07-06 09:55:11
description:
  n8n community node for A2A (Account to Account) transfers, account management, and Google Agent2Agent protocol communication with advanced features including file upload, custom JSON fields, custom requests, and streaming support

npm_readme:
  # n8n-nodes-a2a

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

  This is an n8n community node that provides A2A (Account to Account) operations for transfers and account management.

  A2A enables secure account-to-account transfers and comprehensive account management through a unified API interface.

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

  ## 🚀 Installation

  The A2A node can be installed using multiple methods:

  ### Option 1: Via npm (Recommended)

  ```bash
  # In your n8n directory
  npm install n8n-nodes-a2a

  # Restart n8n
  pm2 restart n8n
  ```

  ### Option 2: Automated Script

  ```bash
  # Install from npm (default)
  curl -fsSL https://raw.githubusercontent.com/your-username/n8n-nodes-a2a/main/install-a2a-node.sh | bash

  # Install from GitHub
  curl -fsSL https://raw.githubusercontent.com/your-username/n8n-nodes-a2a/main/install-a2a-node.sh | bash -s -- --github
  ```

  ### Option 3: Manual Installation from GitHub

  ```bash
  # In your n8n directory
  npm install https://github.com/your-username/n8n-nodes-a2a.git

  # Restart n8n
  pm2 restart n8n
  ```

  ### Option 4: Docker

  ```dockerfile
  FROM n8nio/n8n:latest

  USER root
  RUN cd /usr/local/lib/node_modules/n8n && \
      npm install n8n-nodes-a2a
  USER node
  ```

  For detailed installation instructions including troubleshooting, see:
  - **Quick Guide**: [INSTALL_SELFHOST.md](INSTALL_SELFHOST.md)  
  - **Detailed Guide**: [docs/N8N_SELFHOST_INSTALL.md](docs/N8N_SELFHOST_INSTALL.md)

  ## Operations

  This node provides comprehensive A2A functionality through three main resources:

  ### Transfer Resource
  - **Create Transfer**: Create a new account-to-account transfer
  - **Get Transfer**: Get details of a specific transfer by ID
  - **List Transfers**: Get a list of transfers with filtering options
  - **Cancel Transfer**: Cancel a pending transfer

  ### Account Resource
  - **Get Account**: Get details of a specific account
  - **List Accounts**: Get a list of accounts with filtering options
  - **Get Balance**: Get account balance information
  - **Get Transactions**: Get account transaction history with date filtering

  ### Agent Resource (Google Agent2Agent Protocol)
  - **Send Message**: Send a message to an agent and receive complete response (tasks/send)
  - **Send Message with Streaming**: Send a message with real-time streaming response (tasks/sendSubscribe)
  - **Get Agent Card**: Retrieve agent capabilities from .well-known/agent-card endpoint

  ## Credentials

  You need to authenticate with the A2A API using the following credentials:

  1. **API Key**: Your A2A API key
  2. **API Secret**: Your A2A API secret  
  3. **Environment**: Choose between Production or Sandbox
  4. **Base URL**: Automatically set based on environment selection

  ### Setting up credentials

  1. Sign up for an A2A account and obtain your API credentials
  2. In n8n, create new credentials using the "A2A API" credential type
  3. Enter your API Key and Secret
  4. Select the appropriate environment (Sandbox for testing, Production for live operations)
  5. Test the credentials to ensure they work correctly

  ## Usage Examples

  ### Creating a Transfer

  ```javascript
  {
    "resource": "transfer",
    "operation": "create",
    "amount": 100.50,
    "currency": "USD",
    "fromAccountId": "acc_123456789",
    "toAccountId": "acc_987654321",
    "reference": "Service Payment",
    "description": "Monthly service payment"
  }
  ```

  ### Checking Account Balance

  ```javascript
  {
    "resource": "account",
    "operation": "getBalance",
    "accountId": "acc_123456789"
  }
  ```

  ### Listing Recent Transfers

  ```javascript
  {
    "resource": "transfer",
    "operation": "getMany",
    "limit": 50,
    "status": "completed"
  }
  ```

  ### Getting Transaction History

  ```javascript
  {
    "resource": "account",
    "operation": "getTransactions",
    "accountId": "acc_123456789",
    "startDate": "2024-01-01T00:00:00Z",
    "endDate": "2024-12-31T23:59:59Z",
    "transactionLimit": 100
  }
  ```

  ### Agent2Agent Protocol Examples

  #### Send Standard Message

  ```javascript
  {
    "resource": "agent",
    "operation": "send",
    "agentUrl": "https://agent-api.example.com",
    "message": "Hello! Can you help me with my query?",
    "sessionId": "session-123",
    "taskId": "task-456",
    "acceptedOutputModes": ["text", "image"],
    "additionalOptions": {
      "apiKey": "your-api-key",
      "responseFormat": "message",
      "role": "user",
      "timeout": 30000
    }
  }
  ```

  #### Send Message with File Upload

  ```javascript
  {
    "resource": "agent",
    "operation": "send",
    "agentUrl": "https://agent-api.example.com",
    "message": "Please analyze this document for me",
    "includeFiles": true,
    "files": {
      "file": [{
        "inputFieldName": "data",
        "fileName": "document.pdf", 
        "mimeType": "application/pdf"
      }]
    },
    "acceptedOutputModes": ["text", "code"],
    "additionalOptions": {
      "apiKey": "your-api-key",
      "responseFormat": "full",
      "maxRetries": 3,
      "retryDelay": 2000
    }
  }
  ```

  #### Send Message with Streaming

  ```javascript
  {
    "resource": "agent",
    "operation": "sendSubscribe",
    "agentUrl": "https://agent-api.example.com",
    "message": "Please provide a detailed analysis...",
    "sessionId": "session-123",
    "taskId": "task-789",
    "acceptedOutputModes": ["text", "image", "code"],
    "additionalOptions": {
      "apiKey": "your-api-key",
      "role": "user",
      "timeout": 60000,
      "streamProcessing": "final",
      "responseFormat": "auto",
      "headers": {
        "parameter": [
          {
            "name": "X-Custom-Header",
            "value": "custom-value"
          }
        ]
      }
    }
  }
  ```

  #### Custom JSON-RPC Request

  ```javascript
  {
    "resource": "agent",
    "operation": "custom",
    "agentUrl": "https://agent-api.example.com",
    "customMethod": "tasks/analyze",
    "customParams": {
      "message": {
        "role": "user",
        "parts": [{
          "type": "text",
          "text": "Custom analysis request"
        }]
      },
      "sessionId": "custom-session",
      "analysisType": "deep",
      "outputFormat": "json"
    },
    "additionalOptions": {
      "apiKey": "your-api-key",
      "timeout": 45000,
      "validateSSL": true
    }
  }
  ```

  #### Get Agent Capabilities

  ```javascript
  {
    "resource": "agent",
    "operation": "getAgentCard",
    "agentUrl": "https://agent-api.example.com"
  }
  ```

  ### JSON-RPC 2.0 Protocol

  The Agent resource implements the Google Agent2Agent protocol using JSON-RPC 2.0:

  #### Request Format
  ```json
  {
    "jsonrpc": "2.0",
    "method": "tasks/send",
    "params": {
      "message": {
        "role": "user",
        "parts": [
          {
            "type": "text",
            "text": "Your message here"
          }
        ]
      },
      "sessionId": "session-123",
      "id": "task-456"
    },
    "id": "call-789"
  }
  ```

  #### Success Response
  ```json
  {
    "jsonrpc": "2.0",
    "result": {
      "status": {
        "message": {
          "parts": [
            {
              "type": "text",
              "text": "Agent response here..."
            }
          ]
        }
      }
    },
    "id": "call-789"
  }
  ```

  #### Error Response
  ```json
  {
    "jsonrpc": "2.0",
    "error": {
      "code": -32603,
      "message": "Error message"
    },
    "id": "call-789"
  }
  ```

  ## Supported Currencies

  - USD (US Dollar)
  - EUR (Euro)
  - GBP (British Pound)
  - BRL (Brazilian Real)

  ## Error Handling

  The node includes comprehensive error handling for common scenarios:

  - **401 Unauthorized**: Invalid API credentials
  - **404 Not Found**: Account or transfer not found
  - **400 Bad Request**: Invalid parameters or insufficient funds
  - **429 Rate Limited**: Too many requests

  ## Compatibility

  - **Minimum n8n version**: 1.0.0
  - **Node.js version**: 20.15+
  - **Tested with n8n versions**: 1.0.0+

  ## Development

  ### Prerequisites

  - Node.js 20.15 or higher
  - npm or yarn
  - n8n installed globally

  ### Building

  ```bash
  npm run build
  ```

  ### Linting

  ```bash
  npm run lint
  npm run lintfix  # Auto-fix issues
  ```

  ### Development Mode

  ```bash
  npm run dev  # Watch mode for development
  ```

  ### Project Structure

  ```
  n8n-nodes-a2a/
  ├── credentials/
  │   └── A2aApi.credentials.ts     # API credentials definition
  ├── nodes/
  │   └── A2a/
  │       ├── A2a.node.ts          # Main node implementation
  │       ├── TransferDescription.ts # Transfer operations
  │       ├── AccountDescription.ts  # Account operations
  │       ├── a2a.svg              # Node icon
  │       └── A2a.node.json        # Node metadata
  ├── examples/
  │   └── A2A_Example_Workflow.json # Example workflow
  └── docs/
      └── INSTALLATION.md           # Detailed installation guide
  ```

  ## Example Workflow

  Import the example workflow from `examples/A2A_Example_Workflow.json` to see:

  1. How to create a transfer
  2. How to check transfer status
  3. How to verify account balance
  4. Error handling best practices

  ## Contributing

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

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [A2A API Documentation](https://docs.a2a.com/api)
  * [A2A Authentication Guide](https://docs.a2a.com/authentication)
  * [Transfer API Reference](https://docs.a2a.com/transfers)
  * [Account API Reference](https://docs.a2a.com/accounts)
  * **Agent2Agent Protocol**:
    * [Google A2A Repository](https://github.com/google/A2A)
    * [A2A Testing Lab](https://a2a.to/)
    * [Agent2Agent Protocol Documentation](docs/AGENT2AGENT_PROTOCOL.md)
    * [JSON-RPC 2.0 Specification](https://www.jsonrpc.org/specification)

  ## Support

  For support and questions:

  1. **Documentation**: Check the [official A2A API docs](https://docs.a2a.com/api)
  2. **Agent2Agent Protocol**: See [Agent2Agent Documentation](docs/AGENT2AGENT_PROTOCOL.md)
  3. **Issues**: Report bugs on [GitHub Issues](https://github.com/bruno-growthsales/n8n-nodes-a2a/issues)
  4. **Community**: Join the [n8n community forum](https://community.n8n.io/)

  ## License

  [MIT](https://github.com/bruno-growthsales/n8n-nodes-a2a/blob/master/LICENSE.md)

  ## 🚀 Advanced Features

  ### File Upload Support
  - **Automatic Base64 encoding** of binary data
  - **Multiple file types** with custom MIME type detection  
  - **File name customization** and metadata preservation
  - **Integration with n8n binary data** system

  ### Advanced Authentication
  - **API Key support** with `x-api-key` header
  - **Custom headers** for specialized authentication
  - **SSL validation** control for development/testing

  ### Response Processing
  - **Multiple format options**: Auto, Full Response, Message Only, Status Only
  - **Streaming event processing**: Collect All, Final Only, Individual Events  
  - **Metadata inclusion** for debugging and monitoring

  ### Retry & Error Handling
  - **Configurable retry logic** (0-10 attempts)
  - **Custom retry delays** (100-10000ms)
  - **Automatic error categorization** with JSON-RPC error codes

  ### Output Modes
  - **Text**: Standard text responses
  - **Image**: Image generation and analysis
  - **Audio**: Audio processing capabilities  
  - **Video**: Video analysis and generation
  - **Code**: Code generation and analysis

  See [Advanced Features Documentation](docs/ADVANCED_FEATURES.md) for complete details.

  ## 📋 Funcionalidades

  ### Operações A2A Financeiras
  - **Transfer**: Transferências entre contas
  - **Account**: Consulta de informações de conta

  ### Protocolo Agent2Agent
  - **Agent Operations**: Comunicação completa com agentes IA via protocolo A2A
  - **Custom Requests**: Requisições JSON-RPC personalizadas
  - **File Upload**: Suporte a upload de arquivos com encoding base64
  - **Streaming**: Processamento de respostas em tempo real
  - **Authentication**: Autenticação via x-api-key

  ## 🤖 Agent2Agent Protocol

  Este nó suporta o protocolo Agent2Agent (A2A) do Google, permitindo comunicação padronizada entre agentes de IA.

  ### Recursos Avançados

  - **Custom JSON-RPC**: Construa requisições personalizadas
  - **File Upload**: Anexe arquivos com detecção automática de MIME type
  - **API Key Auth**: Autenticação segura via header x-api-key
  - **Multi-format Output**: Suporte a texto, imagem, áudio, vídeo, código
  - **Retry Logic**: Sistema robusto de tentativas
  - **Streaming Support**: Processar respostas em tempo real

  ### Exemplo de Uso

  ```javascript
  // Configuração básica
  {
    "operation": "send",
    "agentUrl": "https://agent.example.com",
    "message": "Analyze this data and provide insights",
    "responseFormat": "auto"
  }

  // Com upload de arquivo
  {
    "operation": "send", 
    "agentUrl": "https://agent.example.com",
    "message": "Process this image",
    "includeFiles": true,
    "files": "image.png",
    "responseFormat": "full"
  }
  ```

  ## 🔧 Criando Seu Próprio Servidor A2A

  Você pode criar seus próprios servidores Agent2Agent! Veja o guia completo em [docs/AGENT2AGENT_SERVER.md](./docs/AGENT2AGENT_SERVER.md).

  ### Exemplo Rápido

  Execute o servidor de exemplo:
  ```bash
  python examples/simple_a2a_server.py
  ```

  Teste com o cliente:
  ```bash
  python examples/test_a2a_client.py
  ```

  O servidor oferece:
  - 🔄 **Echo Skill**: Repete mensagens
  - 🧮 **Calculator**: Operações matemáticas básicas
  - 📋 **Agent Card**: Descoberta automática de capacidades
  - ✅ **Health Check**: Monitoramento de status

  ### Estrutura Básica

  ```python
  # Agent Card - Descreve capacidades
  AGENT_CARD = {
      "name": "Meu Agente",
      "description": "Descrição das funcionalidades",
      "skills": [
          {
              "id": "minha_skill",
              "name": "Minha Habilidade",
              "description": "O que esta skill faz"
          }
      ]
  }

  # Endpoint obrigatório - Agent Card
  @app.route("/.well-known/agent.json")
  def get_agent_card():
      return jsonify(AGENT_CARD)

  # Endpoint obrigatório - Processar tarefas
  @app.route("/tasks/send", methods=["POST"])
  def handle_task():
      task = request.get_json()
      # Processar tarefa aqui
      return jsonify(response)
  ```

  ## 📚 Documentação

  - [🔧 Instalação Completa](./INSTALLATION.md)
  - [🏠 Instalação Self-hosted](./INSTALL_SELFHOST.md)
  - [🤖 Protocolo Agent2Agent](./docs/AGENT2AGENT_PROTOCOL.md)
  - [⚡ Recursos Avançados](./docs/ADVANCED_FEATURES.md)
  - [🛠️ Criar Servidor A2A](./docs/AGENT2AGENT_SERVER.md)

  ## 🛠️ Desenvolvimento

  ```bash
  # Clone e configure
  git clone https://github.com/brunobs/n8n-node-a2a.git
  cd n8n-node-a2a

  # Instale dependências
  npm install

  # Build do projeto
  npm run build

  # Lint e format
  npm run lint
  npm run format

  # Testes
  npm test
  ```

  ## 📝 Exemplos

  ### Operações A2A Básicas
  ```javascript
  // Transfer operation
  {
    "resource": "transfer",
    "operation": "create",
    "amount": 100.50,
    "fromAccount": "12345",
    "toAccount": "67890"
  }
  ```

  ### Agent2Agent Avançado
  ```javascript
  // Enviar tarefa para agente
  {
    "resource": "agent",
    "operation": "send", 
    "agentUrl": "https://my-agent.com",
    "message": "Analyze sales data",
    "acceptedOutputModes": ["text", "image"],
    "maxRetries": 3
  }

  // Upload de arquivo
  {
    "resource": "agent",
    "operation": "send",
    "agentUrl": "https://my-agent.com", 
    "message": "Process this document",
    "includeFiles": true,
    "files": "document.pdf"
  }
  ```

  ## 🔗 Links Úteis

  - [Especificação Agent2Agent](https://google.github.io/A2A/specification/)
  - [Repositório Google A2A](https://github.com/google/A2A)
  - [n8n Documentation](https://docs.n8n.io/)
  - [Google Agent Development Kit](https://github.com/google/agent-development-kit)

  ## 🤝 Contribuindo

  Contribuições são bem-vindas! Por favor:

  1. Fork o repositório
  2. Crie uma branch para sua feature
  3. Faça commit das mudanças
  4. Execute os testes
  5. Abra um Pull Request

  ## 📄 Licença

  MIT License - veja [LICENSE.md](LICENSE.md) para detalhes.

  ## 🏷️ Versão

  **v0.3.0** - Recursos avançados Agent2Agent com upload de arquivos, autenticação e streaming.

  ### Changelog

  - **v0.3.0**: Recursos avançados A2A, custom requests, file upload
  - **v0.2.0**: Implementação completa do protocolo Agent2Agent
  - **v0.1.0**: Operações básicas A2A financeiras

  ---

  ⭐ **Se este projeto te ajudou, considere dar uma estrela no GitHub!**

ai_documentation_summary:
  {"purpose":"Provides A2A (Account to Account) API operations for transfers and account management, plus Google Agent2Agent protocol communication. It supports standard and streaming agent messages, file uploads, and custom request options.","capabilities":["Create, get, list, and cancel account-to-account transfers","Get account details, list accounts, retrieve balances, and fetch transaction history","Send Agent2Agent messages with complete responses","Send Agent2Agent messages with real-time streaming responses","Retrieve agent cards from a .well-known/agent-card endpoint","Support file uploads in agent message requests","Allow custom JSON-RPC requests and custom HTTP headers/options"],"authentication":"API key and API secret required via the A2A API credential type; environment selection between Sandbox and Production","commonUseCases":["Automating payment and transfer workflows","Checking balances and transaction history for account reconciliation","Integrating with Agent2Agent services for chatbot or agent communication","Sending documents or other files to agents for analysis","Testing A2A operations in sandbox before production use"],"limitations":["README is truncated, so some advanced operations and full option details are not visible"],"relatedNodes":["HTTP Request","Webhook","Google Gemini","OpenAI"]}


node_type: n8n-nodes-globals.globals
package_name: n8n-nodes-globals
display_name: globals
description: N8N community node that allows users to create global constants and use them in all their workflows
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: umanamente
author_github_url: git+https://github.com/umanamente/n8n-nodes-globals.git
npm_package_name: n8n-nodes-globals
npm_version: 1.1.0
community_fetched_at: 2026-07-14T14:40:36.000Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # <img src="nodes/GlobalConstants/globals-icon-60px.png"  height="60" style="margin-bottom: -20px;"> n8n-nodes-globals

  This is an n8n community node. It lets you create global constants that can be used in any workflow.

  * [Installation](#installation)  
  * [Usage](#usage)
  * [Version history](CHANGELOG.md)  

  ## Installation

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

  ## Usage

  This node uses N8N Credential to store the global variables.

  1. Add "`Global Constants`" node to your workflow.
     ![Global Constants node](./docs/images/usage/1_select_node.png)
  2. In the node configuration, either select an existing credential or create a new one.
  3. Select the format for your global constants:
     - Key-value pairs format: Use "name=value" pairs, one per line
     - JSON format: Provide constants as a JSON object
  4. Add your constants according to the chosen format:
     
     KeyKey-value pairs
     ![Define constants String](./docs/images/usage/2_define_constants_string.png)

     JSON
     ![Define constants](./docs/images/usage/2_define_constants_json.png)
  5. Use the global constants in your workflow
     ![Use constants](./docs/images/usage/3_use_node.png)

ai_documentation_summary:
  {"purpose":"A community node that creates and manages global constants accessible across all workflows in n8n.","capabilities":["Create global constants via key-value pairs","Create global constants via JSON objects","Store constants using n8n Credentials","Retrieve and use constants in any workflow"],"authentication":"n8n Credentials required","commonUseCases":["Storing configuration values across multiple workflows","Managing shared API keys or tokens","Defining reusable environment variables"],"limitations":["Requires manual credential setup for each workflow instance","No built-in versioning or rollback for constants"],"relatedNodes":["n8n-nodes-base.set","n8n-nodes-base.httpRequest","n8n-nodes-base.expression"]}


node_type: n8n-nodes-rd-station-crm.rdstationcrm
package_name: n8n-nodes-rd-station-crm
display_name: rdstationcrm
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: pexuleco
author_github_url: git+https://github.com/PedroHSGuimaraes/n8n-nodes-rd-station-crm.git
npm_package_name: n8n-nodes-rd-station-crm
npm_version: 2.2.1
community_fetched_at: 2026-07-14T14:40:36.001Z
ai_summary_generated_at: 2026-03-25 22:47:20
description:
  n8n community node for RD Station CRM: API v1 (private token) and API v2 (OAuth2) — contacts, deals, organizations, tasks, notes, pipelines, stages, products, custom fields, sources, campaigns, loss reasons, users, teams and a real webhook trigger.

npm_readme:
  # n8n-nodes-rd-station-crm

  Node community do [n8n](https://n8n.io/) para integrar seus fluxos com o **[RD Station CRM](https://www.rdstation.com/crm/)**.

  O RD Station CRM é o CRM de vendas usado para gerenciar contatos, negociações, funis e tarefas. Este pacote suporta **as duas versões da API**, selecionáveis no próprio node:

  - **API v1** — autenticação por **token** (privado, na query string).
  - **API v2** — autenticação por **OAuth2** (com refresh automático gerenciado pelo n8n).

  [n8n](https://n8n.io/) é uma plataforma de automação de fluxos com [licença fair-code](https://docs.n8n.io/reference/license/).

  [Instalação](#-instalação) · [Credenciais](#-credenciais) · [Nós e Operações](#-nós-e-operações) · [Trigger](#-trigger) · [Tool de IA](#-usar-como-tool-de-agente-de-ia) · [v1 vs v2](#-v1-ou-v2-qual-usar) · [Desenvolvimento](#️-desenvolvimento) · [Versões](#-versões)

  ---

  ## 🚀 Funcionalidades

  - **1 node unificado** — `RD Station CRM` com seletor **Recurso → Operação** (chega de um node por entidade). Mais um node de **gatilho** (`RD Station CRM Trigger`).
  - **Duas APIs no mesmo node** — campo **Authentication** para alternar entre **Access Token (API V1)** e **OAuth2 (API V2)**.
  - **OAuth2 pronto** — o **Redirect URL é gerado automaticamente pelo n8n a partir do domínio da sua instância** (igual ao "Google Drive OAuth2 API"). Basta colar essa URL no seu app do RD.
  - **Dropdowns dinâmicos** — funis, etapas, usuários, times, fontes, campanhas, motivos de perda, produtos e campos personalizados são carregados direto da sua conta: você escolhe pelo nome, sem copiar IDs.
  - **Return All** — toda operação *Get Many* pagina todos os resultados automaticamente (ou você limita a quantidade).
  - **Trigger de verdade** — registra um webhook por evento ao ativar o workflow e remove ao desativar.
  - **Usável como Tool de IA** — o node tem `usableAsTool: true`, então um **AI Agent** do n8n pode chamar qualquer operação (criar contato, mover negócio de etapa, buscar tarefas…) preenchendo os parâmetros sozinho via `$fromAI()`. Veja [Usar como Tool de Agente de IA](#-usar-como-tool-de-agente-de-ia).
  - **Zero dependências de runtime** — usa o `httpRequestWithAuthentication` do próprio n8n. Passa no ESLint `@n8n/eslint-plugin-community-nodes` (0 erros) e é publicado no npm **com provenance**.

  ## 📦 Instalação

  Siga o [guia de community nodes](https://docs.n8n.io/integrations/community-nodes/installation/) do n8n.

  No n8n, vá em **Settings → Community Nodes → Install** e digite:

  ```
  n8n-nodes-rd-station-crm
  ```

  > Requer uma instância n8n com `n8nNodesApiVersion` 1.

  ## 🔑 Credenciais

  O node aceita **dois tipos de credencial**, um para cada versão da API. Ao criar a credencial, escolha no seletor do topo entre **Access Token (API V1)** e **OAuth2 (API V2)**:

  ![Seleção de autenticação na credencial: Access Token (API V1) ou OAuth2 (API V2)](https://raw.githubusercontent.com/PedroHSGuimaraes/n8n-nodes-rd-station-crm/master/docs/credential-auth.png)

  No node, o campo **Authentication** define qual das duas credenciais será usada.

  ### 1. RD Station CRM API — token (API v1)

  Essa é a autenticação clássica, **igual às versões anteriores**, e é a opção **padrão** do node.

  1. Entre no RD Station CRM (é preciso um plano **Basic, Pro ou Advanced** com o **Modo Desenvolvedor** habilitado).
  2. Vá em **Configurações → Integrações → API**.
  3. Copie seu **token de usuário** (privado).
  4. No n8n, crie uma credencial **RD Station CRM API** e cole o token.

  O token é enviado como parâmetro `token` na query string de cada requisição. A credencial tem um **teste embutido** que chama `GET /token/check`, então dá pra validar antes de rodar o fluxo.

  ### 2. RD Station CRM OAuth2 API — OAuth2 (API v2)

  Para usar a **API v2**, mude o campo **Authentication** do node para **OAuth2 (API V2)** e crie uma credencial **RD Station CRM OAuth2 API**.

  1. Registre um app no [RD Station App Store — App Publisher](https://appstore.rdstation.com/pt-BR/publisher), apontando para o produto **RD Station CRM**.
  2. Copie o **OAuth Redirect URL** que aparece na credencial do n8n — ele é montado **automaticamente com o domínio da sua instância**, no formato:

     ```
     https://SEU-DOMINIO-N8N/rest/oauth2-credential/callback
     ```

     Cadastre essa URL como **redirect autorizado** no app do RD (precisa ser `https://`).
  3. Cole o **Client ID** e o **Client Secret** gerados na credencial e clique em **Connect / Sign in with RD Station**.

  Fluxo OAuth2 usado (você não precisa configurar isso manualmente — já vem pronto na credencial):

  | Item | Valor |
  | --- | --- |
  | Authorization URL | `https://accounts.rdstation.com/oauth/authorize` |
  | Access Token URL | `https://api.rd.services/oauth2/token` |
  | Credenciais do cliente | Enviadas no **body** (não em HTTP Basic) |
  | Scopes | Nenhum |
  | Base da API v2 | `https://api.rd.services/crm/v2` |

  O n8n cuida da **renovação do token** (incluindo a rotação do refresh-token do RD) automaticamente.

  > ⚠️ O refresh-token do RD expira após **14 dias de inatividade** — depois disso é preciso reconectar a credencial.

  ## 🧩 Nós e Operações

  O pacote traz **um node de ação** (`RD Station CRM`) com seletor **Recurso → Operação** e **um node de gatilho** (`RD Station CRM Trigger`).

  As operações disponíveis dependem da **Authentication** escolhida:

  ### Access Token (API V1)

  | Recurso | Operações |
  | --- | --- |
  | **Contact** (Contato) | Create, Get, Get Many, Update |
  | **Deal** (Negócio) | Create, Get, Get Many, Update, Get Contacts, Mark as Won, Mark as Lost, Move to Stage |
  | **Organization** (Organização) | Create, Get, Get Many, Update, Get Contacts |
  | **Task** (Tarefa) | Create, Get, Get Many, Update |
  | **Note** (Nota) | Create, Get Many |
  | **Pipeline** (Funil) | Create, Get, Get Many, Update |
  | **Stage** (Etapa) | Create, Get, Get Many, Update |
  | **Product** (Produto) | Create, Get, Get Many, Update |
  | **Deal Product** (Produto do Negócio) | Add, Get Many, Update, Remove |
  | **Custom Field** (Campo Personalizado) | Create, Get, Get Many, Update, Delete |
  | **Source** (Fonte) | Create, Get, Get Many, Update |
  | **Campaign** (Campanha) | Create, Get, Get Many, Update |
  | **Loss Reason** (Motivo de Perda) | Create, Get, Get Many, Update |
  | **User** (Usuário) | Get, Get Many, Get Current |
  | **Team** (Time) | Get, Get Many |
  | **Webhook** | Create, Get, Get Many, Update, Delete |

  ### OAuth2 (API V2)

  A API v2 cobre os recursos principais (envelope JSON:API `{ data }`, paginação por `links.next`):

  | Recurso | Operações |
  | --- | --- |
  | **Contact** (Contato) | Create, Get, Get Many, Update |
  | **Deal** (Negócio) | Create, Get, Get Many, Update, Mark as Won, Mark as Lost, Move to Stage |
  | **Organization** (Organização) | Create, Get, Get Many, Update |
  | **Task** (Tarefa) | Create, Get, Get Many, Update |
  | **Note** (Nota) | Create, Get Many |
  | **Custom Field** (Campo Personalizado) | Create, Get, Get Many, Update, Delete |

  **Destaques:**

  - Campos escolhidos pelo nome aceitam também uma **expressão** como alternativa (padrão "Name or ID" do n8n).
  - *Get Many* com **Return All** pagina tudo, ou você define um **Limit**.

  ### Exemplo — criar um negócio e movê-lo de etapa

  1. **RD Station CRM** → Recurso **Deal**, Operação **Create**. Defina um nome e escolha **Stage** e **Owner** pelos dropdowns.
  2. **RD Station CRM** → Recurso **Deal**, Operação **Move to Stage**, usando o ID retornado no node anterior.

  ## 🔔 Trigger

  O node **RD Station CRM Trigger** inicia um fluxo quando eventos acontecem no RD Station CRM. Em **Trigger On**, selecione um ou mais eventos (um webhook é registrado por evento ao **ativar** o workflow e removido ao **desativar**).

  > O trigger usa a credencial de **token (API v1)** — os webhooks são um recurso da API v1.

  Eventos suportados (23):

  | Entidade | Eventos |
  | --- | --- |
  | **Deal** (Negócio) | Created, Updated, Deleted |
  | **Contact** (Contato) | Created, Updated, Deleted |
  | **Organization** (Organização) | Created, Updated, Deleted |
  | **Product** (Produto) | Created, Updated, Deleted |
  | **Campaign** (Campanha) | Created, Updated, Deleted |
  | **Source** (Fonte) | Created, Updated, Deleted |
  | **Loss Reason** (Motivo de Perda) | Created, Updated, Deleted |
  | **Task** (Tarefa) | Created, Updated |

  > **Dica:** o RD entrega cada evento **pelo menos uma vez** e tenta de novo em caso de falha. Se você precisa de processamento exatamente-uma-vez, deduplique a jusante pelo `transaction_uuid` do payload.

  ## 🤖 Usar como Tool de Agente de IA

  O node `RD Station CRM` é **usável como tool** por nós de **AI Agent** do n8n (Tools Agent). Isso deixa o modelo **executar ações no seu CRM sozinho** — por exemplo: *"crie um contato chamado Maria com o e-mail maria@empresa.com e abra um negócio para ela no funil de Vendas"*.

  ### Como ligar (2 passos)

  1. **No servidor n8n**, habilite o uso de community nodes como tools (por segurança, vem **desligado por padrão**). Defina a variável de ambiente:

     ```bash
     N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
     ```

     | Instalação | Onde definir |
     | --- | --- |
     | **Docker / docker-compose** | Adicione em `environment:` do serviço n8n (ou no `.env`) e recrie o container (`docker compose up -d`). |
     | **npm / npx** | Exporte antes de subir: `export N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true && n8n start`. |
     | **n8n Cloud** | Já habilitado nos planos que suportam community nodes. |

     > Sem essa variável o node **não aparece** na lista de tools do AI Agent — é a causa nº 1 de "não acho o node como tool".

  2. **No workflow**, adicione um node **AI Agent**, conecte um **Chat Model** e, no conector **Tool**, adicione o **RD Station CRM**. Escolha o **Recurso** e a **Operação** que o agente pode usar (ex.: Contact → Create). Uma tool por operação é a prática recomendada.

  ### Deixe o modelo preencher os campos (`$fromAI`)

  Em cada campo do node em modo tool aparece o botão **"Let the model define this"**, que usa a expressão:

  ```
  {{ $fromAI('email', 'E-mail do contato a ser criado', 'string') }}
  ```

  - Assinatura: `$fromAI(key, description?, type?, defaultValue?)` — `key` de 1–64 caracteres (`[a-zA-Z0-9_-]`); `type` = `string` | `number` | `boolean` | `json`.
  - Você pode **misturar**: fixar alguns campos (ex.: sempre o mesmo funil) e deixar o modelo preencher outros (nome, e-mail, valor).
  - As **descrições de cada operação e campo** deste node foram escritas para o LLM entender o que cada uma faz e como preencher — quanto mais específico o seu prompt/System Message do agente, melhor o resultado.

  ### Boas práticas

  - **Restrinja o escopo:** exponha só as operações que o agente precisa (ex.: só *Create*/*Get Many* de Contact e Deal), em vez de liberar tudo.
  - **Credencial dedicada** com permissões mínimas para o agente.
  - **n8n atualizado:** versões antigas tinham um bug em que a tool de community node retornava resposta vazia para o agente ([n8n#26202](https://github.com/n8n-io/n8n/issues/26202)); já corrigido.
  - O **Trigger** (`RD Station CRM Trigger`) **não** é uma tool — triggers não podem ser usados por agentes (por design do n8n).

  ### Referências

  - [Tools Agent — n8n Docs](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/tools-agent)
  - [Let AI specify tool parameters (`$fromAI`) — n8n Docs](https://docs.n8n.io/advanced-ai/examples/using-the-fromai-function/)
  - [Variáveis de ambiente de nodes — n8n Docs](https://docs.n8n.io/hosting/configuration/environment-variables/nodes/)

  ## 🔀 v1 ou v2: qual usar?

  | | **API v1 (token)** | **API v2 (OAuth2)** |
  | --- | --- | --- |
  | Autenticação | Token privado do usuário | OAuth2 (app no RD App Store) |
  | Configuração | Mais simples (cola o token) | Requer registrar app + redirect `https://` |
  | Cobertura neste node | Completa (16 recursos + trigger) | Recursos principais (6 recursos) |
  | Webhooks/Trigger | ✅ | Use o trigger v1 |
  | Indicado para | Uso interno, scripts, começar rápido | Integrações distribuídas para vários clientes |

  Se você só precisa automatizar a sua própria conta, o **token (v1)** é o caminho mais rápido — e continua funcionando exatamente como antes. Use **OAuth2 (v2)** quando for publicar uma integração que vários clientes RD vão conectar.

  ## 🛠️ Desenvolvimento

  ```bash
  # Instalar dependências
  npm install

  # Compilar (tsc + cópia de ícones via gulp)
  npm run build

  # Modo watch
  npm run dev

  # Lint (ESLint + plugin de community nodes)
  npm run lint
  npm run lintfix

  # Formatar
  npm run format
  ```

  Estrutura resumida:

  ```
  n8n-nodes-rd-station-crm/
  ├── credentials/
  │   ├── RdStationCrmApi.credentials.ts        # token (v1)
  │   └── RdStationCrmOAuth2Api.credentials.ts  # OAuth2 (v2)
  ├── nodes/
  │   ├── RdStationCrm/            # node de ação (v1 + v2)
  │   │   ├── actions/            # recursos e operações (v1 e v2/)
  │   │   ├── methods/           # loadOptions (dropdowns dinâmicos)
  │   │   └── transport/         # index.ts (v1) e v2.ts (OAuth2)
  │   └── RdStationCrmTrigger/    # node de gatilho (webhooks v1)
  └── dist/                       # saída compilada (publicada)
  ```

  ## ✅ Compatibilidade

  - Requer n8n com `n8nNodesApiVersion` 1.
  - API v1: `https://crm.rdstation.com/api/v1` · API v2: `https://api.rd.services/crm/v2`.

  > **Atualizando da 1.x:** a versão 2.0.0 foi uma reescrita completa. Os 13 nós separados viraram **um único node `RD Station CRM`** (mais o trigger). Fluxos feitos com os nós 1.x precisam ser recriados com o novo node.

  ## 📚 Recursos

  - [Documentação de community nodes do n8n](https://docs.n8n.io/integrations/community-nodes/)
  - [Referência da API do RD Station CRM](https://developers.rdstation.com/reference)
  - [Autenticação da API v2 (OAuth2)](https://developers.rdstation.com/reference/crm-v2-authentication)

  ## 📈 Versões

  - **2.2.1** — **Menos alucinação da IA.** Fechamento de lacunas nas descrições: ~147 campos que estavam **sem descrição** ganharam descrição com formato + exemplo (e-mail, telefone, URL, preços, valores de custom field, aniversário…); todos os campos de **data** (`dateTime`) passam a indicar o formato exato **ISO 8601** com exemplo; e os campos de **enum** (`type: 'options'`) listam os **valores válidos** na descrição (ex.: `One of: call, email, meeting, task, whatsapp`). Reduz o espaço para o modelo inventar formato/valor ao preencher via `$fromAI()`.
  - **2.2.0** — **Otimização para uso como Tool de Agente de IA.** Descrições de todas as operações e campos reescritas para o LLM entender e preencher os parâmetros corretamente; descrição do node e dos recursos enriquecidas; categoria **AI → Tools** no codex; nova seção no README explicando o `N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true` e o `$fromAI()`. O node já expunha `usableAsTool: true` desde a 2.x.
  - **2.1.4** — Ícone passa a usar o **símbolo (marca) do RD Station** — quadrado e nítido em qualquer tamanho do nó (light preto, dark branco, chevron ciano nos dois temas).
  - **2.1.1–2.1.3** — README completo em pt-BR e screenshot da seleção de autenticação.
  - **2.1.0** — Publicação da API v2 (OAuth2) e ajustes de ícone. Publicação da **API v2 (OAuth2)**: credencial `RdStationCrmOAuth2Api`, seletor de Authentication (v1/v2), transporte v2 (Bearer, envelope `{ data }`, paginação `links.next`) e 6 recursos principais (Contact, Deal, Organization, Task, Note, Custom Field). O auth por **token (v1) continua** e é o padrão.
  - **2.0.2** — Recurso **Webhook** (Create, Get, Get Many, Update, Delete).
  - **2.0.1** — Publicação com **provenance** (via GitHub Action) e ajustes de ícone/lint.
  - **2.0.0** — Reescrita completa: node único `RD Station CRM` (Recurso → Operação) + `RD Station CRM Trigger`, dropdowns dinâmicos e Return All.
  - **1.3.1** e anteriores — nós separados por entidade, apenas API v1 (token). Veja o histórico no Git.

  ## 🆘 Suporte

  Se algo não funcionar:

  1. Confirme se o **token** (v1) está correto, ou se o **Client ID/Secret e o Redirect URL** (v2) estão certos e o redirect é `https://`.
  2. Verifique se a versão do n8n é compatível.
  3. Consulte os logs do n8n para detalhes do erro.
  4. Abra uma [issue no GitHub](https://github.com/PedroHSGuimaraes/n8n-nodes-rd-station-crm/issues).

  ## 📄 Licença

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"A custom n8n node package providing full integration with the RD Station CRM (v1) API for managing CRM data, tasks, and sales pipelines.","capabilities":["Manage contacts","Manage deals (businesses)","Manage tasks","Create and manage notes","Manage companies","Manage deal products","Manage users","Manage teams","Manage sales pipelines","Manage campaigns"],"authentication":"API Token","commonUseCases":["Automating CRM data entry from other sources","Syncing contacts and deals between systems","Automating task assignment and tracking","Setting up automated notifications via webhooks","Managing sales pipelines and campaigns"],"limitations":["Supports only RD Station CRM API v1","Requires manual installation via Community Nodes or manual npm build"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.webhook"]}


node_type: n8n-nodes-mtai-zalo-test-trial.mtaizalotesttrial
package_name: n8n-nodes-mtai-zalo-test-trial
display_name: mtaizalotesttrial
description: Các node hỗ trợ Zalo cho n8n
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: dangminhtaivietinsoft
npm_package_name: n8n-nodes-mtai-zalo-test-trial
npm_version: 1.2.1
community_fetched_at: 2026-07-14T14:40:36.002Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # n8n-nodes-mtai-zalo-test-trial

  Các node hỗ trợ tích hợp Zalo vào nền tảng **n8n**.

  ---

  ## 📦 Cài đặt

  ```bash
  pnpm install n8n-nodes-mtai-zalo-test-trial
  ```

  ### Yêu cầu:
  - **Node.js** ≥ 18.10
  - **n8n** ≥ 1.0.0

  ---

  ## 🔐 Cấu hình Credentials

  1. Sử dụng node `ZaloLoginByQr` để quét mã QR và lấy thông tin xác thực:
     - `cookie`
     - `imei`
     - `userAgent`

  2. Credential được tạo sẽ dùng cho các node Zalo còn lại trong workflow.

  ---

  ## ✅ Các node đã hoàn chỉnh

  ### 1. `ZaloLoginByQr`
  - **Chức năng**: Đăng nhập Zalo bằng mã QR để lấy thông tin xác thực.
  - **Cách dùng**:
    - Thêm node vào workflow.
    - Làm theo hướng dẫn để quét QR và thu thập thông tin login.

  ---

  ### 2. `ZaloSendMessage`
  - **Chức năng**: Gửi tin nhắn đến người dùng hoặc nhóm trên Zalo, hỗ trợ nhiều định dạng.
  - **Cách dùng**:
    - Cấu hình `userId` hoặc `groupId`.
    - Nhập nội dung tin nhắn (hỗ trợ gửi text, ảnh).
    - **Mới**: Hỗ trợ gửi tin nhắn thoại bằng cách chuyển đổi văn bản thành giọng nói (Text-to-Speech) với nhiều ngôn ngữ.
    - **Mới**: Hỗ trợ gửi video từ URL, có khả năng tải và tối ưu hóa video.

  ---

  ### 3. `ZaloUser`
  - **Chức năng**: Quản lý thông tin và các hành động liên quan đến người dùng trên Zalo.
  - **Cách dùng**:
    - Hỗ trợ các thao tác như chấp nhận/gửi lời mời kết bạn, chặn/bỏ chặn người dùng.
    - Thay đổi ảnh đại diện và cài đặt tài khoản.
    - Lấy thông tin chi tiết của người dùng.

  ---

  ### 4. `ZaloMessageTrigger`
  - **Chức năng**: Lắng nghe và kích hoạt workflow khi có tin nhắn mới trên Zalo.
  - **Cách dùng**:
    - Cấu hình để lắng nghe tin nhắn từ người dùng hoặc nhóm.
    - Hỗ trợ chuyển đổi tin nhắn thoại thành văn bản (speech-to-text) bằng Wit.ai, có thể tự động nhận diện hoặc chọn ngôn ngữ thủ công.
    - Tùy chọn cho phép lắng nghe cả tin nhắn do chính bạn gửi đi.

  ---

  ## 📝 Ghi chú

  - Một số tính năng nâng cao như **chuyển đổi voice thành text (speech-to-text)** đang được phát triển.
  - Nếu gặp lỗi cài đặt:
    - Kiểm tra quyền truy cập file
    - Chạy với quyền admin (nếu cần)
    - Đảm bảo không có tiến trình nào đang khóa file

  ---

  ## 👨‍💻 Liên hệ & Đóng góp

  Đóng góp mã nguồn, bug report, hoặc ý tưởng xin gửi về repo hoặc liên hệ tác giả.

  ---

ai_documentation_summary:
  {"purpose":"This n8n node package provides integration capabilities for the Zalo messaging platform, enabling login, sending messages, managing users, and triggering workflows on new messages.","capabilities":["Zalo login via QR code","Send text messages to users or groups","Send images","Send voice messages (Text-to-Speech)","Send videos from URLs with optimization","Manage user invitations and blocks","Update profile pictures and account settings","Retrieve detailed user information","Listen for new incoming messages","Convert voice messages to text (speech-to-text)"],"authentication":"OAuth2 via QR code scan (using ZaloLoginByQr node to collect cookie, imei, and userAgent)","commonUseCases":["Automated customer support messaging on Zalo","Broadcasting announcements to user groups","Automated response to incoming customer inquiries","User management and onboarding workflows"],"limitations":["Some advanced features like speech-to-text are under development","Installation may require admin permissions or specific file access rights"],"relatedNodes":["ZaloLoginByQr","ZaloSendMessage","ZaloUser","ZaloMessageTrigger"]}


node_type: @asaasbr/n8n-nodes-asaas.asaas
package_name: @asaasbr/n8n-nodes-asaas
display_name: asaas
description: n8n nodes for integrating with the Asaas API
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: asaas-pagamentos
author_github_url: git+https://github.com/asaasdev/n8n-plugin-asaas.git
npm_package_name: @asaasbr/n8n-nodes-asaas
npm_version: 1.1.3
community_fetched_at: 2026-07-14T14:40:36.003Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # Módulo Asaas para N8N



  Nó oficial de N8N para integração com a [API do Asaas](https://docs.asaas.com/).
  Este módulo permite automatizar cobranças, gestão de clientes e notificações diretamente em seus fluxos de trabalho no [n8n](https://n8n.io).



  ## Recursos Implementados



  Atualmente, o módulo oferece suporte aos seguintes grupos de recursos da API Asaas:



  - 👥 **Clientes**: criação, listagem, atualização, exclusão e restauração de clientes.

  - 💰 **Cobranças (Payments)**: emissão e consulta de cobranças, incluindo suporte a PIX, boleto e cartão de crédito.

  - 🔔 **Notificações**: configuração e gerenciamento de notificações automáticas.

  - 📄 **Assinaturas e Parcelamentos**: gestão de recorrências e planos parcelados.

  - 💳 **Transações PIX**: criação de cobranças PIX e emissão de QR Codes.

  - 📊 **Financeiro e Relatórios**: extrato, antecipações e estatísticas de faturamento.

  - ⚙️ **Conta e Configurações**: dados comerciais, personalização e webhooks.



  ## Rotas de API utilizadas



  -  *Produção*: [https://api.asaas.com/v3](https://api.asaas.com/v3)

  -  *Sandbox*: [https://api-sandbox.asaas.com/v3](https://api-sandbox.asaas.com/v3)



  ## Instalação



  Via **npm** (recomendado):

  ```bash

  npm install @asaasbr/n8n-nodes-asaas

  ```



  Via **Community Nodes** no n8n:
  📖 **Documentação oficial:**  
  https://docs.asaas.com/docs/n8n

  1. Acesse *Settings → Community Nodes*

  2. Clique em *Install a community node*

  3. Digite: `@asaasbr/n8n-nodes-asaas`

  4. Clique em *Install*



  ## Pré-requisitos



  - Conta no [Asaas](https://asaas.com) (produção ou sandbox)

  - API Key ativa (obtida no painel Asaas)

  - n8n versão `>=1.0.0`

  - Node.js versão `>=20.15`



  ## Configuração



  1. No n8n, vá em **Credentials → Add Credential**

  2. Procure por **Asaas API**

  3. Preencha:

  - API Key: sua chave do Asaas

  - Ambiente: *Sandbox* (testes) ou *Produção*

  4. Teste a conexão e salve

  ## Feedback e Sugestões

  Encontrou algum bug ou tem uma ideia de melhoria?  
  Contribua para tornar este módulo ainda melhor :rocket:

  [https://forms.gle/Hbo5JhEZHJHVSrYH7](https://forms.gle/Hbo5JhEZHJHVSrYH7)


  ## Licença



  MIT

ai_documentation_summary:
  {"purpose":"This n8n node enables integration with the Asaas API to automate financial operations including billing, customer management, and notifications within n8n workflows.","capabilities":["Create, list, update, delete, and restore clients","Issue and query invoices supporting PIX, boleto, and credit card","Configure and manage automatic notifications","Manage subscriptions and installment plans","Create PIX invoices and generate QR Codes","Access financial reports, statements, and revenue statistics","Manage commercial data and webhook configurations"],"authentication":"API Key required","commonUseCases":["Automating invoice generation and payment collection","Managing customer databases and billing cycles","Sending automated payment reminders and notifications","Processing PIX transactions and QR Code generation"],"limitations":["Requires Node.js version >=20.15","Requires an active Asaas account with API Key access"],"relatedNodes":["n8n HTTP Request","n8n Webhook","n8n Credential Manager"]}


node_type: n8n-nodes-evolution-api-media-downloader.evolutionapimediadownloader
package_name: n8n-nodes-evolution-api-media-downloader
display_name: evolutionapimediadownloader
description: Download Media from Evolution API data message
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: betorcs
author_github_url: git+https://github.com/betorcs/n8n-nodes-evolution-api-media-downloader.git
npm_package_name: n8n-nodes-evolution-api-media-downloader
npm_version: 0.1.0
community_fetched_at: 2026-07-14T14:40:36.004Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  ![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)

  # n8n-nodes-starter

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

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

  ## Prerequisites

  You need the following installed on your development machine:

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


  ## Using this starter

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

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

  ## More information

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

  ## License

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

ai_documentation_summary:
  {"purpose":"This node allows users to download media files (such as images, videos, or audio) from messages received via the Evolution API, which is commonly used for WhatsApp Business API integrations.","capabilities":["Extract media URLs from Evolution API data messages","Download media files to local storage","Retrieve metadata associated with media messages"],"authentication":"API key required (Evolution API credentials)","commonUseCases":["Automatically saving WhatsApp media to a server for archival","Processing and analyzing media sent through WhatsApp Business","Triggering workflows based on received media content"],"limitations":["Requires a valid Evolution API instance and proper credentials","Dependent on the Evolution API's media delivery format and structure"],"relatedNodes":["n8n-nodes-evolution-api","n8n-nodes-weather","n8n-nodes-email"]}


node_type: n8n-nodes-instagram-token.instagramtoken
package_name: n8n-nodes-instagram-token
display_name: instagramtoken
description: N8N nodes for Instagram API integration with access token authentication
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: robsonmilioli
author_github_url: git+https://github.com/r-milioli/n8n-nodes-insta-accessToken.git
npm_package_name: n8n-nodes-instagram-token
npm_version: 2.4.2
community_fetched_at: 2026-07-14T14:40:36.005Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # n8n-nodes-instagram-token

  ![Instagram Banner](https://img.shields.io/badge/Instagram-E4405F?style=for-the-badge&logo=instagram&logoColor=white)
  [![npm version](https://img.shields.io/npm/v/n8n-nodes-instagram-token.svg)](https://www.npmjs.com/package/n8n-nodes-instagram-token)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
  [![n8n](https://img.shields.io/badge/n8n-community-FF6D5A?logo=n8n)](https://n8n.io)

  Professional N8N community nodes for Instagram API integration with **access token authentication**.

  > **📌 Fork Notice**: This is a fork of [n8n-nodes-instagram-integrations](https://www.npmjs.com/package/n8n-nodes-instagram-integrations) with enhanced token management and additional features.

  [Installation](#installation) • [Features](#features) • [Quick Start](#quick-start) • [Documentation](#documentation)

  ---

  ## 🔄 What's Different from the Original?

  This fork includes several enhancements over the original [n8n-nodes-instagram-integrations](https://www.npmjs.com/package/n8n-nodes-instagram-integrations):

  ### ✨ **New Features:**
  - **Comment Management** - Reply to comments automatically, hide/unhide, and delete comments
  - **Enhanced Token Management** - Automatic refresh with smart fallback
  - **Better Error Handling** - More detailed debugging and logs
  - **Format Validation** - Proper audio format support (AAC, M4A, WAV, MP4)
  - **Performance Improvements** - Token caching and optimization

  ### 🔧 **Technical Improvements:**
  - **Access Token API** - Simplified authentication method
  - **Automatic Token Refresh** - No more "refreshToken is required" errors
  - **Smart Fallback** - Uses original token if refresh fails
  - **Enhanced Logging** - Better debugging capabilities

  ---

  ## 🚀 Features

  ### 🔐 Access Token Management
  - **Automatic token refresh** - Tokens refresh automatically before expiration
  - **Smart fallback** - Uses original token if refresh fails
  - **No more "refreshToken is required" errors** - Intelligent token lifecycle management
  - **Access Token API** - Simple authentication with automatic refresh
  - **Auto-discovery** - Automatically fetches Instagram Business Account ID

  ### 📬 Instagram Messaging
  - **Text Messages** - Send formatted text with up to 1000 characters
  - **Image Messages** - Share images via public HTTPS URLs
  - **Audio Messages** - Send voice messages (AAC, M4A, WAV, MP4 formats)
  - **Video Messages** - Share video content
  - **Media Upload** - Upload and publish photos, videos, reels, and stories
  - **Private Replies** - Send private replies to commenters directly (with optional quick replies)

  ### 💬 Interactive Templates
  - **Button Templates** - Up to 3 action buttons (web links or postbacks)
  - **Generic Templates** - Carousel cards with images and buttons
  - **Quick Replies** - Up to 13 quick response options

  ### 📝 Content Management
  - **Create Posts** - Single images, videos, and carousel posts
  - **Create Reels** - Short-form video content
  - **Create Stories** - Temporary 24-hour content
  - **Comment Management** - Reply to comments, hide/unhide comments, and delete comments

  ### 🔔 Webhook Events
  - **Message Events** - Incoming messages, postbacks, quick replies
  - **Comment Events** - New comments and mentions
  - **Opt-in Events** - User subscription confirmations

  ---

  ## 📋 Prerequisites

  - **n8n** (v1.0.0 or higher)
  - **Instagram Business Account** with Messaging API access
  - **Facebook App** with Instagram Basic Display API
  - **Webhook URL** (for receiving events)

  ---

  ## 🚀 Installation

  ### Method 1: Community Nodes (Recommended)
  1. Go to **Settings > Community Nodes** in n8n
  2. Click **Install a community node**
  3. Enter: `n8n-nodes-instagram-token`
  4. Click **Install**

  ### Method 2: Manual Installation
  ```bash
  npm install n8n-nodes-instagram-token
  ```

  ---

  ## ⚡ Quick Start

  ### 1. Configure Credentials
  1. Create **Instagram Access Token API** credential
  2. Enter your **Access Token** (long-lived recommended)
  3. Enable **Auto Refresh Token** (recommended)
  4. Set **Refresh Threshold** to 7 days

  ### 2. Create Your First Workflow
  1. Add **Instagram** node
  2. Select **Resource**: `Message`
  3. Select **Operation**: `Send Text`
  4. Configure your message
  5. **Execute** the workflow

  ### 3. Set Up Webhooks (Optional)
  1. Add **Instagram Trigger** node
  2. Configure webhook URL
  3. Set up event handling

  ---

  ## 📚 Documentation

  - **[API Reference](API_REFERENCE.md)** - Complete API documentation
  - **[Authentication Guide](AUTHENTICATION_GUIDE.md)** - Setup and configuration
  - **[Migration Guide](docs/MIGRATION_HYBRID_TOKEN.md)** - Migrating from OAuth2
  - **[Quick Start](docs/QUICKSTART.md)** - Getting started guide

  ---

  ## 🔧 Configuration

  ### Instagram Access Token API
  - **Access Token**: Your Instagram access token
  - **Instagram Business Account ID**: Auto-discovered if not provided
  - **Auto Refresh Token**: Enable automatic token refresh
  - **Refresh Threshold**: Days before expiration (default: 7)
  - **Webhook Verify Token**: Optional webhook verification

  ---

  # What's New in 2.4.1

  - ✅ **Hide/Unhide Comments** - Hide or unhide comments on your posts
  - ✅ **Delete Comments** - Delete comments from your posts
  - ✅ **Enhanced Comment Management** - Complete control over comment moderation

  ### v2.2.0 Highlights

  - ✅ **Private Replies** - Send private replies with plain text or quick replies directly from the message node
  - ✅ **Authentication Updates** - Support `Authorization: Bearer` header for compatible API scenarios

  ### v2.0.1 Highlights

  - ✅ **Comment Management** - Reply to comments automatically
  - ✅ **Access Token System** - Simplified authentication
  - ✅ **Enhanced Error Handling** - Better debugging and logs
  - ✅ **Format Support** - Proper audio format validation
  - ✅ **Performance Improvements** - Token caching and optimization

  ---

  ## 🤝 Support

  - **Issues**: [GitHub Issues](https://github.com/r-milioli/n8n-nodes-insta-accessToken/issues)
  - **Documentation**: [GitHub Wiki](https://github.com/r-milioli/n8n-nodes-insta-accessToken/wiki)
  - **Community**: [n8n Community Forum](https://community.n8n.io)

  ---

  ## 📄 License

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

  ---

  ## 🙏 Acknowledgments

  - **Original Authors** - [n8n-nodes-instagram-integrations](https://www.npmjs.com/package/n8n-nodes-instagram-integrations) for the foundation
  - **n8n Team** - For the amazing workflow automation platform
  - **Instagram API** - For providing comprehensive messaging capabilities
  - **Community** - For feedback and contributions

  ---

  **Made with ❤️ for the n8n community**

ai_documentation_summary:
  {"purpose":"A community node package providing n8n integration with the Instagram API, enabling content management, messaging, and event handling through access token authentication.","capabilities":["Send text, image, audio, and video messages","Reply to comments and manage comment visibility","Create posts, reels, and stories","Upload and publish media content","Configure interactive templates with buttons and quick replies","Receive webhook events for messages and comments","Automatic access token refresh with smart fallback","Auto-discovery of Instagram Business Account ID"],"authentication":"Access Token (OAuth2 migration available)","commonUseCases":["Automated social media engagement and commenting","Broadcasting announcements and promotional content","Receiving and processing Instagram message events","Moderating comments on posts","Sending multimedia messages to users"],"limitations":["Requires an Instagram Business Account with Messaging API access","Requires a Facebook App with Instagram Basic Display API","Webhook functionality requires a configured webhook URL","Some features may be limited by Instagram's API rate limits and business account permissions"],"relatedNodes":["Instagram Trigger","Instagram Message","Instagram Post","Instagram Media","Instagram Reel"]}


node_type: @warcraft14115/n8n-nodes-telegram-grampro.telegramgrampro
package_name: @warcraft14115/n8n-nodes-telegram-grampro
display_name: telegramgrampro
description: Telegram GramPro is Telegram automation nodes for n8n that uses user account for automation.
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: warcraft14115
author_github_url: git+https://github.com/sadiakant/n8n-nodes-telegram-grampro.git
npm_package_name: @warcraft14115/n8n-nodes-telegram-grampro
npm_version: 4.0.4
community_fetched_at: 2026-07-14T14:40:36.006Z
ai_summary_generated_at: 2026-07-14 15:00:31
npm_readme:
  ![Telegram GramPro Banner](https://raw.githubusercontent.com/sadiakant/n8n-nodes-telegram-grampro/refs/heads/main/docs/n8n-nodes-telegram-grampro.png)

  # Telegram GramPro - n8n Integration

  **Powerful Telegram automation for n8n workflows with enterprise-grade security, performance optimization, and comprehensive error handling**

  [![Build Status](https://github.com/sadiakant/n8n-nodes-telegram-grampro/actions/workflows/build.yml/badge.svg)](https://github.com/sadiakant/n8n-nodes-telegram-grampro/actions/workflows/build.yml)
  [![Publish Status](https://github.com/sadiakant/n8n-nodes-telegram-grampro/actions/workflows/publish.yml/badge.svg)](https://github.com/sadiakant/n8n-nodes-telegram-grampro/actions/workflows/publish.yml)
  [![Socket Badge](https://badge.socket.dev/npm/package/n8n-nodes-telegram-grampro)](https://badge.socket.dev/npm/package/n8n-nodes-telegram-grampro)
  [![GitHub Issues](https://img.shields.io/github/issues/sadiakant/n8n-nodes-telegram-grampro)](https://github.com/sadiakant/n8n-nodes-telegram-grampro/issues)
  [![GitHub Pull Requests](https://img.shields.io/github/issues-pr/sadiakant/n8n-nodes-telegram-grampro)](https://github.com/sadiakant/n8n-nodes-telegram-grampro/pulls)

  [![npm version](https://badgen.net/npm/v/n8n-nodes-telegram-grampro)](https://www.npmjs.com/package/n8n-nodes-telegram-grampro)
  [![npm downloads/week](https://img.shields.io/npm/dw/n8n-nodes-telegram-grampro?logo=npm&logoColor=white)](https://www.npmjs.com/package/n8n-nodes-telegram-grampro)
  [![npm downloads/month](https://img.shields.io/npm/dm/n8n-nodes-telegram-grampro?logo=npm&logoColor=white)](https://www.npmjs.com/package/n8n-nodes-telegram-grampro)
  [![npm downloads/year](https://img.shields.io/npm/dy/n8n-nodes-telegram-grampro?logo=npm&logoColor=white)](https://www.npmjs.com/package/n8n-nodes-telegram-grampro)
  [![node version](https://badgen.net/npm/node/n8n-nodes-telegram-grampro)](https://www.npmjs.com/package/n8n-nodes-telegram-grampro)
  [![npm license](https://badgen.net/npm/license/n8n-nodes-telegram-grampro)](LICENSE)
  [![GitHub license](https://badgen.net/github/license/sadiakant/n8n-nodes-telegram-grampro)](LICENSE)
  [![npm total downloads](https://img.shields.io/npm/dt/n8n-nodes-telegram-grampro?logo=npm&logoColor=white)](https://www.npmjs.com/package/n8n-nodes-telegram-grampro)
  [![npm unpacked size](https://img.shields.io/npm/unpacked-size/n8n-nodes-telegram-grampro)](https://www.npmjs.com/package/n8n-nodes-telegram-grampro)
  [![npm types](https://img.shields.io/npm/types/n8n-nodes-telegram-grampro)](https://www.npmjs.com/package/n8n-nodes-telegram-grampro)
  [![npm collaborators](https://img.shields.io/npm/collaborators/n8n-nodes-telegram-grampro)](https://www.npmjs.com/package/n8n-nodes-telegram-grampro)

  [![github release](https://badgen.net/github/release/sadiakant/n8n-nodes-telegram-grampro)](https://github.com/sadiakant/n8n-nodes-telegram-grampro/releases)
  [![github stars](https://badgen.net/github/stars/sadiakant/n8n-nodes-telegram-grampro)](https://github.com/sadiakant/n8n-nodes-telegram-grampro/stargazers)
  [![github forks](https://badgen.net/github/forks/sadiakant/n8n-nodes-telegram-grampro)](https://github.com/sadiakant/n8n-nodes-telegram-grampro/network/members)
  [![last commit](https://badgen.net/github/last-commit/sadiakant/n8n-nodes-telegram-grampro)](https://github.com/sadiakant/n8n-nodes-telegram-grampro/commits/main)
  [![GitHub contributors](https://img.shields.io/github/contributors/sadiakant/n8n-nodes-telegram-grampro)](https://github.com/sadiakant/n8n-nodes-telegram-grampro/graphs/contributors)
  [![GitHub watchers](https://img.shields.io/github/watchers/sadiakant/n8n-nodes-telegram-grampro)](https://github.com/sadiakant/n8n-nodes-telegram-grampro/watchers)
  [![GitHub issues closed](https://img.shields.io/github/issues-closed/sadiakant/n8n-nodes-telegram-grampro)](https://github.com/sadiakant/n8n-nodes-telegram-grampro/issues)
  [![GitHub PRs closed](https://img.shields.io/github/issues-pr-closed/sadiakant/n8n-nodes-telegram-grampro)](https://github.com/sadiakant/n8n-nodes-telegram-grampro/pulls)
  [![Commit activity](https://img.shields.io/github/commit-activity/m/sadiakant/n8n-nodes-telegram-grampro)](https://github.com/sadiakant/n8n-nodes-telegram-grampro/commits/main)
  [![telegram dependency](https://img.shields.io/badge/telegram-%5E2.26.22-2CA5E0?logo=telegram&logoColor=white)](https://www.npmjs.com/package/telegram)
  [![n8n-workflow peer dependency](https://img.shields.io/npm/dependency-version/n8n-nodes-telegram-grampro/peer/n8n-workflow)](https://www.npmjs.com/package/n8n-workflow)

  [![Telegram API](https://badgen.net/static/Telegram/API/229ED9)](https://core.telegram.org/api)
  [![TypeScript](https://badgen.net/static/TypeScript/5.x/3178C6)](https://www.typescriptlang.org/)
  [![n8n](https://badgen.net/static/n8n/Community%20Node/EA4B71)](https://n8n.io/)
  [![pnpm >= 9.1](https://img.shields.io/badge/pnpm-%3E%3D9.1-F69220?style=flat-square&logo=pnpm&logoColor=white)](https://pnpm.io/)
  [![Node >= 18.17](https://img.shields.io/badge/node-%3E%3D18.17-339933?style=flat-square&logo=nodedotjs&logoColor=white)](https://nodejs.org/)

  ## 🚀 Transform Your Telegram Automation

  Telegram GramPro is a comprehensive n8n custom node that brings the full power of Telegram's MTProto protocol to your automation workflows. Built with GramJS and designed for production use, it offers enterprise-grade features with an intuitive interface.

  ### 🌟 **Key Features**

  #### **Core Operations**

  - **Messages**: Send, get messages (time-based filters), edit, delete, pin, forward, copy, create polls and quizzes
  - **Chats**: Get chats, dialogs, join/leave, create groups/channels
  - **Users**: Get user info, full details with bio and common chats, update profile, change username, get profile photos
  - **Media**: Download media files with progress tracking
  - **Channels**: Get participants, manage members, ban/promote users

  #### **Enterprise Security & Performance**

  - 🔐 **AES-256-GCM Session Encryption** - Military-grade security with automatic key derivation
  - ⚡ **Smart Rate Limiting** - Prevents API limits with intelligent queuing and priority handling
  - 🛡️ **Enhanced Error Handling** - Automatic retry for flood waits, timeouts, and connection issues
  - 🔗 **Connection Management** - Advanced client pooling with health checks and auto-reconnection
  - 📊 **Structured Logging** - Production-ready logging with configurable levels and context
  - 🧠 **Smart Caching** - In-memory caching for frequently accessed data with TTL management
  - 🎯 **Input Validation** - Comprehensive validation with detailed error messages and warnings

  #### **New Advanced Features**

  - **Copy Restricted Content** - Handle media that cannot be forwarded normally
  - **Edit Message Media** - Update media content in existing messages with caption support
  - **Enhanced Authentication** - Improved session management with better error handling
  - **Memory Optimization** - Automatic cleanup and resource management
  - **Performance Monitoring** - Built-in metrics and queue monitoring

  ## 📦 Installation

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

  1. Open n8n UI
  2. Go to **Settings** → **Community Nodes**
  3. Add in box "n8n-nodes-telegram-grampro"
  4. Click checkbox to allow to use external nodes.
  5. Click **Install**
  6. Restart n8n to load the custom node

  ### Method 2: Custom Nodes Directory

  1. **Clone to n8n custom nodes directory**
  2. **Install dependencies**
     ```bash
     pnpm install
     ```
  3. **Build the project**
     ```bash
     pnpm run build
     ```
  4. **Restart n8n** to load the custom node

  ### Method 3: GitHub Installation

  1. **Clone from GitHub**
     ```bash
     git clone https://github.com/sadiakant/n8n-nodes-telegram-grampro.git
     ```
  2. **Move to n8n custom nodes directory**
  3. **Install dependencies**
     ```bash
     pnpm install
     ```
  4. **Build the project**
     ```bash
     pnpm run build
     ```
  5. **Restart n8n** to load the custom node

  ## ⚙️ Quick Setup

  ### 1. Get API Credentials

  - Visit [my.telegram.org](https://my.telegram.org)
  - Create new application
  - Note your **API ID** and **API Hash**

  ### 2. Create Session String

  Use our built-in authentication operations. For detailed step-by-step instructions, see our [Authorization Guide](./docs/AUTHORIZATION_GUIDE.md).

  ### 3. Configure Credentials

  In n8n → Settings → Credentials:

  - **API ID**: Your Telegram API ID
  - **API Hash**: Your Telegram API hash
  - **Session String**: Your encrypted session string
  - **Mobile Number**: Your Telegram mobile number with country code (e.g., +1234567890)
  - **Validation**: Save/Test performs real MTProto getMe verification.
  - **UI Note**: n8n may still show the generic label Connection tested successfully on the global credentials page.

  ## 🎯 Comprehensive Operations Guide

  For detailed documentation of all operations with parameters, examples, and use cases, see our [Operations Guide](./docs/OPERATIONS_GUIDE.md).

  ## 🔧 Available Operations

  | Resource              | Operations                                                                                                  |
  | --------------------- | ----------------------------------------------------------------------------------------------------------- |
  | **Session Generator** | Request Code, Sign In & Generate                                                                            |
  | **Message**           | Send Text, Get Messages, Edit, Delete, Pin, Forward, Copy, Edit Media, Create Poll, Copy Restricted Content |
  | **Chat**              | Get Chat, Get Dialogs, Join Channel/Group, Leave Channel/Group, Create Group/Channel                        |
  | **User**              | Get User Info, Get Full User Details, Update Profile, Change Username, Get Profile Photo                    |
  | **Media**             | Download Media Files                                                                                        |
  | **Channel**           | Get Admin & Bots, Get Public Members, Add/Remove Member, Ban/Unban User, Promote to Admin                   |

  ## 🛡️ Security Features

  ### **Session Encryption**

  All session strings are automatically encrypted using AES-256-GCM with:

  - 256-bit encryption keys derived from your API credentials
  - 128-bit initialization vectors with PBKDF2 key derivation
  - Authentication tags for integrity verification
  - Automatic encryption/decryption transparent to users
  - Secure storage prevents session exposure

  ### **Input Validation**

  Comprehensive validation ensures data integrity and security:

  - API credentials validation (ID format, Hash length)
  - Phone number format validation (international format)
  - Session string validation and integrity checks
  - Operation-specific parameter validation
  - Real-time warnings for potential issues

  ### **Enhanced Error Handling**

  The node handles common Telegram errors gracefully:

  - **FLOOD_WAIT**: Automatic retry with specified wait time
  - **AUTH_KEY_DUPLICATED**: Clear error message about session conflicts
  - **SESSION_REVOKED**: Guidance to re-authenticate
  - **USER_DEACTIVATED_BAN**: Account ban detection
  - **PEER_FLOOD**: Extended wait times for peer flooding
  - **NETWORK_TIMEOUT**: Exponential backoff retries (up to 5 attempts)
  - **CHAT_WRITE_FORBIDDEN**: Permission error handling
  - **USER_BANNED_IN_CHANNEL**: Channel ban detection
  - **AUTH_KEY_UNREGISTERED**: Session is invalid or expired and must be regenerated
  - **SESSION_EXPIRED**: Session expired and must be renewed
  - **USER_PRIVACY_RESTRICTED**: Action blocked by user privacy settings
  - **CHANNEL_PRIVATE**: Channel or group is private/inaccessible
  - **USERNAME_NOT_OCCUPIED / USERNAME_INVALID**: Username does not exist or has invalid format
  - **INVITE_HASH_INVALID / INVITE_HASH_EXPIRED**: Invite link is invalid or expired
  - **PEER_ID_INVALID / MESSAGE_ID_INVALID**: Chat/message identifiers are invalid

  ## ⚡ Performance Optimizations

  ### **Smart Client Management**

  - **Connection Pooling**: Reuses existing TelegramClient instances via Map cache
  - **Race Condition Prevention**: Connection locks prevent multiple simultaneous connections
  - **Health Monitoring**: Automatic connection validation and healing
  - **Auto-cleanup**: 30-minute stale connection detection and cleanup
  - **Reconnection Logic**: Automatic reconnection for failed connections
  - **Session Encryption**: Transparent AES-256-GCM session decryption

  ### **Intelligent Rate Limiting**

  - Configurable request intervals (minimum 1-second)
  - Priority-based request queuing with queue length monitoring
  - DoS protection with maximum queue size limits (1000 requests)
  - Automatic cleanup of stale requests
  - Enhanced Telegram API limit compliance

  ### **Smart Caching**

  In-memory caching for frequently accessed data:

  - User information caching (5-minute TTL)
  - Chat/channel metadata caching
  - Dialog lists caching
  - Automatic cache cleanup and size management
  - Configurable cache TTL and maximum size

  ### **Memory Efficient Design**

  - Proper cleanup prevents memory leaks
  - Connection pooling and resource management
  - Background loop prevention
  - Optimized data structures and algorithms
  - Automatic resource cleanup

  ### **Enhanced Request Handling**

  - **Binary File Upload**: Support for photos, videos, documents with automatic format detection
  - **Media URL Support**: Direct URL upload with fallback to download-and-upload
  - **Progress Tracking**: Real-time download progress for large media files
  - **Error Recovery**: Automatic retry for network timeouts and connection issues

  ## 🚨 Troubleshooting

  For comprehensive troubleshooting guidance, common issues, and solutions, see our [Troubleshooting Guide](./docs/TROUBLESHOOTING_GUIDE.md).

  ## Project Structure

  ```
  n8n-nodes-telegram-grampro/
  |-- .github/                       # GitHub specific configuration & metadata
  |   |-- workflows/                 # CI/CD pipelines (Build & Publish)
  |   |-- CODE_OF_CONDUCT.md         # Community guidelines
  |   |-- CONTRIBUTING.md            # Instructions for developers
  |   |-- LICENSE                    # Legal usage rights
  |   `-- SECURITY.md                # Security policy and reporting
  |-- docs/                          # Extended documentation & manuals
  |   |-- AUTHORIZATION_GUIDE.md     # Steps for Telegram API auth
  |   |-- OPERATIONS_GUIDE.md        # Detailed node usage instructions
  |   |-- TROUBLESHOOTING_GUIDE.md   # Common errors and fixes
  |   `-- Workflows-Examples/        # Ready-to-import n8n workflow JSON files
  |       |-- Send messages from one user to multiple users.json
  |       `-- Send messages from folder chats to user.json
  |-- src/                           # Source code
  |   |-- core/                      # Core logic (Rate limiting, Encryption, Auth)
  |   |-- credentials/               # n8n Credential definitions
  |   |-- nodes/                     # n8n Node implementations (Main & Trigger)
  |   |   |-- icons/                 # Brand assets
  |   |   `-- resources/             # API resource operations (Chat, Media, etc.)
  |   |-- types/                     # TypeScript interfaces & types
  |   `-- index.ts                   # Library entry point
  |-- .gitignore                     # Files excluded from version control
  |-- copy-assets.mjs                # Build script for static assets
  |-- esbuild.config.mjs             # Fast bundling configuration
  |-- package.json                   # Dependencies and pnpm scripts
  |-- README.md                      # Project overview and quick start
  `-- tsconfig.json                  # TypeScript compiler settings
  ```

  ## Workflow Examples

  Ready-to-import workflow examples are available in [`docs/Workflows-Examples`](./docs/Workflows-Examples):

  - [`Send messages from one user to multiple users.json`](./docs/Workflows-Examples/Send%20messages%20from%20one%20user%20to%20multiple%20users.json)
  - [`Send messages from folder chats to user.json`](./docs/Workflows-Examples/Send%20messages%20from%20folder%20chats%20to%20user.json)

  ### How to Import in n8n

  1. Open n8n and create a new workflow.
  2. Use the workflow menu and select **Import from File**.
  3. Choose one of the JSON files from `docs/Workflows-Examples/`.
  4. Re-map `telegramApi` credentials to your own Telegram GramPro credential.
  5. Replace placeholders such as source/target chats, admin usernames, and sub-workflow IDs.

  ### What These Examples Cover

  - **Send messages from one user to multiple users.json**: Pulls recent messages from one source, filters by recency and keyword/domain, then distributes to multiple target chats with flood-wait and error notifications.
  - **Send messages from folder chats to user.json**: Reads dialogs grouped by folders, filters recent media messages, then forwards matched content to a target user with scheduling and error handling.

  ## Advanced Configuration

  ### **Environment Variables**

  - `GRAMPRO_LOG_LEVEL=error|warn|info|debug` - Control log verbosity
  - `N8N_LOG_LEVEL=error|warn|info|debug` - Fallback if GRAMPRO_LOG_LEVEL not set

  ### **Performance Tuning**

  - **Rate Limiting**: Adjust intervals based on your usage patterns
  - **Cache Size**: Configure maximum cache entries for your memory constraints
  - **Connection Timeout**: Set appropriate timeouts for your network conditions
  - **Retry Attempts**: Configure retry logic for your reliability requirements

  ### **Security Best Practices**

  - Always use encrypted session strings
  - Keep API credentials secure and never expose them in workflow outputs
  - Enable 2FA for your Telegram account
  - Regularly rotate session strings
  - Monitor logs for security events

  ## 🤝 Contributing

  We welcome contributions to make Telegram GramPro even better!

  ### **Contribution Guidelines**

  1. **Fork the repository**
  2. **Create a feature branch**
  3. **Make your changes with proper TypeScript types**
  4. **Add tests for new functionality**
  5. **Update documentation**
  6. **Submit a pull request**

  ### **Development Setup**

  ```bash
  # Clone the repository
  git clone https://github.com/sadiakant/n8n-nodes-telegram-grampro.git

  # Install dependencies
  pnpm install

  # Start development mode
  pnpm run dev

  # Build for production
  pnpm run build
  ```

  ### **Code Standards**

  - Use TypeScript for type safety
  - Follow existing code patterns
  - Add comprehensive error handling
  - Include proper documentation
  - Test thoroughly before submitting

  ## 📄 License

  MIT License - see LICENSE file for details.

  ## 🔗 Resources

  - [Telegram API Documentation](https://core.telegram.org/api)
  - [GramJS Documentation](https://gram.js.org/)
  - [n8n Custom Nodes Guide](https://docs.n8n.io/integrations/creating-nodes/)
  - [Telegram GramPro GitHub](https://github.com/sadiakant/n8n-nodes-telegram-grampro)
  - [NPM Package](https://www.npmjs.com/package/n8n-nodes-telegram-grampro)

  ## 👥 Contributors

  ### **Core Development Team**

  | Contributor                                                                                                                                                                                           | Role                         | Expertise & Contributions                                                                                                                                                                                                                                                                  |
  | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | <a href="https://github.com/sadiakant"><img src="https://github.com/sadiakant.png" width="50" height="50" style="border-radius:50%; border: 2px solid #007bff;" alt="Sadiakant"></a><br>**Sadiakant** | **Project Lead & Developer** | <span style="color: #28a745; font-weight: bold;">🔧</span> **Architecture & Development**<br>• Overall project architecture and design<br>• Core node implementation and authentication system<br>• TypeScript development and API integration<br>• Production deployment and optimization |
  | <a href="https://deepseek.com"><img src="https://github.com/deepseek-ai.png" width="50" height="50" style="border-radius:50%; border: 2px solid #6f42c1;" alt="DeepSeek AI"></a><br>**DeepSeek AI**   | **Concept & Ideas**          | <span style="color: #6f42c1; font-weight: bold;">💡</span> **Innovation & Strategy**<br>• Initial project structure and feature suggestions<br>• Technical concept development<br>• Architecture planning and design patterns<br>• Feature roadmap and enhancement ideas                   |
  | <a href="https://openai.com"><img src="https://github.com/openai.png" width="50" height="50" style="border-radius:50%; border: 2px solid #007bff;" alt="ChatGPT AI"></a><br>**ChatGPT AI**            | **Implementation Strategy**  | <span style="color: #007bff; font-weight: bold;">🏗️</span> **Code Architecture**<br>• Code structure guidance and implementation strategy<br>• Best practices and coding standards<br>• Integration patterns and API design<br>• Documentation and code organization                       |
  | <a href="https://github.com/cline"><img src="https://github.com/cline.png" width="50" height="50" style="border-radius:50%; border: 2px solid #28a745;" alt="Cline AI"></a><br>**Cline AI**           | **Development & Coding**     | <span style="color: #28a745; font-weight: bold;">💻</span> **Code Implementation**<br>• Complete codebase development and testing<br>• Performance optimization and debugging<br>• Automated testing and CI/CD integration<br>• Code review and quality assurance                          |
  | <a href="https://github.com/google"><img src="https://github.com/google.png" width="50" height="50" style="border-radius:50%; border: 2px solid #ffc107;" alt="Gemini AI"></a><br>**Gemini AI**       | **Quality Assurance**        | <span style="color: #ffc107; font-weight: bold;">🔍</span> **Testing & Debugging**<br>• Error resolution and performance optimization<br>• Code review and quality assurance<br>• Bug detection and fix validation<br>• Security analysis and vulnerability assessment                     |

  ### **Technology Stack**

  <div style="display: flex; gap: 10px; flex-wrap: wrap; margin: 15px 0;">
    <span style="background: #007bff; color: white; padding: 4px 8px; border-radius: 4px; font-size: 12px;">TypeScript</span>
    <span style="background: #6f42c1; color: white; padding: 4px 8px; border-radius: 4px; font-size: 12px;">n8n</span>
    <span style="background: #28a745; color: white; padding: 4px 8px; border-radius: 4px; font-size: 12px;">GramJS</span>
    <span style="background: #ffc107; color: black; padding: 4px 8px; border-radius: 4px; font-size: 12px;">MTProto</span>
    <span style="background: #dc3545; color: white; padding: 4px 8px; border-radius: 4px; font-size: 12px;">WebSocket</span>
    <span style="background: #20c997; color: white; padding: 4px 8px; border-radius: 4px; font-size: 12px;">AES-256</span>
    <span style="background: #6c757d; color: white; padding: 4px 8px; border-radius: 4px; font-size: 12px;">Rate Limiting</span>
    <span style="background: #e83e8c; color: white; padding: 4px 8px; border-radius: 4px; font-size: 12px;">Caching</span>
    <span style="background: #fd7e14; color: white; padding: 4px 8px; border-radius: 4px; font-size: 12px;">Validation</span>
  </div>

  ### **Recent Major Improvements**

  #### **Performance & Reliability Enhancements**

  - **Advanced Client Management**: Implemented connection pooling with automatic health checks and reconnection logic
  - **Smart Rate Limiting**: Added priority-based queuing with configurable intervals and DoS protection
  - **Memory Optimization**: Automatic cleanup prevents memory leaks with proper resource management
  - **Enhanced Error Recovery**: Exponential backoff retries for network timeouts and connection issues

  #### **Security & Data Protection**

  - **AES-256-GCM Encryption**: Military-grade session encryption with automatic key derivation from API credentials
  - **Comprehensive Input Validation**: Multi-layered validation with detailed error messages and security warnings
  - **Session Management**: Secure session handling with integrity checks and automatic cleanup

  #### **New Advanced Features**

  - **Copy Restricted Content**: Handle media that cannot be forwarded normally with download-and-upload fallback
  - **Edit Message Media**: Update media content in existing messages with caption and formatting support
  - **Enhanced Authentication**: Improved session generation with better error handling and validation
  - **Smart Caching**: In-memory caching for frequently accessed data with TTL management

  #### **Developer Experience**

  - **Structured Logging**: Configurable log levels with context-rich messages for debugging
  - **Comprehensive Documentation**: Updated guides with new features and troubleshooting
  - **Type Safety**: Full TypeScript implementation with comprehensive type definitions
  - **Error Handling**: Detailed error messages with actionable guidance

  ### **Collaboration Excellence**

  - **<span style="color: #007bff;">🤖 AI-Powered Development</span>**: Cutting-edge AI assistance for code generation and optimization
  - **<span style="color: #28a745;">✅ Quality Assurance</span>**: Multi-layered review process ensuring code quality and security
  - **<span style="color: #6f42c1;">🚀 Innovation</span>**: Latest technologies and best practices implementation
  - **<span style="color: #ffc107;">🔧 Expert Integration</span>**: Professional-grade code integration and deployment
  - **<span style="color: #dc3545;">⚡ Performance Focus</span>**: Enterprise-grade performance optimization and monitoring
  - **<span style="color: #20c997;">🛡️ Security First</span>**: Military-grade security with comprehensive validation
  - **<span style="color: #6c757d;">📊 Production Ready</span>**: Built for enterprise environments with monitoring and logging

  ---

  **Built with ❤️ for n8n automation workflows**

ai_documentation_summary:
  {"purpose":"Telegram GramPro provides Telegram automation for n8n using a Telegram user account via the MTProto protocol and GramJS. It enables advanced messaging, chat, user, media, and channel management operations beyond basic bot automation.","capabilities":["Send, retrieve, edit, delete, pin, forward, and copy Telegram messages","Retrieve messages with time-based filters","Create polls and quizzes","Get chats and dialogs","Join and leave chats","Create groups and channels","Get user information and full user details including bio and common chats","Update Telegram profile and change username","Retrieve user profile photos","Download media files with progress tracking"],"authentication":"Telegram user account authentication using Telegram MTProto/GramJS credentials, typically requiring Telegram API ID, API hash, and user session/login verification.","commonUseCases":["Automate Telegram messaging from a user account","Monitor and retrieve Telegram messages or dialogs","Manage Telegram groups and channels","Download media from Telegram chats","Collect user or channel participant information"],"limitations":[],"relatedNodes":["Telegram","Telegram Trigger"]}


node_type: n8n-nodes-kommo.kommo
package_name: n8n-nodes-kommo
display_name: kommo
description: n8n node for Kommo Api
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: yatolstoy
author_github_url: git+https://github.com/yatolstoy/n8n-node-kommo.git
npm_package_name: n8n-nodes-kommo
npm_version: 0.0.16
community_fetched_at: 2026-07-14T14:40:36.007Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # n8n-nodes-kommo

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

  Kommo allows you to save the history of interaction with customers, as well as automate sales department processes.

  [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)
  [Donation](#donation)

  ## Installation

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

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

  After installing the node, you can use it like any other node. n8n displays the node in search results in the **Nodes** panel.

  ## Operations

  It supports these operations:

  - Get account information
  - Add modify and retrieve companies
  - Add modify and retrieve contacts
  - Add change and get deals
  - Add modify and retrieve tasks
  - Add modify and retrieve notes
  - Add modify and retrieve lists
  - Add modify and retrieve list elements

  ## Credentials

  Create an Kommo account [here](https://www.kommo.com/). For 14 days free of charge.

  - Go to n8n and create a new credential Kommo. Copy OAuth Redirect URL.
  - Go to your Kommo account and create a new widget https://your-domain.kommo.com/settings/widgets/
  - Paste the previously copied OAuth Redirect URL into the "Redirect Link" field.
  - Provide the accesses required for integration (these may vary depending on your scenario for using this node)
  - Enter an arbitrary name and description of the integration. The integration name may appear in the Kommo event log if the created_by and updated_by parameters are not filled in. Description cannot be shorter than 5 characters
  - Press to Save button
  - Update your page and find your integration in installed section. Press on it.
  - In the settings of the created integration, go to the Keys and Accesses section. Copy Integration ID and Secret key
  - Go to n8n and paste the Integration ID and Secret key you received.
  - Fill Account Subdomain and click on connect my account. Window will open.
  - Select the account to connect to and click the Allow button
  - If everything was successful, you will see a green message indicating successful connection in n8n

  ## Compatibility

  Tested against n8n version 1.20.0+

  ## Usage

  In your Workflow, find the Kommo node and use as you need.
  I accept comments and suggestions in Issues repository on github or in telegram [@yatolstoy](https://t.me/yatolstoy)

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Kommo API Documentation](https://www.kommo.com/developers)

  ## Donation

  This code is developed by an enthusiastic developer on his own initiative. By donations you will force me to develop and improve this node. Thank you!

  - [Link for donation from Russia](https://yoomoney.ru/to/410012112222938)
  - [Link for donation from another countries](https://appstart.easystaff.io/easylancer/yatolstoy)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of sales and customer interaction processes by integrating with the Kommo API to manage companies, contacts, deals, tasks, notes, and lists.","capabilities":["Get account information","Add, modify, and retrieve companies","Add, modify, and retrieve contacts","Add, modify, and retrieve deals","Add, modify, and retrieve tasks","Add, modify, and retrieve notes","Add, modify, and retrieve lists","Add, modify, and retrieve list elements"],"authentication":"OAuth2","commonUseCases":["Automating sales pipeline management","Tracking customer interaction history","Managing CRM data (companies, contacts, deals, tasks)"],"limitations":["Community node (unverified code from public source)","Requires manual OAuth setup with Kommo widgets","Integration name may appear in event logs if created_by/updated_by parameters are not filled"],"relatedNodes":["n8n-nodes-base.webhook","n8n-nodes-base.httpRequest"]}


node_type: n8n-nodes-thong-zalo-test-trial.thongzalotesttrial
package_name: n8n-nodes-thong-zalo-test-trial
display_name: thongzalotesttrial
description: Các node hỗ trợ Zalo cho n8n
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: vanthong0404
npm_package_name: n8n-nodes-thong-zalo-test-trial
npm_version: 0.1.182
community_fetched_at: 2026-07-14T14:40:36.008Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # n8n-nodes-mtai-zalo-test-trial

  Các node hỗ trợ tích hợp Zalo vào nền tảng **n8n**.

  ---

  ## 📦 Cài đặt

  ```bash
  pnpm install n8n-nodes-mtai-zalo-test-trial
  ```

  ### Yêu cầu:
  - **Node.js** ≥ 18.10
  - **n8n** ≥ 1.0.0

  ---

  ## 🔐 Cấu hình Credentials

  1. Sử dụng node `ZaloLoginByQr` để quét mã QR và lấy thông tin xác thực:
     - `cookie`
     - `imei`
     - `userAgent`

  2. Credential được tạo sẽ dùng cho các node Zalo còn lại trong workflow.

  ---

  ## ✅ Các node đã hoàn chỉnh

  ### 1. `ZaloLoginByQr`
  - **Chức năng**: Đăng nhập Zalo bằng mã QR để lấy thông tin xác thực.
  - **Cách dùng**:
    - Thêm node vào workflow.
    - Làm theo hướng dẫn để quét QR và thu thập thông tin login.

  ---

  ### 2. `ZaloSendMessage`
  - **Chức năng**: Gửi tin nhắn đến người dùng hoặc nhóm trên Zalo.
  - **Cách dùng**:
    - Cấu hình `userId` hoặc `groupId`.
    - Nhập nội dung tin nhắn (hỗ trợ gửi text, ảnh, file...).

  ---

  ### 3. `ZaloUser`
  - **Chức năng**: Lấy thông tin chi tiết của người dùng Zalo.
  - **Cách dùng**:
    - Nhập `userId` để truy xuất thông tin người dùng.

  ---

  ### 4. `ZaloGroup`
  - **Chức năng**: Truy xuất thông tin nhóm Zalo, bao gồm danh sách thành viên.
  - **Cách dùng**:
    - Nhập `groupId` để lấy dữ liệu liên quan đến nhóm.

  ---

  ### 5. `ZaloMessageTrigger`
  - **Chức năng**: 
    - Theo dõi và kích hoạt workflow khi có tin nhắn mới từ người dùng hoặc nhóm.
    - Chuyển đổi giọng nói sang text. 
  - **Cách dùng**:
    - Cấu hình loại sự kiện (`message.user`, `message.group`, v.v).
    - Node sẽ tự động kích hoạt khi có tin nhắn đến.
    - Chức năng chuyển giọng nói sang text yêu cầu thêm WitAiApi credential còn nếu không có mình có thể dùng Vosk
  - **Lưu ý**:
    - Tin nhắn giọng nói (`chat.voice`) hiện chỉ được nhận diện chứ chưa hỗ trợ chuyển đổi thành văn bản.
    - WitAiApi credentiald bắt buộc phải có AccessToken từ trang wit.ai
    - Hiện tại chức năng nghe hiểu của vosk về tiếng Việt không quá hiệu quả
  ---

  ### 6. `ZaloFriendTrigger`
  - **Chức năng**: Theo dõi các sự kiện liên quan đến bạn bè (kết bạn, hủy kết bạn,...).
  - **Cách dùng**:
    - Thêm node này vào workflow để lắng nghe các sự kiện liên quan.

  ---

  ## 📝 Ghi chú

  - Một số tính năng nâng cao như **chuyển đổi voice thành text (speech-to-text)** đang được phát triển.
  - Nếu gặp lỗi cài đặt:
    - Kiểm tra quyền truy cập file
    - Chạy với quyền admin (nếu cần)
    - Đảm bảo không có tiến trình nào đang khóa file

  ---

  ## 👨‍💻 Liên hệ & Đóng góp

  Đóng góp mã nguồn, bug report, hoặc ý tưởng xin gửi về repo hoặc liên hệ tác giả.

  ---

ai_documentation_summary:
  {"purpose":"This n8n node package provides integration capabilities for the Zalo messaging platform, enabling users to manage accounts, send messages, retrieve user/group data, and handle incoming events.","capabilities":["Zalo account login via QR code","Sending text, image, and file messages to users or groups","Retrieving detailed user information","Retrieving group information and member lists","Listening for new message events (text and voice)","Listening for friend-related events (adding/removing friends)","Speech-to-text conversion (requires WitAiApi or Vosk credentials)"],"authentication":"OAuth2 via QR code (manual credential collection using cookie, imei, userAgent)","commonUseCases":["Automated customer support chatbots on Zalo","Marketing campaigns sending promotional messages to groups","Automated response systems for business inquiries","Monitoring friend relationship changes for social management","Voice message transcription workflows"],"limitations":["Speech-to-text conversion requires external API credentials (WitAiApi) or Vosk; native Vietnamese recognition by Vosk is noted as not highly effective","Voice message recognition is functional but full conversion to text is not yet supported","Credential setup requires manual QR scanning and cookie/IMEI collection","Installation requires Node.js >= 18.10 and n8n >= 1.0.0"],"relatedNodes":["ZaloLoginByQr","ZaloSendMessage","ZaloUser","ZaloGroup","ZaloMessageTrigger"]}


node_type: n8n-nodes-wts.wts
package_name: n8n-nodes-wts
display_name: wts
description: n8n node to call wts services
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: wts-chat
author_github_url: git+https://github.com/wtschat/n8n-nodes.git
npm_package_name: n8n-nodes-wts
npm_version: 2.0.5
community_fetched_at: 2026-07-14T14:40:36.009Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  ![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)

  # n8n-nodes-wts
  Este é um nó Wts Chat, que permite que você use o Wts Chat em seus fluxos de trabalho no n8n.
  Vai facilitar suas automações com a plataforma Wts Chat, de forma rápida, prática e eficiente.
  Permitindo que os usuários criem contatos, notas em um cartão, enviem mensagens de texto, modelos e muito mais.

  # Release Notes
  Atualização do Wts Chat – Versão 2.0.2   19/03/2025

  A nova versão 2.0.2 do nó do Wts Chat traz melhorias e ajustes importantes em diversos módulos. Confira as principais mudanças desta atualização:

  **Módulo Update Card**
  ✅Edição do campo Metadata: Agora, é possível editar apenas o campo Metadata sem a necessidade de modificar outros dados do card.
  ✅Campo Custom Fields de Multiseleção: Para campos do tipo multiseleção, é possível selecionar várias opções separando os valores por vírgulas (exemplo: 1, 2, 3), garantindo mais flexibilidade na escolha de múltiplos valores.

  **Módulo Update Session**
  ✅Novidade: Possibilidade de atribuir valores vazios ('Empty') para usuário e departamento, permitindo alterações independentes:

  Usuário: Agora pode ser atualizado separadamente, bastando definir o valor como ‘Empty’.
  Departamento: Pode ser modificado sem afetar o usuário.
  Usuário e Departamento: Ambos podem ser alterados simultaneamente.
  🚫Remoção do campo 'CompanyId': Esse campo não estará mais disponível na atualização de conversa.

  **Módulo Transfer Session To User**
  🔄Renomeação do módulo: O nome foi atualizado de "Assign user to session" para "Transfer session to user", tornando a ação mais clara e intuitiva.

  **Módulo Complete Session**
  🔄Renomeação do módulo: O nome foi alterado de "Conclude session" para "Complete session".

  **Módulo List Annotations**
  🔄Renomeação do módulo: O nome foi atualizado de "List notes" para "List annotations".

  -----------------------------------------------------------------------------------------------------------------------

  Atualização do Wts Chat – Versão 2.0.3   02/02/2025
    
  A nova versão 2.0.3 do nó do Wts Chat traz os seguintes ajustes ao nó "Send Chatbot".

  ✅Campo "From Name or ID": Esse campo é possível passar o valor como expressão.
  🚫Remoção de validações dos campos.

  -----------------------------------------------------------------------------------------------------------------------

  Atualização do Wts Chat – Versão 2.0.4   27/05/2025

  A nova versão 2.0.4 do nó do Wts Chat traz um ajuste importante no módulo "Send Chatbot", focando na melhoria da identificação dos chatbots disponíveis para envio. A identificação sendo a chave e não mais o id.

  **Módulo Send Chatbot**
  🔄Listagem de Chatbots: Agora, a listagem de chatbots utiliza como valor a chave (key) do chatbot, e não mais o Id.
  🔄Envio da Chave: A chamada ao módulo agora envia a chave do chatbot selecionado, substituindo o envio do Id, garantindo maior consistência com os dados utilizados na plataforma.

  -----------------------------------------------------------------------------------------------------------------------

  Atualização do Wts Chat – Versão 2.0.5 13/08/2025
  A nova versão 2.0.5 do nó do Wts Chat traz correções importantes no integrador N8N. Veja as principais mudanças:

  **Módulo Complete Session**
  ✅Foi adicionado o parâmetro stopBotInExecution, permitindo que o bot seja interrompido ao concluir a sessão.

  **Módulo Create Contact**
  ✅O parâmetro Portfolio (Carteira) foi adicionado, agora permitindo associar um contato a uma carteira específica durante a criação.

  **Módulo List Contacts**
  Endpoint "Get All Contacts": Foi incluído o parâmetro includeDetails para o portfolio, permitindo que os detalhes da carteira sejam retornados ao consultar todos os contatos.



  <h1></h1>
  <h3>📌 Recurso: Contato</h3>

  <details>
    <summary>✅ <b> Criar Contato</b></summary>
  </details>

  <details>
    <summary>✅ <b> Atualizar Contato</b></summary>
  </details> 

  <details>
    <summary>✅ <b> Buscar Contato por ID</b></summary>
  </details>

  <details>
    <summary>✅ <b> Buscar Contato por Telefone</b></summary>
  </details>

  <details>
    <summary>✅ <b> Listar Contatos</b></summary>
  </details>

  <h1></h1>
  <h3>📌 Recurso: Mensagem</h3>

  <details>
    <summary>✅ <b> Enviar Texto</b></summary>
  </details>

  <details>
    <summary>✅ <b> Enviar Arquivo</b></summary>
  </details>

  <details>
    <summary>✅ <b> Enviar Modelo de Mensagem</b></summary>
  </details>


  <details>
    <summary>✅ <b> Buscar Mensagem por ID</b></summary>
  </details>

  <h1></h1>
  <h3>📌 Recurso: Conversa</h3>
  <details>
  <summary>✅ <b> Listar Conversas</b></summary>
  </details>
  <details>
  <summary>✅ <b> Atualizar Transferência</b></summary>
  </details>
  <details>
  <summary>✅ <b> Atualizar Status da Conversa</b></summary>
  </details>
  <details>
  <summary>✅ <b> Buscar Conversa por ID</b></summary>
  </details>
  <details>
  <summary>✅ <b> Atribuir Usuário à Conversa</b></summary>
  </details> 
  <details>
  <summary>✅ <b> Concluir Conversa</b></summary>
  </details>
  <details>
  <summary>✅ <b> Atualizar Conversa</b></summary>
  </details>
  <details>
  <summary>✅ <b> Enviar Mensagem de Texto</b></summary>
  </details>
  <details>
  <summary>✅ <b> Enviar Mensagem com Arquivo</b></summary>
  </details>
  <details>
  <summary>✅ <b> Enviar Modelo de Mensagem</b></summary>
  </details>

  <h1></h1>
  <h3>📌 Recurso: Painel</h3>
  <details>
  <summary>✅ <b> Listar Anotações</b></summary>
  </details>
  <details>
  <summary>✅ <b> Listar Cards</b></summary>
  </details>
  <details>
  <summary>✅ <b> Listar Painéis</b></summary>
  </details>
  <details>
  <summary>✅ <b> Buscar Card por ID</b></summary>
  </details>
  <details>
  <summary>✅ <b> Buscar Painel por ID</b></summary>
  </details>
  <details>
  <summary>✅ <b> Criar Card</b></summary>
  </details>
  <details>
  <summary>✅ <b> Criar Anotação de Texto</b></summary>
  </details>
  <details>
  <summary>✅ <b> Criar Anotação de Arquivo</b></summary>
  </details>
  <details>
  <summary>✅ <b> Deletar Anotação de Card</b></summary>
  </details>
  <details>
  <summary>✅ <b> Duplicação de Card</b></summary>
  </details>
  <details>
  <summary>✅ <b> Atualização de Card</b></summary>
  </details>

  <h1></h1>
  <h3>📌 Recurso: Chatbot</h3>
  <details>
  <summary>✅ <b> Enviar Chatbot</b></summary>
  </details>

  <h1></h1>
  <h3>📌 Recurso: Sequência</h3>
  <details>
  <summary>✅ <b> Adicionar Contato à sequência</b></summary>
  </details>
  <details>
  <summary>✅ <b> Adicionar Contatos à sequência</b></summary>
  </details>
  <details>
  <summary>✅ <b> Remover Contato de uma sequência</b></summary>
  </details>
  <details>
  <summary>✅ <b> Remover Contatos de uma sequência</b></summary>
  </details>
  <details>
  <summary>✅ <b> Listar Sequências</b></summary>
  </details>
  <details>
  <summary>✅ <b> Listar Contatos de uma Sequência</b></summary>
  </details>

  <h1></h1>

  # Instalação

  #### Siga o guia de instalação nos nós da comunidade n8n.

   - Vá para Configurações > Nós da comunidade.

  - Selecione Instalar.

  - Digite o nome do pacote: **n8n-nodes-wts**

  - Depois de instalado, você pode criar um fluxo de trabalho e no painel de nós, pesquisar por: **WTS Chat**

  - Com isso você poderá visualizar as ações disponíveis com o nó.

ai_documentation_summary:
  {"purpose":"This n8n node enables automation workflows to interact with the Wts Chat platform, allowing users to manage contacts, messages, sessions, and dashboard cards.","capabilities":["Create contacts","Update contacts","Search contacts by ID or phone","List all contacts","Send text messages","Send files","Send message templates","Retrieve messages by ID","List conversations","Update session transfers"],"authentication":"API key required","commonUseCases":["Automating customer support interactions via Wts Chat","Managing CRM contacts and notes within n8n workflows","Sending automated messages and files to users","Tracking and updating conversation statuses","Organizing dashboard cards and annotations"],"limitations":["Removal of 'CompanyId' field in session updates","Validation fields removed in version 2.0.3","Chatbot identification now relies on key rather than ID"],"relatedNodes":["n8n-nodes-http.request","n8n-nodes-wts.wts","n8n-nodes-wts.wts"]}


node_type: n8n-nodes-chatwoot.chatwoot
package_name: n8n-nodes-chatwoot
display_name: chatwoot
description: This is an n8n community node. It lets you use ChatWoot in your n8n workflows.
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: hugodeco
author_github_url: git+https://github.com/sufficit/n8n-nodes-chatwoot.git
npm_package_name: n8n-nodes-chatwoot
npm_version: 0.1.40
community_fetched_at: 2026-07-14T14:40:36.010Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # n8n-nodes-chatwoot

  This is an n8n community node. It lets you use ChatWoot 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

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

  ## Operations

  _List the operations supported by your node._

  ## Credentials

  _If users need to authenticate with the app/service, provide details here. You should include prerequisites (such as signing up with the service), available authentication methods, and how to set them up._

  ## Compatibility

  Tested on N8N > v0.210 (Success)

  ## Usage

  _This is an optional section. Use it to help users with any difficult or confusing aspects of the node._

  _By the time users are looking for community nodes, they probably already know n8n basics. But if you expect new users, you can link to the [Try it out](https://docs.n8n.io/try-it-out/) documentation to help them get started._

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * _Link to app/service documentation._

  ## Version history

  _This is another optional section. If your node has multiple versions, include a short description of available versions and what changed, as well as any compatibility impact._

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with Chatwoot, allowing users to interact with Chatwoot's support platform directly within n8n workflows.","capabilities":["Connect to Chatwoot instances","Send messages to Chatwoot","Retrieve messages from Chatwoot","Create tickets in Chatwoot","Update ticket status in Chatwoot"],"authentication":"API key required","commonUseCases":["Automating customer support responses","Syncing chat messages between platforms","Triggering workflows based on Chatwoot events","Managing support tickets programmatically"],"limitations":["Community node (not official n8n node)","Requires manual setup of Chatwoot credentials","May require additional configuration for advanced features"],"relatedNodes":["n8n-nodes-chatwoot.chatwoot","n8n-nodes-chatwoot.chatwootTrigger","n8n-nodes-chatwoot.chatwootWebhook"]}


node_type: @scalogicai/n8n-nodes-mcp-enhanced.mcpenhanced
package_name: @scalogicai/n8n-nodes-mcp-enhanced
display_name: mcpenhanced
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: kojo-scalogicai
author_github_url: git+https://github.com/ScalogicAI/n8n-nodes-mcp-enhanced.git
npm_package_name: @scalogicai/n8n-nodes-mcp-enhanced
npm_version: 1.0.5
community_fetched_at: 2026-07-14T14:40:36.011Z
ai_summary_generated_at: 2026-07-06 09:55:11
description:
  Enhanced MCP client with multi-tenant support and smart prompt handling. Fixed queue mode compatibility and node loading issues. Built on excellent foundation by Jd Fiscus (@nerding-io).

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

  # @scalogicai/n8n-nodes-mcp-enhanced

  > **Enhanced MCP Client with Additional Features**
  > 
  > This is an enhanced version of the n8n MCP client with additional features for prompt parameters and multi-tenant support, designed for users who need these specific capabilities.

  ## 🙏 Attribution

  This enhanced node is built upon the excellent foundation created by **Jd Fiscus** ([@nerding-io](https://github.com/nerding-io)):

  - **Original Project**: [n8n-nodes-mcp](https://github.com/nerding-io/n8n-nodes-mcp)
  - **npm Package**: [n8n-nodes-mcp](https://www.npmjs.com/package/n8n-nodes-mcp)
  - **Creator**: Jd Fiscus (jd@nerding.io)

  We're grateful for the original work that made this enhanced version possible. All core MCP protocol implementation and transport handling comes from the original project.

  ## 🔧 What's Different?

  This version adds two specific features while maintaining full compatibility with the original:

  ### **Additional Features:**
  - **Prompt Parameters**: Pass JSON parameters to prompts (original accepts prompt name only)
  - **Tenant ID Support**: Optional field for multi-tenant MCP servers
  - **Enhanced Validation**: Additional JSON parameter validation and error handling

  ### **What's Identical:**
  - **Resource handling**: listResources, readResource, listResourceTemplates work exactly the same
  - **Tool execution**: Same functionality for executing MCP tools
  - **Transport types**: Same support for STDIO, SSE, and HTTP Streamable
  - **Core MCP protocol**: Full compatibility with MCP specification

  ## 🎯 When to Use This Version

  Choose this enhanced version if:
  - Your MCP server accepts parameterized prompts
  - You work with multi-tenant MCP implementations
  - You need the specific additional features listed above

  Otherwise, the [original version](https://www.npmjs.com/package/n8n-nodes-mcp) works perfectly for standard MCP operations!

  ## 🚀 Additional Features in Detail

  ### **1. Prompt Parameters**

  **Original Version:**
  ```
  - Prompt Name: "write_email"
  - Result: Gets generic email template
  ```

  **Enhanced Version:**
  ```
  - Prompt Name: "write_email"
  - Prompt Parameters: {"tone": "formal", "recipient": "manager", "topic": "project update"}
  - Result: Gets customized email with your specific requirements
  ```

  ### **2. Tenant ID Support**

  **Enhanced Version:**
  ```
  - Prompt Name: "format_document"
  - Prompt Parameters: {"style": "academic"}
  - Tenant ID: "team-marketing"
  - Result: Gets team-specific document formatting and templates
  ```

  ## 📝 Parameter Formatting Guide

  ### **JSON Parameter Examples:**

  **Simple text customization:**
  ```json
  {
    "language": "Spanish", 
    "style": "casual"
  }
  ```

  **Content parameters:**
  ```json
  {
    "topic": "renewable energy",
    "audience": "general public",
    "length": "short",
    "include_examples": true
  }
  ```

  **User preferences:**
  ```json
  {
    "user": {
      "name": "Alex",
      "skill_level": "beginner"
    },
    "output_format": "markdown",
    "include_links": false
  }
  ```

  **Complex nested parameters:**
  ```json
  {
    "content": {
      "type": "tutorial",
      "sections": ["intro", "examples", "conclusion"]
    },
    "formatting": {
      "style": "academic",
      "citations": true
    },
    "output": {
      "format": "pdf",
      "language": "English"
    }
  }
  ```

  ### **Common Parameter Types:**
  - **Text**: `"language": "French"`
  - **Numbers**: `"word_count": 500`
  - **Booleans**: `"include_summary": true`
  - **Arrays**: `"topics": ["climate", "technology", "health"]`
  - **Objects**: `"format": {"type": "list", "numbered": true}`

  ## 🌟 Real-World Examples

  ### **Example 1: Content Creation**
  ```json
  {
    "prompt_name": "write_article",
    "parameters": {
      "topic": "sustainable living",
      "tone": "informative",
      "word_count": 800,
      "target_audience": "beginners",
      "include_tips": true
    }
  }
  ```

  ### **Example 2: Data Processing**
  ```json
  {
    "prompt_name": "analyze_data",
    "parameters": {
      "data_type": "sales_figures",
      "time_period": "last_quarter",
      "include_charts": true,
      "focus_areas": ["trends", "anomalies"]
    }
  }
  ```

  ### **Example 3: Personal Workflows**
  ```json
  {
    "prompt_name": "organize_notes",
    "parameters": {
      "category": "meeting_notes",
      "priority_level": "high",
      "tags": ["project_alpha", "urgent"],
      "format": "structured_list"
    }
  }
  ```

  ### **Example 4: Team Environments**
  ```json
  {
    "prompt_name": "create_report",
    "parameters": {
      "department": "engineering",
      "report_type": "weekly_standup",
      "include_metrics": true
    },
    "tenant_id": "team-backend"
  }
  ```

  ## 🔄 Migration from Original Version

  This version is a **drop-in replacement** for the original:

  1. **Existing workflows continue to work unchanged**
  2. **New features are optional** - only activate when you use them
  3. **Same operations available**: Execute Tool, List Tools, Get Prompt, etc.
  4. **Same credential types**: STDIO, SSE, HTTP Streamable

  To use the new features, simply:
  - Add parameters to your "Get Prompt" operations when needed
  - Include tenant ID if your MCP server supports multi-tenancy
  - Leave these fields empty for standard MCP operations

  ## 🛠️ Troubleshooting Enhanced Features

  ### **JSON Parameter Issues**

  **Invalid JSON Error:**
  ```
  ❌ Error: Invalid JSON in prompt parameters
  ✅ Fix: Ensure proper JSON formatting with quotes around strings
  ```

  **Example fixes:**
  ```json
  ❌ {name: "John", active: true}
  ✅ {"name": "John", "active": true}

  ❌ {"list": [item1, item2]}
  ✅ {"list": ["item1", "item2"]}
  ```

  ### **Empty Parameters**

  If your prompt doesn't need parameters, use:
  ```json
  {}
  ```

  Or leave the field empty - both work fine.

  ### **Tenant ID Usage**

  - **Optional field** - only use if your MCP server supports tenants
  - **Leave empty** for single-tenant or standard MCP servers
  - **No impact** on servers that don't use tenant IDs

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

  [Installation](#installation)
  [Credentials](#credentials)
  [Environment Variables](#environment-variables)
  [Operations](#operations)
  [Using as a Tool](#using-as-a-tool)
  [Compatibility](#compatibility)
  [Resources](#resources)

  ## Getting Started

  Official Quickstart Video:

  [![MCP Client Node Quickstart](/assets/mcp-n8n.png)](https://youtu.be/1t8DQL-jUJk)



  ### Community Videos

  Shoutout to all the creators of the following n8n community videos that are great resources for learning how to use this node:

  - [Is MCP the Future of N8N AI Agents? (Fully Tested!)](https://youtu.be/sb5hCcFYPIE)
  - [Connect N8N AI Agents to EVERYTHING using MCP?](https://youtu.be/tTDRgkD-120)
  - [Build an AI Agent That Can Use Any Tool (MCP in n8n Tutorial)](https://www.youtube.com/watch?v=SVZe2rdhYmA)
  - [The NEW N8N MCP is an Absolute Game-Changer (Brave Search MCP)](https://youtu.be/RxXS_FpJyGM)
  - [MCP & n8n Automation: The Ultimate Guide for MCP AI Agents (2025)](https://www.youtube.com/watch?v=mbQsnrxHPwE)
  - [REVOLUÇÃO na criação de AGENTES no N8N com o MCP Server!!!](https://www.youtube.com/watch?v=zgH85dJcs5c) (Portuguese)

  If you have a great video that you'd like to share, please let me know and I'll add it to the list!

  #### Interested a deeper dive into MCP?

  Check out my YouTube Series [MCP Explained](https://www.youtube.com/playlist?list=PLjOCx_PNfJ4S_oOSqrMi6t9_x1GllvQZO) for more information about the Model Context Protocol.

  ### Security Assessment
  [![MseeP.ai Security Assessment Badge](https://mseep.net/pr/nerding-io-n8n-nodes-mcp-badge.png)](https://mseep.ai/app/nerding-io-n8n-nodes-mcp)


  ## Installation

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

  Also pay attention to Environment Variables for [using tools in AI Agents](#using-as-a-tool). It's mandatory to set the `N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE` environment variable to `true` if you want to use the MCP Client node as a tool in AI Agents.

  ## Credentials

  The MCP Client Enhanced node supports three types of credentials to connect to an MCP server:

  ### Command-line Based Transport (STDIO)

  ![MCP Client STDIO Credentials](./assets/credentials.png)

  - **Command**: The command to start the MCP server
  - **Arguments**: Optional arguments to pass to the server command
  - **Environment Variables**: Variables to pass to the server in NAME=VALUE format

  ### HTTP Streamable Transport (Recommended)

  - **HTTP Streamable URL**: The HTTP endpoint that supports streaming responses (e.g., http://localhost:3001/stream)
  - **Additional Headers**: Optional headers to send with requests (format: name:value, one per line)

  HTTP Streamable is the recommended and modern method for all new integrations, providing better efficiency and flexibility compared to SSE.

  #### Example: Using a Local MCP Server with HTTP Streamable

  This example shows how to connect to a locally running MCP server using HTTP Streamable:

  1. Start a local MCP server that supports HTTP Streamable:
     ```bash
     npx @modelcontextprotocol/server-example-streamable
     ```

  2. Configure MCP Client credentials:
     - In the node settings, select **Connection Type**: `HTTP Streamable`
     - Create new credentials of type **MCP Client Enhanced (HTTP Streamable) API**
     - Set **HTTP Streamable URL**: `http://localhost:3001/stream`
     - Add any required headers for authentication

  3. Create a workflow using the MCP Client Enhanced node:
     - Add an MCP Client Enhanced node
     - Set the Connection Type to `HTTP Streamable`
     - Select your HTTP Streamable credentials
     - Execute the workflow to see the results

  ### Server-Sent Events (SSE) Transport (Deprecated, still available for legacy use)

  - **SSE URL**: The URL of the SSE endpoint (default: http://localhost:3001/sse)
  - **Messages Post Endpoint**: Optional custom endpoint for posting messages if different from the SSE URL
  - **Additional Headers**: Optional headers to send with requests (format: name:value, one per line)

  > **Deprecated:** SSE is deprecated and will not receive further updates, but remains available for legacy compatibility. For new projects, use HTTP Streamable.

  #### Example: Using a Local MCP Server with SSE (legacy)

  This example shows how to connect to a locally running MCP server using Server-Sent Events (SSE):

  1. Start a local MCP server that supports SSE:
     ```bash
     npx @modelcontextprotocol/server-example-sse
     ```

  2. Configure MCP Client credentials:
     - In the node settings, select **Connection Type**: `Server-Sent Events (SSE)`
     - Create new credentials of type **MCP Client Enhanced (SSE) API**
     - Set **SSE URL**: `http://localhost:3001/sse`
     - Add any required headers for authentication

  3. Create a workflow using the MCP Client Enhanced node:
     - Add an MCP Client Enhanced node
     - Set the Connection Type to `Server-Sent Events (SSE)`
     - Select your SSE credentials
     - Execute the workflow to see the results

  > **Note:** For new projects, HTTP Streamable is strongly recommended.

  ## Environment Variables

  The MCP Client Enhanced node supports passing environment variables to MCP servers using the command-line based transport in two ways:

  ### 1. Using the Credentials UI

  You can add environment variables directly in the credentials configuration:

  ![Environment Variables in Credentials](./assets/credentials-envs.png)

  This method is useful for individual setups and testing. The values are stored securely as credentials in n8n.

  ### 2. Using Docker Environment Variables

  For Docker deployments, you can pass environment variables directly to your MCP servers by prefixing them with `MCP_`:

  ```yaml
  version: '3'

  services:
    n8n:
      image: n8nio/n8n
      environment:
        - MCP_BRAVE_API_KEY=your-api-key-here
        - MCP_OPENAI_API_KEY=your-openai-key-here
        - MCP_CUSTOM_SETTING=some-value
      # other configuration...
  ```

  These environment variables will be automatically passed to your MCP servers when they are executed.

  ### Example: Using Brave Search MCP Server

  This example shows how to set up and use the Brave Search MCP server:

  1. Install the Brave Search MCP server:
     ```bash
     npm install -g @modelcontextprotocol/server-brave-search
     ```

  2. Configure MCP Client credentials:
     - **Command**: `npx`
     - **Arguments**: `-y @modelcontextprotocol/server-brave-search`
     - **Environment Variables**: `BRAVE_API_KEY=your-api-key` Add a variables (space comma or newline separated)

  3. Create a workflow that uses the MCP Client Enhanced node:
     - Add an MCP Client Enhanced node
     - Select the "List Tools" operation to see available search tools
     - Add another MCP Client Enhanced node
     - Select the "Execute Tool" operation
     - Choose the "brave_search" tool
     - Set Parameters to: `{"query": "latest AI news"}`

  ![Brave Search Example](./assets/brave-search-example.png)

  The node will execute the search and return the results in the output.

  ### Example: Multi-Server Setup with AI Agent

  This example demonstrates how to set up multiple MCP servers in a production environment and use them with an AI agent:

  1. Configure your docker-compose.yml file:

  ```yaml
  version: '3'

  services:
    n8n:
      image: n8nio/n8n
      environment:
        # MCP server environment variables
        - MCP_BRAVE_API_KEY=your-brave-api-key
        - MCP_OPENAI_API_KEY=your-openai-key
        - MCP_SERPER_API_KEY=your-serper-key
        - MCP_WEATHER_API_KEY=your-weather-api-key

        # Enable community nodes as tools
        - N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
      ports:
        - "5678:5678"
      volumes:
        - ~/.n8n:/home/node/.n8n
  ```

  2. Create multiple MCP Client Enhanced credentials in n8n:

     **Brave Search Credentials**:
     - Command: `npx`
     - Arguments: `-y @modelcontextprotocol/server-brave-search`

     **OpenAI Tools Credentials**:
     - Command: `npx`
     - Arguments: `-y @modelcontextprotocol/server-openai`

     **Web Search Credentials**:
     - Command: `npx`
     - Arguments: `-y @modelcontextprotocol/server-serper`

     **Weather API Credentials**:
     - Command: `npx`
     - Arguments: `-y @modelcontextprotocol/server-weather`

  3. Create an AI Agent workflow:
     - Add an AI Agent node
     - Enable MCP Client Enhanced as a tool
     - Configure different MCP Client Enhanced nodes with different credentials
     - Create a prompt that uses multiple data sources

  ![Multi-Server Setup](./assets/multi-server-example.png)

  Example AI Agent prompt:
  ```
  I need you to help me plan a trip. First, search for popular destinations in {destination_country}.
  Then, check the current weather in the top 3 cities.
  Finally, find some recent news about travel restrictions for these places.
  ```

  With this setup, the AI agent can use multiple MCP tools across different servers, all using environment variables configured in your Docker deployment.

  ## Operations

  The MCP Client Enhanced node supports the following operations:

  ![MCP Client Operations](./assets/operations.png)

  - **Execute Tool** - Execute a specific tool with parameters
  - **Get Prompt** - Get a specific prompt template (with enhanced parameter support)
  - **List Prompts** - Get a list of available prompts
  - **List Resources** - Get a list of available resources from the MCP server
  - **List Tools** - Get a list of available tools
  - **Read Resource** - Read a specific resource by URI

  ### Example: List Tools Operation

  ![List Tools Example](./assets/list-tools.png)

  The List Tools operation returns all available tools from the MCP server, including their names, descriptions, and parameter schemas.

  ### Example: Execute Tool Operation

  ![Execute Tool Example](./assets/execute-tool.png)

  The Execute Tool operation allows you to execute a specific tool with parameters. Make sure to select the tool you want to execute from the dropdown menu.

  ### Example: Enhanced Get Prompt Operation

  The enhanced Get Prompt operation includes additional fields:

  - **Prompt Name**: Name of the prompt template (same as original)
  - **Prompt Parameters**: JSON parameters to customize the prompt (new feature)
  - **Tenant ID**: Optional tenant identifier for multi-tenant servers (new feature)

  Example usage:
  ```
  Prompt Name: "summarize_text"
  Prompt Parameters: {"length": "short", "style": "bullet_points", "language": "English"}
  Tenant ID: "team-content" (optional)
  ```

  ## Using as a Tool

  This node can be used as a tool in n8n AI Agents. To enable community nodes as tools, you need to set the `N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE` environment variable to `true`.

  ### Setting the Environment Variable

  **If you're using a bash/zsh shell:**
  ```bash
  export N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
  n8n start
  ```

  **If you're using Docker:**
  Add to your docker-compose.yml file:
  ```yaml
  environment:
    - N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
  ```

  **If you're using the desktop app:**
  Create a `.env` file in the n8n directory:
  ```
  N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
  ```

  **If you want to set it permanently on Mac/Linux:**
  Add to your `~/.zshrc` or `~/.bash_profile`:
  ```bash
  export N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
  ```

  Example of an AI Agent workflow results:

  ![AI Agent Example](./assets/execute-tool-result.png)

  After setting this environment variable and restarting n8n, your MCP Client Enhanced node will be available as a tool in AI Agent nodes.

  ## Compatibility

  - Requires n8n version 1.0.0 or later
  - Compatible with MCP Protocol version 1.0.0 or later
  - Supports both STDIO and SSE transports for connecting to MCP servers
  - SSE transport requires a server that implements the MCP Server-Sent Events specification
  - **Fully backward compatible** with workflows using the original MCP client

  ## Support & Questions

  For questions about the enhanced features or issues specific to this version:
  - **Email**: contact@scalogic.ai
  - **Issues**: [GitHub Issues](https://github.com/ScalogicAI/n8n-nodes-mcp-enhanced/issues)

  For questions about core MCP functionality, please refer to the [original project](https://github.com/nerding-io/n8n-nodes-mcp).

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Model Context Protocol Documentation](https://modelcontextprotocol.io/docs/)
  * [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk)
  * [MCP Transports Overview](https://modelcontextprotocol.io/docs/concepts/transports)
  * [Using SSE in MCP](https://github.com/modelcontextprotocol/typescript-sdk/blob/main/src/client/sse.ts)

  ## License

  MIT License - see LICENSE file for details

  ---

  **Built with ❤️ by ScalogicAI** | **Foundation by Jd Fiscus (@nerding-io)**

ai_documentation_summary:
  {"purpose":"Enhanced MCP client node for n8n that works with standard MCP servers and adds support for parameterized prompts and multi-tenant workflows. It is intended as a drop-in replacement for the original MCP node with the same core protocol and transport support.","capabilities":["Execute MCP tools","List MCP tools","Get prompts","List resources","Read resources","List resource templates","Pass JSON prompt parameters to prompts","Support optional tenant ID for multi-tenant MCP servers","Use STDIO, SSE, and HTTP Streamable transports","Validate JSON prompt parameters with enhanced error handling"],"authentication":"Uses MCP transport/credential configuration; supports STDIO, SSE, and HTTP Streamable. No separate API key or OAuth flow is mentioned in the README.","commonUseCases":["Calling MCP tools from n8n workflows","Fetching customized prompts with JSON parameters","Integrating with multi-tenant MCP servers","Reading and listing MCP resources in workflows","Replacing the original n8n MCP node without changing existing workflows"],"limitations":["Prompt parameters must be valid JSON or the node will error","Tenant ID is optional and only useful if the MCP server supports multi-tenancy","README says the node is a drop-in replacement but the enhanced features are only available when explicitly used"],"relatedNodes":["n8n MCP client node","@nerding-io/n8n-nodes-mcp"]}


node_type: n8n-nodes-hotmart.hotmart
package_name: n8n-nodes-hotmart
display_name: hotmart
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: thaleslaray
author_github_url: git+https://github.com/thaleslaray/n8n-nodes-hotmart.git
npm_package_name: n8n-nodes-hotmart
npm_version: 0.9.9
community_fetched_at: 2026-07-14T14:40:36.011Z
ai_summary_generated_at: 2026-03-25 22:47:20
description:
  Nós personalizados para integrar a API Hotmart com o n8n, permitindo automação completa de operações na plataforma líder de produtos digitais da América Latina

npm_readme:
  # 🚀 n8n-nodes-hotmart

  **👨‍💻 Autor:** [Thales Laray](https://www.escoladeautomacao.com.br/inscricao-ea-bio) | [@thaleslaray](https://instagram.com/thaleslaray)  
  **🤝 Colaborador:** [Anderson Ferreira](https://www.instagram.com/afsautomacoes/) | [@afsautomacoes](https://www.instagram.com/afsautomacoes/)

  <div align="center">

  ![n8n](https://img.shields.io/badge/n8n-community-orange?style=for-the-badge)
  ![Hotmart](https://img.shields.io/badge/Hotmart-API-red?style=for-the-badge)
  ![TypeScript](https://img.shields.io/badge/TypeScript-100%25-blue?style=for-the-badge)
  ![Coverage](https://img.shields.io/badge/Coverage-100%25-brightgreen?style=for-the-badge)
  ![Tests](https://img.shields.io/badge/Tests-1300+-success?style=for-the-badge)

  **🏆 Certificação n8n Level: Steve Jobs** 

  *"Quando a perfeição encontra a obsessão, nasce um node que nem o próprio Steve Jobs criticaria"*

  </div>

  ---

  ## 📋 Índice

  - [Sobre](#-sobre)
  - [Por que este é o melhor node Hotmart](#-por-que-este-é-o-melhor-node-hotmart)
  - [Instalação](#-instalação)
  - [Recursos](#-recursos)
  - [Qualidade Obsessiva](#-qualidade-obsessiva)
  - [Para Auditores n8n](#-para-auditores-n8n)
  - [Documentação](#-documentação)
  - [Contribuindo](#-contribuindo)

  ## 🎯 Sobre

  Este não é apenas mais um node n8n. É o resultado de 19 dias de desenvolvimento obsessivo, 100+ horas de código, e um compromisso inabalável com a perfeição. Cada linha de código foi escrita pensando em você, desenvolvedor que precisa de uma integração Hotmart que simplesmente funciona.

  ## 🏆 Por que este é o melhor node Hotmart

  ### 1. **Cobertura Total da API**
  - ✅ **100% da API Hotmart** implementada
  - ✅ **43 operações** disponíveis
  - ✅ **Todos os endpoints** documentados
  - ✅ **Webhooks inteligentes** com 3 modos de operação

  ### 2. **Qualidade Steve Jobs**
  ```typescript
  // Não é apenas código. É arte.
  const perfection = {
    coverage: '100%',
    bugs: 0,
    documentation: 'Impecável',
    userExperience: 'Mágica'
  };
  ```

  ### 3. **Números que Impressionam**
  - 📊 **1300+ testes** automatizados
  - 🎯 **100% de cobertura** de código
  - 🐛 **Zero bugs** em produção
  - ⚡ **Performance otimizada** com paginação inteligente
  - 🤖 **AI-Ready** - Funciona com n8n AI Agents

  ## 🚀 Instalação

  ### Via n8n Community Nodes
  1. Acesse: **Settings → Community Nodes**
  2. Busque: `n8n-nodes-hotmart`
  3. Clique: **Install**

  ✅ **Pronto!** O node será instalado automaticamente e estará disponível em seus workflows.

  ## ⚡ Recursos

  ### 🔥 Operações Principais

  <details>
  <summary><b>💰 Vendas (Sales)</b> - 6 operações</summary>

  - **Histórico de Vendas** - Com filtros avançados por data, status, afiliado
  - **Comissões** - Detalhamento completo de comissões (produtor/afiliado)  
  - **Preços Detalhados** - Breakdown de valores, taxas, impostos
  - **Participantes** - Todos os envolvidos em cada venda
  - **Resumo de Vendas** - Métricas consolidadas com totalizadores
  - **Reembolsos** - Processamento de solicitações de reembolso

  </details>

  <details>
  <summary><b>📋 Assinaturas (Subscriptions)</b> - 10 operações</summary>

  - **Listar Todas** - Com paginação automática e filtros inteligentes
  - **Cancelar** - Individual ou em lote
  - **Reativar** - Com cobrança automática opcional
  - **Alterar Data** - Mudança de ciclo de cobrança
  - **Transações** - Histórico completo de pagamentos
  - **Compras** - Detalhes de cada compra
  - **Resumo** - Analytics de assinaturas

  </details>

  <details>
  <summary><b>🎯 Mais Recursos</b></summary>

  - **🛍️ Produtos** - Catálogo completo com detalhes
  - **🎟️ Cupons** - Criar, validar, excluir
  - **🎓 Área de Membros** - Alunos, módulos, progresso
  - **🎫 Eventos** - Ingressos e participantes
  - **💳 Negociação** - Links de pagamento personalizados
  - **🔧 Custom API Call** - Para endpoints futuros

  </details>

  ### 📡 Webhook Trigger Inteligente

  ```javascript
  // 3 Modos de Operação:

  // 1. Standard - Todos os eventos em uma saída
  webhookMode: 'standard'

  // 2. Smart - Separação automática por tipo
  webhookMode: 'smart' 
  // Saídas: purchase_approved, purchase_complete, subscription_cancellation...

  // 3. Super Smart - Separação ultra-granular
  webhookMode: 'superSmart'
  // Saídas: single_purchase, new_subscription, subscription_renewal
  ```

  ## 🏆 Qualidade Obsessiva

  ### 📊 Métricas de Excelência

  ```yaml
  Testes:
    Total: 1,337
    Unitários: 1,084
    Integração: 178
    E2E: 48
    Performance: 27

  Cobertura:
    Statements: 100%
    Branches: 100%
    Functions: 100%
    Lines: 100%

  Qualidade:
    Complexidade Ciclomática: < 10
    Duplicação de Código: 0%
    Code Smells: 0
    Vulnerabilidades: 0
  ```

  ### 🛡️ Garantias

  - ✅ **Retrocompatibilidade** garantida
  - ✅ **Tipagem 100%** TypeScript
  - ✅ **Documentação inline** completa
  - ✅ **Error handling** robusto
  - ✅ **Rate limiting** inteligente
  - ✅ **Retry automático** com backoff

  ## 👨‍💼 Para Auditores n8n

  <details>
  <summary><b>📋 Checklist de Certificação</b></summary>

  ### ✅ Requisitos Técnicos
  - [x] TypeScript sem `any`
  - [x] Tratamento de erros consistente
  - [x] Paginação implementada corretamente
  - [x] Credenciais OAuth2 seguras
  - [x] Ícones em todos os formatos necessários

  ### ✅ Documentação
  - [x] README completo
  - [x] Todas as operações documentadas
  - [x] Exemplos de uso
  - [x] Troubleshooting guide
  - [x] CHANGELOG mantido

  ### ✅ Testes
  - [x] Cobertura > 80% (temos 100%!)
  - [x] Testes de integração
  - [x] Testes de webhook
  - [x] Testes de performance

  ### ✅ Boas Práticas
  - [x] Versionamento semântico
  - [x] Commits convencionais
  - [x] CI/CD configurado
  - [x] Dependências atualizadas
  - [x] Sem vulnerabilidades conhecidas

  </details>

  ## 📚 Documentação

  ### 🚀 Quick Start
  ```typescript
  // 1. Configure suas credenciais Hotmart OAuth2
  // 2. Arraste o node Hotmart para seu workflow
  // 3. Selecione a operação desejada
  // 4. Seja feliz! 🎉
  ```

  ### 📖 Guias Completos
  - [Instalação Detalhada](docs/INSTALLATION.md)
  - [Configuração de Webhooks](docs/WEBHOOKS.md)
  - [Exemplos de Workflows](docs/EXAMPLES.md)
  - [API Reference](docs/API-REFERENCE.md)
  - [Troubleshooting](docs/TROUBLESHOOTING.md)

  ### 💡 Exemplos de Uso

  <details>
  <summary><b>Exemplo 1: Listar vendas do mês</b></summary>

  ```json
  {
    "resource": "sales",
    "operation": "getHistoricoVendas",
    "dateFilter": "custom",
    "startDate": "2024-01-01",
    "endDate": "2024-01-31",
    "returnAll": true
  }
  ```

  </details>

  <details>
  <summary><b>Exemplo 2: Webhook inteligente</b></summary>

  ```json
  {
    "webhookMode": "smart",
    "events": ["PURCHASE_APPROVED", "SUBSCRIPTION_CANCELLATION"],
    "authentication": "bearerToken"
  }
  ```

  </details>

  ## 🤝 Contribuindo

  Contribuições são bem-vindas, mas lembre-se: mantemos padrões Steve Jobs aqui.

  ### 📏 Nossos Padrões

  1. **Código**: Clean, testado, documentado
  2. **Commits**: Convencionais (feat:, fix:, docs:)
  3. **PRs**: Com descrição detalhada e testes
  4. **Issues**: Use os templates fornecidos

  ### 🚀 Setup de Desenvolvimento

  ```bash
  # Clone
  git clone https://github.com/thaleslaray/n8n-nodes-hotmart.git
  cd n8n-nodes-hotmart

  # Instale
  npm install

  # Desenvolva
  npm run dev

  # Teste
  npm test
  npm run test:watch

  # Build
  npm run build
  ```

  ## 📄 Licença

  MIT © [Thales Laray](https://github.com/thaleslaray)

  ---

  <div align="center">

  ### ⭐ Se este node tornou sua vida melhor, considere dar uma estrela!

  **Feito com ❤️ e ☕ por [Thales Laray](https://github.com/thaleslaray)**

  ### 🤝 Agradecimentos Especiais

  - **[Anderson Ferreira](https://www.instagram.com/afsautomacoes/)** - Testes e melhorias de qualidade, Revisão de código

  *"Stay hungry, stay foolish" - mas sempre com 100% de cobertura de testes*

  </div>

ai_documentation_summary:
  {"purpose":"Integrates the Hotmart API with n8n to automate operations on the Latin American digital products platform, covering sales, subscriptions, products, and more.","capabilities":["Access sales history with advanced filters","Manage commissions and detailed pricing breakdowns","Handle subscription operations (list, cancel, reactivate, change billing date)","View transaction and purchase histories","Manage coupons (create, validate, exclude)","Access member area data (students, modules, progress)","Handle event tickets and participants","Create custom payment links","Execute custom API calls for future endpoints","Webhook triggers with three modes: standard, smart, and superSmart"],"authentication":"OAuth2","commonUseCases":["Automating sales reporting and commission tracking","Managing subscription renewals and cancellations","Processing refund requests","Monitoring product sales and analytics","Automating coupon validation and creation"],"limitations":["Limited to the Hotmart API's scope and rate limits","Custom API calls may require specific endpoint knowledge"],"relatedNodes":["n8n-nodes-core.webhook","n8n-nodes-core.oauth2","n8n-nodes-core.httpRequest"]}


node_type: @luka-cat-mimi/n8n-nodes-bcryptjs.bcryptjs
package_name: @luka-cat-mimi/n8n-nodes-bcryptjs
display_name: bcryptjs
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: GitHub Actions
author_github_url: git+https://github.com/luka-mimi/n8n-nodes-bcryptjs.git
npm_package_name: @luka-cat-mimi/n8n-nodes-bcryptjs
npm_version: 1.0.5
community_fetched_at: 2026-07-14T14:40:36.012Z
ai_summary_generated_at: 2026-03-25 22:47:20
description:
  n8n community node package that provides bcryptjs password hashing and verification functionality with full async operations support

npm_readme:
  # n8n-nodes-bcryptjs

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

  This is an [n8n](https://n8n.io/) community node that allows you to use bcryptjs for password hashing and verification operations 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) • [Usage Examples](#usage-examples) • [Resources](#resources)

  ## Installation

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

  ### Community Nodes Installation

  1. In n8n, go to **Settings > Community Nodes**.
  2. Select **Install**.
  3. Enter `@luka-cat-mimi/n8n-nodes-bcryptjs` in the **npm Package Name** field.
  4. Agree to the risks, then select **Install**.

  After installation, the Bcryptjs node will appear in the **Cryptography** category.

  ### Manual Installation

  To install the node locally, you can use npm package manager:

  ```bash
  # For n8n self-hosted
  npm install @luka-cat-mimi/n8n-nodes-bcryptjs
  ```

  ## Operations

  This node provides all bcryptjs async function capabilities:

  ### Supported Operations

  | Operation | Description |
  |-----------|-------------|
  | **Compare Password** | Asynchronously compare password with hash |
  | **Generate Salt** | Asynchronously generate salt value |
  | **Get Rounds** | Get the number of rounds used in the hash |
  | **Get Salt** | Extract salt portion from hash |
  | **Hash Password** | Asynchronously hash password |
  | **Test Truncation** | Test if password will be truncated (over 72 bytes) |

  ### Parameter Descriptions

  #### Generate Salt
  - **Rounds**: The cost of processing the data, default value is 10
  - **Minor Version**: The minor version of bcrypt, 'a' or 'b', default is 'b'

  #### Hash Password
  - **Password**: The password to hash
  - **Salt or Rounds**: Salt value to use for hashing, or number specifying rounds

  #### Compare Password
  - **Password**: The original password to compare
  - **Hash**: The hash value to compare against the password

  #### Get Rounds
  - **Hash**: The hash value to extract rounds from

  #### Get Salt
  - **Hash**: The hash value to extract salt from

  #### Test Truncation
  - **Password**: The password to check

  ### Options

  - **Output Field Name**: Field name where the result will be saved, default is 'result'

  ## Usage Examples

  ### Example 1: Password Hashing

  Hash passwords when creating users:

  1. Set operation to **Hash Password**
  2. Enter the password to hash
  3. Set rounds (recommended 10-12)
  4. The node will return the hashed password

  **Input**:
  ```json
  {
    "password": "mySecretPassword"
  }
  ```

  **Output**:
  ```json
  {
    "password": "mySecretPassword",
    "result": "$2b$10$N9qo8uLOickgx2ZMRZoMye..."
  }
  ```

  ### Example 2: Password Verification

  Verify passwords during user login:

  1. Set operation to **Compare Password**
  2. Enter the original password and stored hash value
  3. The node will return true or false

  **Input**:
  ```json
  {
    "password": "mySecretPassword",
    "hash": "$2b$10$N9qo8uLOickgx2ZMRZoMye..."
  }
  ```

  **Output**:
  ```json
  {
    "password": "mySecretPassword",
    "hash": "$2b$10$N9qo8uLOickgx2ZMRZoMye...",
    "result": true
  }
  ```

  ### Example 3: Custom Output Field

  Set a custom output field name in options:

  1. Expand the **Options** section
  2. Set **Output Field Name** to `hashedPassword`
  3. The result will be saved to the specified field

  **Output**:
  ```json
  {
    "password": "mySecretPassword",
    "hashedPassword": "$2b$10$N9qo8uLOickgx2ZMRZoMye..."
  }
  ```

  ## Security Considerations

  - bcrypt only uses the first 72 bytes of a password, any extra bytes are ignored
  - Recommend using async version to avoid blocking the event loop
  - Higher rounds mean better security but longer processing time
  - Default rounds of 10 is secure for most cases
  - Production environments should consider using 12 rounds or higher

  ## Development

  To develop or contribute to this project:

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

  # Install dependencies
  npm install

  # Build the project
  npm run build

  # Run code quality checks
  npm run lint

  # Fix code formatting
  npm run lintfix
  ```

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [bcryptjs documentation](https://github.com/dcodeIO/bcrypt.js) - The underlying crypto library
  - [bcrypt algorithm explanation](https://en.wikipedia.org/wiki/Bcrypt) - Learn about the bcrypt algorithm

  ## License

  [MIT](LICENSE.md) © luka-cat-mimi

  ---

  **If this project helps you, please give it a ⭐️!**

  **Issue Reports**: [GitHub Issues](https://github.com/luka-mimi/n8n-nodes-bcryptjs/issues)

  **中文文档**: [README_CN.md](README_CN.md)

ai_documentation_summary:
  {"purpose":"A community n8n node that provides bcryptjs functionality for password hashing, verification, and salt generation within workflow automation.","capabilities":["Hash passwords asynchronously","Verify passwords against stored hashes","Generate random salt values","Extract salt from existing hashes","Retrieve hash round count","Test password truncation limits"],"authentication":"None","commonUseCases":["User registration password hashing","User login authentication verification","Secure password storage in workflows","Password strength validation"],"limitations":["Only processes first 72 bytes of passwords, ignoring longer portions","Higher security rounds increase processing time","Community node (not official n8n package)","No built-in rate limiting or additional security features"],"relatedNodes":["Cryptography nodes","HTTP Request nodes (for external auth services)","Code nodes (for custom hashing logic)"]}


node_type: n8n-nodes-zapi.zapi
package_name: n8n-nodes-zapi
display_name: zapi
description: Custom n8n node for Z-API.
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: leandcesar
author_github_url: git+https://github.com/leandcesar/n8n-nodes-zapi.git
npm_package_name: n8n-nodes-zapi
npm_version: 0.1.0
community_fetched_at: 2026-07-14T14:40:36.013Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # n8n-nodes-zapi

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

  Z-API is a service that provides an API enabling interaction with your WhatsApp through a API, along with webhooks to notify you about interactions with your number.

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

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

  ## Installation

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

  ## Operations

  <p align="center">
    <img src="docs/assets/actions.png" alt="Actions Image">
  </p>

  The following operations are supported by the Z-API node:

  ### Messages

  #### Send Message
  - [x] Send text
  - [x] Send image
  - [x] Send sticker
  - [x] Send GIF
  - [x] Send audio
  - [x] Send video
  - [x] Send PTV
  - [x] Send documents
  - [ ] Send link
  - [x] Send location
  - [ ] Send contact
  - [ ] Send multiple contacts
  - [ ] ~~Send text with action buttons~~ (unavailable)
  - [ ] ~~Send text with buttons texto~~ (unavailable)
  - [ ] ~~Send image with buttons botões~~ (unavailable)
  - [x] Send list of options

  #### Manage Message
  - [ ] Send reaction
  - [ ] Remove reaction
  - [ ] Delete message
  - [ ] Read message
  - [ ] Forward message
  - [ ] Pin message
  - [ ] Unpin message

  #### Products
  - [ ] Send product
  - [ ] Send catalog
  - [ ] Send order approval
  - [ ] Send order status update
  - [ ] Send payment status update

  #### Events
  - [ ] Send event
  - [ ] Edit event
  - [ ] Respond to event

  #### Polls
  - [ ] Send poll
  - [ ] Send poll vote

  ## Credentials

  To use this node, you need to authenticate with the Z-API service. Follow these steps:

  1. **Sign Up**: Create an account on [Z-API](https://www.z-api.io/).
  2. **Create an Instance**: After signing up, create an instance in the Z-API dashboard. Each instance will have its own ID and Token.
  3. **Get ID and Token**: Go to your instance settings in the admin panel to find your ID and Token.
  4. Navigate to the "Security" tab and find the "Client Token" module.
  5. Click "Configure Now" to generate a token. Initially, the token will be disabled to avoid disruptions.
  6. Activate the token in the Z-API dashboard.
  7. **Add Credentials to n8n**: In n8n, go to the credentials section and add new credentials for Z-API. Use the ID and Token from your Z-API instance and the Client Token from your account.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Z-API documentation](https://developer.z-api.io/)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of WhatsApp interactions via the Z-API service, allowing users to send various media types and manage messages within their workflows.","capabilities":["Send text messages","Send images","Send stickers","Send GIFs","Send audio","Send videos","Send PTV (Personalized Text with Video)","Send documents","Send locations","Send lists of options"],"authentication":"API Token (Client Token) + Instance ID","commonUseCases":["Automated customer support on WhatsApp","Sending promotional content and media","Order tracking and status notifications","Event management and reminders","Interactive messaging with polls and lists"],"limitations":["Cannot send links directly","Cannot send contacts","Cannot send multiple contacts","Text with action buttons feature is unavailable","Text with buttons feature is unavailable"],"relatedNodes":["n8n-nodes-whatsapp","n8n-nodes-http-request","n8n-nodes-zapier"]}


node_type: n8n-nodes-notificame-hub.notificamehub
package_name: n8n-nodes-notificame-hub
display_name: notificamehub
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: oriondesign
author_github_url: git+https://github.com/oriondesign2015/n8n-nodes-notificame-hub.git
npm_package_name: n8n-nodes-notificame-hub
npm_version: 0.3.3
community_fetched_at: 2026-07-14T14:40:36.014Z
ai_summary_generated_at: 2026-07-06 09:55:11
description:
  A NotificaMe Hub automatiza a comunicação em múltiplos canais, oferecendo soluções integradas e escaláveis.

npm_readme:
  ![image](https://github.com/user-attachments/assets/23ac406d-93eb-45d1-938e-4f4e5dba882e)

  <p align="center"><br>
  Este Community Node foi desenvolvido a pedido da <b>NotificaMe Hub</b> com o intuito de simplificar e auxiliar toda a comunidade a integrar e utilizar ao máximo todo o poder oferecido pela plataforma <b>NotificaMe Hub</b> em seus projetos do N8N. <b>Desenvolvido por OrionDesign.</b>
  </p>
  <br>
  	
  <div align="center">
    <img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.npmjs.org%2Fdownloads%2Fpoint%2Flast-year%2Fn8n-nodes-notificame-hub&query=downloads&style=for-the-badge&label=Total%20de%20Downloads&labelColor=%230d1117&color=%23359514&cacheSeconds=30&link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2Fn8n-nodes-notificame-hub" alt="Dynamic JSON Badge">
  </div>
  <br>
  </p>


  <h1></h1>

  <h3>⚙️ Requisitos</h3>

  Para utilizar o nosso **Community Node**, é necessário atender aos seguintes requisitos:  
  - **N8N** na versão **1.54.4** ou superior  
  - Possuir uma conta no **NotificaMe Hub**  

  <h1></h1>

  <h3>📌 Recursos Disponíveis</h3>

  <h3>Revendas</h3>
  🔧 Este recurso oferece acesso completo às principais funcionalidades relacionadas às revendas do NotificaMe Hub. Ele permite realizar operações essenciais, como listar subcontas e definir webhooks de forma prática e eficiente.
  <br>
  <details>
    <summary><b>Lista de operações</b></summary>
  	<details><summary>✅ <b>Listar Subcontas</b></summary></details>
   	<details><summary>✅ <b>Definir Webhook</b></summary></details>
  </details>

  <h3>WhatsApp</h3>
  📱 Este recurso permite o envio e gerenciamento de mensagens no WhatsApp, incluindo templates, mídias, interações e reações.
  <br>
  <details>
    <summary><b>Lista de operações</b></summary>
    <details><summary>✅ <b>Listar templates</b></summary></details>
    <details><summary>✅ <b>Enviar template - Sem parâmetros</b></summary></details>
    <details><summary>✅ <b>Enviar template - Com parâmetros (tipo número/positional)</b></summary></details>
    <details><summary>✅ <b>Enviar template - Com parâmetros (tipo nome/named)</b></summary></details>
    <details><summary>✅ <b>Enviar uma mensagem de texto</b></summary></details>
    <details><summary>✅ <b>Enviar uma mensagem de áudio</b></summary></details>
    <details><summary>✅ <b>Enviar um sticker</b></summary></details>
    <details><summary>✅ <b>Enviar um arquivo (documentos, imagens, vídeos…)</b></summary></details>
    <details><summary>✅ <b>Enviar localização</b></summary></details>
    <details><summary>✅ <b>Enviar mensagem interativa com botões</b></summary></details>
    <details><summary>✅ <b>Enviar mensagem interativa com listas</b></summary></details>
    <details><summary>✅ <b>Enviar mensagem interativa com link / CTA</b></summary></details>
    <details><summary>✅ <b>Reagir a uma mensagem</b></summary></details>
    <details><summary>✅ <b>Responder uma mensagem</b></summary></details>
  </details>

  <h3>Instagram</h3>
  📸 Este recurso permite a interação com usuários do Instagram, incluindo mensagens, postagens e respostas a comentários.
  <br>
  <details>
    <summary><b>Lista de operações</b></summary>
    <details><summary>✅ <b>Enviar uma mensagem de texto</b></summary></details>
    <details><summary>✅ <b>Enviar uma mensagem de áudio</b></summary></details>
    <details><summary>✅ <b>Enviar um arquivo (imagens, vídeos…)</b></summary></details>
    <details><summary>✅ <b>Responder um comentário</b></summary></details>
    <details><summary>✅ <b>Enviar template de botões</b></summary></details>
    <details><summary>✅ <b>Fazer uma publicação</b></summary></details>
    <details><summary>✅ <b>Listar postagens da conta</b></summary></details>
  </details>

  <h3>Facebook</h3>
  📘 Permite o envio de mensagens e templates para interagir com usuários no Facebook Messenger.
  <br>
  <details>
    <summary><b>Lista de operações</b></summary>
    <details><summary>✅ <b>Enviar uma mensagem de texto</b></summary></details>
    <details><summary>✅ <b>Enviar uma mensagem de áudio</b></summary></details>
    <details><summary>✅ <b>Enviar um arquivo (imagens, vídeos…)</b></summary></details>
    <details><summary>✅ <b>Enviar um template genérico</b></summary></details>
    <details><summary>✅ <b>Enviar um template de botão</b></summary></details>
    <details><summary>✅ <b>Enviar um template de mídia</b></summary></details>
  </details>

  <h3>Telegram</h3>
  📲 Recurso para envio de mensagens e arquivos no Telegram, permitindo automação e interação.
  <br>
  <details>
    <summary><b>Lista de operações</b></summary>
    <details><summary>✅ <b>Enviar uma mensagem de texto</b></summary></details>
    <details><summary>✅ <b>Enviar uma mensagem de áudio</b></summary></details>
    <details><summary>✅ <b>Enviar um arquivo (documento, imagens, vídeos…)</b></summary></details>
  </details>

  <h3>Mercado Livre</h3>
  🤝 Permite a interação com clientes respondendo perguntas diretamente na plataforma do Mercado Livre.
  <br>
  <details>
    <summary><b>Lista de operações</b></summary>
    <details><summary>✅ <b>Responder uma pergunta</b></summary></details>
  </details>

  <h3>OLX</h3>
  💬 Permite a interação com clientes respondendo perguntas do chat diretamente na plataforma OLX.
  <br>
  <details>
    <summary><b>Lista de operações</b></summary>
    <details><summary>✅ <b>Enviar mensagem</b></summary></details>
  </details>

  <h3>WebChat</h3>
  💬 Ferramenta para comunicação via WebChat, permitindo troca de mensagens e arquivos.
  <br>
  <details>
    <summary><b>Lista de operações</b></summary>
    <details><summary>✅ <b>Enviar uma mensagem de texto</b></summary></details>
    <details><summary>✅ <b>Enviar um arquivo (documento, imagens, vídeos…)</b></summary></details>
  </details>

  <h3>Email</h3>
  📧 Permite o envio de emails com ou sem anexos, facilitando a comunicação via correio eletrônico.
  <br>
  <details>
    <summary><b>Lista de operações</b></summary>
    <details><summary>✅ <b>Enviar um email (somente texto)</b></summary></details>
    <details><summary>✅ <b>Enviar um email (com arquivos)</b></summary></details>
  </details>

  <h1></h1>

  <h3>🤝 Contribuição</h3>

  Contribua para o crescimento deste projeto! Você pode ajudar de diversas formas:  
  - **Pull Requests**: Envie melhorias, correções ou novas funcionalidades.  
  - **Issues**: Relate problemas ou sugira novas ideias.  
  - **Sugestões**: Compartilhe suas opiniões e feedbacks.  
  - **Documentação**: Ajude a melhorar ou expandir a documentação existente.  

  <h1></h1>

  <h3>📌 Principais contribuidores</h3>
  <a align="center" href="https://github.com/oriondesign2015/n8n-nodes-notificame-hub/graphs/contributors">
    <img src="https://contrib.rocks/image?repo=oriondesign2015/n8n-nodes-notificame-hub" />
  </a>

  <h1></h1>
  <a href="https://star-history.com/#oriondesign2015/n8n-nodes-notificame-hub&Date">
   <picture>
     <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=oriondesign2015/n8n-nodes-notificame-hub&type=Date&theme=dark" />
     <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=oriondesign2015/n8n-nodes-notificame-hub&type=Date" />
     <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=oriondesign2015/n8n-nodes-notificame-hub&type=Date" />
   </picture>
  </a>

  <h1></h1>
  <p align="center">
  Desenvolvido com ❤️ por OrionDesign
  </p>

ai_documentation_summary:
  {"purpose":"The NotificaMe Hub community node connects n8n to the NotificaMe Hub platform, enabling automated communication across multiple channels. It provides actions for sending messages, managing conversations, and interacting with customers across social, messaging, and email channels.","capabilities":["List and manage reseller subaccounts","Set webhooks for reseller accounts","WhatsApp messaging: list templates, send templates with or without parameters, send text, audio, stickers, files, location, interactive button/list/CTA messages, react to messages, and reply to messages","Instagram automation: send text, audio, and media messages, reply to comments, send button templates, publish posts, and list account posts","Facebook Messenger messaging: send text, audio, files, and generic/button/media templates","Telegram messaging: send text, audio, and files","Marketplaces support: reply to Mercado Livre questions and send OLX chat messages","WebChat messaging: send text and files","Email sending: send plain text emails and emails with attachments"],"authentication":"Requires a NotificaMe Hub account; the README does not specify the exact credential type beyond platform account access.","commonUseCases":["Building omnichannel customer communication workflows in n8n","Automating WhatsApp, Instagram, Facebook, Telegram, email, and web chat notifications","Handling customer support replies across marketplaces and messaging channels","Sending marketing or transactional templates and interactive messages"],"limitations":["Requires n8n version 1.54.4 or higher","The README does not document the exact authentication/credential fields","The README content provided is truncated, so additional features may exist but are not visible here"],"relatedNodes":["WhatsApp","Instagram","Facebook Messenger","Telegram","Email"]}


node_type: n8n-nodes-puppeteer.puppeteer
package_name: n8n-nodes-puppeteer
display_name: puppeteer
description: n8n node for browser automation using Puppeteer
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: drudge
author_github_url: git+https://github.com/drudge/n8n-nodes-puppeteer.git
npm_package_name: n8n-nodes-puppeteer
npm_version: 1.5.0
community_fetched_at: 2026-07-14T14:40:36.016Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # n8n-nodes-puppeteer

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

  [n8n](https://www.n8n.io) node for browser automation using [Puppeteer](https://pptr.dev/). Execute custom scripts, capture screenshots and PDFs, scrape content, and automate web interactions using Chrome/Chromium's DevTools Protocol. Full access to Puppeteer's API plus n8n's Code node capabilities makes this node powerful for any browser automation task.

  ## How to install

  ### Community Nodes (Recommended)

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

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

  ### Docker Installation (Recommended for Production)

  We provide a ready-to-use Docker setup in the `docker/` directory that includes all necessary dependencies and configurations:

  1. Clone this repository

  2. Build your Docker image:
  ```bash
  npm run docker:build
  ```

  3. Run the container:
  ```bash
  npm run docker:run
  ```

  Or for testing without persistent data:
  ```bash
  npm run docker:run:fresh
  ```

  #### Available Docker Scripts

  - `npm run docker:build` - Build the Docker image with Puppeteer node
  - `npm run docker:run` - Run n8n with persistent data volume
  - `npm run docker:run:fresh` - Run n8n without persistent data (clean start)
  - `npm run docker:run:external-browser` - Run with external browser connection example
  - `npm run docker:test` - Quick test to verify the image works
  - `npm run docker:shell` - Open a shell inside the container for debugging
  - `npm run docker:clean` - Remove the data volume
  - `npm run docker:clean:all` - Remove data volume and images

  #### Container Optimizations

  When running in Docker or Kubernetes, the node automatically detects the container environment and applies necessary Chrome launch arguments (`--no-sandbox`, `--disable-setuid-sandbox`, `--disable-dev-shm-usage`, `--disable-gpu`). This happens automatically - no configuration needed!

  A blue info banner will appear in the node when a container is detected. This can be toggled off in Options > Add Container Arguments if needed.

  ### Manual Installation

  For a standard installation without Docker:

  ```bash
  # Navigate to your n8n root directory
  cd /path/to/n8n

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

  Note: By default, when Puppeteer is installed, it downloads a compatible version of Chromium. While this works, it increases installation size and may not include necessary system dependencies. For production use, we recommend either using the Docker setup above or installing system Chrome/Chromium and setting the `PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true` environment variable.

  ## Browser Setup Options

  ### 1. Local Browser (Docker Setup - Recommended)

  The included Docker setup provides the most reliable way to run Chrome/Chromium with all necessary dependencies. It uses Alpine Linux's Chromium package and includes all required fonts and libraries.

  ### 2. Remote Browser (Alternative for Cloud)

  You can also connect to an external Chrome or Firefox instance using the "Browser WebSocket Endpoint" option. This approach:
  - Eliminates the need for Chrome dependencies in your n8n environment
  - Simplifies deployment and maintenance
  - Provides better resource isolation
  - Works great for cloud and containerized deployments
  - Supports Firefox via WebDriver BiDi protocol

  Options include:
  - **Managed Services**: Use [browserless](https://browserless.io) or [browsercloud](https://browsercloud.io)
  - **Self-Hosted Chrome**: Run your own [browser container](https://docs.browserless.io/docker/config):
    ```bash
    docker run -p 3000:3000 -e "TOKEN=6R0W53R135510" ghcr.io/browserless/chromium
    ```
  - **Self-Hosted Firefox**: Run Firefox with WebDriver BiDi support

  #### Configuring Remote Browser Connection

  **Per-Node Configuration:**
  In any Puppeteer node, go to Options > Add Option:
  - Add "Browser WebSocket Endpoint" and enter your WebSocket URL (e.g., `ws://browserless:3000?token=6R0W53R135510`)
  - Add "Protocol" and select:
    - **CDP (Chrome DevTools Protocol)** - for Chrome/Chromium (default)
    - **WebDriver BiDi** - for Firefox

  **Global Configuration via Environment Variables (Recommended):**

  Instead of configuring each node individually, you can set environment variables:

  ```bash
  # For Chrome/Chromium
  docker run -it -p 5678:5678 \
    -e PUPPETEER_BROWSER_WS_ENDPOINT=ws://browserless:3000 \
    -e PUPPETEER_PROTOCOL=cdp \
    n8n-puppeteer

  # For Firefox
  docker run -it -p 5678:5678 \
    -e PUPPETEER_BROWSER_WS_ENDPOINT=ws://firefox:4444 \
    -e PUPPETEER_PROTOCOL=webDriverBiDi \
    n8n-puppeteer
  ```

  Or with Docker Compose:

  ```yaml
  version: '3.8'
  services:
    n8n:
      image: n8n-puppeteer
      environment:
        - PUPPETEER_BROWSER_WS_ENDPOINT=ws://browserless:3000
        - PUPPETEER_PROTOCOL=cdp
      ports:
        - "5678:5678"
    
    browserless:
      image: browserless/chrome
      ports:
        - "3000:3000"
  ```

  When environment variables are set, a blue info banner will appear showing the configured endpoint. Individual nodes can still override these settings if needed.

  ## Troubleshooting

  If you see errors about missing shared libraries (like `libgobject-2.0.so.0` or `libnss3.so`), either:

  1. Install the missing Chrome dependencies
  2. Switch to using a remote browser with the WebSocket endpoint option

  For additional help, see [Puppeteer's troubleshooting guide](https://pptr.dev/troubleshooting).

  ## Node Reference

  - **Operations**

    - Get the full HTML contents of the page
    - Capture the contents of a page as a PDF document
    - Capture screenshot of all or part of the page
    - Execute custom script to interact with the page

  - **Options**

    - All Operations

      - **Batch Size**: Maximum number of pages to open simultaneously. More pages will consume more memory and CPU.
      - **Browser WebSocket Endpoint**: The WebSocket URL of the browser to connect to. When configured, puppeteer will skip the browser launch and connect to the browser instance. Can also be set globally via environment variables: `PUPPETEER_BROWSER_WS_ENDPOINT` or `PUPPETEER_WS_ENDPOINT`.
      - **Protocol**: The protocol to use when connecting to the browser. Options:
        - **CDP (Chrome DevTools Protocol)** - Default for Chrome/Chromium
        - **WebDriver BiDi** - For Firefox and cross-browser automation
        Can also be set globally via environment variable: `PUPPETEER_PROTOCOL`.
      - **Emulate Device**: Allows you to specify a [device](https://github.com/puppeteer/puppeteer/blob/main/src/common/DeviceDescriptors.ts) to emulate when requesting the page.
      - **Executable Path**: A path where Puppeteer expects to find the bundled browser. Has no effect when 'Browser WebSocket Endpoint' is set.
      - **Extra Headers**: Allows you add additional headers when requesting the page.
      - **Timeout**: Allows you to specify the maximum navigation time in milliseconds. You can pass 0 to disable the timeout entirely.
      - **Protocol Timeout**: Maximum time in milliseconds to wait for a protocol response. Pass 0 to disable timeout.
      - **Wait Until**: Allows you to change how Puppeteer considers navigation completed.
        - `load`: The load event is fired.
        - `domcontentloaded`: The DOMContentLoaded event is fired.
        - `networkidle0`: No more than 0 connections for at least 500 ms.
        - `networkidle2`: No more than 2 connections for at least 500 ms.
      - **Page Caching**: Allows you to toggle whether pages should be cached when requesting.
      - **Headless mode**: Allows you to change whether to run browser runs in headless mode or not.
      - **Use Chrome Headless Shell**: Whether to run browser in headless shell mode. Defaults to false. Headless mode must be enabled. chrome-headless-shell must be in $PATH.
      - **Stealth mode**: When enabled, applies various techniques to make detection of headless Puppeteer harder. Powered by [puppeteer-extra-plugin-stealth](https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth).
      - **Human typing mode**: Gives page the function `.typeHuman()` which "humanizes" the writing of input elements. Includes configurable options for typing speed, typos, and backspace delays.
      - **Launch Arguments**: Allows you to specify additional command line arguments passed to the browser instance.
      - **Capture Downloads**: When enabled, any files downloaded during script execution (via clicks, direct downloads, etc.) will be automatically captured and returned as binary data in the node output. Perfect for downloading PDFs, images, or other files triggered by user interactions. Files are automatically cleaned up after capture.
      - **Add Container Arguments**: Automatically adds recommended arguments for container environments (`--no-sandbox`, `--disable-setuid-sandbox`, `--disable-dev-shm-usage`, `--disable-gpu`). Container environments are auto-detected by default. Disable only if you experience launch issues.
      - **Proxy Server**: Allows Puppeteer to use a custom proxy configuration. You can specify a custom proxy configuration in three ways:
        By providing a semi-colon-separated mapping of list scheme to url/port pairs.
        For example, you can specify:

              http=foopy:80;ftp=foopy2

        to use HTTP proxy "foopy:80" for http URLs and HTTP proxy "foopy2:80" for ftp URLs.

        By providing a single uri with optional port to use for all URLs.
        For example:

              foopy:8080

        will use the proxy at foopy:8080 for all traffic.

        By using the special "direct://" value.

              direct://" will cause all connections to not use a proxy.

    - Get PDF
      - **File Name**: Allows you to specify the filename of the output file.
      - **Page Ranges** field: Allows you to specify paper ranges to print, e.g. 1-5, 8, 11-13.
      - **Scale**: Allows you to scale the rendering of the web page. Amount must be between 0.1 and 2
      - **Prefer CSS Page Size**: Give any CSS @page size declared in the page priority over what is declared in the width or height or format option.
      - **Format**: Allows you to specify the paper format types when printing a PDF. eg: Letter, A4.
      - **Height**: Allows you to set the height of paper. You can pass in a number or a string with a unit.
      - **Width**: Allows you to set the width of paper. You can pass in a number or a string with a unit.
      - **Landscape**: Allows you to control whether to show the header and footer
      - **Margin**: Allows you to specify top, left, right, and bottom margin.
      - **Display Header/Footer**: Allows you to specify whether to show the header and footer.
      - **Header Template**: Allows you to specify the HTML template for the print header. Should be valid HTML with the following classes used to inject values into them:
        - `date`: Formatted print date
        - `title`: Document title
        - `url`: Document location
        - `pageNumber` Current page number
        - `totalPages` Total pages in the document
      - **Footer Template**: Allows you to specify the HTML template for the print footer. Should be valid HTML with the following classes used to inject values into them:
        - `date`: Formatted print date
        - `title`: Document title
        - `url`: Document location
        - `pageNumber` Current page number
        - `totalPages` Total pages in the document
      - **Transparent Background**: Allows you to hide the default white background and allows generate PDFs with transparency.
      - **Background Graphic**: Allows you to include background graphics.
    - Get Screenshot
      - **File Name**: Allows you to specify the filename of the output file.
      - **Type** field: Allows you to specify the image format of the output file:
        - JPEG
        - PNG
        - WebP
      - **Quality**: Allows you to specify the quality of the image.
        - Accepts a value between 0-100.
        - Not applicable to PNG images.
      - **Full Page**: Allows you to capture a screen of the full scrollable content.

  ## Custom Scripts

  The Custom Script operation gives you complete control over Puppeteer to automate complex browser interactions, scrape data, generate PDFs/screenshots, and more. Scripts run in a sandboxed environment with access to the full Puppeteer API and n8n's Code node features.

  Before script execution, you can configure browser behavior using the operation's options like:

  - Emulate specific devices
  - Set custom headers
  - Enable stealth mode to avoid detection
  - Configure proxy settings
  - Set page load timeouts
  - And more

  Access Puppeteer-specific objects using:

  - `$page` - Current page instance
  - `$browser` - Browser instance
  - `$puppeteer` - Puppeteer library
  - `$input.query` - Input query from AI agents (when used as a tool)

  Plus all special variables and methods from the Code node are available. For a complete reference, see the [n8n documentation](https://docs.n8n.io/code-examples/methods-variables-reference/). Just like n8n's Code node, anything you `console.log` will be shown in the browser's console during test mode or in stdout when configured.

  ### AI Agent Integration

  When used as a tool by n8n AI agents, this node supports two powerful workflows:

  **1. AI-Generated Scripts**: AI agents can dynamically generate the entire Puppeteer script using `$fromAI()` on the Script Code parameter. The AI analyzes the task and writes the appropriate Puppeteer code to accomplish it.

  ```javascript
  // AI agent generates script dynamically based on the task
  scriptCode: $fromAI('code', 'Generate a Puppeteer script to extract product prices from the homepage')
  ```

  **2. Reusable Scripts with AI Input**: Write a reusable script that accepts dynamic input from AI agents via the Query parameter. Access the input using `$input.query` in your script.

  ```javascript
  // Reusable script that processes AI-provided input
  const url = $input.query || 'https://example.com';
  await $page.goto(url);

  const data = await $page.evaluate(() => {
    return document.querySelector('h1').textContent;
  });

  return [{ url, title: data }];
  ```

  ```javascript
  // AI agent provides input dynamically
  query: $fromAI('url', 'The website URL to scrape')
  ```

  This makes the node extremely flexible for AI-powered automation - agents can either write custom scripts for specific tasks or pass data to pre-built, reusable scripts.

  ### Basic

  ```javascript
  // Navigate to an IP lookup service
  await $page.goto("https://httpbin.org/ip");

  // Extract the IP address from the page content
  const ipData = await $page.evaluate(() => {
    const response = document.body.innerText;
    const parsed = JSON.parse(response);
    return parsed.origin; // Extract the 'origin' field, which typically contains the IP address
  });

  console.log("Hello, world!");

  console.log("IP Address", ipData);

  // Return the result in the required format (array)
  return [{ ip: ipData, ...$json }];
  ```

  ### Storing and re-using cookies

  #### Node 1

  ```javascript
  await $page.goto("https://www.example.com/login");

  // Perform login
  await $page.type("#login-username", "user");
  await $page.type("#login-password", "pass");
  await $page.click("#login-button");

  // Store cookies for later use
  const cookies = await $page.cookies();

  return [{ cookies }];
  ```

  #### Node 2

  ```javascript
  const { cookies } = $input.first().json;

  // Restore cookies
  await $page.setCookie(...cookies);

  // Navigate to authenticated page
  await $page.goto("https://example.com/protected-page");

  // Perform authenticated operations
  const data = await $page.evaluate(() => {
    return document.querySelector(".protected-content").textContent;
  });

  return [{ data }];
  ```

  ### Working with Binary Data

  ```javascript
  await $page.goto("https://www.google.com");
  const imageData = await $page.screenshot({ type: "png", encoding: "base64" });
  return [
    {
      binary: {
        screenshot: {
          data: imageData,
          mimeType: "image/png",
          fileName: "screenshot.png",
        },
      },
    },
  ];
  ```

  ### Downloading Files

  The Capture Downloads option makes it easy to download files triggered by user interactions or scripts:

  ```javascript
  // Navigate to a page with downloadable files
  await $page.goto('https://example.com/downloads');

  // Click a download button - the file will be automatically captured
  await $page.click('#download-pdf-button');

  // Wait a moment for the download to complete
  await $page.waitForTimeout(2000);

  // Return the result - downloaded files will be attached as binary data
  return [{ json: { success: true } }];
  ```

  When the "Capture Downloads" option is enabled:
  - All files downloaded during script execution are automatically captured
  - Files are returned as binary data in the node output
  - Multiple files are supported - each file gets its own binary property
  - Files are automatically cleaned up after capture
  - Works with direct downloads, click-triggered downloads, and programmatic downloads

  This is particularly useful for:
  - Downloading PDFs from web applications
  - Capturing generated reports
  - Saving images or documents triggered by user actions
  - Testing download functionality in automated workflows

  ## Environment Variables

  The following environment variables can be used to configure Puppeteer globally:

  - **`PUPPETEER_BROWSER_WS_ENDPOINT`** or **`PUPPETEER_WS_ENDPOINT`**: WebSocket URL of the browser to connect to. This eliminates the need to configure each node individually.
  - **`PUPPETEER_PROTOCOL`**: Protocol to use (`cdp` or `webDriverBiDi`). Useful for Firefox setups.
  - **`PUPPETEER_SKIP_CHROMIUM_DOWNLOAD`**: Set to `true` to skip downloading Chromium during installation.
  - **`PUPPETEER_EXECUTABLE_PATH`**: Path to the browser executable.

  Example:
  ```bash
  docker run -it -p 5678:5678 \
    -e PUPPETEER_BROWSER_WS_ENDPOINT=ws://browserless:3000 \
    -e PUPPETEER_PROTOCOL=cdp \
    n8n-puppeteer
  ```

  Node-level settings always override environment variables when specified.

  ## Firefox Support

  This node supports Firefox through WebDriver BiDi protocol. To use Firefox:

  1. Set up a Firefox instance with WebDriver BiDi enabled
  2. Configure the connection either:
     - **Per-node**: Options > Browser WebSocket Endpoint + Protocol (WebDriver BiDi)
     - **Globally**: Environment variables `PUPPETEER_BROWSER_WS_ENDPOINT` + `PUPPETEER_PROTOCOL=webDriverBiDi`
  3. Execute your workflows with Firefox!

  ## Screenshots

  ### Run Custom Script

  ![](images/script.png)

  ### Get Page Content

  ![](images/content.png)

  ### Get Screenshot

  ![](images/screenshot.png)

  ## License

  MIT License

  Copyright (c) 2022-2024 Nicholas Penree <nick@penree.com>

  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files (the "Software"), to deal
  in the Software without restriction, including without limitation the rights
  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  copies of the Software, and to permit persons to whom the Software is
  furnished to do so, subject to the following conditions:

  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.

  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  SOFTWARE.

ai_documentation_summary:
  {"purpose":"A n8n node for browser automation using Puppeteer that enables executing custom scripts, capturing screenshots and PDFs, scraping content, and automating web interactions via Chrome/Chromium's DevTools Protocol.","capabilities":["Execute custom scripts on web pages","Capture full page screenshots","Capture partial page screenshots","Export page content as PDF","Get full HTML contents of a page","Scrape web content","Automate web interactions","Full Puppeteer API access","Support for Chrome DevTools Protocol (CDP)","Support for Firefox via WebDriver BiDi"],"authentication":"None - Uses local Chromium or remote browser WebSocket endpoints (e.g., browserless) with optional token authentication for remote services","commonUseCases":["Web scraping and data extraction","Automated testing and validation","Screenshot generation for documentation","PDF report generation from web pages","Cloud deployment without local browser dependencies"],"limitations":["Requires Chromium or Firefox dependencies when running locally (unless using remote browser)","Local installation increases package size and may require system dependencies","Remote browser setups require external service configuration or self-hosted browser instances","Containerized environments require specific launch arguments for Chrome"],"relatedNodes":["n8n Code node","n8n HTTP Request node","n8n Webhook node"]}


node_type: @pixelinfinito/n8n-nodes-chatwoot.chatwoot
package_name: @pixelinfinito/n8n-nodes-chatwoot
display_name: chatwoot
description: n8n community node for Chatwoot API integration
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: mctlisboa
author_github_url: git+https://github.com/pixelinfinito/n8n-nodes-chatwoot.git
npm_package_name: @pixelinfinito/n8n-nodes-chatwoot
npm_version: 0.3.1
community_fetched_at: 2026-07-14T14:40:36.016Z
ai_summary_generated_at: 2026-07-06 09:55:11
npm_readme:
  # @pixelinfinito/n8n-nodes-chatwoot

  [![npm version](https://badge.fury.io/js/@pixelinfinito/n8n-nodes-chatwoot.svg)](https://badge.fury.io/js/@pixelinfinito/n8n-nodes-chatwoot)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

  A comprehensive n8n community node for integrating with Chatwoot API. This node provides full access to Chatwoot's Application APIs for managing contacts, conversations, messages, and more.

  ## 🚀 Features

  - **🔄 Custom JSON Mode**: Choose between structured UI fields or raw JSON for maximum flexibility
  - **💬 Interactive Messages**: Support for forms, cards, options, and articles
  - **📊 Complete API Coverage**: All major Chatwoot Application API endpoints
  - **🔧 Debug Logging**: Built-in console logging for troubleshooting
  - **✨ Multiple Resources**: Account, Contact, Conversation, Message, Inbox, Canned Response, Webhook, Team, and Label operations
  - **🔐 Simplified Authentication**: Streamlined Application API authentication
  - **📄 Pagination Support**: Built-in pagination for list operations
  - **⚡ Error Handling**: Comprehensive error handling with continue on fail option
  - **📝 TypeScript**: Fully typed with TypeScript for better development experience

  ## 🎯 Send Modes

  Each operation that sends data (create/update) offers two modes:

  ### 🎨 Structured Fields Mode *(Default)*
  User-friendly form fields with validation and guidance. Perfect for beginners and simple use cases.

  ### ⚡ Custom JSON Mode  
  Raw JSON input for advanced users who need:
  - Full control over API payloads
  - Access to any Chatwoot API feature
  - Complex nested objects
  - Custom attributes not in the UI
  - Dynamic workflows with computed JSON

  ## 📋 Resources & Operations

  ### 👤 Account
  - **Get**: Retrieve account details

  ### 👥 Contact
  - **Get**: Get a contact by ID
  - **Get All**: List all contacts with pagination and filtering
  - **Create**: Create a new contact (🔄 *Custom JSON supported*)
  - **Update**: Update contact information (🔄 *Custom JSON supported*)
  - **Delete**: Delete a contact
  - **Search**: Search contacts by name, email, or phone

  ### 💬 Conversation
  - **Get**: Get a conversation by ID
  - **Get All**: List all conversations with filtering
  - **Update Status**: Change conversation status (open, resolved, pending)
  - **Add Labels**: Add labels to conversations
  - **Update Custom Attributes**: Set custom attributes

  ### 📨 Message
  - **Get**: Get a message by ID
  - **Get All**: List all messages in a conversation
  - **Create**: Send messages with full interactive support (🔄 *Custom JSON supported*)
    - 💬 **Text Messages**: Simple text content
    - 🎛️ **Interactive Options**: Dropdown/selection menus
    - 📝 **Interactive Forms**: Multi-field forms with validation
    - 🎴 **Interactive Cards**: Rich media cards with actions
    - 📄 **Interactive Articles**: Article links and descriptions

  ### 📮 Inbox
  - **Get**: Get an inbox by ID
  - **Get All**: List all inboxes

  ### 💾 Canned Response
  - **Get**: Get a canned response by ID
  - **Get All**: List all canned responses

  ### 🔗 Webhook
  - **Get**: Get a webhook by ID
  - **Get All**: List all webhooks

  ### 👨‍💼 Team
  - **Get**: Get a team by ID
  - **Get All**: List all teams

  ### 🏷️ Label
  - **Get**: Get a label by ID
  - **Get All**: List all labels

  ## 📦 Installation

  ### Using npm

  ```bash
  npm install @pixelinfinito/n8n-nodes-chatwoot
  ```

  ### Using n8n Community Nodes

  1. In n8n, go to **Settings** → **Community Nodes**
  2. Click **Install a Community Node**
  3. Enter: `@pixelinfinito/n8n-nodes-chatwoot`
  4. Click **Install**

  ## ⚙️ Setup

  ### 1. Get Your Chatwoot API Token

  1. Log in to your Chatwoot account
  2. Go to **Profile Settings** → **API Access Token**
  3. Generate an **API Access Token**
  4. Copy the token for use in n8n

  ### 2. Configure Credentials in n8n

  1. In n8n, go to **Settings** → **Credentials**
  2. Click **Add Credential**
  3. Search for **Chatwoot API**
  4. Fill in the following details:
     - **Base URL**: Your Chatwoot instance URL (e.g., `https://app.chatwoot.com`)
     - **Access Token**: Your API access token from step 1
     - **Account ID**: Your numeric account ID (usually `1` for the first account)

  ### 3. Add the Chatwoot Node

  1. In your workflow, click the **+** button
  2. Search for **Chatwoot**
  3. Select the Chatwoot node
  4. Choose your credentials
  5. Select the resource and operation you want to perform

  ## 🛠️ Usage Examples

  ### 👥 Contact Management

  #### Create Contact (Structured Fields)
  ```
  Resource: Contact
  Operation: Create
  Send: Structured Fields
  ├─ Name: John Doe
  ├─ Email: john.doe@example.com
  ├─ Phone: +1234567890
  └─ Identifier: user-001
  ```

  #### Create Contact (Custom JSON)
  ```
  Resource: Contact
  Operation: Create
  Send: Custom JSON
  └─ Custom JSON:
  {
    "name": "John Doe",
    "email": "john.doe@example.com",
    "phone_number": "+1234567890",
    "custom_attributes": {
      "company": "Acme Corp",
      "role": "Manager",
      "vip": true
    }
  }
  ```

  ### 💬 Interactive Messages

  #### Text Message (Structured Fields)
  ```
  Resource: Message
  Operation: Create
  Send: Structured Fields
  ├─ Conversation ID: 123
  ├─ Message Type: Text Message
  └─ Content: Hello! How can I help you today?
  ```

  #### Interactive Options (Structured Fields)
  ```
  Resource: Message
  Operation: Create
  Send: Structured Fields
  ├─ Conversation ID: 123
  ├─ Message Type: Interactive Options
  ├─ Message Content: Please select your department:
  └─ Select Options:
      ├─ Title: Sales | Value: sales
      ├─ Title: Support | Value: support
      └─ Title: Billing | Value: billing
  ```

  #### Interactive Cards (Custom JSON)
  ```
  Resource: Message
  Operation: Create
  Send: Custom JSON
  └─ Custom JSON:
  {
    "content": "Check out our latest products",
    "content_type": "cards",
    "content_attributes": {
      "items": [
        {
          "title": "Premium Plan",
          "description": "Advanced features for power users",
          "media_url": "https://example.com/premium.jpg",
          "actions": [
            {
              "type": "link",
              "text": "Learn More",
              "uri": "https://example.com/premium"
            },
            {
              "type": "postback", 
              "text": "Subscribe",
              "payload": "SUBSCRIBE_PREMIUM"
            }
          ]
        }
      ]
    },
    "message_type": "outgoing",
    "private": false
  }
  ```

  #### Interactive Form (Structured Fields)
  ```
  Resource: Message
  Operation: Create
  Send: Structured Fields
  ├─ Conversation ID: 123
  ├─ Message Type: Interactive Form
  ├─ Form Content: Please fill out your information:
  └─ Form Fields:
      ├─ Field: Name | Type: text | Required: true
      ├─ Field: Email | Type: email | Required: true
      └─ Field: Message | Type: text_area | Required: false
  ```

  ### 🔍 Search and Filter

  #### Search Contacts
  ```
  Resource: Contact
  Operation: Search
  ├─ Search Query: john@example.com
  └─ Sort: name
  ```

  #### Get All Conversations with Filtering
  ```
  Resource: Conversation
  Operation: Get All
  ├─ Return All: false
  ├─ Limit: 50
  ├─ Status: open
  ├─ Inbox ID: 1
  └─ Labels: urgent,vip
  ```

  ## 🧪 Advanced Usage

  ### Custom JSON Examples

  #### Contact with Custom Attributes
  ```json
  {
    "name": "Jane Smith",
    "email": "jane.smith@company.com",
    "phone_number": "+1987654321",
    "custom_attributes": {
      "company": "Tech Corp",
      "department": "Engineering",
      "team_lead": true,
      "onboarding_completed": true,
      "subscription_tier": "enterprise"
    }
  }
  ```

  #### Interactive Form with All Field Types
  ```json
  {
    "content": "Complete your profile",
    "content_type": "form",
    "content_attributes": {
      "items": [
        {
          "name": "full_name",
          "label": "Full Name",
          "type": "text",
          "placeholder": "Enter your full name",
          "default": ""
        },
        {
          "name": "email",
          "label": "Email Address", 
          "type": "email",
          "placeholder": "you@example.com"
        },
        {
          "name": "company_size",
          "label": "Company Size",
          "type": "select",
          "options": [
            {"label": "1-10 employees", "value": "small"},
            {"label": "11-50 employees", "value": "medium"},
            {"label": "50+ employees", "value": "large"}
          ]
        },
        {
          "name": "requirements",
          "label": "Special Requirements",
          "type": "text_area",
          "placeholder": "Tell us about your needs..."
        }
      ]
    },
    "message_type": "outgoing",
    "private": false
  }
  ```

  ## 🐛 Debug Mode

  Enable debug logging to see detailed request information:

  1. Add **Debug Logging** field to any operation
  2. Set to **Yes**
  3. Check your n8n logs for detailed output including:
     - Constructed URLs
     - Request headers
     - Request bodies  
     - Response data

  Example debug output:
  ```
  [Chatwoot Debug] Resource: contact, Operation: create
  [Chatwoot Debug] Final URL: https://app.chatwoot.com/api/v1/accounts/1/contacts
  [Chatwoot Debug] Request body: {"name":"John Doe","email":"john@example.com"}
  [Chatwoot Debug] Making request to: https://app.chatwoot.com/api/v1/accounts/1/contacts
  ```

  ## 🔧 Workflow Examples

  ### Customer Support Automation

  ```
  1. Webhook Trigger (New Conversation)
     ↓
  2. Chatwoot Node (Get Contact Details)
     ↓  
  3. Condition Node (Check if VIP Customer)
     ↓
  4. Chatwoot Node (Send Automated Response)
     └─ Message Type: Interactive Options
     └─ Options: Urgent Support | Regular Support
     ↓
  5. Chatwoot Node (Add VIP Label)
  ```

  ### Contact Enrichment

  ```
  1. Schedule Trigger (Daily 9 AM)
     ↓
  2. Chatwoot Node (Get All Contacts)
     ↓
  3. Function Node (Enrich with External Data)
     ↓
  4. Chatwoot Node (Update Contact - Custom JSON)
     └─ Custom JSON: {enriched data}
  ```

  ### Interactive Onboarding

  ```
  1. Webhook Trigger (New Contact)
     ↓
  2. Chatwoot Node (Create Conversation)
     ↓
  3. Chatwoot Node (Send Welcome Form)
     └─ Message Type: Interactive Form
     └─ Fields: Name, Company, Role, Goals
     ↓
  4. Chatwoot Node (Send Resource Cards)
     └─ Message Type: Interactive Cards
     └─ Cards: Documentation, Video Tutorials, Support
  ```

  ## 📚 API Reference

  This node supports the Chatwoot Application API. For detailed API documentation:
  - [Chatwoot API Documentation](https://developers.chatwoot.com/api-reference/introduction)
  - [Application API Reference](https://developers.chatwoot.com/api-reference/application-api)
  - [Interactive Messages Guide](https://www.chatwoot.com/docs/product/others/interactive-messages/)

  ## 🔐 Authentication

  ### Application API (Supported)
  - **Use Case**: Account-level automation and agent-facing integrations
  - **Authentication**: User access token from Profile Settings
  - **Availability**: Cloud and Self-hosted installations
  - **Required**: Base URL, Access Token, Account ID

  ## ⚠️ Error Handling

  The node includes comprehensive error handling:

  - **Continue On Fail**: Option to continue workflow execution even if the node fails
  - **HTTP Error Handling**: Proper handling of API errors with meaningful messages
  - **JSON Validation**: Custom JSON is validated before sending
  - **Input Validation**: Required fields and data types are validated
  - **Debug Information**: Detailed logging for troubleshooting

  ## 🛠️ Development

  ### Prerequisites

  - Node.js >= 20.15
  - npm or yarn
  - n8n development environment

  ### Setup

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

  # Install dependencies
  npm install

  # Build the project
  npm run build

  # Run tests
  npm test

  # Run linting
  npm run lint
  ```

  ### Testing

  ```bash
  # Run all tests
  npm test

  # Run tests in watch mode
  npm run test:watch
  ```

  ### Building

  ```bash
  # Build TypeScript
  npm run build

  # Build with watch mode
  npm run dev
  ```

  ## 🤝 Contributing

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

  ### Guidelines

  - Follow TypeScript best practices
  - Add tests for new features
  - Update documentation
  - Follow existing code style
  - Test thoroughly before submitting

  ## 📄 License

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

  ## 🆘 Support

  - **Documentation**: [Chatwoot API Docs](https://developers.chatwoot.com/api-reference/introduction)
  - **Issues**: [GitHub Issues](https://github.com/pixelinfinito/n8n-nodes-chatwoot/issues)
  - **Discussions**: [GitHub Discussions](https://github.com/pixelinfinito/n8n-nodes-chatwoot/discussions)
  - **n8n Community**: [n8n Community Forum](https://community.n8n.io/)

  ## 📋 Changelog

  ### v0.1.16 (Latest)
  - ✨ **NEW**: Custom JSON mode for create/update operations
  - ✨ **NEW**: Interactive messages support (forms, cards, options, articles)
  - ✨ **NEW**: Debug logging toggle
  - 🔧 **IMPROVED**: Simplified credentials (Application API only)
  - 🐛 **FIXED**: URL construction and authentication issues
  - 🐛 **FIXED**: Dynamic options loading for labels
  - 📝 **DOCS**: Comprehensive documentation update

  ### v0.1.15
  - 🐛 **FIXED**: Message operations with proper headers
  - 🐛 **FIXED**: Contact operations stability
  - 🔧 **IMPROVED**: Error handling and logging

  ### v0.1.0 - v0.1.14
  - 🎯 **INITIAL**: Core Chatwoot API integration
  - 📋 **FEATURES**: All major resources and operations
  - 🔐 **AUTH**: Multiple authentication types
  - 🧪 **TESTING**: Comprehensive test suite

  ## 👥 Team

  **Pixel Infinito** - Infinite value. Limitless possibilities.

  - **Website**: [https://pixel.ao](https://pixel.ao)
  - **GitHub**: [https://github.com/pixelinfinito](https://github.com/pixelinfinito)
  - **Email**: dev@pixel.ao
  - **Location**: Angola 🇦🇴

  We are a team dedicated to creating innovative solutions and contributing to the open-source community. This Chatwoot n8n node is part of our commitment to providing valuable integrations for the n8n ecosystem.

  ## 🙏 Acknowledgments

  - [Chatwoot](https://chatwoot.com/) for providing the excellent customer engagement platform
  - [n8n](https://n8n.io/) for the amazing workflow automation platform
  - The n8n community for inspiration, feedback, and support
  - All contributors and users who help improve this integration

  ---

  **Made with ❤️ by Pixel Infinito**

ai_documentation_summary:
  {"purpose":"This node integrates n8n with the Chatwoot Application API to manage customer support data and conversations. It supports working with contacts, conversations, messages, inboxes, teams, labels, webhooks, and canned responses.","capabilities":["Get, list, create, update, delete, and search contacts","Get and list conversations, update status, add labels, and update custom attributes","Get and send messages, including interactive text, forms, cards, options, and articles","Get account details","Get and list inboxes, canned responses, webhooks, teams, and labels","Support for structured fields and raw custom JSON payloads for create/update operations","Pagination support for list operations","Debug logging and continue-on-fail error handling"],"authentication":"API token-based authentication using a Chatwoot API Access Token, plus Base URL and Account ID credentials","commonUseCases":["Automating contact creation and updates in Chatwoot","Fetching and updating conversation status or labels from workflows","Sending automated or interactive support messages to customers","Listing Chatwoot resources such as inboxes, teams, labels, or canned responses"],"limitations":["Uses Chatwoot Application APIs only","Account ID must be provided and is typically a numeric value such as 1 for the first account"],"relatedNodes":[]}


node_type: n8n-nodes-elevenlabs.elevenlabs
package_name: n8n-nodes-elevenlabs
display_name: elevenlabs
description: Complete implementation of ElevenLabs AI voice generation into n8n workflows.
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: n8ninja
author_github_url: git+https://github.com/n8n-ninja/n8n-nodes-elevenlabs.git
npm_package_name: n8n-nodes-elevenlabs
npm_version: 0.0.6
community_fetched_at: 2026-07-14T14:40:36.017Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # n8n-nodes-elevenlabs

  > **Currently in BETA and under active development.**

  This n8n community node enables seamless integration of **[ElevenLabs](http://go.n8n.ninja/elevenlabs) in your [n8n](http://go.n8n.ninja/tryn8n) workflows**.

  **[ElevenLabs](http://go.n8n.ninja/elevenlabs)** offers cutting-edge, contextually aware AI voices, allowing you to generate lifelike speech in hundreds of unique and familiar voices across dozens of languages.

  **[n8n](http://go.n8n.ninja/tryn8n)** is a powerful, AI-native, open-source workflow automation tool. Connect hundreds of services and rapidly create complex solutions with ease.

  [![Watch Teaser](https://www.n8n.ninja/images/nodes/elevenlabs/cover-play-youtube.png)](https://youtu.be/R2qFRdu8CMY)
  Watch the teaser and visit the [Official node page](https://go.n8n.ninja/811)

  ## Features

  - **Text to speech**: Turn any text into a high quality audio, lifelike, context-aware speech audio file that you can manipulate in your workflow.
  - **Speech to speech**: Transform your voice into an other character, preserving emotions and deliver with consistency.
  - **Generate voice**: Generate a new voice based on settings like age, gender, accent... add it to your library and start using it your workflow.
  - **Clone your voice**: Clone your own voice from an audio file and use it in your workflow, for text to speech or speech to speech.

  And more: voice library, user and history management.

  ## Installation

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

  ## Credentials

  To use this node, you need to have an [elevenlabs.io](http://go.n8n.ninja/elevenlabs) account and setup your xi-api-key in the node built-in credentials.

  ## Compatibility

  1.39.1 and above

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [elevenlabs api documentation](https://elevenlabs.io/docs/api-reference/getting-started)

ai_documentation_summary:
  {"purpose":"This n8n community node integrates ElevenLabs AI voice generation capabilities into n8n workflows, enabling text-to-speech, speech-to-speech, voice cloning, and custom voice generation.","capabilities":["Text to speech conversion","Speech to speech transformation","Custom voice generation","Voice cloning from audio files","Voice library management","User and history management"],"authentication":"API key required (xi-api-key)","commonUseCases":["Automated voiceovers for content creation","Character voice transformation in media workflows","Personalized audio announcements","Voice cloning for consistent branding"],"limitations":["Currently in BETA and under active development"],"relatedNodes":["n8n-nodes-elevenlabs.elevenlabs"]}


node_type: n8n-nodes-ryze-api.ryzeapi
package_name: n8n-nodes-ryze-api
display_name: ryzeapi
description: n8n community node for RyzeAPI - send WhatsApp messages and receive events via webhook
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: oriondesign
author_github_url: git+https://github.com/oriondesign2015/n8n-nodes-ryze-api.git
npm_package_name: n8n-nodes-ryze-api
npm_version: 1.0.0
community_fetched_at: 2026-07-14T14:40:36.018Z
ai_summary_generated_at: 2026-06-26 10:27:23
npm_readme:
  # n8n-nodes-ryze-api

  This is an n8n community node. It lets you use **[RyzeAPI](https://ryzeapi.cloud)** — a REST gateway that turns WhatsApp into a modern API — in your n8n workflows.

  Send and receive WhatsApp messages (text, media, stickers, buttons, lists, carousels, polls, PIX and more), manage instances, groups, communities, channels, contacts and labels, and react to real‑time events via webhook.

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

  [Installation](#installation) · [Credentials](#credentials) · [Nodes](#nodes) · [Trigger setup](#trigger-setup) · [Development](#development) · [Resources](#resources)

  ## Installation

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

  In n8n: **Settings → Community Nodes → Install**, then enter `n8n-nodes-ryze-api`.

  ## Credentials

  This package ships a single credential, **Ryze API**:

  | Field | Description |
  | --- | --- |
  | **Token** | Your `TokenAccount` or a `TokenInstance`. Sent in the `token` header on every request. |

  The gateway URL is fixed at `https://ryzeapi.cloud`. When you save the credential it is validated with `GET /api/instance/list` (green check = token works).

  RyzeAPI uses two kinds of token:

  - **TokenAccount** — manages your account: create / list / delete instances, and can operate **any** instance of the account. Required for `Instance → Create` and `Instance → Delete`. Also needed for the **Instance** dropdown to list every instance.
  - **TokenInstance** — generated when an instance is created; operates **only** that instance.

  A single credential holding a **TokenAccount** is the most flexible choice — the **Instance** field then becomes a dropdown of your instances. For least privilege, create one credential per instance using its **TokenInstance**.

  See the [authentication docs](https://docs.ryzeapi.cloud/pt/guide/authentication).

  ## Nodes

  ### RyzeAPI (action)

  A declarative node organized into **resources → operations** (≈80 operations):

  | Resource | Operations |
  | --- | --- |
  | **Instance** | Create, Connect, Reconnect, List, Settings (read/update), Proxy (read/update), S3 (read/update), Metrics, Logout, Delete |
  | **Message** | Text, Media, Sticker, Contact, Location, PIX, Buttons, List, Carousel, Form, Poll, Reaction, Status |
  | **Group** | Create, List, Info, Update, Participants, Join, Reset Link, Requests, Leave |
  | **Community** | Create, Link, Unlink, List Subgroups |
  | **Newsletter** | Create, List, Info, Join, Leave |
  | **Profile** | Update / Read account, Update / Read privacy |
  | **Chat** | History, Mark read, Pin, Favorite, Mute, Archive, Delete, Tags (create/list/assign/unassign/delete), Contacts, Block, Presence, Forward, Edit, Find message, Message status, Delete message, Media base64, Poll votes |
  | **Event** | Configure / list webhook, Configure / read WebSocket |
  | **Chatwoot** | Activate, Info, Deactivate |
  | **System** | Health |

  The **Instance** field on each operation is the `:instance` (instance name) in the API path. Media is sent by **public URL** (`mediaUrl` / `imageUrl`), so no binary upload is needed.

  ### RyzeAPI Trigger

  A webhook receiver. It gives you a URL to paste into RyzeAPI and **filters** the incoming events — it does **not** configure RyzeAPI for you. Each delivery is the shared envelope `{ event, data, instanceData }`.

  Filters (an event must pass all of them to start the workflow):

  - **Instance** — only events from this instance (matched against `instanceData.instance`). `* (Any Instance)` accepts all.
  - **Events** — only these of the 6 types (`message.exchange`, `message.status`, `call.update`, `group.flow`, `instance.state`, `label.update`). Empty = all.
  - **Label** — only when the request's `?label=` query matches (empty or `*` = any). See setup below.
  - **Authorization Header** — if set, the request's `Authorization` header must equal this exact value.

  ## Trigger setup

  1. Add the **RyzeAPI Trigger** node and copy its **Production URL**.
  2. In RyzeAPI, create a webhook on your instance (up to 3 per instance) pointing to that URL — see [configure webhook](https://docs.ryzeapi.cloud/pt/api/events/webhook-configure). Enable the events you want there.
  3. (Optional) To filter by label in n8n, append `?label=YOUR_LABEL` to the URL when you paste it into RyzeAPI, and set the same value in the node's **Label** field.
  4. (Optional) Set an `Authorization` value on the RyzeAPI webhook and the same value in the node's **Authorization Header** field to reject foreign requests.

  > ⚠️ **The URL must be public + HTTPS.** RyzeAPI blocks webhook targets on `localhost` or private IPs (SSRF protection).
  > - **Production:** set `WEBHOOK_URL` to your public n8n URL.
  > - **Local dev:** run `n8n start --tunnel` or expose it via ngrok / Cloudflare Tunnel.

  ## Compatibility

  Requires n8n with `n8nNodesApiVersion: 1`. Built and tested on Node.js 22+.

  ## Development

  ```bash
  npm install
  npm run dev     # run n8n locally with this node linked
  npm run build   # compile to dist/
  npm run lint    # n8n community-node lint rules
  npm test        # unit tests
  ```

  ## Resources

  - [RyzeAPI documentation](https://docs.ryzeapi.cloud)
  - [Endpoint catalog (this repo)](docs/ryzeapi-api-catalog.md)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n community node integrates with the GitHub API to manage issues and issue comments in repositories. It can be used to read, list, and create GitHub issues as part of automated workflows.","capabilities":["Get a single issue","Get many issues in a repository","Create a new issue","Get many issue comments"],"authentication":"GitHub authentication via either personal access token or OAuth2","commonUseCases":["Automating issue triage and retrieval from GitHub repositories","Creating GitHub issues from workflow events or form submissions","Listing issue comments for reporting or synchronization"],"limitations":["Compatible with n8n version 1.60.0 or later","Access tokens without scopes can only access public information","OAuth2 setup requires a self-hosted n8n instance and a GitHub OAuth app"],"relatedNodes":["GitHub"]}


node_type: @ilhamakbarki/n8n-nodes-360dialog.360dialog
package_name: @ilhamakbarki/n8n-nodes-360dialog
display_name: 360dialog
description: 360 Dialog node for N8N
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: ilhamakbarki
author_github_url: git+https://github.com/ilhamakbarki/n8n-nodes-360dialog.git
npm_package_name: @ilhamakbarki/n8n-nodes-360dialog
npm_version: 1.1.0
community_fetched_at: 2026-07-14T14:40:36.019Z
ai_summary_generated_at: 2026-06-26 10:29:17
npm_readme:
  # n8n-nodes-360dialog

  This Custom Node for [360 Dialog](https://docs.360dialog.com/whatsapp-api/whatsapp-api/).

  Refer to our [documentation on creating nodes](https://docs.n8n.io/integrations/creating-nodes/).

  Contact Me for need help this community node:
  [ilhamakbarki@gmail.com](mailto:ilhamakbarki@gmail.com)

  ## License

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

ai_documentation_summary:
  {"purpose":"This is a custom n8n node for interacting with the 360dialog WhatsApp API. It is intended to let workflows connect to 360dialog services from n8n.","capabilities":["Connect to 360dialog WhatsApp API","Use as a custom node within n8n workflows"],"authentication":"Not specified in the README","commonUseCases":["Sending or managing WhatsApp API-related workflows through 360dialog","Integrating 360dialog actions into n8n automations"],"limitations":["The README does not list specific operations, parameters, or supported API actions","Authentication details are not documented in the README"],"relatedNodes":[]}


node_type: n8n-nodes-thang-zalo-app.thangzaloapp
package_name: n8n-nodes-thang-zalo-app
display_name: thangzaloapp
description: Các node udng2 để hỗ trợ người dùng zalo
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: ntnguyenthangtn
npm_package_name: n8n-nodes-thang-zalo-app
npm_version: 1.1.5
community_fetched_at: 2026-07-14T14:40:36.020Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # 🚀 n8n-nodes-zalo-test-trial

  **Kết nối Zalo vào thế giới tự động hóa của bạn với n8n!**  
  Tích hợp Zalo cá nhân, nhóm, bạn bè, tin nhắn, voice-to-text, đăng nhập QR... chỉ với vài cú click.  
  Tối ưu cho chatbot, CRM, automation, chăm sóc khách hàng, cảnh báo nội bộ, và hơn thế nữa!

  ---

  ## 🌟 Tại sao nên chọn bộ node Zalo này?

  - **Đầy đủ tính năng:** Gửi/nhận tin nhắn, quản lý nhóm, bạn bè, voice-to-text đa ngôn ngữ, đăng nhập QR, v.v.
  - **Dễ dùng:** Kéo thả, cấu hình trực quan, không cần code phức tạp.
  - **Tối ưu cho workflow hiện đại:** Kết hợp linh hoạt với các node khác của n8n.
  - **Chuẩn hóa voice kéo dài:** Nhận diện tốt tiếng Việt dù nói “đi đâyyyyyy”.
  - **Mở rộng dễ dàng:** Hỗ trợ nhiều tài khoản, nhiều ngôn ngữ, nhiều kịch bản.

  ---

  ## 🚦 Tính năng nổi bật

  ### 🔑 Đăng nhập Zalo bằng QR code
  - Đăng nhập siêu nhanh, không cần copy cookie thủ công.
  - Lưu Credential tự động, dùng lại cho mọi node Zalo khác.
  - Hỗ trợ nhiều tài khoản, proxy, quản lý Credential thông minh.

  ### 👤 Quản lý người dùng Zalo
  - Gửi/kết bạn, chặn/bỏ chặn, đổi avatar, cập nhật thông tin cá nhân.
  - Lấy thông tin chi tiết user, trạng thái, avatar, v.v.

  ### 💬 Gửi & nhận tin nhắn Zalo
  - Gửi tin nhắn text, ảnh, file, nhắc tên, trích dẫn, typing...
  - Lắng nghe tin nhắn từ user hoặc group, tự động kích hoạt workflow.
  - Hỗ trợ voice-to-text: nhận diện tiếng Việt, Anh, Trung (tự động hoặc thủ công).
  - Chuẩn hóa text voice kéo dài, trả về cả text, ngôn ngữ và độ tin cậy.

  ### 👥 Quản lý nhóm Zalo
  - Tạo nhóm, thêm/xóa thành viên, đổi tên/avatar nhóm, phân quyền quản trị.
  - Lấy thông tin nhóm, danh sách thành viên, quản trị viên.

  ### 🤝 Lắng nghe sự kiện bạn bè
  - Tự động phát hiện kết bạn mới, kích hoạt workflow khi có lời mời.

  ---

  ## ⚡️ Cài đặt siêu tốc

  ```bash
  pnpm install
  # hoặc
  npm install
  ```

  **Yêu cầu:**  
  - Node.js >= 16  
  - n8n >= 1.0.0  
  - Đã cài ffmpeg (bắt buộc cho voice-to-text)  
  - Tài khoản Zalo cá nhân

  ---

  ## 🛠️ Hướng dẫn sử dụng nhanh

  1. **Đăng nhập Zalo:**  
     - Dùng node “Zalo Login Via QR Code” để đăng nhập, Credential sẽ tự lưu.

  2. **Cấu hình Credential:**  
     - Có thể nhập cookie/imei/userAgent thủ công hoặc dùng Credential đã lưu.

  3. **Cấu hình Wit.ai (voice-to-text):**  
     - Đăng ký Wit.ai, tạo app cho từng ngôn ngữ (vi, en, zh).
     - Lấy Server Access Token, nhập vào Credential WitAIApi.

  4. **Kéo thả các node Zalo vào workflow:**  
     - Gửi/nhận tin nhắn, quản lý nhóm, bạn bè, voice-to-text...  
     - Kết nối với các node khác để xây dựng quy trình tự động hóa mạnh mẽ.

  ---

  ## 💡 Lưu ý kỹ thuật

  - Voice-to-text chỉ hoạt động với voice message .aac (chuẩn Zalo).
  - Cần cài ffmpeg trên máy chủ/server.
  - Tự động nhận diện ngôn ngữ cần ít nhất 1 token Wit.ai hợp lệ.
  - Nếu workflow chạy trên server, đảm bảo server có internet.

  ---

  ## 🤝 Đóng góp & Phản hồi

  - Gặp lỗi? Có ý tưởng mới?  
    → Tạo issue hoặc pull request ngay trên GitHub!
  - Đội ngũ phát triển luôn lắng nghe và chào đón mọi đóng góp.

  ---

  ## 📬 Liên hệ

  - **Tác giả:** Nguyễn Thắng  
  - **Email:** ntnguyenthangtn@gmail.com

  ---

  > **Hãy để Zalo trở thành một phần của hệ sinh thái tự động hóa của bạn!**  
  > _n8n-nodes-zalo-test-trial - Đơn giản hóa mọi kết nối, bứt phá mọi workflow!_ 

  ---

  ## 🧩 Hướng dẫn chi tiết từng node Zalo

  ---

  ### 1. 🔑 Zalo Login Via QR Code

  **Chức năng:**  
  Đăng nhập tài khoản Zalo cá nhân bằng mã QR, lưu Credential tự động cho các node khác.

  **Cách dùng:**
  - Thêm node “Zalo Login Via QR Code” vào workflow.
  - Chạy node, quét mã QR hiện ra bằng app Zalo trên điện thoại.
  - Sau khi đăng nhập thành công, Credential sẽ được lưu lại (không cần nhập cookie thủ công nữa).

  **Tips:**  
  - Có thể dùng cho nhiều tài khoản Zalo khác nhau, mỗi tài khoản một Credential riêng.
  - Credential này sẽ dùng cho tất cả các node Zalo khác trong workflow.

  ---

  ### 2. 👤 Zalo User

  **Chức năng:**  
  Quản lý tài khoản cá nhân, bạn bè, thông tin user.

  **Các thao tác nổi bật:**
  - Gửi lời mời kết bạn, chấp nhận/kết bạn.
  - Chặn, bỏ chặn người dùng.
  - Đổi avatar, cập nhật thông tin cá nhân.
  - Lấy thông tin chi tiết user (ID, tên, trạng thái, avatar...).

  **Cách dùng:**
  - Thêm node “Zalo User” vào workflow.
  - Chọn Credential Zalo đã đăng nhập.
  - Chọn thao tác muốn thực hiện (ví dụ: “Send Friend Request”, “Get User Info”, ...).
  - Nhập các thông tin cần thiết (userId, avatar URL, ...).

  **Ví dụ:**  
  - Gửi lời mời kết bạn tự động cho danh sách số điện thoại.
  - Lấy thông tin bạn bè để đồng bộ với hệ thống CRM.

  ---

  ### 3. 💬 Zalo Send Message

  **Chức năng:**  
  Gửi tin nhắn tới user hoặc group trên Zalo.

  **Các tính năng:**
  - Gửi text, ảnh, file, nhắc tên, trích dẫn tin nhắn cũ.
  - Gửi nhiều ảnh cùng lúc qua URL.
  - Gửi sự kiện “đang nhập” (typing) để tăng trải nghiệm người nhận.

  **Cách dùng:**
  - Thêm node “Zalo Send Message” vào workflow.
  - Chọn Credential Zalo.
  - Chọn loại đối tượng gửi (user hoặc group).
  - Nhập ID người nhận hoặc group, nội dung tin nhắn, file/ảnh nếu có.

  **Ví dụ:**  
  - Gửi thông báo tự động cho nhóm khi có sự kiện mới.
  - Gửi file báo cáo PDF cho từng user.

  ---

  ### 4. 💬 Zalo Message Trigger

  **Chức năng:**  
  Lắng nghe tin nhắn mới từ user hoặc group, tự động kích hoạt workflow.

  **Các tính năng nổi bật:**
  - Lắng nghe tin nhắn text, ảnh, file, voice.
  - Hỗ trợ voice-to-text: tự động nhận diện ngôn ngữ (Việt, Anh, Trung) hoặc chọn thủ công.
  - Chuẩn hóa text voice kéo dài, trả về cả text, ngôn ngữ và độ tin cậy.
  - Tùy chọn lắng nghe cả tin nhắn do chính mình gửi (self listen).

  **Cách dùng:**
  - Thêm node “Zalo Message Trigger” vào workflow.
  - Chọn Credential Zalo.
  - Chọn loại tin nhắn muốn lắng nghe (user, group).
  - Bật/tắt voice-to-text, chọn chế độ nhận diện ngôn ngữ.
  - Kết nối node này với các node xử lý tiếp theo (ví dụ: gửi email, lưu database, gọi API...).

  **Ví dụ:**  
  - Khi có ai nhắn “báo cáo” vào group, tự động gửi file báo cáo mới nhất.
  - Khi nhận voice message, tự động chuyển thành text và gửi sang hệ thống khác.

  ---

  ### 5. 👥 Zalo Group

  **Chức năng:**  
  Quản lý nhóm Zalo.

  **Các thao tác:**
  - Tạo nhóm mới, thêm/xóa thành viên, đổi tên/avatar nhóm.
  - Lấy thông tin nhóm, danh sách thành viên, quản trị viên.
  - Phân quyền quản trị, thêm phó nhóm.

  **Cách dùng:**
  - Thêm node “Zalo Group” vào workflow.
  - Chọn Credential Zalo.
  - Chọn thao tác muốn thực hiện (tạo nhóm, thêm thành viên, lấy info...).
  - Nhập các thông tin cần thiết (tên nhóm, userId, ...).

  **Ví dụ:**  
  - Tạo nhóm mới cho dự án, tự động thêm thành viên từ danh sách.
  - Lấy danh sách thành viên nhóm để gửi thông báo cá nhân hóa.

  ---

  ### 6. 🤝 Zalo Friend Trigger

  **Chức năng:**  
  Lắng nghe sự kiện kết bạn mới, tự động kích hoạt workflow khi có lời mời kết bạn đến.

  **Cách dùng:**
  - Thêm node “Zalo Friend Trigger” vào workflow.
  - Chọn Credential Zalo.
  - Kết nối với các node xử lý tiếp theo (gửi tin nhắn chào mừng, lưu thông tin bạn mới...).

  **Ví dụ:**  
  - Khi có bạn mới, tự động gửi tin nhắn chào mừng và hướng dẫn sử dụng dịch vụ.
  - Lưu thông tin bạn mới vào Google Sheet hoặc CRM.

  ---

  ## 📌 Lưu ý chung khi sử dụng các node

  - Luôn chọn đúng Credential Zalo cho từng node.
  - Đảm bảo đã đăng nhập thành công bằng QR hoặc nhập đúng cookie/imei/userAgent.
  - Đối với voice-to-text, cần cấu hình token Wit.ai hợp lệ cho từng ngôn ngữ.
  - Có thể kết hợp các node Zalo với bất kỳ node nào khác của n8n để xây dựng workflow mạnh mẽ, sáng tạo! 

ai_documentation_summary:
  {"purpose":"This n8n node package provides a comprehensive suite of nodes for integrating the Zalo messaging platform into automation workflows, enabling chatbot interactions, customer service, and internal notifications.","capabilities":["Zalo QR code login with automatic credential storage","User management (send friend requests, block/unblock, update profile)","Send messages (text, images, files, typing indicators)","Message trigger for real-time event listening","Voice-to-text conversion with multi-language support (Vietnamese, English, Chinese)","Group management (create, add/remove members, permissions)","Friend event monitoring","Integration with Wit.ai for speech recognition"],"authentication":"OAuth2 via QR Code (manual cookie/IMEI/UA fallback)","commonUseCases":["Automated customer support chatbots","CRM integration and data synchronization","Internal alerting and notification systems","Voice message transcription and processing","Automated friend request management"],"limitations":["Voice-to-text requires FFmpeg installation on the server","Voice-to-text only supports .aac format (standard Zalo voice messages)","Voice-to-text requires valid Wit.ai API tokens for language detection","Server must have internet access to function","Currently marked as 'test-trial' in package name"],"relatedNodes":["n8n-nodes-wit-ai","n8n-nodes-webhook","n8n-nodes-http-request"]}


node_type: n8n-nodes-zalo-gemazo.zalogemazo
package_name: n8n-nodes-zalo-gemazo
display_name: zalogemazo
description: Zalo integration for n8n: personal account (zca-js) and official Zalo Bot Platform
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: gemazo
author_github_url: git+https://github.com/hygge/n8n-nodes-zalo.git
npm_package_name: n8n-nodes-zalo-gemazo
npm_version: 0.10.53
community_fetched_at: 2026-07-14T14:40:36.021Z
ai_summary_generated_at: 2026-07-14 15:01:34
npm_readme:
  # n8n-nodes-zalo-gemazo

  Community node n8n tích hợp Zalo theo **hai luồng**:

  | Luồng | API | Dùng khi |
  |-------|-----|----------|
  | **Zalo Bot** (khuyến nghị doanh nghiệp) | [Zalo Bot Platform](https://bot.zapps.me/docs) — token chính thức | Chatbot, auto-reply, không cần tài khoản cá nhân |
  | **Zalo cá nhân** | [zca-js](https://github.com/RFS-ADRENO/zca-js) — không chính thức | Tự động hóa tài khoản Zalo Web đầy đủ tính năng |

  > **Cảnh báo (cá nhân):** API không chính thức, mô phỏng Zalo Web. Có thể vi phạm điều khoản Zalo và dẫn đến khóa tài khoản. Nên dùng tài khoản phụ để thử nghiệm.

  ## Cài đặt

  ### Community Nodes (khuyến nghị)

  1. Mở n8n → **Settings** → **Community Nodes**
  2. Cài package: `n8n-nodes-zalo-gemazo`
  3. Tải lại editor

  ### Cài thủ công

  ```bash
  cd ~/.n8n/nodes
  npm install n8n-nodes-zalo-gemazo
  ```

  ## Zalo Bot (API chính thức)

  ### 2 node Bot

  | Node | Mô tả |
  |------|--------|
  | **Zalo Bot Event Trigger** | Nhận tin nhắn qua webhook (tự đăng ký khi activate) |
  | **Zalo Bot Tương Tác** | Gửi tin nhắn, ảnh, sticker |

  ### Tạo bot và credential

  1. Mở app **Zalo** → tìm OA **Zalo Bot Manager** → **Tạo bot**
  2. Nhập tên bot (bắt đầu bằng `Bot`, ví dụ `Bot MyShop`)
  3. Zalo gửi **Bot Token** dạng `{bot_id}:{secret_key}`
  4. Trong n8n: credential **Zalo Bot**:
     - **Bot Token**: dán toàn bộ chuỗi token
     - **Webhook Secret Token** (tùy chọn): chỉ cần nếu cấu hình webhook **thủ công** trên Zalo Bot Manager

  ### Hai cách cấu hình webhook

  **Cách A — n8n tự đăng ký (khuyến nghị)**

  1. Credential: chỉ điền Bot Token
  2. **Zalo Bot Event Trigger** → bật **Tự Đăng Ký Webhook**
  3. **Activate** workflow → n8n tự gọi `setWebhook`
  4. Không cần điền Webhook trên Zalo Bot Manager

  **Cách B — cấu hình tay trên Zalo Bot Manager**

  1. **Activate** workflow trước → copy **Production Webhook URL** từ node trigger (dạng `/webhook/...`, **không** dùng `/webhook-test/`)
  2. Trên Zalo Bot Manager: dán Webhook URL + Secret Token → **Lưu thay đổi**
  3. Credential n8n: dán **cùng Secret Token** vào field **Webhook Secret Token**
  4. Node trigger: **tắt** **Tự Đăng Ký Webhook**

  > HTTP được Zalo chấp nhận (`http://` hoặc `https://`). Cần IP public + mở port (vd. 5678) để Zalo gọi được vào.

  ### Workflow mẫu Bot

  ```
  Zalo Bot Event Trigger (Text Message)
    → Zalo Bot Tương Tác (Send Message)
         chatId: {{ $json.message.chat.id }}
         text: Xin chào {{ $json.message.from.display_name }}!
  ```

  **Expression hữu ích:**

  | Expression | Mô tả |
  |------------|--------|
  | `{{ $json.message.chat.id }}` | Chat ID để trả lời |
  | `{{ $json.message.text }}` | Nội dung tin nhắn |
  | `{{ $json.event_name }}` | Loại sự kiện |

  ### Yêu cầu và lưu ý Bot

  - Webhook URL phải **truy cập được từ internet** (http hoặc https)
  - Một bot chỉ gắn **một webhook** — workflow activate sau ghi đè workflow trước
  - **Secret Token** trên Zalo phải **trùng** với credential n8n (hoặc để trống để n8n tự sinh)
  - **Cloudflare:** Zalo gửi webhook với `User-Agent: Java/1.8.0_192` — có thể bị chặn. Tạo rule WAF skip cho path chứa `/webhook`

  ### Khắc phục “đã set nhưng không nhận tin”

  | Nguyên nhân | Cách xử lý |
  |-------------|-----------|
  | Secret Token không khớp | Dán cùng secret vào credential **Webhook Secret Token** |
  | Dùng `/webhook-test/` | Activate workflow, dùng URL `/webhook/...` (production) |
  | Port chưa mở | Mở firewall port n8n (vd. 5678) cho IP public |
  | Token cũ sau Reset | Cập nhật Bot Token mới vào credential n8n |
  | Cấu hình tay + tự đăng ký | Tắt **Tự Đăng Ký Webhook** nếu đã set trên Zalo |

  ### Sắp có (Bot)

  - `getUpdates` (polling, không cần HTTPS)
  - `sendChatAction` (typing indicator)
  - Quản lý webhook thủ công

  ---

  ## Zalo cá nhân — 3 node chính

  | Node | Mô tả |
  |------|--------|
  | **Zalo Login QR** | Đăng nhập QR, tự lưu credential |
  | **Zalo Event Trigger** | Lắng nghe tin nhắn, reaction, thu hồi, sự kiện nhóm |
  | **Zalo Tương Tác** | Gửi tin / quản lý bạn bè, nhóm, tài khoản, tool |

  ### Zalo Tương Tác — Resource

  | Resource | Ví dụ |
  |----------|--------|
  | **Message** | Gửi tin nhắn, sticker, voice (nhiều ảnh) |
  | **Get** | Bạn bè, nhóm, user info, sticker |
  | **Friend** | Kết bạn, chặn, alias, profile |
  | **Group** | Tạo/sửa nhóm, poll, ghi chú |
  | **Account** | Thông tin tài khoản, pin, test credential |
  | **Tool** | Xóa tin, reaction, typing, danh thiếp |
  | **Custom API Call** | Gọi method zca-js tùy ý |

  ### Zalo Event Trigger — Listen Events

  Chọn một hoặc nhiều: **Message**, **Reaction**, **Undo**, **Group Event**.

  Output có field `event` (`message`, `reaction`, `undo`, `group_event`).

  ## So sánh Bot vs Cá nhân

  | | Zalo Bot | Zalo cá nhân |
  |---|----------|--------------|
  | API | Chính thức | Không chính thức |
  | Credential | Bot Token | Cookie + IMEI + UA |
  | Trigger | Webhook HTTPS | WebSocket |
  | Rủi ro khóa TK | Thấp | Cao |
  | Tính năng | Chat bot cơ bản | Đầy đủ (nhóm, poll, reaction…) |

  ## Migration 0.10.0 — Portal khách hàng + Trial bắt buộc đăng nhập

  - **Trial:** phải **đăng ký/đăng nhập** tại `/portal` trước khi kích hoạt (`/portal/trial?installationId=...`)
  - **Pro:** mua qua `/portal/buy` — admin duyệt đơn (API thanh toán sẽ tích hợp sau)
  - Quản lý license, xem key tại `/portal`
  - `POST /v1/trial` public → **401** (dùng `POST /api/customer/trial`)
  - Env `ZALO_LICENSE_KEY*` chỉ còn **override nội bộ/dev**

  ```bash
  npm install n8n-nodes-zalo-gemazo@0.10.0
  # Deploy Worker + migration D1 0005 trước
  # restart n8n
  ```

  Portal: https://zalo-license-worker.hygge.workers.dev/portal/login

  ---

  ## Migration 0.9.0 — License theo tài khoản Zalo/Bot

  Phiên bản **0.9.0** gắn license/trial theo **danh tính Zalo** (cá nhân: `zaloUserId`, Bot: `botId`):

  - Cùng credential Zalo/Bot dùng được trên **mọi workflow** và **mọi thiết bị**
  - Trial **Personal** và **Bot** tách riêng — mỗi tài khoản trial 1 lần
  - Đổi sang Zalo/Bot khác: trial mới (nếu chưa trial) hoặc **reclaim** key cũ
  - Pro: **rebind** sang Zalo/Bot mới không giới hạn
  - Static data: `zaloLicense.personal` và `zaloLicense.bot` (tự migrate từ format cũ)

  ```bash
  npm install n8n-nodes-zalo-gemazo@0.9.0
  # restart n8n
  # Deploy Worker + migration D1 0004 trước khi dùng
  ```

  Env Pro (tùy chọn tách dòng):

  ```bash
  ZALO_LICENSE_KEY_PERSONAL=ZLG-...
  ZALO_LICENSE_KEY_BOT=ZLG-...
  # hoặc ZALO_LICENSE_KEY cho cả hai
  ```

  ---

  ## Migration 0.8.1 — Trial/license theo workflow

  Phiên bản **0.8.1** sửa cách tính activation: **1 workflow = 1 license slot**.

  - Mọi node Zalo trong cùng workflow dùng chung `installationId`/`instanceId`
  - Workflow thứ 2 được tính là slot mới và cần đăng ký trial/license riêng
  - Tránh lỗi `Đã vượt số instance cho phép` khi dùng nhiều node trong cùng workflow

  ```bash
  npm install n8n-nodes-zalo-gemazo@0.8.1
  # restart n8n
  ```

  ---

  ## Migration 0.8.0 — Cache license 24h, tốc độ nhanh hơn

  Phiên bản **0.8.0** tối ưu license check:

  - **Cache 24h** trong workflow static data — lần chạy sau không gọi API (0ms network)
  - Lần đầu: `POST /v1/activate`; lần sau (trong 24h): skip hoặc `POST /v1/validate` + JWT
  - **Bot webhook** không check license mỗi tin — chỉ khi activate workflow
  - Trang public không còn link Admin

  ```bash
  npm install n8n-nodes-zalo-gemazo@0.8.0
  # restart n8n
  ```

  > Thu hồi key trên admin có hiệu lực chậm tối đa 24h. Khi có cache hợp lệ, node vẫn chạy nếu API tạm down.

  ---

  ## Migration 0.7.3 — License không cần credential

  Credential **Zalo License** đã **gỡ hoàn toàn**. License tự quản lý qua backend + workflow static data — không còn mục "Set up credential" trên node.

  ### Trial

  1. Chạy node Zalo lần đầu → mở link đăng ký từ lỗi
  2. Điền form web → **chạy lại node** — license tự kích hoạt

  Hướng dẫn: **https://zalo-license-worker.hygge.workers.dev/register**

  ### Pro

  Đặt biến môi trường trên n8n:

  ```bash
  ZALO_LICENSE_KEY=ZLG-XXXXX-XXXXX
  ```

  ```bash
  npm install n8n-nodes-zalo-gemazo@0.7.3
  # restart n8n
  ```

  ---

  ## Migration 0.7.1 (Trial qua trang đăng ký web)

  Phiên bản **0.7.1–0.7.2** yêu cầu đăng ký Trial trên web. *(0.7.3 gỡ credential Zalo License.)*

  ---

  ## Migration 0.7.0 (superseded by 0.7.1)

  Phiên bản **0.7.0** thay đổi cách nhận Trial: **không dùng email** (tránh spoof), trial được cấp tự động khi chạy **Zalo Login QR** lần đầu. *(Luồng này đã thay bằng 0.7.1 — đăng ký web.)*

  ---

  ## Migration 0.6.0 (breaking — bắt buộc License Key)

  Phiên bản **0.6.0** yêu cầu credential **Zalo License** trên **cả 5 node**. *(Trial qua email đã thay bằng 0.7.0.)*

  ---

  ## Migration 0.5.0 (breaking change)

  Phiên bản **0.5.x** gộp toàn bộ node legacy vào **5 node public**. Workflow cũ dùng node ẩn hoặc typeVersion cũ cần migrate thủ công.

  ### Cài đặt trên VPS

  ```bash
  npm install n8n-nodes-zalo-gemazo@0.5.2
  npm ls n8n-nodes-zalo-gemazo
  # restart n8n (bắt buộc)
  # Mở từng workflow → Update node → Save
  ```

  ### Bảng thay node

  | Node cũ (sẽ lỗi sau 0.5.0) | Thay bằng |
  |----------------------------|-----------|
  | `zaloGroup` | Zalo Tương Tác → Resource **Group** |
  | `zaloUser` / `zaloAccount` | Resource **Get** / **Friend** / **Account** |
  | `zaloMessageTrigger` | Zalo Event Trigger → Listen **Message** |
  | `zaloReactionTrigger` | Zalo Event Trigger → Listen **Reaction** |
  | `zaloUndoTrigger` | Zalo Event Trigger → Listen **Undo** |
  | `zaloGroupEventTrigger` | Zalo Event Trigger → Listen **Group Event** |
  | Zalo Tương Tác typeVersion 1–11 | **Update node** → v12, cấu hình lại Resource/Operation |
  | Zalo Event Trigger v1 | **Update node** → v2 |
  | Zalo Bot nodes v1 | **Update node** → v2 |

  ### Version mới

  | Node | Version |
  |------|---------|
  | Zalo Tương Tác | **12 only** |
  | Zalo Event Trigger | **2 only** |
  | Zalo Login QR | 1 |
  | Zalo Bot Tương Tác | **2 only** |
  | Zalo Bot Event Trigger | **2 only** |

  ## Chuyển từ node cũ (trước 0.5.0)

  | Node cũ | Thay bằng |
  |---------|-----------|
  | Zalo Message | Zalo Tương Tác → Resource **Message** |
  | Zalo User | Resource **Friend** / **Get** |
  | Zalo Group | Resource **Group** |
  | Zalo Account | Resource **Account** |
  | Zalo Sticker | Resource **Get** |
  | Zalo Poll / Note | Resource **Group** |
  | Zalo Message Trigger | Zalo Event Trigger → **Message** |
  | Zalo Reaction Trigger | Zalo Event Trigger → **Reaction** |
  | Zalo Undo Trigger | Zalo Event Trigger → **Undo** |
  | Zalo Group Event Trigger | Zalo Event Trigger → **Group Event** |

  Sau 0.5.0, node legacy **không còn trong package** — workflow chưa migrate sẽ hiện "unknown node".

  ## Credential `zaloApi` (cá nhân)

  | Field | Mô tả |
  |-------|--------|
  | Cookie | JSON cookie từ Zalo Web hoặc **Zalo Login QR** |
  | IMEI | `localStorage.getItem('z_uuid')` trên chat.zalo.me |
  | User Agent | `navigator.userAgent` từ trình duyệt |
  | Proxy | Tùy chọn |

  ## Workflow mẫu (cá nhân)

  1. **Zalo Login QR** → quét QR → credential `Zalo - Tên (SĐT)`
  2. **Zalo Event Trigger** → Listen **Message** → test event
  3. **Zalo Tương Tác** → Resource **Message** → Gửi tin nhắn
     - `User/Group Id`: `={{ $json.threadId }}`
     - `Attachments`: `={{ $json.imageUrls.join(",") }}` (album)

  ## Phát triển

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

  ## License

  MIT — xem [LICENSE](LICENSE).

ai_documentation_summary:
  {"purpose":"Integrates Zalo with n8n through two flows: the official Zalo Bot Platform for chatbot/webhook automation and an unofficial personal Zalo Web automation flow using zca-js.","capabilities":["Receive Zalo Bot messages and events through a webhook trigger","Automatically register Zalo Bot webhooks on workflow activation","Send Zalo Bot messages, images, and stickers","Log in to a personal Zalo account via QR and save credentials","Listen to personal Zalo events including messages, reactions, undo/recall events, and group events","Send personal Zalo messages, stickers, voice messages, and multiple images","Get friends, groups, user information, and stickers","Manage friends including add friend, block, alias, and profile actions","Manage groups including create/edit groups, polls, and notes","Access account information, pin actions, and credential testing"],"authentication":"Zalo Bot uses a Bot Token, with optional Webhook Secret Token for manual webhook configuration. Personal Zalo uses QR login and stores Cookie, IMEI, and User-Agent credentials. License/trial activation may require portal login.","commonUseCases":["Build an official Zalo chatbot for business auto-replies","Receive Zalo messages in n8n and reply automatically","Automate a personal Zalo account with WebSocket-based event listening","Manage Zalo groups, polls, notes, friends, and reactions","Forward Zalo events into other n8n workflows or services"],"limitations":["Personal Zalo integration uses an unofficial API that mimics Zalo Web and may violate Zalo terms or lead to account lockout","Zalo Bot webhooks must be reachable from the public internet over HTTP or HTTPS","One Zalo Bot can only be attached to one webhook; activating another workflow can overwrite the previous webhook","Manual webhook setup requires the same Secret Token in Zalo Bot Manager and the n8n credential","Production webhook URLs must use /webhook/ rather than /webhook-test/"],"relatedNodes":["Zalo Bot Event Trigger","Zalo Bot Tương Tác","Zalo Login QR","Zalo Event Trigger","Zalo Tương Tác"]}


node_type: n8n-nodes-chatfunnel.chatfunnel
package_name: n8n-nodes-chatfunnel
display_name: chatfunnel
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: chatfunnel
author_github_url: git+https://github.com/ddiasmatt/n8n-nodes-chatfunnel.git
npm_package_name: n8n-nodes-chatfunnel
npm_version: 2.1.0
community_fetched_at: 2026-07-14T14:40:36.022Z
ai_summary_generated_at: 2026-07-14 15:01:34
description:
  n8n community node para a API pública do ChatFunnel v1 (contatos, tags, kanbans, templates WhatsApp, fluxos, canais e campos personalizados)

npm_readme:
  # n8n-nodes-chatfunnel

  Community node do n8n para a **API pública do ChatFunnel v1** (`https://api.chatfunnel.com.br/v1`).

  Cobre 100% dos 20 endpoints da API: contatos, tags, campos personalizados, canais, fluxos de automação, kanbans (cards) e templates de WhatsApp.

  > Documentação oficial da API: https://chatfunnel.readme.io/reference

  ## Recursos e operações

  | Recurso | Operação | Endpoint |
  |---|---|---|
  | Contato | Criar ou Atualizar (upsert) | `POST /contacts` |
  | Contato | Atualizar | `PUT /contacts/{contactId}` |
  | Contato | Buscar | `GET /contacts/search` |
  | Contato | Excluir | `DELETE /contacts/{contactId}` |
  | Canal | Listar | `GET /channels` |
  | Campo Personalizado | Listar | `GET /customFields` |
  | Campo Personalizado | Criar | `POST /customFields` |
  | Fluxo (Automação) | Listar | `GET /flows` |
  | Fluxo (Automação) | Executar | `POST /flows/execute` |
  | Kanban | Listar | `GET /kanbans` |
  | Kanban | Mover ou Criar Card (por contato) | `POST /kanbans/{kanbanId}/cards` |
  | Kanban | Criar Card (sempre novo) | `POST /kanbans/{kanbanId}/card/create` |
  | Kanban | Mover Card (por ID) | `POST /kanbans/{kanbanId}/cards/{cardId}/move` |
  | Kanban | Atualizar Card | `PUT /kanbans/{kanbanId}/cards/{cardIdOrContactId}` |
  | Kanban | Excluir Card | `DELETE /kanbans/{kanbanId}/cards/{cardId}` |
  | Tag | Listar | `GET /tags` |
  | Tag | Criar | `POST /tags` |
  | Tag | Excluir | `DELETE /tags/{tagId}` |
  | Template WhatsApp | Listar | `GET /templates` |
  | Template WhatsApp | Enviar | `POST /templates/send` |

  ### Destaques

  - **Dropdowns dinâmicos**: tags, campos personalizados, canais, fluxos, kanbans, colunas do kanban, motivos de perda e templates são carregados direto da API. Nada de colar UUID na mão.
  - **Credencial com teste embutido**: ao salvar a API key, o n8n valida a chave contra `GET /v1/tags`.
  - **Usável como ferramenta de AI Agent** (`usableAsTool`, requer n8n >= 1.79).
  - **Upsert nativo**: `Contato > Criar ou Atualizar` usa o comportamento de upsert do `POST /contacts`.
  - **Atribuição de origem (UTM)**: a criação de contato aceita `utmSource`, `utmMedium`, `utmCampaign`, `utmTerm`, `utmContent` e os campos de agendamento `lastScheduleLink`/`lastScheduleDate`. Esses campos existem só no `POST /contacts` (o update via PUT não os aceita).
  - **Três operações de card distintas**: `Mover ou Criar Card (por contato)` faz upsert (move o card ativo do contato ou cria); `Criar Card (sempre novo)` força um card novo; `Mover Card (por ID)` move um card pelo seu UUID.
  - **Mover card por contato**: nas operações de atualizar/excluir card, o segundo identificador aceita o ID do card **ou** o ID do contato vinculado.

  ## Credencial

  1. No ChatFunnel, gere uma API key com as permissões necessárias:
     - `SEARCH_CONTACT` — buscar contato
     - `CREATE_CONTACT` — criar/atualizar/excluir contato
     - `MANAGE_ACCOUNT` — canais, campos personalizados, fluxos, tags e templates
     - `MANAGE_KANBAN` — kanbans e cards
  2. No n8n: **Credentials > New > ChatFunnel API** e cole a chave.

  > A API autentica via query string (`?apikey=...`). Use apenas em workflows de backend; a chave aparece em logs de proxy.

  ## Instalação

  ### Opção 1: Community node pelo painel do n8n (recomendado)

  Requer n8n self-hosted com community nodes habilitados (`N8N_COMMUNITY_PACKAGES_ENABLED=true`, padrão em self-host).

  1. No n8n: **Settings > Community Nodes > Install**
  2. Informe o nome do pacote: `n8n-nodes-chatfunnel`
  3. Confirme o aviso de risco e instale
  4. O node "ChatFunnel" aparece na busca de nodes do editor

  > Se o pacote ainda não estiver publicado no npm, use a Opção 2 (instalação via GitHub) ou publique com `npm publish`.

  ### Opção 2: Instalação manual via GitHub (Docker)

  ```bash
  # dentro do container ou no volume do n8n
  cd ~/.n8n
  mkdir -p nodes && cd nodes
  npm install git+https://github.com/ddiasmatt/n8n-nodes-chatfunnel.git
  ```

  Depois reinicie o n8n:

  ```bash
  docker restart n8n
  # ou, em Docker Swarm:
  docker service update --force <stack>_n8n
  ```

  ### Opção 3: Build local para desenvolvimento

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

  # linka o pacote no diretório de custom nodes do n8n
  cd ~/.n8n/nodes   # crie se não existir: mkdir -p ~/.n8n/nodes
  npm install /caminho/para/n8n-nodes-chatfunnel
  ```

  Reinicie o n8n após instalar. O node aparece como **ChatFunnel** e a credencial como **ChatFunnel API**.

  ## Desenvolvimento

  ```bash
  npm install        # instala dependências
  npm run build      # compila TypeScript + copia ícone para dist/
  npm run dev        # build em watch mode
  npm test           # roda a suíte Jest
  ```

  Estrutura:

  ```
  credentials/ChatFunnelApi.credentials.ts   # credencial (auth via query string + teste)
  nodes/ChatFunnel/
  ├── ChatFunnel.node.ts                     # definição do node + roteador de execução
  ├── GenericFunctions.ts                    # request autenticado e helpers
  ├── LoadOptions.ts                         # dropdowns dinâmicos (tags, kanbans, colunas...)
  ├── actions/                               # um handler por recurso
  │   ├── ContactActions.ts
  │   ├── AccountActions.ts                  # canais, campos personalizados, fluxos, tags
  │   ├── KanbanActions.ts
  │   └── TemplateActions.ts
  └── descriptions/                          # propriedades de UI por recurso
  ```

  ## Breaking change (v2.0.0)

  A v2 abandona os endpoints legados de webhook (`/webhook/create_contact` etc.) e usa exclusivamente a API pública v1 (`https://api.chatfunnel.com.br/v1`). Workflows criados com a v1.x do pacote precisam ser reconfigurados:

  - Tags e campos personalizados agora são referenciados por **UUID** (selecionáveis via dropdown)
  - `Listar Moderadores` foi removido (não existe na API pública v1)
  - Card de kanban não tem mais `title`/`description`; o card é do contato e aceita `comment`, `priority`, `amount`, `statusOportunity`
  - Envio de template agora exige `channelId` (selecione o canal WhatsApp no dropdown)

  ## Licença

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Provides n8n integration with the ChatFunnel public API v1 for managing contacts, tags, custom fields, channels, automation flows, kanban cards, and WhatsApp templates. It covers all 20 documented ChatFunnel v1 endpoints.","capabilities":["Create or update contacts using native upsert","Update, search, and delete contacts","List channels","List and create custom fields","List and execute automation flows","List kanbans","Move or create kanban cards by contact","Create new kanban cards","Move kanban cards by card ID","Update and delete kanban cards"],"authentication":"API key required. The ChatFunnel API key is passed via query string as ?apikey=... and is configured in the ChatFunnel API credential.","commonUseCases":["Sync or upsert CRM/contact data into ChatFunnel","Search, update, or delete ChatFunnel contacts from workflows","Trigger ChatFunnel automation flows from n8n","Move contacts through kanban pipeline stages","Create and manage tags and custom fields"],"limitations":["API key is sent via query string and may appear in proxy logs, so it should only be used in backend workflows","AI Agent tool support requires n8n >= 1.79","Contact UTM and scheduling fields are only supported on POST /contacts and are not accepted by contact update via PUT","Legacy webhook endpoints from package v1.x are no longer supported in v2.0.0","List Moderators was removed because it does not exist in the public API v1"],"relatedNodes":["AI Agent"]}


node_type: n8n-nodes-openai-advanced.openaiadvanced
package_name: n8n-nodes-openai-advanced
display_name: openaiadvanced
description: n8n community node for OpenAI with LiteLLM prompt caching support
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: unbalanced
author_github_url: git+https://github.com/<...>/n8n-nodes-<...>.git
npm_package_name: n8n-nodes-openai-advanced
npm_version: 0.1.25
community_fetched_at: 2026-07-14T14:40:36.023Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # n8n-nodes-openai-advanced

  An n8n community node that extends the built-in OpenAI Chat Model to support **non** Open AI models and features for models that are proxied/consumed via  LiteLLM.

  The Lib enables support to **prompt caching** and **Anthropic Tool Search Tool**.

  ## Features

  - Drop-in replacement for n8n's built-in OpenAI Chat Model node
  - **Prompt caching** via LiteLLM — reduce costs and latency for repeated system prompts
  - **Cache TTL** control — choose between 5-minute (default) or 1-hour cache duration
  - **Cache usage logging** — monitor cache hits/writes/misses in n8n logs
  - **Tool Search** via LiteLLM — Anthropic's dynamic tool discovery for large tool catalogs (Regex or BM25 variants)
  - Base URL override for LiteLLM or other OpenAI-compatible proxies
  - Dynamic model list from your API endpoint
  - All standard ChatOpenAI options: temperature, top P, frequency/presence penalty, max tokens, response format, reasoning effort, timeout, retries

  ## Installation

  ### In n8n (Community Nodes)

  1. Go to **Settings > Community Nodes**
  2. Install: `n8n-nodes-openai-advanced`

  ### Manual Installation

  ```bash
  cd ~/.n8n/nodes
  npm install n8n-nodes-openai-advanced
  ```

  Restart n8n after installation.

  ## Usage

  1. Add the **OpenAI Chat Model Advanced** node to your workflow
  2. Connect it to an AI Agent or Chain as the language model
  3. Configure your OpenAI API credentials (reuses the built-in `openAiApi` credential)
  4. Select a model from the list or enter a model ID manually

  ### Prompt Caching (LiteLLM)

  To enable prompt caching for Anthropic models through LiteLLM:

  1. Set the **Base URL** to your LiteLLM proxy endpoint
  2. Enable **Enable Prompt Caching (LiteLLM)** in the Options
  3. Optionally set **Cache TTL** to `1 Hour` (default is `5 Minutes`)

  #### How it works

  When prompt caching is enabled, the node:

  - Adds the `anthropic-beta: prompt-caching-2024-07-31` header
  - Injects `cache_control_injection_points` into the request body, telling LiteLLM to add `cache_control` blocks to system messages
  - Logs cache usage to n8n's logger (visible in container logs)

  #### Requirements

  - A LiteLLM proxy configured with an Anthropic model (e.g., `claude-sonnet-4-20250514`)
  - System prompt must be at least **1024 tokens** for caching to activate (Anthropic requirement)

  #### Monitoring Cache Usage

  When prompt caching is enabled, the node logs cache activity:

  ```
  [PromptCache] prompt=1500 completion=200 cache_creation=1024 cache_read=0
  [PromptCache] Cache WRITE — 1024 tokens written to cache
  ```

  On subsequent requests within the TTL:

  ```
  [PromptCache] prompt=1500 completion=180 cache_creation=0 cache_read=1024
  [PromptCache] Cache HIT — 1024 tokens read from cache
  ```

  Logs are written to n8n's standard logger (visible in Docker/container stdout).

  ### Tool Search

  Tool Search enables Claude to dynamically discover and load tools on-demand from a large catalog. Instead of sending all tool definitions upfront, tools are marked as deferred and Claude searches for the ones it needs.

  To enable Tool Search:

  1. Set the **Base URL** to your LiteLLM proxy endpoint
  2. Enable **Enable Tool Search** in the Options
  3. Optionally change the **Tool Search Variant** (default: Regex)

  #### How it works

  When Tool Search is enabled, the node:

  - Injects a tool search tool (`tool_search_tool_regex` or `tool_search_tool_bm25`) into the request
  - Marks all connected tools with `defer_loading: true` so they are loaded on-demand
  - LiteLLM automatically adds the required `anthropic-beta: advanced-tool-use-2025-11-20` header

  Claude then searches for relevant tools using regex patterns (Regex variant) or natural language queries (BM25 variant) before calling them.

  #### Variants

  | Variant | Description | Availability |
  |---------|-------------|--------------|
  | **Regex** | Claude constructs regex patterns to search tools by name, description, and arguments. Faster. | All providers |
  | **BM25** | Claude uses natural language queries for semantic tool matching. Better for large catalogs. | Not available on Bedrock |

  #### Monitoring

  When Tool Search is enabled, the node logs injection activity:

  ```
  [ToolSearch] Injected tool_search_tool_regex + defer_loading on 5 tools
  ```

  The LiteLLM response usage will also include `tool_search_requests` count.

  #### Requirements

  - A LiteLLM proxy configured with a Claude model via Vertex AI, Bedrock, or direct Anthropic API
  - At least one tool connected to the agent

  ## Options

  | Option | Description | Default |
  |--------|-------------|---------|
  | Base URL | Override the API endpoint (e.g., LiteLLM proxy) | `https://api.openai.com/v1` |
  | Enable Prompt Caching | Inject LiteLLM cache control headers and injection points | `false` |
  | Cache TTL | Cache duration: 5 Minutes or 1 Hour | `5 Minutes` |
  | Enable Tool Search | Enable Anthropic Tool Search for dynamic tool discovery | `false` |
  | Tool Search Variant | Regex (pattern matching) or BM25 (semantic search) | `Regex` |
  | Frequency Penalty | Penalize repeated tokens (-2 to 2) | `0` |
  | Maximum Number of Tokens | Max tokens to generate | `-1` (unlimited) |
  | Max Retries | Number of retry attempts | `2` |
  | Presence Penalty | Penalize new topic tokens (-2 to 2) | `0` |
  | Reasoning Effort | For o-series/gpt-5 models: low, medium, high | `medium` |
  | Response Format | Text or JSON mode | `text` |
  | Sampling Temperature | Controls randomness (0 to 2) | `0.7` |
  | Timeout | Request timeout in milliseconds | `300000` |
  | Top P | Nucleus sampling threshold (0 to 1) | `1` |

  ## Development

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

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"An n8n community node that extends the built-in OpenAI Chat Model to support non-OpenAI models and advanced features like prompt caching and tool search via LiteLLM proxies.","capabilities":["Prompt caching via LiteLLM to reduce costs and latency","Configurable cache TTL (5 minutes or 1 hour)","Cache usage logging in n8n logs","Anthropic Tool Search for dynamic tool discovery","Regex or BM25 tool search variants","Base URL override for LiteLLM or other OpenAI-compatible proxies","Dynamic model list retrieval from API endpoint","Standard ChatOpenAI options (temperature, top P, penalties, max tokens, response format, reasoning effort, timeout, retries)"],"authentication":"API key required (reuses built-in openAiApi credential)","commonUseCases":["Reducing costs and latency for repeated system prompts using LiteLLM caching","Enabling dynamic tool discovery for Anthropic models with large tool catalogs","Supporting non-OpenAI models proxied through LiteLLM (e.g., Anthropic, Vertex AI, Bedrock)","Monitoring cache hits/writes/misses in n8n logs"],"limitations":["Prompt caching requires system prompts of at least 1024 tokens for Anthropic models","BM25 tool search variant is not available on Bedrock","Cache usage and tool search activity are logged to n8n's standard logger (visible in Docker/container stdout)","Requires a LiteLLM proxy configured with the appropriate model for advanced features"],"relatedNodes":["OpenAI Chat Model","AI Agent","Chain"]}


node_type: @custom-js/n8n-nodes-pdf-toolkit.pdftoolkit
package_name: @custom-js/n8n-nodes-pdf-toolkit
display_name: pdftoolkit
description: This is official node for interacting with APIs from customjs.space
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
updated_at: 2026-07-14 14:40:36
author_name: henriklippke
author_github_url: git+https://github.com/customjs/n8n-nodes-pdf-toolkit.git
npm_package_name: @custom-js/n8n-nodes-pdf-toolkit
npm_version: 1.58.0
community_fetched_at: 2026-07-14T14:40:36.024Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  ![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)

  # @custom-js/n8n-nodes-pdf-toolkit

  > ⚠️
  > **DEPRECATED**: This package is deprecated and will no longer receive updates.
  > Please use the new and improved [**@custom-js/n8n-nodes-pdf-toolkit-v2**](https://www.npmjs.com/package/@custom-js/n8n-nodes-pdf-toolkit-v2) which consolidates all functionality into a single, more efficient node.

  This is an n8n community node. It lets interact with official API of [customJS API](https://www.customjs.space/)

  This package contains nodes to help you generate PDF from HTML, merge multiple PDF files, take a screenshot of specific website using URL, convert PDF to PNG, convert PDF to Text and extract pages from PDF.

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

  - [Installation](#installation)
  - [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.

  Use the package at [here](https://www.npmjs.com/package/@custom-js/n8n-nodes-pdf-toolkit).

  ## Credentials

  Add your Api Key and store securely


  ## Usage

  ### "HTML to PDF" node

  - Add the HTML to PDF node to your workflow
  - Configure your CustomJS API credentials
  - Input your HTML content
  - Execute the workflow to generate PDF

  ### "Merge PDFs" node

  - Add the Merge PDFs node to your workflow
  - Configure your CustomJS API credentials
  - Input PDF files as an array with the same field name to merge.
  - If total size of files exceeds 6MB, pass it as an array of URL seperated by comma.
  - Execute the workflow to get merged PDF file.

  ### "Website Screenshot" node

  - Add the Website Screenshot node to your workflow
  - Configure your CustomJS API credentials
  - Input your URL of website to take screenshot
  - Execute the workflow to take a screenshot of that website

  ### "Compress PDF" node

  - Add the Compress PDF node to your workflow
  - Configure your CustomJS API credentials
  - Input Binary PDF file for compression to compress
  - If size of the binary file exceeds 6MB, pass it as URL.
  - Execute the workflow to get a compression of PDF file.

  ### "PDF To PNG" node

  - Add the PDF To PNG node to your workflow
  - Configure your CustomJS API credentials
  - Input Binary PDF file for conversion
  - If size of the binary file exceeds 6MB, pass it as URL.
  - Execute the workflow to get converted PNG file.

  ### "PDF To Text" node

  - Add the PDF To Text node to your workflow
  - Configure your CustomJS API credentials
  - Input Binary PDF file for conversion
  - If size of the binary file exceeds 6MB, pass it as URL.
  - Execute the workflow to get converted Text file.

  ### "Extract Pages From PDF" node

  - Add the Extract Pages From PDF node to your workflow
  - Configure your CustomJS API credentials
  - Input Binary PDF file for conversion
  - If size of the binary file exceeds 6MB, pass it as URL.
  - Execute the workflow to get converted Pages from PDF file.

  ### "SSL Checker" node

  - Add the **SSL Checker** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input the domain you want to check (e.g., `example.com`).
  - Execute the workflow to get information about the SSL certificate, including the expiration date.

  ### "Scraper" node

  - Add the **Scraper** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input the website URL you want to scrape (must start with `https://`).
  - Optionally, define user actions (click, type, wait) to interact with page elements using selectors.
  - Choose the return type:  
    - **Raw HTML**: Get the HTML content of the page.  
    - **Screenshot (PNG)**: Get a screenshot of the page.
  - Enable or disable debug mode to control error handling for missing elements.
  - Execute the workflow to scrape the website and receive the desired output.

  ### "Markdown to HTML" node

  - Add the **Markdown to HTML** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input the Markdown content you want to convert to HTML.
  - Execute the workflow to get the converted HTML content.

  ### "HTML to Docx (Word)" node

  - Add the **HTML to Docx (Word)** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input the HTML content you want to convert to Docx (Word).
  - Execute the workflow to get the converted Docx (Word) file.


  ### "PDF Form Fill" node

  - Add the **PDF Form Fill** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input the PDF file you want to fill out.
  - Define the form fields and their values.
  - Execute the workflow to get the filled-out PDF file.

  ### "Get PDF Form Field Names" node

  - Add the **Get PDF Form Field Names** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input the PDF file you want to get form field names from.
  - Execute the workflow to get the form field names.

  ### "Invoice Generator" node

  - Add the **Invoice Generator** node to your workflow.
  - Configure your CustomJS API credentials.
  - Select a PDF template.
  - Fill in the issuer, payment, recipient, and billing information.
  - Add items to the invoice.
  - Execute the workflow to generate the PDF invoice.

  ### "JSON to TOON" node

  - Add the **JSON to TOON** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input your JSON data.
  - Execute the workflow to convert JSON to TOON format.
  - TOON format can reduce AI tokenization by 40% to 60% when working with language models.

  ### "TOON to JSON" node

  - Add the **TOON to JSON** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input your TOON data.
  - Execute the workflow to convert TOON to JSON format.

ai_documentation_summary:
  {"purpose":"This deprecated n8n community node allows interaction with the CustomJS API to perform PDF manipulation, website scraping, and document conversion tasks.","capabilities":["Generate PDF from HTML","Merge multiple PDF files","Take website screenshots","Convert PDF to PNG","Convert PDF to text","Extract pages from PDF","Compress PDF files","Check SSL certificates","Web scraping with user actions","Convert Markdown to HTML"],"authentication":"API Key required (CustomJS API credentials)","commonUseCases":["Automating document processing workflows","Converting web content to PDF or images","Extracting text from PDF documents","Scraping websites and capturing screenshots","Generating invoices from templates"],"limitations":["Package is deprecated and will no longer receive updates","Recommendation to use @custom-js/n8n-nodes-pdf-toolkit-v2 for consolidated functionality","File size limitations: files exceeding 6MB must be passed as URLs for merge, compress, convert, and extract operations"],"relatedNodes":["@custom-js/n8n-nodes-pdf-toolkit-v2"]}


