oxframe vs cloud video APIs

Pick oxframe when you can run a render yourself and want code instead of JSON, no per-minute bill and your data on your machine. Pick a cloud API such as Shotstack, Creatomate or JSON2Video when you want no install at all, a template editor for non-developers and rendering someone else scales.

At a glance

Checked against the sources below on October 22, 2026.
oxframecloud video APIs
How a video is describedRust codeJSON timelines or templates, sent to an API
Where it rendersYour machine or your CIThe vendor’s cloud
Price$0; your own computePer minute of video or per credit
Free tierEverythingTrial credits (JSON2Video: watermark on the free plan)
Your dataStays on your machineUploaded to the vendor
Template editor for non-developersNoYes
Logic in the videoAny code: loops, data, chartsWhat the JSON schema offers
An agent sees the framesoxframe check with a JSON reportRender, download, look
LicenseMIT or Apache-2.0Proprietary service

What a minute costs

Prices from the vendors’ pricing pages on 2026-10-22:

  • Shotstack: Starter $39 a month for 250 minutes, Pro $99 for 750, Scale $199 for 2,000, Volume $499 for 10,000; pay as you go is $10 for 50 minutes.
  • JSON2Video: Professional $49.95 a month for 200 minutes, Startup $99.95 for 500; the free plan adds a watermark.
  • Creatomate: plans in credits, where a minute of 720p video is about 14 credits.

A thousand 30-second videos a month is 500 minutes: $99 on Shotstack Pro, $99.95 on JSON2Video Startup. With oxframe it is compute time you already have. On a laptop, oxframe renders a 27.5-second explainer in 8.4 seconds on 8 jobs (the measurement on the home page), so 500 minutes of similar video take about two and a half hours of one machine, or a few CI jobs.

Code instead of JSON

A cloud API describes a video as JSON: clips on tracks, with text and images and their times. It is simple to send and hard to compute: a chart from data, a list that grows with its input or a layout that adapts to a long title has to be built before the JSON, in your own code. With oxframe the video is the code. A scene reads the row, lays out its text, draws the chart and checks that nothing overflows, and oxframe check catches the long title before anyone watches it.

A video per row of a CSV

The job cloud APIs are bought for: the same card for every row of a spreadsheet. In oxframe the card is a scene that reads its row from the environment, and a shell loop renders one video per row.

use oxframe::prelude::*;

/// One row of the CSV, passed in by the loop that renders it.
fn field(name: &str) -> String {
    std::env::var(name).unwrap_or_default()
}

#[oxframe::scene]
pub async fn card(view: View) {
    let title = view.add(TitleCard::new(format!("Thank you, {}", field("NAME"))).subtitle(format!(
        "{} pull requests merged this year",
        field("PRS")
    )));
    title.enter().await;
    title.next().await;
    wait_for(1.5).await;
}

pub fn project() -> Project {
    Project::new("thanks").scene(card())
}
# people.csv:  name,prs
#              Ada,42
#              Grace,17
cargo build --release
tail -n +2 people.csv | while IFS=, read -r name prs; do
  NAME="$name" PRS="$prs" target/release/thanks render --out "out/$name.mp4"
done

On the benchmark machine the loop renders 3 cards of 2.42 s each, 1080p at 60 fps, in 14.65 s on the CPU, one after another (2026-10-22).

Rows are independent, so a CI matrix or xargs -P renders them in parallel. Before the batch, NAME=… oxframe check on the longest name catches a title that does not fit its card.

When to pick cloud video APIs

  • Nobody on the team should install anything or run a render.
  • Non-developers edit templates in a web editor.
  • You want the vendor to scale rendering and host the files.

When to pick oxframe

  • You render many videos and do not want a per-minute bill.
  • The data should not leave your machine or your CI.
  • Videos need logic: charts from data, layout that adapts, code walkthroughs.
  • An agent builds the template and should check its frames.

FAQ

Is oxframe a hosted API?

No. oxframe is a library and a CLI that render on your machine or in your CI. There is no service to call and nothing to pay for.

How do I render one video per row of a CSV?

Read the CSV in Rust and render the scene once per row, from a loop or a script around the CLI. Each render is independent, so rows run in parallel.

What does a render cost with oxframe?

Only your compute. On a laptop, a 27.5-second video renders in 8.4 seconds on 8 jobs; on a free GitHub runner, release-video-action renders a release video in under a minute and a half including the build.

When is a cloud API the better choice?

When nobody should install or run anything, when non-developers edit templates, or when you want someone else to host and scale rendering.

Can oxframe use my brand colors?

Yes. A theme sets colors and sizes for every node, and an accent color in oxframe.toml keeps text readable against it.

Sources

Checked on October 22, 2026. Found something out of date? Open an issue on oxframe-web.

Other comparisons

Get started with oxframe