Skip to content

Vidova Platform · Video rendering API

Render video from code. On GPUs, in seconds.

Send a film as XML or TypeScript. Vidova renders it on cloud GPUs and gives you an MP4. A one-minute 1080p film is ready in 13.5 seconds, for $0.06.

npm install @vidova/platform
render.ts
import { Vidova } from '@vidova/platform'

const vidova = new Vidova({ apiKey: process.env.VIDOVA_KEY! })
const project = await vidova.projects.create({ name: 'Launch' })

const { film } = await vidova.films.create({
  projectId: project.id,
  name: 'Launch',
  source: `<film fps="30" width="1920" height="1080">
    <track id="titles">
      <text duration="3" size="120">Launch day</text>
    </track>
  </film>`,
})

const job = await vidova.render(film.id, {
  type: 'video', resolution: '1080p', fps: 30,
})
const done = await vidova.jobs.wait(job.id)
await vidova.artifacts.download(done.artifacts[0].id, 'launch.mp4')
job_7f3a…Succeeded

Launch · 1080p · 30 fps · 60 s

  1. Queued
  2. Rendering
  3. Assembling
  4. Done
Ready in
13.5 s
Charged
6 credits$0.06
to render a 1-minute 1080p film
13.5 s
to render a 5-minute 1080p film
60.0 s
faster than Remotion on the same GPU
2.7×
per minute of 1080p video
$0.06

Benchmark

Faster on the same GPU

The same 1080p films, rendered by Vidova and by Remotion on the same GPU. Shorter bars are faster.

Text cardsA new title every 2 seconds. Simple text, the light case.
Animated shapes80 rounded cards with shadows that move, turn and fade on every frame. The heavy case.

10-second film

Text cards
3.8 s
11.7 s
3.0×faster
Animated shapes
5.6 s
16.2 s
2.8×faster

1-minute film

Text cards
12.7 s
46.1 s
3.6×faster
Animated shapes
27.5 s
74.5 s
2.7×faster
Seconds from the render request to a finished file.
Render time in seconds
FilmVidovaRemotion
10-second film, text cards3.8 s11.7 s
10-second film, animated shapes5.6 s16.2 s
1-minute film, text cards12.7 s46.1 s
1-minute film, animated shapes27.5 s74.5 s

Quickstart

Three calls to an MP4

Save a film, ask for a render, download the file.

render.ts
import { Vidova } from '@vidova/platform'

const vidova = new Vidova({ apiKey: process.env.VIDOVA_KEY! })
const project = await vidova.projects.create({ name: 'Launch' })

const { film } = await vidova.films.create({
  projectId: project.id,
  name: 'Launch',
  source: `<film fps="30" width="1920" height="1080">
    <track id="titles">
      <text duration="3" size="120">Launch day</text>
    </track>
  </film>`,
})

const job = await vidova.render(film.id, {
  type: 'video', resolution: '1080p', fps: 30,
})
const done = await vidova.jobs.wait(job.id)
await vidova.artifacts.download(done.artifacts[0].id, 'launch.mp4')
render.py
import os
from vidova_platform import Vidova

vidova = Vidova(api_key=os.environ["VIDOVA_KEY"])
project = vidova.projects.create(name="Launch")
film = vidova.films.create(
    project_id=project["id"],
    name="Launch",
    source=open("launch.film").read(),
)

job = vidova.render(film["film"]["id"], {"type": "video", "resolution": "1080p", "fps": 30})
done = vidova.jobs.wait(job["id"])
vidova.artifacts.download(done["artifacts"][0]["id"], "launch.mp4")
Terminal
# A quote fixes the exact price for 15 minutes
curl https://platform.vidova.ai/api/v1/quotes \
  -H "Authorization: Bearer $VIDOVA_KEY" -H "Idempotency-Key: quote-1" \
  -H "Content-Type: application/json" \
  -d '{"filmId":"flm_...","output":{"type":"video","resolution":"1080p","fps":30}}'

# Render at that price, then wait for job.succeeded
curl https://platform.vidova.ai/api/v1/renders \
  -H "Authorization: Bearer $VIDOVA_KEY" -H "Idempotency-Key: render-1" \
  -H "Content-Type: application/json" \
  -d '{"quoteId":"quo_...","maxMillicredits":6000}'

Built for production

What you get

  • The price before you renderEvery render has a fixed price up front. A failed or cancelled render costs nothing.
  • WebhooksGet a signed event when a render starts and finishes.
  • Your own storageKeep your files in your own S3 or R2 bucket.
  • Teams and keysInvite your team and give each key only what it needs.

Pricing

Pay for the seconds you render

No seats, no licence fee and no monthly minimum. A failed or cancelled render costs nothing.

  • 540p$0.025per minute of video
  • 720p$0.04per minute of video
  • 1080p$0.06per minute of video
  • Still$0.002per frame

Credits come in packs of $10, $50 and $200. $10 renders 166 minutes of 1080p video. Automatic top-ups refill your credits when they run low.

SDKs

TypeScript and Python

TypeScript@vidova/platform 0.1.1

For Node.js 20 or later, Bun and Deno. Includes webhook signature checks.

npm install @vidova/platform

Pythonvidova-platform 0.1.1

For Python 3.9 or later, with no dependencies. Includes webhook signature checks.

pip install vidova-platform

Questions

Frequently asked questions

What is Vidova Platform?

An API that renders videos from code. You send a film, add your media and motion graphics, and ask for a render. Vidova gives you a download link to the MP4.

How fast is it?

Through the API, a one-minute 1080p film was ready in 13.5 s and a five-minute 1080p film in 60.0 s. On the same GPU, Vidova rendered one-minute films 2.7× faster than Remotion or more.

How much does it cost?

You pay per second of output: $0.025 a minute at 540p, $0.04 at 720p and $0.06 at 1080p. A still frame costs $0.002. Credits come in packs from $10. There are no seats, no licence fee and no monthly minimum.

Do I need my own GPUs or servers?

No. Vidova runs the GPUs. You call the API from your server with a key, or use the TypeScript or Python SDK.

Get started

Render your first video in five minutes.

Sign in, buy credits from $10 and follow the quickstart.

Get an API key