source_url. You have three options:
- Public URL you control — host the file yourself (S3, GCS, CDN, etc.) and pass that URL directly in render/task requests.
- Framelane upload — upload a local file with
POST /v1/uploads, then use the returnedsource_url. - Framelane import — copy a remote file (public URL, Dropbox/Google Drive share link, or YouTube) with
POST /v1/imports.
Upload flow
1. Request an upload URL
201 Created):
upload_url expires in 1 hour.
2. Upload the file bytes
PUT the entire file toupload_url with the same Content-Type you declared in step 1. Bytes go directly to GCS — they never pass through the Framelane API.
3. Use source_url in your job
Pass source_url from the upload response as source_url in any render element or task body:
Supported content types
| Category | MIME types |
|---|---|
| Video | video/mp4, video/quicktime, video/webm, video/x-msvideo, video/x-matroska, video/mpeg |
| Audio | audio/mpeg, audio/mp4, audio/wav, audio/x-wav, audio/aac, audio/flac, audio/ogg |
| Image | image/jpeg, image/png, image/webp, image/gif, image/tiff |
| Font | font/ttf, font/otf, font/woff, font/woff2 |
content_type values return 422 with an unsupported_content_type error.
Errors
| Code | Cause |
|---|---|
unsupported_content_type | MIME type not in the allowed list |
401 | Missing or invalid API key |

