Short answer: You can shotstack render video in Shotstack by hand from its own interface, but it won’t repeat itself. On TinyCommand, add the Shotstack Shotstack Render Video action to a workflow, map its 6 inputs from any upstream app, and it runs automatically every time the trigger fires. No code, and a free tier to start.
Every field can be mapped from an upstream trigger, AI step, table row, or hard-coded literal.
| Field | Type | Required | Description |
|---|---|---|---|
Timeline timeline | object | Required | Shotstack timeline JSON: tracks → clips with assets, transitions, effects. See https://shotstack.io/docs/api/#timeline. |
Output Format output_format | options | Optional | File format for the rendered output. |
Resolution resolution | options | Optional | Pixel resolution of the rendered output. |
Aspect Ratio aspect_ratio | options | Optional | Output aspect ratio. |
Frames per second fps | number | Optional | Frame rate. Common values: 24 (film), 25, 30, 60. |
Callback URL (optional) callback_url | string | Optional | Webhook URL Shotstack will POST to when the render finishes. Leave blank to poll Get Render Status instead. |
{"timeline": "{\"background\":\"#000000\",\"tracks\":[{\"clips\":[{\"asset\":{\"type\":\"video\",\"src\":\"https://shotstack-assets.s3.amazonaws.com/footage/skater.hd.mp4\"},\"start\":0,\"length\":5}]}]}","output_format": "{{trigger.output_format}}","resolution": "{{trigger.resolution}}","aspect_ratio": "{{trigger.aspect_ratio}}","fps": "{{trigger.fps}}"}
{"message": "Created","success": true,"response": {"id": "2abd5c11-0f3d-4c6d-9bff-abc123","message": "Render Successfully Queued"}}
Use these fields in downstream nodes for routing, logging, or error handling.
Any of these apps can fire this action as part of a workflow.