How-to

White Label Video API in Your Customer's Brand

Use a white label video API to render videos in each customer's brand: one project per brand, your own storage and webhooks, and no vendor logo in the frame.

White Label Video API in Your Customer's Brand

A white label video API renders each video in your customer's brand, with nothing of the vendor in the frame, the link or the notifications. Clone a template into one project per brand, send every brand field on every request, call the API only from your server, and copy each MP4 to your own storage. One 32-second video costs 1 credit.

The finished video

This guide uses Customer Milestone Celebration, a 32-second 1080x1920 account-anniversary video with eight dynamic fields: a greeting, a personal line, the milestone, the member-since date, an offer, a code, a team sign-off and a logo. A loyalty platform or a CRM can send it on behalf of each business that uses it, to each of that business's customers.

The template with its sample values. The logo at the end is a sample too.

What you need

  • A Renderly API key. Create one in the dashboard under Settings → API keys.
  • Each customer's logo at a URL that serves the image file, and their brand colours and font.
  • A storage bucket or CDN on your own domain.

Step 1 - Find every place the vendor can show

The results for this query are mostly video hosting players, editor SDKs to embed in an app, and AI video tools that agencies resell. Each one removes the vendor brand from a different surface. A render API has three:

SurfaceWhere the vendor showsFix
The frameA watermark, an end credit, a sample logoSteps 2 and 3
The messagesA dashboard, an email, a callback your customer seesStep 4
The fileA download link on the vendor's domainStep 5

Renderly adds nothing to the frame of an API render. The video holds only the layers of the template or project you send. The risk is the template's own sample values, which step 3 covers.

Step 2 - Make one project per customer brand

A request changes only two things: the text of text and shape layers, and the src of image, video and sound layers. Colours, fonts and layout come from the template. One template therefore gives every customer the same cream, espresso and coral palette.

Give each customer their own look in a project. Click Use this template on the template page, then in the editor:

  1. Change the colours and fonts to the customer's brand.
  2. Rewrite the fixed text that speaks for them. This template says "Our treat. No expiry, no catch." and "thank you for a whole year of you." in fixed layers, so a two-year milestone or an offer with an end date needs new copy.
  3. Keep the names of the dynamic layers, so one request shape fits every customer.

The project id is in the editor URL (/editor/{projectId}). Store it with the customer record.

Step 3 - Send every brand field on every request

A field you leave out of replacements keeps the template's sample value. In this template the sample brand_logo is the Renderly logo. A request without it renders without an error, and your customer's video ends on our logo. Send the logo and the sign-off every time.

Fit the copy to each box. GET /api/v1/projects/{projectId}/variables returns maxCharacters for each text field. For this template the estimates are about 10 characters for first_name, 119 for personal_line, 11 for years_label, 38 for offer_text and 28 for team_signature. A longer value does not fail. The render succeeds and the tail is hidden. POST /api/v1/previews takes the same body, costs nothing, and returns a TEXT_MAY_CLIP warning for a field that is likely too long.

Step 4 - Keep the API on your server

Call Renderly from your backend only. Your customers use your screens and never need a Renderly account or key.

curl -X POST https://renderly.video/api/v1/renders \
  -H "Authorization: Bearer $RENDERLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "projectId": "PROJECT_ID_FOR_THIS_CUSTOMER",
    "replacements": {
      "first_name": "Hey Sam,",
      "personal_line": "Two years of Saturday orders. We noticed, and we are grateful.",
      "years_label": "Two Years",
      "member_since": "October 2024",
      "offer_text": "A free coffee\nwith your next order",
      "offer_code": "SAM2YEARS",
      "team_signature": "- The Northside Bakery team",
      "brand_logo": "https://cdn.yourplatform.com/brands/northside/logo.png"
    },
    "webhookUrl": "https://api.yourplatform.com/hooks/renderly"
  }'

The response returns a jobId and creditsUsed: 1. Store the jobId with the customer and the recipient. Set webhookUrl to your own endpoint, so the completion event goes to your backend and not to a person.

Step 5 - Copy the file to your own storage

When the job is done, GET /api/v1/renders/{jobId} returns outputUrl, and a render.completed event reaches your webhookUrl. That URL points to Renderly's storage. Download the MP4 and upload it to your own bucket, then send your customer a link on your own domain. Your link then stays the same if you change vendors. The webhooks guide covers the signature check before you trust the event.

What this costs at scale

Renderly bills 1 credit per minute of 1080p output, rounded up to the nearest half credit. A 32-second video rounds up to 1 credit. One account pays for all your customers' renders, and you set your own prices on top.

Videos per monthCreditsPlanCost
100100Creator, $29/mo (200 credits)included
1,0001,000Business, $99/mo (1,000 credits)included

The Business plan also allows an organization with up to 5 seats. Projects in the organization render against its shared credit pool.

Where to go next

For one look per client across an agency's accounts, see automated business metrics videos. To send a batch from a file, the CSV guide loops over the rows. To give each customer a vertical and a widescreen cut, see the multi format guide. To ship this as a feature inside your own app, with per-tenant quotas and webhook routing, see embedding video generation in your SaaS.

Frequently asked

Does Renderly add a watermark or a credit to API renders?
No. A render through the API contains only the layers of the template or project you send, with your replacements applied. Nothing is added to the frame. The one exception is the free Product Hunt launch video tool on our site, which adds a small credit on the last frame. That tool does not use the API.
Can I change the colours or the font per customer in the request?
No. Replacements change the text of text and shape layers and the src of image, video and sound layers. Colours, fonts and positions come from the template or project. For a per-customer look, clone the template into one project per brand, style it in the editor, and render by projectId.
What happens if I forget to send brand_logo?
The render uses the template's sample value. In the Customer Milestone Celebration template, that sample is the Renderly logo, so your customer's video ends on our logo. The request does not fail. Send every brand field on every request, or replace the logo inside the cloned project so its default is your customer's.
Can my customers call Renderly directly?
They do not need to. Keep the API key on your server, build the request from your own data, and give your customers your own screens and your own links. The render request, the webhook and the file copy all run between your backend and Renderly, so your customers see only your product.
How do I pay for renders on behalf of many customers?
One account pays for every render, at 1 credit per minute of 1080p output, rounded up to the nearest half credit. Bill your customers in your own plans. On the Business plan you can also create an organization with up to 5 seats, and projects in the organization render against its shared credit pool.