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.

5 min readSume
All posts

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.

From n8n's Slack approvals docs, read 2026-09-28.
SettingWhat it does
Capture Who RespondedSwitches to Slack interactive buttons and records the responder.
Restrict Who Can ApproveOnly listed users can act; others get a private notice and the workflow keeps waiting.
After DecisionShow Outcome and Remove Buttons (default), Remove Buttons Only, or Keep Message Unchanged.
Outputapproved 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 instruction on a new run with previous_run_id set 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

All Integrations posts

Written by Sume