v1

latestOpenAPI 3.1.02026-07-26132249.4 KB
API
File Management

Complete a multipart upload

Finalize a direct upload started via POST /v1/files/init-upload. The file then goes through FFprobe for media metadata; status changes as UPLOADED and becomes STORED when analysis completes. See the direct upload guide for the full flow.

post/v1/files/{file_id}/complete-upload

Path parameters

file_idstring required

Request body

Example request

{
  "parts": [
    {
      "part_number": 1,
      "etag": "\"7d865e959b2466918c9863afca942d0f\""
    }
  ]
}

Response

Upload completed; file is being ffrpobed

file_idstring required

Unique identifier for the stored file

environment_namestring nullable

The environment this file was stored in (e.g., 'main', 'test', 'dev').

storage_urlstring nullable

URL where the file is stored

status'QUEUED' | 'DOWNLOADING' | 'DOWNLOADED' | 'UPLOADED' | 'FAILED' | 'STORED'
rendi_store_type'INPUT' | 'OUTPUT' | 'STORED_FILE'
error_statusstring nullable

Status of any error that occurred during file processing

external_error_messagestring nullable

Error details if the file failed to be processed

is_deletedboolean nullable

Whether the file has been deleted

size_mbytesnumber nullable

Size of the output file or folder in megabytes

file_countinteger nullable

Number of files in the output folder/playlist

size_compressed_mbytesnumber nullable

Size of the output compressed folder in megabytes

is_privateboolean nullable

Whether the file is stored privately. Private files are accessible via their storage_url only if you request a presigned URL by passing presigned_ttl_seconds on GET /v1/files/{file_id} (for a single file) or GET /v1/commands/{command_id} (for a command's output files) to receive a time-limited downloadable URL. Not available on free plans.

original_file_urlstring nullable

URL of the original file (or just name in case of uploaded file)

durationnumber nullable

Duration of the media file in seconds

file_typestring nullable

Type of the media file (video, audio, image, subtitles, etc.)

file_formatstring nullable

Format/container of the media file

widthinteger nullable

Width of the video in pixels

heightinteger nullable

Height of the video in pixels

codecstring nullable

Codec used for the media file

timebasestring nullable

How time is represented in the media file

pixel_formatstring nullable

How the pixel data is stored in the media file

mime_typestring nullable

MIME type of the media file

frame_ratenumber nullable

Frame rate of the video in frames per second

bitrate_video_kbnumber nullable

Video bitrate in kilobits per second

bitrate_audio_kbnumber nullable

Audio bitrate in kilobits per second

video_profile_levelstring nullable

Video profile level

is_varying_frame_rateboolean nullable

Whether the video has a variable frame rate

Example response

{
  "bitrate_audio_kb": 128,
  "bitrate_video_kb": 4000,
  "codec": "h264",
  "duration": 30,
  "environment_name": "main",
  "file_format": "mp4",
  "file_id": "987fcdeb-a89b-43d3-b456-789012345678",
  "file_type": "video",
  "frame_rate": 30,
  "height": 1080,
  "is_deleted": false,
  "is_varying_frame_rate": false,
  "mime_type": "video/mp4",
  "original_file_url": "https://storage.rendi.dev/sample/big_buck_bunny_720p_5sec_intro.mp4",
  "pixel_format": "yuv420p",
  "rendi_store_type": "STORED_FILE",
  "size_mbytes": 2.27,
  "status": "STORED",
  "storage_url": "https://storage.rendi.dev/files/224ea098-5c10-419b-8a77-707d89443c56/987fcdeb-a89b-43d3-b456-789012345678/output.mp4",
  "timebase": "1/25",
  "video_profile_level": "main",
  "width": 1920
}