How-to

Multi Format Video API: One Render per Format

Use a multi format video API the right way: one request per aspect ratio from the same data, so text stays inside each frame instead of being cropped.

Multi Format Video API: One Render per Format

A multi format video API should render each aspect ratio from your data, not crop one finished file. Send the same values to a 9:16 template and a 16:9 template with matching field names, one request each. Every text layer is laid out for its own frame, so nothing is cut off, and each pair of videos costs 1 credit.

The finished video

This guide renders one customer review in two formats. Customer Testimonial Spotlight is a 19-second 1080x1920 vertical video. Its widescreen sibling, Customer Testimonial Spotlight (Widescreen), is a 15-second 1920x1080 video. Both take the same six fields.

The 9:16 version, rendered from the template's sample values.
The 16:9 version, with the same quote, name and role.

What you need

  • A Renderly API key. Create one in the dashboard under Settings → API keys.
  • A source of reviews: a review-platform webhook, a CSV export or a table.
  • The reviewer photo, the review-platform logo and your logo at URLs that serve the image file directly.

Step 1 - Decide between cropping and rendering each format

Most tools that rank for this job reframe a finished video. They find the subject, follow it, and crop each frame to the new ratio. That works for footage of a person talking with nothing near the edges.

It fails on a video that carries text. A vertical video cropped to 16:9 keeps a band across the middle, and a widescreen video cropped to 9:16 keeps a strip down the centre. Headlines, logos and a call to action sit outside both. When the video is made of text and brand marks, render each format from the data instead. Each layout then puts every element inside its own frame.

Step 2 - Pick one template per aspect ratio with the same field names

The two testimonial templates share these field names:

FieldWhat goes in it
review_quoteThe review text
reviewer_nameThe reviewer's name
reviewer_company_or_roleA role and company, on one line
reviewer_avatarA photo URL
platform_logoThe review platform's logo URL
brand_logoYour logo URL

Because the names match, one replacements object fills both videos. Keep this rule for any formats you add. A field that one template calls headline and the other calls title breaks the shared object.

The closing line Join 2,000+ happy customers and the five stars are fixed text in both templates. Click Use this template on each template page to clone it into a project, and change that line to a claim that is true for you.

Do not use the width and height request fields to make a format. They resize the canvas and leave each layer at its pixel position, so the part of the design outside the new frame is cut off. The ad variants post shows a 4:5 render that lost its bottom third this way.

Step 3 - Fit the copy to the smallest box

The same field has a different box in each format. Call GET /api/v1/templates/{templateId}/variables for each template and read maxCharacters:

Field9:1616:9
review_quoteabout 171 (6 lines)about 99 (3 lines)
reviewer_nameabout 26about 25
reviewer_company_or_roleabout 45about 50

Treat the lower number as a safe target, not a hard cutoff. It is a conservative estimate: the widescreen sample quote has 103 characters and still shows in full on three lines. A value well over the estimate does not fail. The render succeeds and the tail is hidden.

Preview first. POST /api/v1/previews takes the same body as a render, costs nothing, and returns a previewUrl and a warnings array. A TEXT_MAY_CLIP warning names the field that is likely too long. That warning, and a look at the previewUrl, is the check to rely on.

Step 4 - Send one render request per format

for TEMPLATE in customer-testimonial-review-spotlight customer-testimonial-review-spotlight-v2; do
  curl -X POST https://renderly.video/api/v1/renders \
    -H "Authorization: Bearer $RENDERLY_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "templateId": "'"$TEMPLATE"'",
      "replacements": {
        "review_quote": "Booking took two minutes and the team called back the same afternoon.",
        "reviewer_name": "Priya Raman",
        "reviewer_company_or_role": "Owner, Raman Dental",
        "reviewer_avatar": "https://assets.example.com/reviews/priya-raman.jpg",
        "platform_logo": "https://assets.example.com/logos/review-platform.png",
        "brand_logo": "https://assets.example.com/logos/brand.png"
      }
    }'
done

Each response returns a jobId and creditsUsed: 0.5. If you cloned the templates into projects in step 2, send projectId in place of templateId. The project id is in the editor URL (/dashboard/projects/{projectId}/edit).

For a 1:1 or 4:5 feed cut, clone the vertical template into a project and pick the ratio from the editor's aspect ratio menu. The editor scales each layer's box by the change in width and height but keeps the font sizes, so from 9:16 to 1:1 every box is about 56% as tall and the text no longer fits. Rearrange the layers by hand, keep their names, and add that projectId to the loop.

Step 5 - Collect each format and route it to its platform

Store each jobId with its format as the requests return. When a job is done, GET /api/v1/renders/{jobId} returns its outputUrl. For volume, register one webhook for render.completed instead of polling. The webhooks guide covers the signature check.

Send the vertical file to TikTok, Reels and Shorts, and the widescreen file to YouTube, LinkedIn and your site. YouTube's help page states that "the standard aspect ratio for YouTube on a computer is 16:9" (YouTube Help, 2026).

What this costs at scale

Renderly bills 1 credit per minute of 1080p output, rounded up to the nearest half credit. Each format is its own render. Both testimonial videos round up to 0.5 credits, so each review costs 1 credit for the pair.

Reviews per monthCredits (2 formats)PlanCost
100100Creator, $29/mo (200 credits)included
1,0001,000Business, $99/mo (1,000 credits)included

A third format adds 0.5 credits per review for a clip under 30 seconds.

Where to go next

To send a batch of reviews from a file, the CSV guide loops over the rows. For a posting schedule on the vertical channels, see automate Instagram Reels and automate TikTok videos.

Frequently asked

Can I pass width and height to get a square cut of a vertical template?
You can pass them, but the result is a crop. The two fields resize the canvas and leave every layer at its pixel position, so anything outside the new frame is cut off. The render succeeds and reports no error. Use a template or project that was laid out at the target size.
Does each format cost a separate render?
Yes. Each format is its own render and its own charge. Renderly bills 1 credit per minute of 1080p output, rounded up to the nearest half credit, so the 19-second vertical and the 15-second widescreen testimonial cost 0.5 credits each, and 1 credit for the pair.
Is there a square or 4:5 version of the testimonial template?
No. The pair covers 9:16 and 16:9. For a feed cut, clone the vertical template into a project, switch the canvas to 1:1 or 4:5 in the editor, fix the layout by hand, and keep the layer names. The same replacements then fill the third format too.
Why does the same quote fit in one format and not the other?
In the Customer Testimonial Spotlight pair, the widescreen quote is set larger and has three lines, while the vertical quote has six. The variables endpoint estimates about 171 characters for the vertical quote and about 99 for the widescreen one. A value well over the estimate renders without an error and the tail is hidden.
Can I change the closing line or the star rating?
Not through the API. The line "Join 2,000+ happy customers" and the five stars are fixed text in both templates. Clone each template into a project, edit or name those layers and tick Dynamic, then render by projectId. Do this before the first run, or every video carries the sample claim.