by 301st
Quick overview Self-hosted n8n only — this template uses a community node. OpenAI writes one spintax template from your brief; the Spintax node turns it into a pool of unique, linted product description variants, validated and repaired once before rendering. How it works Starts when you manually execute the workflow. Defines the writing brief and fixed product variables (product, brand, audience, feature). Builds an authoring prompt and sends it to OpenAI to generate a spintax template. Validates the returned spintax and, if it is invalid, generates a repair prompt, asks OpenAI for a corrected version once, and re-validates. Renders 12 description variants from the cleaned spintax template using a fixed seed and the provided variables. Lints each rendered variant to catch issues that only appear after rendering (for example repeated words or punctuation/spacing defects). Drops near-duplicate variants by similarity scoring and outputs the remaining pool as ready to publish. Setup Add OpenAI credentials on "Chat model for authoring and repair" (or replace it with another compatible LLM) — that single node feeds both LLM chain steps. Edit the brief and the product variables in the “Your brief and product” step to match your item and style constraints. Adjust rendering and quality thresholds as needed (variant count, seed, lint window/ignore list, and the Jaccard dedup threshold) before activating the workflow. Requirements Self-hosted n8n with community nodes enabled (instance admin setting) The n8n-nodes-spintax community node, version 0.2.1 or newer — install via Settings → Community Nodes An OpenAI credential, or any other LLM node you already use — the Spintax node itself needs none: its engine is bundled and renders locally, with no network calls Customization Change the Base Seed on "Render 12 variants" to re-roll the whole pool — the same seed always returns the same twelve documents Put the strings every document repeats — product name, brand, a merge tag — into Lint's Ignored Strings and Uniqueness's Shared Strings, so both checks judge your writing and not your data Lower Footprint Limit on "Check pool uniqueness" from 1 to 0.15 to turn the footprint from a report into a gate that stops a pool sharing one skeleton Additional info Why two checks and not one. Validate judges the template; it cannot judge the render. A flawless template still turns out the odd broken line, because that defect lives in the combination of choices rather than in the source — two neighbouring slots picking the same word, an unlucky join leaving a space before a comma. Lint reads each rendered document. Uniqueness reads the whole surviving pool and reports the share of five-word windows that repeat across it: measured on real pools of equal size, one template scores about 0.96 and six templates about 0.02, and asking for more variants of the same template cannot move that number — only new templates, or denser variation inside the one you have.
by Five Quantum Bits
Description Send free SMS appointment reminders from Google Calendar with n8n and RCSZilla. This workflow turns Google Calendar into a simple appointment reminder system for opted-in customers. n8n checks tomorrow's events, reads the customer phone number and SMS consent from the calendar event description, prepares a short reminder message, and queues the SMS through RCSZilla. RCSZilla lets you use your own Android phone and SIM card as the SMS gateway, so you do not need a separate SMS API subscription just to send basic appointment reminders. The workflow is free to run in n8n, and RCSZilla supports device-based sending through your own mobile network. Your mobile carrier plan, country, and message volume can still affect real-world SMS costs, so check your plan before sending production traffic. Why This Workflow Is Useful Many appointment-based businesses need a practical SMS reminder service, but do not want to start with a paid SMS provider such as Twilio just to reduce no-shows. This template gives you a direct, phone-based setup: Google Calendar stores the appointment. n8n handles the automation logic. RCSZilla queues the SMS. Your connected Android device sends the message through its SIM/mobile plan. This is a good fit for salons, clinics, dentists, consultants, repair shops, real estate viewings, local agencies, auto service businesses, and other teams that already manage bookings in Google Calendar. How It Works 1. Daily Schedule The workflow runs once per day at 09:00. You can change the Schedule Trigger if your business sends reminders earlier, later, or on the same day as the appointment. 2. Google Calendar Lookup The Google Calendar node fetches tomorrow's events from the selected calendar. It only requests the fields needed for the reminder: event ID, title, description, start/end time, and location. 3. Appointment Data Parsing The Code node reads the event title, description, and location. It looks for: Phone: or a phone-like number SMS consent: yes optional customer name optional location If the event has no phone number, no positive SMS consent, or an opt-out phrase, the workflow does not send a message. 4. Consent Gate The IF node separates eligible reminders from skipped events. This makes the workflow safer to test because events without consent are routed away from the sending step. 5. SMS Queue With RCSZilla Eligible reminders are sent to the RCSZilla node using the SMS channel. RCSZilla then queues the message for the connected device that acts as your SMS/RCS gateway. 6. Skipped Reminder Summary Skipped events go to a summary node so you can inspect why a reminder was not sent. During setup, this helps you fix calendar descriptions before activating the workflow. RCSZilla Features Used Here This template uses RCSZilla as a phone-based messaging gateway for n8n: Android device sending: connect your own Android phone and SIM card. API access: generate an API key in RCSZilla and use it from n8n. SMS channel: queue appointment reminders through the RCSZilla node. Device-first setup: send through your own mobile network instead of starting with a paid SMS API provider. Optional cloud sending: RCSZilla also documents optional credit-based cloud provider routing for users who do not want to send from a phone. RCSZilla setup guide: https://docs.rcszilla.com/?page=get_started Requirements n8n Cloud or self-hosted n8n. RCSZilla account and API token. Android device connected to RCSZilla and able to send SMS messages. Active SIM/mobile plan for the device that will act as the SMS gateway. Community node package: n8n-nodes-rcszilla. Google Calendar OAuth credential in n8n. Google Calendar events that include a customer phone number and SMS consent in the description. Setup Instructions Install the RCSZilla community node in n8n: n8n-nodes-rcszilla. Import the workflow JSON: Google Calendar appointment reminder SMS n8n - RCSZilla.json. Create and assign the Google Calendar OAuth credential to the Google Calendar node. Create and assign the RCSZilla API credential to the RCSZilla node. Connect the Android device that will send SMS messages through RCSZilla. If you have not connected a device yet, follow the RCSZilla getting started guide: https://docs.rcszilla.com/?page=get_started In the Google Calendar node, choose the calendar that stores appointments. Add this format to appointment event descriptions: Name: Maria Phone: +40700000000 SMS consent: yes Run the workflow manually with one internal test appointment. Check the skipped summary output. If a reminder is skipped, confirm the event has a valid phone number and SMS consent: yes. Activate the workflow when testing is complete. Example SMS Hi Maria, reminder: Dental cleaning is scheduled for Thu, May 21, 10:00 AM at Main Street Clinic. Reply STOP to opt out. Compliance And Consent This workflow is designed for consent-based appointment reminders, not unsolicited marketing. Only send SMS reminders to customers who have clearly agreed to receive appointment messages. Keep consent records in your booking process, respect opt-outs, follow quiet hours, and check local SMS rules for every region where you send messages. The workflow requires SMS consent: yes before sending and includes this opt-out text in the message: Reply STOP to opt out. If your appointments involve medical, legal, financial, or other sensitive information, keep event titles and SMS wording generic. Customization Change the Schedule Trigger time to match your reminder policy. Change the Google Calendar time window if you want same-day reminders instead of next-day reminders. Edit the Code node message template to match your brand voice. Keep appointment titles generic if customers should not receive sensitive details by SMS. Change the RCSZilla channel later if your RCSZilla setup supports another channel for your use case. Add delivery monitoring later by using RCSZilla queue/status features. Troubleshooting No events returned: confirm the selected calendar and the tomorrow time window. Event is skipped: add Phone: and SMS consent: yes to the event description. Google Calendar credential fails: for self-hosted n8n, use a public HTTPS domain for the OAuth redirect URL. RCSZilla fails: confirm the API credential, connected device status, SIM status, and phone number country code. Message is too specific: make the calendar event title generic or edit the Code node message template. Reminders send at the wrong time: check the n8n instance timezone and the Schedule Trigger settings.
by yuriynovak
Quick overview This workflow runs manually to search Google via the SearchCans API, fetches and extracts the top web pages with SearchCans Reader, and outputs a citation-ready research pack as structured JSON plus a Markdown report with source URLs and excerpts. How it works Starts when you manually execute the workflow in n8n. Sets the research parameters (query, country, language, and maximum number of sources). Sends the query to the SearchCans Search API (Google) and retrieves organic results. Selects up to two unique HTTP(S) result URLs from the organic results list. Calls the SearchCans Reader API for each selected URL to extract the page content as clean Markdown. Compiles successful extractions and any failures into a citation-ready Markdown research pack and returns it along with source metadata. Setup Create a SearchCans account, generate an API key, and add an n8n HTTP Header Auth credential with Authorization: Bearer YOUR_SEARCHCANS_API_KEY. Attach the same Header Auth credential to both SearchCans HTTP Request steps (Search API and Reader API). Update the query, country, language, and maxSources values to match your research needs (note the template caps extraction at two sources). Requirements A SearchCans account with an API key, plus an n8n instance that supports HTTP Request and Code nodes. Customization Replace the Manual Trigger, adjust the query, country, or language, or send researchPackMarkdown to an LLM, vector database, Google Docs, Notion, or a human review queue. Additional info SearchCans API documentation: https://www.searchcans.com/apis/ The workflow caps Reader extraction at two sources to stay within the two Parallel Lanes available to free users. It preserves every source URL and lists failed extractions for manual review. Verify quotations and time-sensitive claims before publishing.
by Nick Guriev
Quick overview This workflow runs daily to read your website’s RSS feed, compares items against a Google Sheets log of previously sent articles, and emails new posts to subscribers stored in Google Sheets before appending each sent article to the log. How it works Runs every day at 9:00 AM on a schedule. Reads the latest items from your website’s RSS feed. Loads the list of previously sent article URLs from a Google Sheets “Sent” tab and keeps only RSS items that are not yet logged. If there are new articles, reads subscriber emails from a Google Sheets “Contacts” tab. Sends an email for each new article to each subscriber using the configured SMTP/email account. Appends each emailed article’s title, URL, and send timestamp to the Google Sheets “Sent” tab to prevent duplicates. Setup Update the RSS Feed Read node with your site’s RSS feed URL. Create a Google Sheet with tabs named “Sent” (article_url, title, sent_date) and “Contacts” (email), add Google Sheets credentials, and replace the spreadsheet ID in all Google Sheets nodes. Add SMTP/email credentials for the Email node and set the sender address (fromEmail), subject, and any email content options you want. Requirements An n8n instance (Cloud or self-hosted) A Google account (for Google Sheets) A website with an RSS/Atom feed (WordPress, Ghost, Substack, or any CMS) An SMTP or email account to send from Customization Change the schedule trigger to any frequency (hourly, weekly, etc.) instead of daily To send one digest email covering multiple new articles instead of one email per article, adjust the loop logic in the “For Each New Article” node
by Bryan Barcoma
Quick overview This workflow collects scheduled social post details via an n8n form and creates a Google Drive package containing a tweet.txt file and 1–4 numbered images, while validating inputs, preventing duplicate package folders, and cleaning up incomplete uploads. How it works Receives a submission from an n8n Form Trigger with a scheduled date/time, post text, an optional label, and 1–4 uploaded PNG/JPG images. Validates the date and time format, ensures the post text is not empty, verifies the image count and file types, and generates a canonical package folder name. If the submission is invalid, returns a form completion message listing the corrections needed. If valid, checks Google Drive in the configured parent folder to see whether a folder with the generated package name already exists. If a duplicate exists, returns a form completion message indicating nothing was created. If no duplicate exists, creates a new Google Drive folder, writes the post text to tweet.txt, renames images to 01–04 with their original extensions, and uploads all files to the folder. If any upload fails, deletes the newly created folder and returns an error message; otherwise, returns a success message confirming the package was created. Setup Create a Google Drive OAuth credential in n8n and connect it to the Google Drive nodes. Set the destination parent folder by replacing PASTE_GOOGLE_DRIVE_PARENT_FOLDER_ID_HERE in the workflow with your Google Drive folder ID. Activate the workflow and use the generated form URL to submit scheduled post packages.
by Konrad Roziewski
This workflow fetches the complete content of a specific Notion page and converts all its blocks into a single HTML string compatible with the WordPress Gutenberg block editor. It's designed to be used as a sub-workflow. You can call it from a parent workflow (e.g., "when a Notion page is updated") by passing it a notion_url. It returns a single item containing the complete, ready-to-use HTML for a WordPress post body. Key Features Full Page Conversion: Fetches all blocks from a page, including nested blocks (like content inside columns or toggles). Rich Text Support: Correctly parses and converts rich text annotations, including bold, italic, \<u\>underline\</u\>, \<s\>strikethrough\</s\>, and links. Gutenberg-Compatible: Wraps content in the appropriate Gutenberg HTML comments (e.g., , , \\) so WordPress recognizes them as blocks. Handles Complex Layouts: Includes specific logic to correctly rebuild Notion's column and column\_list blocks into a responsive Gutenberg-friendly format. Supports Various Blocks: Converts paragraphs, all heading types (H1, H2, H3), bulleted and numbered lists, images, videos (YouTube/Vimeo), embeds, code blocks, and dividers. How It Works Input: The workflow is triggered by an Execute Workflow node, which expects a notion_url in the input data. (A manual trigger with a sample URL is included for testing). Fetch Data: It first gets the Notion page specified by the URL and then uses a second Notion node to fetch all child blocks recursively (fetchNestedBlocks: true). Process Rich Text: A Code node (decode paragraphs) iterates over text-based blocks (paragraphs, lists) and uses a helper function to convert the Notion annotations array into standard HTML tags (e.g., `, , `). Convert Blocks: A second Code node (decode blocks) uses a large switch statement to map each Notion block type to its corresponding Gutenberg HTML structure. Rebuild Columns: A crucial Code node (column&column_list) runs once on all blocks. It finds all column blocks, then finds their children, and finally wraps them inside their parent column_list block. This is essential for correctly handling nested layouts. Filter & Aggregate: The workflow filters out all nested blocks, keeping only the top-level ones (since the nested content is now inside its parent, like the column block). It then aggregates all the generated HTML snippets into a single array. Final Output: A final Set node joins the array of HTML blocks with newline characters, producing a single text string in a field named wp. This string can be directly used in the "Content" field of a WordPress node in your parent workflow. Setup Notion Credentials: You must configure your Notion credentials in the two Notion nodes: Get a database page Get many child blocks Trigger: To use this, call it from another workflow using an Execute Workflow node. Pass the URL of the Notion page you want to convert in the notion_url field.
by OzorAI
Turn Any Notion Document into an Explainer Video — Automatically Got a Notion doc? Turn it into a polished explainer video without lifting a finger. This workflow watches your Notion database for recently edited pages and uses Ozor AI to automatically generate a professional video from the content — then drops the finished video right back into the original Notion page. Perfect for SOPs, training materials, wikis, product docs, or any content you want to bring to life visually. How it works Schedule Trigger checks for updates every 15 minutes Notion fetches the most recently edited page from your database Notion reads all content blocks from that page (text, headings, images) JavaScript compiles the content into a structured prompt for Ozor AI Ozor AI analyzes the document and creates a video production plan Ozor AI generates the full video project from that plan Ozor AI exports the finished video as a public 1080p MP4 Notion appends the new video back to the original page Set up steps Connect your Notion credential with read + write access to your database (~2 min) Connect your Ozor credential in n8n (~1 min) Update the Notion database ID in Node 2 to point to your own database Activate the workflow — any edited Notion page will get a video automatically
by rodo h orellana
Quick overview This workflow receives a webhook request with a draft article and AI configuration, then uses Google Gemini, OpenAI, and/or OpenRouter to generate WordPress-ready HTML content, SEO metadata, FAQs, and a cover image (base64) formatted for WPBakery, returning the assembled payload as JSON. How it works Receives a POST webhook request containing a title, article text, writing and image style instructions, optional existing data, and AI provider settings. Normalizes the incoming payload, determines whether the request is for a new post or for regenerating a specific asset, and prepares defaults such as categories and image constraints. For regeneration requests, generates only the requested asset (image, excerpt, FAQ, or SEO JSON) using a fallback chain across Google Gemini, OpenAI, and OpenRouter, then returns the result to the webhook response. For new post requests, generates excerpt, FAQ items, a single category selection, and SEO fields in one JSON response using the same multi-provider fallback strategy. Rewrites the full article into clean WordPress-ready HTML (for example using , , , and ) while preserving the original meaning and applying the requested writing style. Creates a detailed image prompt from the article, then generates a cover image with Google Gemini (fallback to OpenAI), and returns the final JSON containing content, SEO metadata, and base64 image data. Setup Configure the Webhook trigger URL (POST /create-post) in your WordPress plugin or source system that sends the article payload. Provide at least one AI provider credential in the incoming ai_config (Google Gemini API key, OpenAI API key, and/or OpenRouter API key) and enable the corresponding text/image flags. Update the allowed category list sent in available_categories (or set a default in the workflow) to match the categories you use in WordPress. Set your preferred Gemini/OpenAI/OpenRouter model names in ai_config (including image models if you want image generation) and adjust retry_count and retry_delay as needed. Use the Manual Trigger test path to validate the payload structure and confirm that the webhook response returns the expected JSON fields (content_body, seo_data, faq_items, and image_base64).
by Sandeep Patharkar | ai-solutions.agency
Animate Any Face into a Video with Fal.ai Create stunning deepfake-style videos automatically by swapping a face from an image onto a source video. This workflow provides a powerful, automated pipeline to perform video face-swapping using the Fal.ai API. It's designed to handle the entire asynchronous process: accepting a source video and a target face image, uploading them to cloud storage, initiating the AI job, polling for completion, and retrieving the final, rendered video. | Services Used | Features | | :--- | :--- | | 🤖 Fal.ai | Leverages the powerful Wan 2.2 model for high-quality face animation. | | ☁️ AWS S3 | Uses enterprise-grade cloud storage for reliable public file hosting. | | 🔄 Polling Loop | Intelligently waits for the asynchronous AI job to complete before proceeding. | | 📥 n8n Form Trigger | Provides a simple UI to upload your source image and video. | How It Works ⚙️ 📥 Get User Input: The workflow starts when you upload a source video and a face image via the n8n Form Trigger. ☁️ Upload to Cloud: Both files are automatically uploaded to a specified AWS S3 bucket to generate the publicly accessible URLs required by the AI model. 🚀 Start AI Job: The public URLs for the video and image are sent in an HTTP Request to the Fal.ai API, which starts the asynchronous face animation process and returns a request_id. ⏳ Wait & Check: The workflow enters a polling loop. It Waits for one minute, then makes another HTTP Request to the Fal.ai status endpoint using the request_id. ✅ Check for Completion: An IF node checks if the job status is COMPLETED. If not, the workflow loops back to the Wait node. 🎬 Retrieve Final Video: Once the job is complete, the workflow makes a final HTTP Request to fetch the finished animated video. 🛠️ How to Set Up 🔑 Set Up Fal.ai Credentials: Get your API Key from Fal.ai. In n8n, go to Credentials, add a new Header Auth credential, and save your key. Connect this credential to all three HTTP Request nodes in the workflow. ☁️ Configure AWS S3: Add your AWS credentials in n8n. In the two AWS S3 nodes (Upload Video1 and Upload Image1), update the Bucket Name parameter to your own S3 bucket. Ensure your bucket permissions allow for public reads. ▶️ Activate and Run: Activate the workflow. Open the Form Trigger URL from the n8n editor, upload your files, and submit. The final video will be available in the execution log of the Get Final Video node. Requirements An active Fal.ai account and API key. An AWS account with an S3 bucket configured for public access. Alternative Storage:* For a personal setup, you can replace the AWS S3 nodes with *Cloudinary** nodes. Just ensure the output is a public URL. 💬 Need Help or Want to Learn More? Join my Skool community for n8n + AI automation tutorials, live Q&A sessions, and exclusive workflows: 👉 https://www.skool.com/n8n-ai-automation-champions Template Author: Sandeep Patharkar Category: Content Generation / Content Marketing Difficulty: Intermediate Estimated Setup Time: ⏱️ 20 minutes
by Rishabh Dugar
Automate Video Creation from Google Sheets and Upload to YouTube with VideoApiHub Automatically generate and publish YouTube videos from Google Sheets using n8n, VideoApiHub, and YouTube. This workflow monitors a Google Sheet for pending rows, creates videos using a reusable VideoApiHub template, waits for rendering to complete, uploads the final video to YouTube, and updates the sheet with task status automatically. Prerequisites Before using this workflow, make sure you have: An active n8n instance A Google account with access to Google Sheets A YouTube channel A VideoApiHub account and API key A created video template in VideoApiHub Google Sheets OAuth credentials connected in n8n YouTube OAuth2 credentials connected in n8n Sample Google Sheet Use this sample sheet as a starting point: https://docs.google.com/spreadsheets/d/1I0oFB_PEdZdrfrqEMhcyDeKQ-9_0mllUM8Whci3MrG0/edit?usp=sharing Duplicate the sheet and update it with your own content before running the workflow. What this workflow does Reads video content from Google Sheets Filters pending or failed rows Creates videos using VideoApiHub templates Polls render status automatically Uploads completed videos to YouTube Updates Google Sheet with status and task IDs Handles failed renders gracefully Perfect for YouTube Shorts automation Motivational video channels Automated generated content pipelines Social media automation Batch video publishing workflows No-code video generation systems Required integrations Google Sheets YouTube OAuth2 VideoApiHub API Sheet fields supported Background image Audio URL Multiple text lines Filename YouTube title Description Tags Status tracking Setup steps Duplicate the sample Google Sheet Create a VideoApiHub account and generate an API key Create a reusable video template in VideoApiHub Update the Template Config node with: Google Sheet ID Sheet name Video template ID Poll interval YouTube privacy setting Connect your Google Sheets credentials Connect your YouTube OAuth2 credentials Activate the workflow Features Fully automated pipeline Retry support for failed renders Configurable polling interval Dynamic video variables YouTube metadata support Easy customization for any niche Supports scalable content generation workflows This is human generated and tested automation. Here is Youtube channel running with this automation - https://www.youtube.com/@WealthIsMoney
by Alexandru Burca
AI-powered automation that rewrites, enhances, and publishes Telegram RSS content directly to your WordPress news site, including image/video upload and category mapping. Who’s it for This workflow is designed for content creators, news publishers, and social media managers who share updates on Telegram and want to automatically republish them as formatted articles on WordPress. It’s ideal for news portals, agencies, or blogs that manage content across multiple channels. How it works / What it does Fetches new posts from a Telegram channel feed (via RSS). Uses OpenAI to rewrite the text into a polished news-style article. Detects whether the content includes images or videos and downloads them. Uploads the media to WordPress and links it to the post. Automatically publishes the formatted article to WordPress with the correct category and excerpt. Set up steps Setup takes around 10–15 minutes. You’ll need API keys for OpenAI and WordPress Application Passwords. Add your Telegram RSS feed URL and WordPress site URL in the relevant nodes. (Optional) Adjust tone or rewrite style in the OpenAI node and category mapping in the Switch node. All configuration details are included in sticky notes inside the workflow. Requirements WordPress site with REST API access and Application Password OpenAI API key Telegram channels RSS URL How to customize the workflow You can easily adjust the writing style in the OpenAI node, change categories in the Switch node, or schedule how often the workflow checks Telegram for new posts.
by Liam McGarrigle
What is this? A modular schema checker that returns detailed error messages on validation failure. Stop your workflows from breaking due to bad input. This subworkflow validates incoming JSON against a schema you define and returns clear, human readable errors before anything has the chance to break. The most common use: a webhook receives data, you validate it, and either continue or return a 400 with exactly what was wrong. This is how production APIs handle input validation, and this template brings that same reliability to webhooks in n8n. Works anywhere you need to check data: webhook payloads, form submissions, API requests, or LLM outputs. Supports: type checks, required fields, enums, regex patterns, numeric ranges, array constraints, conditional logic (oneOf / anyOf / allOf), and rejection of unknown fields. Why use this? Bad input breaks workflows and is a nightmare to debug. This catches it upfront so you can error fast, fail safe, and return useful messages instead of breaking down. It also makes a self documenting API. The error messages are so clear that the caller doesn't even need to check docs, they're given the fix right in the error. How it works Call this workflow via an Execute Sub-Workflow node with two params: requiredSchema** - the JSON Schema defining what valid data looks like paramsToValidate** - the actual JSON to check (for instance, $json.body) requiredSchema must be an expression wrapped in {{ }} to be treated like an object. Returns { valid: true } on success. On failure, returns valid: false with a validationError string and the full requiredSchema so you know exactly what went wrong and what was expected. see the "Usage Example" in the template Example error output Validation failed (3 issues): • name: Missing required field "name" - Customer full name • email: "not-an-email" is not valid - expected: Contact email address • plan: "premium" is not an allowed value. Must be one of: starter, pro, enterprise Every error includes the field path, what went wrong, and the description from your schema. Don't know JSON Schema? The template includes a prompt template sticky note. Copy it into any LLM chat with an example of your data and it'll generate a ready-to-use schema for you. Quick start Add an Execute Sub-Workflow node pointing to this workflow Set requiredSchema to ={{ your_schema_here }} Set paramsToValidate to ={{ $json.body }} Route on valid: true continues, false handles the error