v1

latestOpenAPI 3.1.02026-07-26132249.4 KB
API
File Management

Initiate a direct multipart upload

Start uploading a local file directly to Rendi's storage. Returns a per-part list of presigned PUT URLs that you upload chunks to. See the direct upload guide for the full flow and code samples.

post/v1/files/init-upload

Request body

filenamestring required

The filename to store. Only alphanumeric characters, underscores, dashes, and dots are allowed.

size_bytesinteger required

Total size of the file in bytes. Used to size the multipart chunks and verify quota up front. Maximum 5 TB.

is_privateboolean

If true, the uploaded file is placed in private storage and can only be downloaded via a presigned URL (request one by passing presigned_ttl_seconds on the files /get endpoint). Not available on trial plans.

part_sizeinteger nullable

Requested per-part size in bytes. Optional. If not set, a sensible default is used. If the requested value is below 5 MB it's raised to 5 MB; if above 5 GB or too small for the file to fit in the allowed number of parts, it's clamped accordingly. The value actually used is returned in the response.

Example request

{
  "filename": "my_video.mp4",
  "size_bytes": 104857600,
  "part_size": 10485760
}

Response

Multipart upload session created

file_idstring required

Unique identifier for the uploaded file. Use it in complete-upload / abort-upload and to poll GET /files/{file_id}.

part_sizeinteger required

Byte size for every part except the last (which is the remainder). Split your file into chunks of exactly this size and PUT each chunk to the matching URL in upload_urls.

upload_urlsstring[] required

Presigned PUT URLs, one per part. Send part 1 to upload_urls[0], part 2 to upload_urls[1], and so on. Each response's ETag header must be sent back in complete-upload.

Example response

{
  "file_id": "987fcdeb-a89b-43d3-b456-789012345678",
  "part_size": 10485760
}