The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "Claude Memory API",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "claude-memory",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
200,
300
],
"id": "wh-001",
"name": "Webhook"
},
{
"parameters": {
"jsCode": "const body = $input.first().json.body || $input.first().json;\nreturn [{ json: { action: body.action, key: body.key, value: body.value, category: body.category || 'general', tags: body.tags || [], importance: body.importance || 5, query: body.query, body: body } }];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
420,
300
],
"id": "pr-001",
"name": "Parse Request"
},
{
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"leftValue": "={{ $json.action }}",
"rightValue": "save",
"operator": {
"type": "string",
"operation": "equals"
}
}
]
},
"renameOutput": true,
"outputKey": "save"
},
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"leftValue": "={{ $json.action }}",
"rightValue": "retrieve",
"operator": {
"type": "string",
"operation": "equals"
}
}
]
},
"renameOutput": true,
"outputKey": "retrieve"
},
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"leftValue": "={{ $json.action }}",
"rightValue": "search",
"operator": {
"type": "string",
"operation": "equals"
}
}
]
},
"renameOutput": true,
"outputKey": "search"
},
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"leftValue": "={{ $json.action }}",
"rightValue": "list",
"operator": {
"type": "string",
"operation": "equals"
}
}
]
},
"renameOutput": true,
"outputKey": "list"
},
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"leftValue": "={{ $json.action }}",
"rightValue": "delete",
"operator": {
"type": "string",
"operation": "equals"
}
}
]
},
"renameOutput": true,
"outputKey": "delete"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.switch",
"typeVersion": 3.2,
"position": [
640,
300
],
"id": "sw-001",
"name": "Switch Action"
},
{
"parameters": {
"operation": "upsert",
"tableId": "claude_memory",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "key",
"fieldValue": "={{ $json.key }}"
},
{
"fieldId": "value",
"fieldValue": "={{ $json.value }}"
},
{
"fieldId": "category",
"fieldValue": "={{ $json.category }}"
},
{
"fieldId": "tags",
"fieldValue": "={{ $json.tags }}"
},
{
"fieldId": "importance",
"fieldValue": "={{ $json.importance }}"
}
]
},
"conflictType": "key"
},
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
900,
60
],
"id": "sv-001",
"name": "Save Memory",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "getAll",
"tableId": "claude_memory",
"returnAll": false,
"limit": 1,
"filterType": "string",
"filterString": "key=eq.{{ $json.key }}"
},
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
900,
180
],
"id": "rt-001",
"name": "Retrieve Memory",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "getAll",
"tableId": "claude_memory",
"returnAll": false,
"limit": 20,
"filterType": "string",
"filterString": "value=ilike.*{{ $json.query }}*"
},
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
900,
300
],
"id": "sr-001",
"name": "Search Memory",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "getAll",
"tableId": "claude_memory",
"returnAll": false,
"limit": 50
},
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
900,
420
],
"id": "ls-001",
"name": "List Memory",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "delete",
"tableId": "claude_memory",
"filterType": "string",
"filterString": "key=eq.{{ $json.key }}"
},
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
900,
540
],
"id": "dl-001",
"name": "Delete Memory",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "const items = $input.all();\nconst data = items.map(item => item.json);\nconst action = $('Parse Request').first().json.action;\n\nreturn [{\n json: {\n success: true,\n action: action,\n data: data.length === 1 ? data[0] : data,\n count: data.length,\n timestamp: new Date().toISOString()\n }\n}];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1140,
300
],
"id": "br-001",
"name": "Build Response"
},
{
"parameters": {
"respondWith": "allIncomingItems",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [
1360,
300
],
"id": "rw-001",
"name": "Respond to Webhook"
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "Parse Request",
"type": "main",
"index": 0
}
]
]
},
"Parse Request": {
"main": [
[
{
"node": "Switch Action",
"type": "main",
"index": 0
}
]
]
},
"Switch Action": {
"main": [
[
{
"node": "Save Memory",
"type": "main",
"index": 0
}
],
[
{
"node": "Retrieve Memory",
"type": "main",
"index": 0
}
],
[
{
"node": "Search Memory",
"type": "main",
"index": 0
}
],
[
{
"node": "List Memory",
"type": "main",
"index": 0
}
],
[
{
"node": "Delete Memory",
"type": "main",
"index": 0
}
]
]
},
"Save Memory": {
"main": [
[
{
"node": "Build Response",
"type": "main",
"index": 0
}
]
]
},
"Retrieve Memory": {
"main": [
[
{
"node": "Build Response",
"type": "main",
"index": 0
}
]
]
},
"Search Memory": {
"main": [
[
{
"node": "Build Response",
"type": "main",
"index": 0
}
]
]
},
"List Memory": {
"main": [
[
{
"node": "Build Response",
"type": "main",
"index": 0
}
]
]
},
"Delete Memory": {
"main": [
[
{
"node": "Build Response",
"type": "main",
"index": 0
}
]
]
},
"Build Response": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
supabaseApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Claude Memory API. Uses supabase. Webhook trigger; 10 nodes.
Source: https://gist.github.com/noameliaz/2e00eac24fc55861c6424a8a8c074062 — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
webhook - simulador PDV (fluxo). Uses supabase. Webhook trigger; 55 nodes.
This workflow automates raw materials inventory management for businesses, eliminating manual stock updates, delayed material issue approvals, and missed low stock alerts. It ensures real-time stock t
Backend Erick. Uses supabase, n8n-nodes-evolution-api. Webhook trigger; 36 nodes.
2. Refresh Pipedrive tokens. Uses stopAndError, stickyNote, supabase, httpRequest. Webhook trigger; 29 nodes.
This workflow provides an OAuth 2.0 auth token refresh process for better control. Developers can utilize it as an alternative to n8n's built-in OAuth flow to achieve improved control and visibility.