Skip to main content
Transformations live in the URL. Nothing is pre-processed, and there is no build step.
The first request for a given URL renders the variant and caches it. Every later request is served from that cache, so a URL costs work once no matter how often it is hit. Images render inline and come back as bytes; videos are queued and answer 202 until they are ready. Deleting or re-uploading a file invalidates its variants. The full endpoint and parameter reference is in Transform Media.

Your base URL

Every example in these docs uses {base}. It is the only thing that differs between the two ways of running Openinary, so substitute it once and every URL here is literally correct. On Cloud, the bucketId is the /b/.../ segment of the url returned by an upload, and it appears in every public URL you serve. Everything after {base} is identical on both: same transformation syntax, same upload and storage endpoints.

Explore transformations

Image Transformations

Resize, crop, rotate, and convert images, with saliency-aware cropping and smart format selection.

Video Transformations

Resize, trim, extract frames, and re-encode videos with quality control.

Upload & Prewarm

Upload files and pre-generate transformed variants so the first public request is already cached.

Signed URLs

Restrict transformations to those explicitly authorized by your backend.