Automate video editing with n8n: caption and cut by API

Automate video editing with n8n: an HTTP Request node submits a caption or cut job, a Wait node resumes on the webhook, a last node reads the file.

5 min readSume
All posts

To automate video editing with n8n, call a video editing API from HTTP Request nodes: one node submits the edit as a job, a Wait node pauses the workflow until the job's webhook calls back, and a final node reads the finished file. Each new video from your trigger (a form, a sheet row, a folder) runs the same chain.

Sume has no n8n node; these are plain HTTPS calls. The Sume facts come from the Video captions, Video trim, Jobs and results, and Webhooks docs; the n8n facts come from its HTTP Request node, Wait node, and credentials pages. All were read on 2026-09-29. Anything described as current behavior is read from Sume's code.

Which nodes does a video editing workflow need?

For "caption each new video, then cut it to 15 seconds":

  • A trigger that yields a public HTTPS video URL.
  • HTTP Request, POST https://api.sume.com/v1/video-captions, Send Body as JSON: video_url, an optional style, and webhook_url set to {{ $execution.resumeUrl }}. Add an Idempotency-Key header built from the video's id. A re-run of the workflow has a new resume URL, so the body changes and the old key answers 409 idempotency_conflict; give a re-run a new key.
  • Wait, Resume On Webhook Call, with its HTTP Method matching the POST that Sume sends.
  • HTTP Request, GET https://api.sume.com/v1/video-captions/{id} with the video_caption_id from the submit node. Continue only when status is completed; its video_url is the captioned file.
  • HTTP Request, POST https://api.sume.com/v1/video-trim with that video_url, start: 0, duration: 15, and the same webhook_url; a second Wait node; then GET the job's result_url for the cut file's video_url.
{
  "video_url": "https://example.com/uploads/clip-104.mp4",
  "style": "slam",
  "webhook_url": "{{ $execution.resumeUrl }}"
}

How does the Wait node resume on Sume's webhook?

n8n generates the resume URL at runtime and exposes it as $execution.resumeUrl; its docs say the URL is unique to each execution, and a workflow with several Wait nodes resumes them one after another as the URL is called. Sending webhook_url without a mode puts the Sume job in webhook mode, and Sume POSTs once when the job completes, fails, or is canceled; there are no progress calls.

Treat the POST as a signal, not as the answer: the next node reads the job again with your key. The n8n AI video workflow post covers the Wait node's settings, trusting the resume call, and a time limit for a webhook that never arrives.

  • Sume refuses a webhook URL that is not public HTTPS, and in current code one with an explicit non-default port. A self-hosted n8n whose resume URL carries a port such as :5678 won't be accepted.
  • Keep polling as a backup: the docs call a webhook a delivery optimization, not your only recovery path.

Where does the API key go?

In an n8n credential, not in the node's fields. n8n's HTTP Request credentials include Bearer auth, which its docs describe as header auth with the Name Authorization and the Value Bearer <token>. Use one credential for every Sume node. Sume rejects a request that carries both Authorization: Bearer and x-api-key.

What can each edit take, and what does it cost?

Each node that submits a job is billed on its own, plus a 5.5% agent fee by default. Only the caption job fetches a video from the open internet; cuts and crops read files already on Sume's media host, which is why the caption runs first.

  • In current code the caption job refuses a source over 60 seconds or one with no audio stream.
  • The caption URL can't be localhost, a private network, or a signed private link.
From Video captions, Video trim, and Video filter, read 2026-09-29. Prices read from code; trim and filter are reservation ceilings.
NodeEndpointInputPrice
CaptionPOST /v1/video-captionsAny public HTTPS video, ≤ 60 s, with sound$0.20 per job
CutPOST /v1/video-trimA Sume-hosted file, such as the captioned outputup to $0.02 per job
Crop or dimPOST /v1/video-filterA Sume-hosted file, ≤ 300 sup to $0.02 per job

Sources

Related posts

More in Integrations

All Integrations posts

Written by Sume