Rendley docs

API reference

Jobs

Every slow call returns a job. List your recent jobs, read one to get its status and download URL, or cancel one that has not started yet.

#List jobs

GEThttps://api.rendley.com/v1/jobs

List up to 200 jobs. API-key requests always return only API-created jobs. List entries carry no output object: fetch GET /jobs/{id} for a completed job's download URL.

Don't have one? Create an API key

const res = await fetch("https://api.rendley.com/v1/jobs", {
  headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json();
curl "https://api.rendley.com/v1/jobs" \
  -H "Authorization: Bearer YOUR_API_KEY"
import requests

res = requests.get(
    "https://api.rendley.com/v1/jobs",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"]
$ch = curl_init("https://api.rendley.com/v1/jobs");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_API_KEY"]);

$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true)["data"];
package main

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

func main() {
	req, _ := http.NewRequest("GET", "https://api.rendley.com/v1/jobs", nil)
	req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	b, _ := io.ReadAll(res.Body)
	fmt.Println(string(b))
}
require "net/http"
require "json"

uri = URI("https://api.rendley.com/v1/jobs")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"

res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)["data"]

Response 200

{
  "data": [
    {
      "acknowledged": true,
      "error": "string",
      "id": "f0e1d2c3-b4a5-4678-9012-3456789abcde",
      "input_data": "string",
      "result_data": "string",
      "source_id": "3f0d5a4e-3d2a-4c1f-9b3e-2a1c4d5e6f70",
      "source_type": "string",
      "status": "queued",
      "type": "string"
    }
  ]
}

#Get a job

Get a single API-created job. Completed media and export jobs include output.url and output.url_expires_at when the stored result is available.

GEThttps://api.rendley.com/v1/jobs/{id}

Don't have one? Create an API key

const res = await fetch("https://api.rendley.com/v1/jobs/ID", {
  headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json();
curl "https://api.rendley.com/v1/jobs/ID" \
  -H "Authorization: Bearer YOUR_API_KEY"
import requests

res = requests.get(
    "https://api.rendley.com/v1/jobs/ID",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"]
$ch = curl_init("https://api.rendley.com/v1/jobs/ID");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_API_KEY"]);

$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true)["data"];
package main

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

func main() {
	req, _ := http.NewRequest("GET", "https://api.rendley.com/v1/jobs/ID", nil)
	req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	b, _ := io.ReadAll(res.Body)
	fmt.Println(string(b))
}
require "net/http"
require "json"

uri = URI("https://api.rendley.com/v1/jobs/ID")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"

res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)["data"]

Response 200

{
  "data": {
    "acknowledged": true,
    "error": "string",
    "id": "f0e1d2c3-b4a5-4678-9012-3456789abcde",
    "input_data": "string",
    "output": {
      "duration": 0,
      "expires_at": "2026-06-09T10:00:00Z",
      "file_hash": "c6c8ec4f9a6fdd9d",
      "media_id": "c448b6e3-2b78-4bda-b369-d1afc6aec07f",
      "mime_type": "string",
      "project_id": "cf32a652-56cf-4dfd-9ac6-191e90465df5",
      "size": 0,
      "url": "https://cdn.example.com/generated/video.mp4?signature=...",
      "url_expires_at": "2026-08-31T15:00:00Z",
      "workspace_id": "3b66b9b6-de8e-44c3-9f27-848a09c79320"
    },
    "result_data": "string",
    "source_id": "3f0d5a4e-3d2a-4c1f-9b3e-2a1c4d5e6f70",
    "source_type": "string",
    "status": "queued",
    "type": "string"
  }
}

#Cancel a job

Cancel a job owned by the authenticated user by its ID.

DELETEhttps://api.rendley.com/v1/jobs/{id}

Don't have one? Create an API key

const res = await fetch("https://api.rendley.com/v1/jobs/ID", {
  method: "DELETE",
  headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json();
curl -X DELETE "https://api.rendley.com/v1/jobs/ID" \
  -H "Authorization: Bearer YOUR_API_KEY"
import requests

res = requests.delete(
    "https://api.rendley.com/v1/jobs/ID",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"]
$ch = curl_init("https://api.rendley.com/v1/jobs/ID");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_API_KEY"]);

$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true)["data"];
package main

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

func main() {
	req, _ := http.NewRequest("DELETE", "https://api.rendley.com/v1/jobs/ID", nil)
	req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	b, _ := io.ReadAll(res.Body)
	fmt.Println(string(b))
}
require "net/http"
require "json"

uri = URI("https://api.rendley.com/v1/jobs/ID")
req = Net::HTTP::Delete.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"

res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)["data"]