Connect SnapDub to the tools you already run. A new video comes in, SnapDub makes the clips, and the moment they are ready your workflow posts them, sends them to your team or writes them down. Nobody opens an editor.
The API and webhooks come with every paid plan.
Three setups people build first. Each one is a few steps in n8n, Zapier or Make.
A new video on your YouTube channel goes to SnapDub. When the clips are ready, the best ones land on your Content Plan and go out to TikTok, YouTube and Instagram at the times you picked.
YouTube -> SnapDub -> Content Plan
When a video is done, a message drops into Slack or Telegram with the top clip's title, its score and a download link, so your editor or client can check it in a minute.
Clips ready -> Slack / Telegram
Each finished clip becomes a row in Google Sheets or Airtable with its title, score, description and hashtags. Handy for review, for clients, or for tracking what you posted.
Clips ready -> Sheets / Airtable
No HTTP setup and no code. The SnapDub node knows every action and waits for clips for you.
In your self-hosted n8n, open Settings, Community nodes, Install, and type n8n-nodes-snapdub.
Create a key in SnapDub under Settings, API keys, and paste it into a new SnapDub credential in n8n.
Start with the Clips ready trigger, or with your own trigger followed by Create clips, then add whatever comes next: post, message, sheet.
Inside you will find actions to create clips, get clips, schedule a post, browse clipping campaigns and check your account, plus a Clips ready trigger that starts a workflow the moment a video is done.
It also works as a tool for n8n AI agents: give an agent the SnapDub node and ask it in plain words to clip a link and plan the posts.
Package and changelog on npm: n8n-nodes-snapdub.
Both can listen for SnapDub's clips ready event and call the API with their own built-in steps. You paste a URL and your key.
Make a Zap with Webhooks by Zapier, Catch Hook, and copy the hook URL it gives you.
Send that URL to POST /api/v1/webhooks once (the curl below does it), and every finished video starts your Zap.
To make clips from a step, add Webhooks by Zapier, POST, to https://snapdub.ai/api/v1/videos with the header Authorization: Bearer and your key.
Start a scenario with Webhooks, Custom webhook, and copy its address.
Register it with POST /api/v1/webhooks, and each finished video arrives as a bundle with the clips inside.
To start clipping from Make, add an HTTP, Make a request module: POST to https://snapdub.ai/api/v1/videos with Authorization: Bearer and your key.
Every call takes and returns plain JSON. If your tool can import an OpenAPI file, point it at /api/v1/openapi.json and the actions fill themselves in.
Subscribe a URL once. From then on SnapDub sends a request to it every time a video finishes, so nothing has to keep checking.
POST /api/v1/webhooks
{ "url": "https://hooks.example.com/snapdub", "events": ["video.completed", "video.failed"] }
{ "webhook_id": "wh_3fQx", "secret": "whsec_...", "active": true }
POST https://hooks.example.com/snapdub
X-SnapDub-Signature: t=1792656000,v1=5f2c9a...
{ "event": "video.completed", "data": { "video_id": "v_8Kq2", "status": "done", "clips": [
{ "title": "The habit that changed everything", "virality_score": 94, "download_url": "https://..." },
{ "title": "Why your first 100 videos don't count", "virality_score": 88, "download_url": "https://..." } ] } }
Subscribing from a terminal is one command. The answer holds your secret, so save it:
curl https://snapdub.ai/api/v1/webhooks \ -H "Authorization: Bearer sd_live_..." \ -H "Content-Type: application/json" \ -d '{"url": "https://hooks.example.com/snapdub", "events": ["video.completed", "video.failed"]}'
Checking the signature takes a few lines. In Node, with the raw body kept as text:
const [t, v1] = req.get("X-SnapDub-Signature").split(",").map((part) => part.split("=")[1]);const expected = crypto.createHmac("sha256", process.env.SNAPDUB_WEBHOOK_SECRET) .update(`${t}.${rawBody}`).digest("hex");const fresh = Math.abs(Date.now() / 1000 - Number(t)) < 300;const valid = v1 && v1.length === expected.length && crypto.timingSafeEqual(Buffer.from(v1), Buffer.from(expected));if (!fresh || !valid) return res.sendStatus(400);res.sendStatus(200); // answer fast, then handle req.body.data.clips
If your team talks in Discord, you don't need n8n, Zapier or code to hear about new clips. Paste one link from your channel into SnapDub, and every finished video arrives there with its best three clips, their scores and a preview. It works on every plan, the free one too.
No. With the n8n node you pick actions from a list. In Zapier or Make you paste a webhook URL and your API key into their own steps. Code is only needed if you want to build it into your own app.
The API and webhooks come with every paid plan. Create a key under Settings, API keys, and you can subscribe webhooks right away.
Usually a few minutes, depending on how long the video is. You do not have to wait and check: the webhook or the Clips ready trigger fires the moment they are done.
Yes. The Schedule post action puts a clip on your Content Plan, and it goes out to your connected TikTok, YouTube or Instagram, right away or at a set time.
Yes. The n8n node works as a tool for n8n AI agents, and if you work in ChatGPT or Claude you can connect SnapDub there and just ask for clips.
One key, one webhook, and clips that move on without you.
Get an API key