Video Generation

Generate MP4, WebM, and GIF videos from your templates with video elements, subtitles, and multi-page slideshows


Orshot generates videos from your Studio templates — turn static designs into animated content, add background audio and subtitles, or combine multi-page templates into video slideshows. Set response.format to mp4, webm, or gif.

Quick Start#

To generate a video, set the response.format to a video format and include videoOptions for any video-specific settings:

const response = await fetch("https://api.orshot.com/v1/studio/render", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer <YOUR_API_KEY>",
  },
  body: JSON.stringify({
    templateId: "<YOUR_TEMPLATE_ID>",
    modifications: {
      title: "Product Launch 2026",
      subtitle: "Coming this April",
      bgVideo: "https://example.com/product-demo.mp4",
    },
    response: {
      format: "mp4",
      type: "url",
    },
  }),
});

const data = await response.json();
console.log(data.data.content); // Video URL

Supported Formats#

FormatBest ForFile Size
mp4Social media, web, general purposeMedium
webmWeb-optimized video, modern browsersSmaller
gifShort loops, thumbnails, previewsLarger

How It Works#

  1. Design a template in Orshot Studio with video elements, text, images, and shapes
  2. Add audio & subtitles per page directly in the Studio editor — background music, voiceover, or SRT files
  3. Call the API with a video format and pass content overrides in modifications
  4. Configure video settings using videoOptions for trimming, audio control, subtitles, and optional page-combining transitions
  5. Receive your video as a hosted URL, base64 string, or binary data (depends on response type and template type)

API Request Structure#

FieldTypeRequiredDescription
templateIdstringYesYour Studio template ID
modificationsobjectNoContent overrides (text, images, video URLs)
response.formatstringYes"mp4", "webm", or "gif"
response.typestringNo"url", "base64", or "binary"
response.includePagesarrayNoSpecific pages for multi-page video slideshows
videoOptionsobjectNoVideo controls (fps, quality, trim, audio, subtitles, combine pages)

Replacing Video Content#

Replace video elements in your template by passing a new URL:

{
  "modifications": {
    "bgVideo": "https://example.com/new-background.mp4"
  },
  "response": {
    "format": "mp4",
    "type": "url"
  }
}

Multi-Page Video Slideshows#

Multi-page templates can be rendered as a single video, with each page becoming a segment of the final video:

{
  "templateId": "<SLIDESHOW_TEMPLATE>",
  "modifications": {
    "page1@title": "Introduction",
    "page1@bgVideo": "https://example.com/intro.mp4",
    "page2@title": "Features",
    "page2@bgVideo": "https://example.com/features.mp4",
    "page3@title": "Get Started",
    "page3@bgVideo": "https://example.com/cta.mp4"
  },
  "response": {
    "format": "mp4",
    "type": "url"
  },
  "videoOptions": {
    "combinePages": true,
    "pageTransition": "fade",
    "pageTransitionDuration": 0.5
  }
}

Common videoOptions#

  • fps - output frame rate
  • quality - encoder quality
  • trimStart, trimEnd - trim output range in seconds
  • muted - mute/unmute output audio (includes page-level audio)
  • subtitleSource, subtitleColor, subtitleBackground, subtitleFontSize, subtitleFontFamily, subtitlePosition, subtitleOffset
  • combinePages, pageTransition, pageTransitionDuration - combine multi-page videos with optional transitions

Page-Level Audio & Subtitles#

You can attach background audio and subtitles to each page directly in the Studio editor. Page audio is automatically mixed into the video output — no API changes needed. Page subtitles are used as a fallback when no videoOptions.subtitleSource is provided.

See Video Options for details on how page audio interacts with API-level controls.

Render Costs#

Video generation uses more renders than images or PDFs since each second of video requires additional processing. Longer videos consume proportionally more renders. You can reduce costs by trimming videos to shorter durations or using includePages to limit which pages are included.

Check your workspace usage dashboard for current render consumption and limits.

Example: Social Media Clip#

const response = await fetch("https://api.orshot.com/v1/studio/render", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer <YOUR_API_KEY>",
  },
  body: JSON.stringify({
    templateId: "<SOCIAL_VIDEO_TEMPLATE>",
    modifications: {
      headline: "5 Tips for Better Productivity",
      author: "Jane Smith",
      bgVideo: "https://example.com/office-bg.mp4",
      "bgVideo.trimStart": 0,
      "bgVideo.trimEnd": 15,
      "bgVideo.muted": true,
    },
    response: {
      format: "mp4",
      type: "url",
    },
    videoOptions: {
      subtitleSource: "https://example.com/voiceover.mp3",
      subtitleColor: "#ffffff",
      subtitleBackground: "rgba(0,0,0,0.6)",
      subtitleFontSize: "28px",
    },
  }),
});

What's Next#

Ready to automate?

Start rendering images, PDFs and videos from your templates in under 2 minutes. Free plan, no credit card.

Get your API key
  • Image, PDF and video generation via API
  • Visual editor with AI and smart layouts
  • Zapier, Make, MCP and 50+ integrations
  • White-label embed for your own app
  • 60 free renders — no credit card required