n8n human in the loop: approve each AI video before posting
In n8n, a Send and Wait for Response step pauses the workflow until a person approves or declines. Put it after the video is made and before it is posted.

Human in the loop in n8n means the workflow pauses until a person answers. For an approval, use a Send and Wait operation (Slack's Send and Wait for Response or Gmail's Send and Wait for Approval), then branch on the answer with an If node. In an AI video workflow, put that step after the video is finished and before it is posted, so the reviewer approves the actual file rather than a prompt.
n8n behavior is quoted from its Slack approvals and Gmail message operations docs; the video side comes from Sume's Create a run and Runs and results. All read 2026-09-28. The general idea is covered in human in the loop AI agents.
Why approve the finished video instead of the run?
Because nobody can approve inside an API run: Sume's docs say a Format run over the API is unattended and carries on to the paid step within its spend cap, which limits cost, not content. So the content check belongs in n8n, once the run's webhook has resumed the workflow (how that resume works):
- Read the completed run and take
primary_output_url. - Send it to a reviewer with a Send and Wait step.
- If approved, publish. If declined, stop, or ask for a new version.
How do I set up an approval in Slack?
In the Slack node, choose the Message resource and Send and Wait for Response, with Response Type set to Approval. Approvers can then approve or decline inside Slack, and the workflow resumes as soon as someone responds. The in-Slack flow needs your n8n instance reachable from Slack over public HTTPS, Interactivity turned on with the Request URL https://<your-n8n-instance>/webhook-waiting-slack, and your Slack app's signing secret in the credential's Signature Secret field.
| Setting | What it does |
|---|---|
| Capture Who Responded | Switches to Slack interactive buttons and records the responder. |
| Restrict Who Can Approve | Only listed users can act; others get a private notice and the workflow keeps waiting. |
| After Decision | Show Outcome and Remove Buttons (default), Remove Buttons Only, or Keep Message Unchanged. |
| Output | approved and respondedAt, plus the responder's ID, name, username, and email when captured. |
Can I approve by email instead?
Yes. The Gmail node's Send and Wait for Approval operation sends a message and waits for the recipient. Type of Approval is Approve Only by default; choose Approve and Disapprove to add a decline button, and relabel either button (Approve and Decline by default). n8n's docs describe it as suited to simple approvals and point to the Wait node for complex ones.
How do I branch on the answer?
Add an If node after the approval step and test the approved field of its output (in-Slack approvals nest it as data.approved). The true branch goes on to your publish step, such as uploading the Short. On the false branch, either stop or ask for a new version:
- To collect notes, n8n's Slack docs list Free Text and Custom Form response types besides Approval.
- Send the notes as
instructionon a new run withprevious_run_idset to the reviewed run, so the agent can redo one part; regenerate one scene of an AI video shows how a continuation works. - A continuation is a new run with its own single webhook, so give it its own
Idempotency-Key, such as the first key plus-r2.
Who can see the video link?
Anyone who has it. Sume's media URLs are durable media.sume.com URLs that are public to anyone holding them, and n8n's docs note that the approver list controls who can respond, not who can see the request. Post approvals with unreleased videos to a private channel or a direct message, or send reviewers a Drive copy shared with them by name (upload a file to Google Drive in n8n).
Sources
Related posts
More in Integrations
- n8n MCP Server Trigger: give Claude a video tool
n8n's MCP Server Trigger makes a workflow an MCP server with its own URL. How to connect Claude and attach a tool that generates a video over HTTPS.
- n8n RSS Feed Trigger: start a video for each new feed item
n8n's RSS Feed Trigger polls a feed and emits items newer than the last one it saw. Send each item's text to a video run keyed on its guid.
- n8n Schedule Trigger: time zone, cron, and why it won't fire
n8n's Schedule Trigger runs a workflow on an interval or cron, in the workflow's time zone, once the workflow is published. Setup, fixes, and safe paid calls.
- n8n text to speech: turn text into an audio file
Do text to speech in n8n with HTTP Request nodes: one submits the text, a Wait loop checks the job, and one downloads the audio as a binary file.
Written by Sume