Apprendre les API Webhook sécurisées avec authentification et intégration Supabase
Ceci est unEngineering, Miscellaneous, Multimodal AIworkflow d'automatisation du domainecontenant 27 nœuds.Utilise principalement des nœuds comme Set, Webhook, Supabase, RespondToWebhook. Apprendre à créer une API Webhook sécurisée avec authentification et intégration Supabase
- •Point de terminaison HTTP Webhook (généré automatiquement par n8n)
- •URL et Clé API Supabase
Nœuds utilisés (27)
Catégorie
{
"meta": {
"instanceId": "67d4d33d8b0ad4e5e12f051d8ad92fc35893d7f48d7f801bc6da4f39967b3592",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "5029ae4f-cddf-4ea3-887b-24dfe0bd4526",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
-80,
-240
],
"webhookId": "07aaa04d-6c73-416f-82e2-1e6ededeacc4",
"parameters": {
"path": "07aaa04d-6c73-416f-82e2-1e6ededeacc4",
"options": {},
"responseMode": "responseNode"
},
"typeVersion": 2.1
},
{
"id": "9722f40e-5f71-4e2f-b774-30abaf2cd12b",
"name": "Webhook1",
"type": "n8n-nodes-base.webhook",
"position": [
-80,
64
],
"webhookId": "07aaa04d-6c73-416f-82e2-1e6ededeacc4",
"parameters": {
"path": "07aaa04d-6c73-416f-82e2-1e6ededeacc4",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 2.1
},
{
"id": "61ab48f4-cbc4-4fe6-b999-5c8179c2f199",
"name": "Webhook2",
"type": "n8n-nodes-base.webhook",
"position": [
-80,
1200
],
"webhookId": "07aaa04d-6c73-416f-82e2-1e6ededeacc4",
"parameters": {
"path": "07aaa04d-6c73-416f-82e2-1e6ededeacc4",
"options": {},
"httpMethod": "PUT"
},
"typeVersion": 2.1
},
{
"id": "52473972-d31a-4d2d-b7bd-4021b218dbf1",
"name": "Webhook3",
"type": "n8n-nodes-base.webhook",
"position": [
-80,
352
],
"webhookId": "07aaa04d-6c73-416f-82e2-1e6ededeacc4",
"parameters": {
"path": "07aaa04d-6c73-416f-82e2-1e6ededeacc4",
"options": {
"ipWhitelist": "",
"allowedOrigins": "*"
},
"httpMethod": "PATCH",
"responseMode": "streaming"
},
"typeVersion": 2.1
},
{
"id": "977d58d2-21f2-456e-8c32-188f4058d8e5",
"name": "Webhook4",
"type": "n8n-nodes-base.webhook",
"position": [
-80,
640
],
"webhookId": "07aaa04d-6c73-416f-82e2-1e6ededeacc4",
"parameters": {
"path": "07aaa04d-6c73-416f-82e2-1e6ededeacc4",
"options": {},
"httpMethod": "DELETE"
},
"typeVersion": 2.1
},
{
"id": "6cb10c72-df1e-4b00-a616-1b814d39e49f",
"name": "Webhook5",
"type": "n8n-nodes-base.webhook",
"position": [
-80,
928
],
"webhookId": "07aaa04d-6c73-416f-82e2-1e6ededeacc4",
"parameters": {
"path": "07aaa04d-6c73-416f-82e2-1e6ededeacc4",
"options": {},
"httpMethod": "HEAD"
},
"typeVersion": 2.1
},
{
"id": "39d1b185-bd11-4fba-9efb-0b839dc9fd34",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-704,
-368
],
"parameters": {
"color": 4,
"width": 464,
"height": 272,
"content": "## What is a webhook (in n8n)?\nA webhook is a tiny HTTP endpoint that n8n exposes to trigger a workflow when it’s called. It can read query params, headers, and body (JSON/form/multipart), and it can send a response immediately, after the flow finishes, or via a Respond to Webhook node. Each Webhook node gives you a Test URL (editor-only) and a Production URL (requires the workflow to be active). Security is built-in: Basic, Header, or JWT auth, plus IP allow-listing and CORS options."
},
"typeVersion": 1
},
{
"id": "82826a07-84c3-415b-8253-dbb7098da016",
"name": "Note adhésive1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-144,
-368
],
"parameters": {
"color": 7,
"width": 272,
"height": 272,
"content": "## GET → \n“Retrieve data without making changes. Think queries or health checks.”"
},
"typeVersion": 1
},
{
"id": "2895700d-5086-4d05-9048-d4038cdf387f",
"name": "Note adhésive2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-144,
-64
],
"parameters": {
"color": 7,
"width": 272,
"height": 272,
"content": "## POST → \n“Send new data/events. Most webhooks from apps use POST.”"
},
"typeVersion": 1
},
{
"id": "34949301-c2dc-4c6f-9630-765bf6e8237e",
"name": "Note adhésive3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-144,
1088
],
"parameters": {
"color": 7,
"width": 256,
"height": 272,
"content": "## PUT → \n“Replace a whole resource with new data. Idempotent.”"
},
"typeVersion": 1
},
{
"id": "2876d5a1-b3e8-41dc-9619-d91fe8bac16e",
"name": "Note adhésive4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-144,
224
],
"parameters": {
"color": 7,
"width": 272,
"height": 272,
"content": "## PATCH → \n“Update part of a resource. Send only the fields that changed.”"
},
"typeVersion": 1
},
{
"id": "083b92a1-d4cd-46bb-a0b3-4db1f24dbffd",
"name": "Note adhésive5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-144,
512
],
"parameters": {
"color": 7,
"width": 272,
"height": 272,
"content": "## DELETE → \n“Remove a resource. Repeating the call has the same result.”"
},
"typeVersion": 1
},
{
"id": "ffda96a3-68fc-4388-88d5-375a39a4cea0",
"name": "Note adhésive6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-144,
800
],
"parameters": {
"color": 7,
"width": 256,
"height": 272,
"content": "## HEAD → \n“Like GET but no body — used for checks/headers only.”"
},
"typeVersion": 1
},
{
"id": "667f87de-c043-4d88-a9a3-4ee70e3abfd2",
"name": "Note adhésive7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-704,
-80
],
"parameters": {
"color": 4,
"width": 464,
"height": 432,
"content": "## 🔐 Webhook Auth Types in n8n\n\n* **Basic Auth** → Username + password in the request.\n *Good for simple server-to-server use. Always use HTTPS.*\n\n* **Header Auth** → Require a specific header + value (e.g. `X-API-Key`).\n *Works like an API key. Easy to rotate or share.*\n\n* **JWT Auth** → Caller sends a signed JWT (`Authorization: Bearer <token>`).\n *Stronger option — tokens can expire and carry claims.*\n\n**Extra hardening (Options menu):**\n\n* **IP Whitelist** → Only allow listed IPs.\n* **Allowed Origins (CORS)** → Restrict browser requests to known domains.\n* **Ignore Bots** → Block crawlers/link previewers."
},
"typeVersion": 1
},
{
"id": "907e9243-a595-497d-a017-acfb4211d2b5",
"name": "Note adhésive8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-704,
368
],
"parameters": {
"color": 4,
"width": 464,
"height": 320,
"content": "## 📡 Webhook Response Types in n8n\n\n* **Immediately** → Returns `200 OK` right away.\n *Use when caller only needs a quick acknowledgement.*\n\n* **When Last Node Finishes** → Waits for the workflow to complete, then sends the final data back.\n *Good when the client expects the processed result.*\n\n* **Using Respond to Webhook** → Response is sent from a separate **Respond to Webhook** node.\n *Best for async flows — reply later while work continues in background.*\n"
},
"typeVersion": 1
},
{
"id": "d11d5a46-2b3e-4e49-beb5-4923f828492a",
"name": "Obtenir une ligne",
"type": "n8n-nodes-base.supabase",
"position": [
240,
-240
],
"parameters": {
"filters": {
"conditions": [
{
"keyName": "email",
"keyValue": "={{ $json.query.email }}"
}
]
},
"tableId": "demo_contacts",
"operation": "get"
},
"credentials": {
"supabaseApi": {
"id": "PNDtoaSn7rFuj8zX",
"name": "Supabase Nocodecreative.io"
}
},
"typeVersion": 1
},
{
"id": "edbd8d72-79ea-4101-900e-2635b047300f",
"name": "Répondre à Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
512,
-240
],
"parameters": {
"options": {},
"respondWith": "allIncomingItems"
},
"typeVersion": 1.4
},
{
"id": "f8d8f340-c194-4c4e-a308-d5c95e8533b9",
"name": "Créer une ligne",
"type": "n8n-nodes-base.supabase",
"position": [
512,
64
],
"parameters": {
"tableId": "demo_contacts",
"dataToSend": "autoMapInputData",
"inputsToIgnore": "id"
},
"credentials": {
"supabaseApi": {
"id": "PNDtoaSn7rFuj8zX",
"name": "Supabase Nocodecreative.io"
}
},
"typeVersion": 1
},
{
"id": "5999b69a-5b9f-4f55-9bf3-f579dfe869a1",
"name": "Modifier les champs",
"type": "n8n-nodes-base.set",
"position": [
240,
64
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "={{ $json.body }}"
},
"typeVersion": 3.4
},
{
"id": "c04fc7eb-e43a-48bd-a979-ed423b52b9f3",
"name": "Modifier les champs1",
"type": "n8n-nodes-base.set",
"position": [
240,
352
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "={{ $json.body }}"
},
"typeVersion": 3.4
},
{
"id": "7ec4b8ac-5b1a-4b31-9759-f8b7ed070178",
"name": "Répondre à Webhook1",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
752,
64
],
"parameters": {
"options": {},
"respondWith": "allIncomingItems"
},
"typeVersion": 1.4
},
{
"id": "0d50f8f4-df4d-448f-9c05-8e2043e8a8d2",
"name": "Répondre à Webhook2",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
752,
352
],
"parameters": {
"options": {},
"respondWith": "allIncomingItems"
},
"typeVersion": 1.4
},
{
"id": "481f146d-0d14-4b40-beeb-3f56c548d9cc",
"name": "Mettre à jour une ligne",
"type": "n8n-nodes-base.supabase",
"position": [
512,
352
],
"parameters": {
"filters": {
"conditions": [
{
"keyName": "id",
"keyValue": "={{ $json.id }}",
"condition": "eq"
}
]
},
"tableId": "demo_contacts",
"operation": "update",
"dataToSend": "autoMapInputData"
},
"credentials": {
"supabaseApi": {
"id": "PNDtoaSn7rFuj8zX",
"name": "Supabase Nocodecreative.io"
}
},
"typeVersion": 1
},
{
"id": "ae559e34-c048-4ab7-82d6-5e5f34d0f5d5",
"name": "Supprimer une ligne",
"type": "n8n-nodes-base.supabase",
"position": [
240,
640
],
"parameters": {
"filters": {
"conditions": [
{
"keyName": "id",
"keyValue": "={{ $json.query.id }}",
"condition": "eq"
}
]
},
"tableId": "demo_contacts",
"operation": "delete"
},
"credentials": {
"supabaseApi": {
"id": "PNDtoaSn7rFuj8zX",
"name": "Supabase Nocodecreative.io"
}
},
"typeVersion": 1
},
{
"id": "fb7f6c4a-05f9-4096-96f8-035f8bc20a8d",
"name": "Note adhésive10",
"type": "n8n-nodes-base.stickyNote",
"position": [
1248,
-32
],
"parameters": {
"color": 6,
"width": 848,
"height": 171,
"content": "# n8n Webhooks: A Beginner’s Guide (with Security Built-In)\nBuilt by [Wayne Simpson](https://www.linkedin.com/in/simpsonwayne/) at [nocodecreative.io](https://nocodecreative.io)\n☕ If you find this useful, feel free to [buy me a coffee](https://ko-fi.com/waynesimpson)"
},
"typeVersion": 1
},
{
"id": "647b73a3-b157-40ef-b12d-8fe7b69d630c",
"name": "Note adhésive11",
"type": "n8n-nodes-base.stickyNote",
"position": [
1040,
176
],
"parameters": {
"color": 7,
"width": 667,
"height": 497,
"content": "# Watch the Video 📺\n### Watch the Video 👇\n[](https://www.youtube.com/watch?v=o6F36xsiuBk)\n\n\n"
},
"typeVersion": 1
},
{
"id": "99ecd5f5-6df0-430a-a863-56af8417ea72",
"name": "Note adhésive12",
"type": "n8n-nodes-base.stickyNote",
"position": [
1744,
176
],
"parameters": {
"color": 7,
"width": 600,
"height": 500,
"content": "## Read to blog post to get started 📝\n**Follow along to to get up and running**\n\n[](https://blog.nocodecreative.io/n8n-webhooks-a-beginners-guide-with-security-built-in/)\n"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"5029ae4f-cddf-4ea3-887b-24dfe0bd4526": {
"main": [
[
{
"node": "d11d5a46-2b3e-4e49-beb5-4923f828492a",
"type": "main",
"index": 0
}
]
]
},
"9722f40e-5f71-4e2f-b774-30abaf2cd12b": {
"main": [
[
{
"node": "5999b69a-5b9f-4f55-9bf3-f579dfe869a1",
"type": "main",
"index": 0
}
]
]
},
"52473972-d31a-4d2d-b7bd-4021b218dbf1": {
"main": [
[
{
"node": "c04fc7eb-e43a-48bd-a979-ed423b52b9f3",
"type": "main",
"index": 0
}
]
]
},
"977d58d2-21f2-456e-8c32-188f4058d8e5": {
"main": [
[
{
"node": "ae559e34-c048-4ab7-82d6-5e5f34d0f5d5",
"type": "main",
"index": 0
}
]
]
},
"d11d5a46-2b3e-4e49-beb5-4923f828492a": {
"main": [
[
{
"node": "edbd8d72-79ea-4101-900e-2635b047300f",
"type": "main",
"index": 0
}
]
]
},
"5999b69a-5b9f-4f55-9bf3-f579dfe869a1": {
"main": [
[
{
"node": "f8d8f340-c194-4c4e-a308-d5c95e8533b9",
"type": "main",
"index": 0
}
]
]
},
"f8d8f340-c194-4c4e-a308-d5c95e8533b9": {
"main": [
[
{
"node": "7ec4b8ac-5b1a-4b31-9759-f8b7ed070178",
"type": "main",
"index": 0
}
]
]
},
"c04fc7eb-e43a-48bd-a979-ed423b52b9f3": {
"main": [
[
{
"node": "481f146d-0d14-4b40-beeb-3f56c548d9cc",
"type": "main",
"index": 0
}
]
]
},
"481f146d-0d14-4b40-beeb-3f56c548d9cc": {
"main": [
[
{
"node": "0d50f8f4-df4d-448f-9c05-8e2043e8a8d2",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Ingénierie, Divers, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Wayne Simpson
@nocodecreativeI’m Wayne, an AI, automation & low-code consultant, passionate about helping businesses unlock their potential through smart, practical solutions. Contact me at https://www.nocodecreative.io
Partager ce workflow