Skip to main content
A source is an uploaded video, audio, or image file that you can use in a video as a clip, B-roll, overlay, background, music, or sound effect. You can also upload a 3D .cube LUT to color-grade clips. Create a source, upload the bytes to the returned pre-signed URL, then reference the sourceId from create_video, upload_clip, add_layout / update_layout, add_overlay, update_clip, set_background_music, or add_sound_effect.

create_source

Create a new source upload. Returns a sourceId and a pre-signed uploadUrl — PUT the file bytes to uploadUrl (the URL expires after 1 hour). Once uploaded, the sourceId is accepted by: Upload the file as-is: any common container is accepted (MP4, MOV, WebM, MP3, WAV, M4A, …). The .mp4 in the upload URL is just the storage key, not a container requirement — there’s no need to remux or re-encode before uploading. For audio files, set kind: "audio" with the audio’s duration and omit width / height. For images, set kind: "image" and omit duration. Tella hosts the uploaded image for rendering — you never deal with raw image URLs. For a 3D .cube LUT, set kind: "lut" and omit width, height, and duration. Upload the file unchanged, then save it with add_library_item. Pass the returned library item id, not the sourceId, to set_clip_filters.
enum<string>
Source kind — video (default), audio, image, or lut
integer
Width in pixels — required for video and image, omit for audio and lut
integer
Height in pixels — required for video and image, omit for audio and lut
number
Duration in seconds — required for video and audio, omit for image and lut

get_source

Get a source’s processing status by its sourceId, however it was placed. After placing a newly uploaded video or audio source, poll this every few seconds until it is ready: while it is still processing, frames and previews of videos that use it answer not-ready instead of rendering.
string
required
Source ID from create_source
Last modified on October 5, 2026