n8n AI video workflow: resume a Wait node on a Sume webhook
Start a Sume Format run from an n8n HTTP Request node, pass the Wait node's resume URL as webhook_url, then read the finished run with your key.

To run an AI video workflow in n8n with Sume, start a Format run from an HTTP Request node with communication.webhook_url set to {{ $execution.resumeUrl }}, then pause the execution on a Wait node that resumes On Webhook Call. When the run completes or fails, Sume sends one signed POST to that URL, the workflow continues, and the next node reads the run with your API key.
Sume has no n8n node, so this is a plain HTTPS call from n8n's own nodes. Sume facts come from Create a run and Run webhooks; n8n behavior comes from n8n's node docs, read 2026-09-27. The webhook contract itself is covered in Sume Format run lifecycle.
Which nodes does the workflow need?
Five nodes in one execution. n8n generates the resume URL at runtime, and partial executions change it, so the node that sends the URL to Sume must run in the same execution as the Wait node.
- A trigger: whatever starts the job.
- HTTP Request:
POSTthe run, with the resume URL ascommunication.webhook_url. - Wait: resume On Webhook Call.
- HTTP Request:
GET /v1/format-runs/{run_id}with your key, usingdata.idfrom the first call. - If: branch on
data.status.completedgoes on to publishprimary_output_url; anything else goes to your error path.
How do I start the run from the HTTP Request node?
Set Method to POST. Catalog Formats answer at https://api.sume.com/v1/formats/sume/{slug}/runs for any key with formats:write; this example calls sume-product-commercial. Store the key in a generic credential: n8n's Bearer auth is header auth with Name Authorization and Value Bearer <token>. Send one credential only, because Sume answers 401 unauthorized when a request carries both Authorization: Bearer and x-api-key.
Add an Idempotency-Key header derived from the thing being made, such as an order id plus a version. The same key with the same body returns 200 with the original run and no second charge. In current code the webhook URL is part of the body the key is checked against, and the resume URL is unique to each execution, so the same key sent from a new execution gets 409 idempotency_conflict and nothing runs. Bump the version when you want the item made again. The JSON body:
{
"instruction": "Make a vertical product commercial from the attached photo.",
"attachments": [
{ "type": "input_image", "image_url": "https://example.com/product.jpg" }
],
"generation_spend_cap_usd": 20,
"communication": { "webhook_url": "{{ $execution.resumeUrl }}" }
}How should I configure the Wait node?
Use these settings. n8n offloads a paused execution's data to the database and reloads it when the resume condition is met.
| Setting | Value | Why |
|---|---|---|
| Resume | On Webhook Call | Sume sends one POST when the run completes or fails. |
| HTTP Method | POST | The receipt arrives as a POST. |
| Authentication | None | Sume's webhook takes only a URL and refuses credentials in it, so Basic, Header, and JWT auth have nothing to check. |
| Respond | Immediately | Any 2xx is a delivery, and each attempt gets 10 seconds. |
| Limit Wait Time | On, After Time Interval, over 90 minutes | A run still going 90 minutes after created_at is force-finalized as failed. |
| Webhook Suffix | Empty | The generated resume URL does not include a suffix; set one and you must append it yourself. |
Can the workflow trust the POST that resumed it?
Not on its own. With Authentication set to None and the IP(s) Whitelist option left blank, n8n resumes the execution for any caller that has the resume URL. Sume does sign each delivery (how the signature works), but this workflow does not depend on checking it in n8n. The check is the read after the Wait node:
- Take the run id from the first HTTP Request node's
data.id, not from the resumed body. - Read
GET /v1/format-runs/{run_id}with the same credential. It returns the same receipt the webhook carried, so the video URL you publish always comes from Sume's API under your key. - The read also covers a receipt over 1 MiB, which the webhook delivers with
payload: null.
What if the webhook never arrives?
Canceled and skipped runs never deliver a webhook, and a delivery can fail all 10 attempts. With Limit Wait Time on, n8n resumes the execution anyway, and the read after the Wait node covers every case: branch on data.status, and treat queued or processing as not finished. Your timeout does not cancel the run; it keeps running and billing, so keep the run id.
Do not aim Sume's Send test at a live resume URL. It POSTs a dummy webhook.test body, not a run receipt.
Does this work on self-hosted n8n?
Yes, when the resume URL is public. n8n builds webhook URLs from N8N_PROTOCOL, N8N_HOST, and N8N_PORT, and runs internally on port 5678; behind a reverse proxy, set N8N_WEBHOOK_URL to the public address. Sume rejects localhost, private-network, and non-HTTPS webhook URLs with 400 invalid_request, and current code also refuses a URL with a non-default port, such as :5678. The URL is checked again at delivery, and a 3xx counts as a failed attempt.
Sources
- Create a run
- Format catalog
- Runs and results
- Run webhooks
- Format cookbook
- n8n Docs: HTTP Request node (read 2026-09-27)
- n8n Docs: HTTP Request credentials (read 2026-09-27)
- n8n Docs: Wait node (read 2026-09-27)
- n8n Docs: If node (read 2026-09-27)
- n8n Docs: Configure webhook URLs with reverse proxy (read 2026-09-27)
Related posts
More in Integrations
- n8n MCP Client Tool with Sume: setup and the SSE caveat
n8n labels the MCP Client Tool field SSE Endpoint; Sume documents streamable HTTP. Set it up for Sume, test the connection, and gate paid calls.
- OpenAI Agents SDK MCP server: Sume and the 5-second timeout
Connect the OpenAI Agents SDK to Sume's hosted MCP server with an API key, and raise the 5-second client timeouts above jobs_wait's 55 seconds.
- OpenAI Responses API MCP tool: call Sume's hosted tools
Add Sume's hosted MCP server to the Responses API as an mcp tool, send your Sume key in headers, and approve paid tool calls before they run.
- PHP webhook signature verification in plain PHP and Laravel
Verify a Sume webhook in PHP: hash_hmac sha256 over timestamp.raw_body, split the sume-v1 entries, and compare each one with hash_equals.
Written by Sume