FlowRunner
PricingContact
Theme
Start Free

Shotstack

Developer Tools

Turn data into rendered video with Shotstack's cloud editing API. Agents submit JSON timeline edits, render reusable templates with merge fields for personalized videos at scale, and poll render status until the finished asset URL is ready.

4 actions API key available
Shotstack website ↗ Platform Documentation ↗ Capability data verified 2026-07-28
A renewal cohort exports from the CRM with names, plans, and pricing per customer
The flow validates the merge data, catching empty fields and malformed prices before anything renders
Render Template renders one proof video using the first row's merge fields
The campaign owner reviews the proof for price accuracy, name rendering, and template fit
Render Template runs the approved batch across the remaining rows
Get Render Status polls each render ID until the status reaches done
Finished asset URLs log to the tracking sheet and the send queue picks them up

What This Integration Enables

Shotstack treats video the way the rest of your stack treats documents: as something a machine assembles from data. An edit is a JSON timeline of tracks and clips, a template is that timeline with merge-field placeholders, and rendering is an API call that returns a URL. That makes video a FlowRunner workload like any other: agents pull rows, fill templates, submit renders, poll status, and hand finished assets to publishing steps, with review gates exactly where the output touches customers. Because templates live in Shotstack and data lives in your systems, the division of labor stays clean: designers own how the video looks, workflows own what it says, and neither blocks the other. - Batch-produce personalized marketing, social, and product videos from a single saved template - Compose video, image, title, HTML, and audio assets into rendered output with no local video software - Build fully dynamic edits as JSON timelines when a template is not enough - Poll renders to completion and route finished URLs to storage, CMS, and notification steps - Test edits in the sandbox environment, then switch keys to production for watermark-free renders

Without FlowRunner

Video personalization stops at the first name in the subject line The actual video is the same file for everyone because variants mean editor time
Every campaign asset is a request to the video team The queue decides the campaign calendar, not the other way around
Data and video live in separate worlds The price in the spreadsheet and the price in the video drift apart with nobody checking

With FlowRunner

Video is a mail merge One saved template plus a table of merge fields produces a variant per customer, rendered in the cloud
Assets render when data changes New row, new render; the pipeline produces video at the pace the data moves
The data is the edit Prices, names, and clips flow from the source of record into the timeline, so what renders is what the table says

Use Case Scenarios

A thousand renewal videos from one template

The renewal table lives in [Airtable](/integrations/airtable). For each row, the flow calls Render Template with the customer's name, plan, and renewal price as merge fields, collects render IDs, and polls Get Render Status until each returns its URL. Finished links write back to the row, and the email tool merges each customer's video into their renewal notice. The template was designed once; the campaign renders itself every month with current prices.

Listings that become videos the hour they publish

When a new product or property listing lands, the flow assembles a JSON timeline with Submit Render: the listing photos as image clips, a title asset with the headline, a price overlay, and the brand soundtrack. Get Render Status waits for done, then the asset publishes through [WordPress](/integrations/wordpress) and posts to [Slack](/integrations/slack) for the social queue. Listings that update get re-rendered from the new data, so the video never advertises last week's price.

The weekly metrics recap as a rendered clip

Every Friday, the flow pulls the week's numbers from [Google Sheets](/integrations/google-sheets), fills a recap template's merge fields with the headline stats, and renders a short captioned clip. List Templates resolves the current template ID so design updates ship without touching the flow. The finished URL posts to the all-hands channel, and the render ID, template, and output log to the tracking sheet for an auditable trail of what was generated from which data.

Human-in-Loop Highlight

A template render is only as trustworthy as its merge data, and the failure mode is precise: Render Template will happily produce a thousand videos where {{PRICE}} came from the wrong column, and a price stated in a customer's personalized video is a claim your company made to them in their own name, on camera. Unlike a mail merge, you cannot correct it with a follow-up asterisk; the asset is out. So FlowRunner batches never go straight from table to fleet. The agent validates the merge data, renders exactly one proof from a real row, and holds: here is the proof video, here is the row that produced it, here are the 998 rows queued behind it. The campaign owner watches the proof, checks the price against the source of record, and approves. Only then does the batch render and only rendered output from an approved run reaches the send step. Machines do the thousand renders; a person vouches for the one that speaks for all of them.

Agent processes routinely
Detects exception requiring judgment
Clear match Continues automatically
Ambiguous Routes to human via preferred channel
Human decides
Agent resumes with decision

Agent Capabilities

4 actions

Rendering

2
  • Submit Render Submits a video edit for rendering, defined by a JSON timeline of tracks holding video, image, title, HTML, and audio clips, plus an output specification for format, resolution, aspect ratio, and frame rate. Asynchronous: returns a render ID immediately for polling. The fully dynamic path when a saved template is not enough.
  • Get Render Status Retrieves a render's current status by ID as it progresses through queued, fetching, rendering, saving, and done or failed. Once done, the response carries the public URL of the finished asset. The polling step behind every pipeline on this page.

Templates

2
  • List Templates Retrieves all saved templates in the current environment with their IDs and names. The lookup that lets flows reference templates by ID, so design changes ship without editing the flow.
  • Render Template Renders a saved template by ID, substituting merge fields to personalize the output, so placeholders like {{NAME}} and {{VIDEO_URL}} fill from workflow data and one template produces many variations. Asynchronous: returns a render ID to poll. The batch personalization engine this page's human gate protects.

Frequently Asked Questions

What can FlowRunner do with Shotstack?

FlowRunner agents can run Submit Render, Get Render Status, and List Templates in Shotstack, plus 1 more action.

Does connecting Shotstack to FlowRunner require OAuth?

No. Shotstack connects to FlowRunner with an API key, no OAuth flow required.

Can Shotstack trigger a FlowRunner workflow automatically?

Shotstack doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.

Start building with Shotstack

$100 in credits. No card required. Connect in minutes.