---
title: "Build a complete video or image workflow"
canonical_url: https://docs.zvid.io/docs/recipes/
source: docs/recipes.md
content_revision: 6338386a1dd87e4a
---

# Build a complete video or image workflow

Choose a recipe, start from its complete project example, then adapt one concern at a time. Examples show the project inside the REST `payload` envelope where labelled. Use an API key and [free validation](https://docs.zvid.io/docs/validate-and-estimate/) before submitting. Rendering spends credits; validation and template dry-runs do not.

## Add captions to a clip

Start with the [subtitle examples](https://docs.zvid.io/docs/structure/subtitle/) and the [complete inspirational video](https://docs.zvid.io/docs/examples/inspirational-video/).

1. Set the video source to your reachable media URL and bound its source/output timing.
2. Add caption text and start/end times under the root `subtitle` property. Use optional word timing when you need precise alignment; words are automatically timed from the caption text when explicit words are absent.
3. Choose a caption box position, typography and readable background. Rounded backgrounds belong to the documented subtitle background style fields.
4. Validate, render and inspect the first/last caption and scene boundaries. Zvid's renderer consumes supplied captions; do not assume a render automatically transcribes your source audio.

Caption and word timestamps both use absolute seconds on the project timeline. Follow the exact timing rules in [Caption](https://docs.zvid.io/docs/structure/properties/caption/) and [Word](https://docs.zvid.io/docs/structure/properties/word/).

## Create a branded still image

Use the complete request in [Rendering images](https://docs.zvid.io/docs/rendering-images/).

1. Choose `type: "image"`, an output size and a supported still-image format.
2. Replace copy, colors and image sources. Fit variable text deliberately and check its longest likely value.
3. Remove unsupported video elements and timeline fields; a video payload cannot be converted by changing `type` alone.
4. Validate, submit to the image endpoint, then retrieve the completed image URL.

Use PNG or WebP when transparency is required. The [layout guide](https://docs.zvid.io/docs/concepts/layout/) explains how anchors and position presets affect placement.

## Adapt a product or promotional video

Start from the [complete Zvid ad](https://docs.zvid.io/docs/examples/zvid-ad/) or [pizza reel](https://docs.zvid.io/docs/examples/pizza-margherita-reel/). Keep the displayed fixture and rendered preview paired while studying them; your own edits will create a different result.

1. Preserve the timeline and layer structure while replacing copy and source assets.
2. Check source aspect ratios, text lengths and available audio/video durations.
3. Review the timing after trims, speed changes and transition overlaps.
4. Validate the whole composition, render it, and inspect the output before sending it to a customer.

For an assistant, the [Creator workflow](https://docs.zvid.io/docs/ai-assistants/) can discover an appropriate library example and prepare a draft/quote for review.

## Turn a list into a slideshow

Use [Scenes](https://docs.zvid.io/docs/structure/scenes/) for a complete scene project, then [Dynamic content](https://docs.zvid.io/docs/templates/dynamic-content/) for `iterate` and conditions.

Each array item in a scene's `iterate` creates one scene inside **one output**. Use `condition` to show or hide scenes and elements. A bulk request creates **multiple outputs**. For a reusable stored video template, give each scene a positive explicit duration. Validate both an empty/short dataset and the largest intended dataset so resolved scene counts and duration stay within account limits.

## Combine narration and background music

Use the audio item fragments in [Audio elements](https://docs.zvid.io/docs/structure/audio-elements/), adding them to the project's or scene's `audios` array.

Keep narration and music as separate audio items. Set volume, source trims and timeline bounds explicitly; `matchDuration` follows the containing timeline and loops short source segments to fill it. Narration should supply a bounded duration when it determines scene length. Background music should not accidentally determine the length of an Auto-mode project. Check [timing](https://docs.zvid.io/docs/concepts/timing/) and listen to the rendered output; passing structural validation does not prove an audible mix is balanced.

## Render one result per customer or product

Follow [Template basics](https://docs.zvid.io/docs/templates/template-basics/), then [Bulk rendering](https://docs.zvid.io/docs/automation/bulk-rendering/).

Save a template, preview representative variable sets for free, validate costs and limits, then submit the bulk request. Store the batch ID and each item result. Handle partial acceptance and failures per item; do not resubmit successful items as part of an indiscriminate retry. The REST hard cap is 500 items with possible lower account limits; MCP and installed automation integrations can impose lower limits.

Use signed [webhooks](https://docs.zvid.io/docs/automation/webhooks/) or [bounded polling](https://docs.zvid.io/docs/operations/render-lifecycle/) to deliver only completed media. Keep template design changes separate from variable-data changes so failures can be traced to the correct input.
