Skip to main content
POST
/
v1
/
files
/
store-file
FFprobe and store a file
curl --request POST \
  --url https://api.rendi.dev/v1/files/store-file \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: <api-key>' \
  --data '
{
  "file_url": "<string>",
  "is_private": false
}
'
import requests

url = "https://api.rendi.dev/v1/files/store-file"

payload = {
"file_url": "<string>",
"is_private": False
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({file_url: '<string>', is_private: false})
};

fetch('https://api.rendi.dev/v1/files/store-file', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.rendi.dev/v1/files/store-file",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'file_url' => '<string>',
'is_private' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://api.rendi.dev/v1/files/store-file"

payload := strings.NewReader("{\n \"file_url\": \"<string>\",\n \"is_private\": false\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api.rendi.dev/v1/files/store-file")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"file_url\": \"<string>\",\n \"is_private\": false\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.rendi.dev/v1/files/store-file")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"file_url\": \"<string>\",\n \"is_private\": false\n}"

response = http.request(request)
puts response.read_body
{
  "file_id": "123e4567-e89b-12d3-a456-426614174000"
}
{
"detail": "Invalid authorization key"
}
{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}
Async job: returns file_id immediately; poll get-file until status is STORED.Rendi already stores your FFmpeg output files (see storage_url in the response from run-ffmpeg-command). Use this endpoint to persist intermediate assets or pre-probe input files for FFprobe metadata.

Authorizations

X-API-KEY
string
header
required

Body

application/json
file_url
string
required

URL to the publicly accessible file. You can use public file urls, google drive, dropbox, rendi stored files, s3 stored files, etc. as long as they are publicly accessible.

Example:

"https://storage.rendi.dev/sample/sample.avi"

is_private
boolean
default:false

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

Example:

false

Response

Successfully submitted file for FFprobe and storage

file_id
string
required

Unique identifier for the stored file

Example:

"987fcdeb-a89b-43d3-b456-789012345678"