docs(n8n,zapier): rewrite both integration pages in the task-first house style

Both pages opened with an endpoint table and left the reader to work out
setup themselves. Restructure them the way the stronger integration pages
read: problem statement, prerequisites with API-key links, a Steps-based
setup with a verification callout, a runnable quickstart, then the field
reference, then troubleshooting.

Every documented field is checked against the source rather than a schema:
the Zapier action input fields come from src/creates and src/searches, and
Wait for Completion is correctly documented as off by default there (it is
on by default in n8n). Adds the n8n self-hosted-only prerequisite and the
Zapier App Directory availability note, both of which users hit first.
This commit is contained in:
kartik-mem0
2026-07-29 22:33:55 +05:30
parent 29601e54f4
commit 84a1318f71
2 changed files with 195 additions and 56 deletions
+91 -34
View File
@@ -3,46 +3,94 @@ title: n8n
description: "Add long-term memory to n8n workflows and AI Agents with the Mem0 community node, no code required."
---
The [`@mem0/n8n-nodes-mem0`](https://www.npmjs.com/package/@mem0/n8n-nodes-mem0) community node brings [Mem0](https://mem0.ai) memory to [n8n](https://n8n.io). Add, search, and manage long-term memories inside any workflow, and use it as a tool for the n8n AI Agent.
Your n8n workflows start from zero on every run. The [`@mem0/n8n-nodes-mem0`](https://www.npmjs.com/package/@mem0/n8n-nodes-mem0) community node fixes that: store durable facts as memories, recall them in any later run, and hand the node to an [n8n AI Agent](https://docs.n8n.io/advanced-ai/) as a tool so it can remember and recall on its own.
## Overview
The node wraps the hosted Mem0 REST API and supports six operations on the **Memory** resource:
1. Install the node from n8n's community nodes panel.
2. Connect your Mem0 API key once as a credential.
3. Drop a **Mem0** node into any workflow to add, search, or manage memories.
4. Optionally attach it to an **AI Agent** node, where it becomes a tool the agent calls itself.
| Operation | Endpoint |
| --- | --- |
| **Add** | `POST /v3/memories/add/` |
| **Search** | `POST /v3/memories/search/` |
| **Get** | `GET /v1/memories/{id}/` |
| **Get Many** | `POST /v3/memories/` |
| **Update** | `PUT /v1/memories/{id}/` |
| **Delete** | `DELETE /v1/memories/{id}/` |
## Prerequisites
It is marked `usableAsTool`, so the n8n AI Agent (Tools Agent) can call it directly to remember and recall information.
1. A Mem0 API key from the <a href="https://app.mem0.ai/dashboard/api-keys?utm_source=oss&utm_medium=integration-n8n" rel="nofollow">API Keys dashboard</a> (sign up at <a href="https://app.mem0.ai?utm_source=oss&utm_medium=integration-n8n" rel="nofollow">app.mem0.ai</a> if you do not have an account).
2. A **self-hosted** n8n instance. Installing community nodes from npm is a self-hosted feature; n8n Cloud only offers nodes that n8n has verified.
3. Owner access to that instance, since only instance owners can install community nodes.
## Installation
Install it like any n8n community node:
<Steps>
<Step title="Open the community nodes panel">
In n8n, go to **Settings → Community Nodes** and select **Install**.
</Step>
<Step title="Install the package">
Enter `@mem0/n8n-nodes-mem0`, tick the risk acknowledgement, and select **Install**.
</Step>
<Step title="Create the credential">
Add a new **Mem0 API** credential and paste your API key. Leave **Base URL** at `https://api.mem0.ai` unless you run Mem0 somewhere else.
</Step>
</Steps>
1. In n8n, go to **Settings → Community Nodes → Install**.
2. Enter `@mem0/n8n-nodes-mem0` and confirm.
<Info>
**Verify the install:** search the nodes panel for `Mem0`. The node should appear with a **Memory** resource offering Add, Search, Get, Get Many, Update, and Delete.
</Info>
The node then appears in the nodes panel under the AI category.
## Quickstart
## Authentication
A two-node workflow that writes a memory and reads it back:
Create a **Mem0 API** credential in n8n:
```text
Manual Trigger → Mem0 (Add) → Mem0 (Search)
```
- **API Key**: from the <a href="https://app.mem0.ai/dashboard/api-keys?utm_source=oss&utm_medium=integration-n8n" rel="nofollow">Mem0 API Key dashboard</a>. Sent as `Authorization: Token <key>`.
- **Base URL**: defaults to `https://api.mem0.ai`.
<Steps>
<Step title="Add a memory">
Add a **Mem0** node, keep **Operation: Add**, set **User ID** to `alice`, and add one message with **Role** `user` and **Content**:
`I am vegetarian and I never eat mushrooms.`
</Step>
<Step title="Search for it">
Add a second **Mem0** node with **Operation: Search**, **User ID** `alice`, and **Query** `what does the user eat?`.
</Step>
<Step title="Run it">
Select **Test workflow**. The Search node returns the extracted dietary memory.
</Step>
</Steps>
<Note>
Extraction is asynchronous. The Add node's **Wait for Completion** option is on by default, so it polls until extraction finishes before the next node runs. If you turn it off, allow a few seconds before searching for what you just wrote.
</Note>
## Use it as an AI Agent tool
The node is marked `usableAsTool`, so an n8n **AI Agent** (Tools Agent) can call it without any wiring on your side:
```text
Chat Trigger → AI Agent ──tool──▶ Mem0 (Search)
──tool──▶ Mem0 (Add)
```
Attach one Mem0 node set to **Search** and one set to **Add**. The agent searches memory before answering and writes back durable facts after a meaningful exchange. Keep **User ID** the same on both.
## Operations
The node wraps the hosted Mem0 REST API and supports six operations on the **Memory** resource:
| Operation | What it does | Endpoint |
| --- | --- | --- |
| **Add** | Extract and store memories from messages | `POST /v3/memories/add/` |
| **Search** | Semantic search over stored memories | `POST /v3/memories/search/` |
| **Get Many** | List stored memories (one page, or **Return All**) | `POST /v3/memories/` |
| **Get** | Fetch a single memory by ID | `GET /v1/memories/{id}/` |
| **Update** | Change a memory's text or metadata | `PUT /v1/memories/{id}/` |
| **Delete** | Delete a single memory by ID | `DELETE /v1/memories/{id}/` |
### Add
Extracts and stores memories from one or more messages. Provide at least one entity id (**User ID**, or **Agent ID** / **App ID** / **Run ID** in Additional Fields); the node validates this before calling the API.
Extracts and stores memories from one or more messages. Supply at least one entity id (**User ID**, or **Agent ID** / **App ID** / **Run ID** under Additional Fields); the node checks this before calling the API.
Additional Fields also expose:
**Additional Fields:**
| Field | Purpose |
| --- | --- |
@@ -56,37 +104,46 @@ Additional Fields also expose:
| **Includes** | Only extract memories matching this description |
| **Excludes** | Skip memories matching this description |
**Includes** and **Excludes** filter what extraction keeps. Sending *"I am vegetarian and I never eat mushrooms. I drive a blue Toyota Corolla and my parking spot is B12"* stores three memories by default; with `Includes: "only record food and diet preferences"` it stores only the dietary one.
Extraction is asynchronous. **Wait for Completion** (on by default) polls the event until it finishes and returns the resulting memories; turn it off to return immediately with the event ID.
**Includes** and **Excludes** narrow what extraction keeps. Sending *"I am vegetarian and I never eat mushrooms. I drive a blue Toyota Corolla and my parking spot is B12"* stores three memories by default; with `Includes: "only record food and diet preferences"` it stores just the dietary one.
### Search
Semantic search over stored memories. Provide a **Query**, at least one entity id, and an optional **Limit**.
Semantic search over stored memories. Takes a **Query**, at least one entity id, and an optional **Limit**.
### Get Many
Lists stored memories for the entity ids you supply. Turn on **Return All** to page through every memory automatically; leave it off to fetch a single **Page**. **Page Size** applies either way.
Lists stored memories for the entity ids you supply. Turn on **Return All** to page through everything automatically, or leave it off to fetch a single **Page**. **Page Size** applies either way.
### Entity filters on Search and Get Many
### Get, Update, Delete
Both operations take **User ID**, **Agent ID**, **App ID**, and **Run ID**. At least one is required (the API rejects a query with no entity scope), and the node fails with a clear message before making the call if you leave all four empty.
Operate on one memory by **Memory ID**. Update accepts new **Text** and/or **Metadata (JSON)**.
Supply several and they are combined with **OR**, so the result set is the union of those scopes:
## Entity filters on Search and Get Many
Both operations take **User ID**, **Agent ID**, **App ID**, and **Run ID**. At least one is required, since the API rejects a query with no entity scope, and the node fails with a clear message before making the call if all four are empty.
Supply several and they combine with **OR**, so the result is the union of those scopes:
```json
{ "OR": [{ "user_id": "alice" }, { "agent_id": "support-bot" }] }
```
This is deliberate. Mem0 indexes each entity separately, so an `AND` across `user_id` and `agent_id` matches nothing even when a memory was written with both. To narrow rather than widen, run one operation per entity id.
<Warning>
This is deliberate, not a shortcut. Mem0 indexes each entity separately, so an `AND` across `user_id` and `agent_id` matches nothing even when a memory was written with both. To narrow rather than widen, run one operation per entity id.
</Warning>
### Get / Update / Delete
## Choosing a User ID
Operate on a single memory by **Memory ID**. Update accepts new **Text** and/or **Metadata (JSON)**.
The **User ID** is a stable string you pick to identify whose memories these are. It is not looked up in the dashboard, so any consistent value works: your app's internal user ID, an email, or a UUID. Use the same value across Add, Search, and Get Many or recall returns nothing.
## Choosing a `userId`
## Troubleshooting
The `userId` is a stable string you choose to identify whose memories these are. It is not looked up in the dashboard. Common choices are your app's internal user ID, an email, or a UUID. Use the same value across Add, Search, and Get Many so recall works.
- **The node does not appear in the panel**: community nodes install on self-hosted n8n only, and only instance owners can install them. On n8n Cloud, this node is not yet available.
- **`401 Unauthorized`**: the API key is wrong or was revoked. Regenerate it in the <a href="https://app.mem0.ai/dashboard/api-keys?utm_source=oss&utm_medium=integration-n8n" rel="nofollow">API Keys dashboard</a> and update the credential.
- **"Provide at least one of User ID, Agent ID, App ID, or Run ID"**: every Add, Search, and Get Many needs an entity scope. Fill in at least one.
- **Search returns nothing right after an Add**: extraction is asynchronous. Leave **Wait for Completion** on, or add a short Wait node before searching.
- **Searching two entity ids returns more than expected**: multiple ids are combined with OR by design. Run one operation per id to narrow.
- **"Timed out waiting for memory event"**: the add was accepted and is likely still finishing on the server. A timeout here does not mean it failed.
<CardGroup cols={2}>
<Card title="Zapier Integration" icon="bolt" href="/integrations/zapier">