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.
Prerequisites
Quick Start
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.
How It Works
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.
Using FrameioUploader
FrameioUploader 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.
Progress Tracking
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.
Rich progress bar
For a polished terminal experience, use Rich:
Configuration
FrameioUploader accepts several optional parameters:
Full Example
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.
Remote Upload
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.
Checking Upload Status
After uploading, you can verify the file was received: