Frame.io Python SDK — Upload Guide
Frame.io Python SDK — Upload Guide
Frame.io Python SDK — Upload Guide
This guide explains how to upload files to Frame.io using the Frame.io Python SDK (frameio). The SDK handles chunked multi-part uploads to S3 via pre-signed URLs, with parallel workers, automatic retries, and optional progress tracking.
For the general upload API concepts (upload URLs, headers, chunking), see How Local & Remote Uploads Work.
That’s it. The SDK splits the file into chunks based on the upload URLs returned by the API, uploads them in parallel, and handles retries automatically.
Local upload is a two-step process:
The upload goes directly from your application to S3 — it does not pass through the Frame.io API servers. This is the same pattern used by services like YouTube, Vimeo, and Dropbox for large file uploads.
FrameioUploaderFrameioUploader is the recommended way to upload files. It wraps the lower-level chunked uploader and handles all the details — extracting upload URLs from the API response, setting required headers, chunking the file, and uploading in parallel.
Use the on_progress callback to track upload progress:
The callback is invoked once after each chunk completes, with the cumulative bytes uploaded so far and the total file size.
For a polished terminal experience, use Rich:
FrameioUploader accepts several optional parameters:
A complete example with authentication, upload, and progress tracking:
If you need full control over the upload process — for example, to handle chunking manually, integrate with an async pipeline, or customize retry logic — see How Local & Remote Uploads Work for the raw API flow and a standalone Python script example.
If your file is already accessible via a public URL, use remote upload instead. No chunking is needed — Frame.io fetches the file directly:
Remote upload currently has a 50 GB file size limit. For files larger than 50 GB, use local upload instead.
After uploading, you can verify the file was received: