Rendley docs

Render a video

The fastest way to a finished file is to start from a template and export it. This walkthrough goes end to end: pick a workspace, create a project from a template, render it, and download the result.

To build a custom edit instead of using a template, generate it from a prompt or assemble the timeline with the SDK, then export the same way.

1. Pick a workspace

Projects live in a workspace. List yours and keep a workspace_id.

GET /v1/workspaces
curl https://api.rendley.com/v1/workspaces \
  -H "Authorization: Bearer YOUR_API_KEY"

2. Find a template

The template endpoints are public, so you can browse them with or without a key. Keep a template’s id.

GET /v1/templates
curl "https://api.rendley.com/v1/templates?limit=10"

3. Create a project from the template

POST /v1/projects
curl -X POST https://api.rendley.com/v1/projects \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Launch promo",
    "workspace_id": "WORKSPACE_ID",
    "template_id": "TEMPLATE_ID"
  }'

The response is the new project, including its id. Drop template_id to start from an empty project instead.

4. Export

Start a render for the project. It returns a job_id right away; the render runs on Rendley’s workers.

POST /v1/export
curl -X POST https://api.rendley.com/v1/export \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
  "project_id": "PROJECT_ID",
  "settings": { "target_resolution": "1080p", "codec": "h264" }
}'
const res = await fetch("https://api.rendley.com/v1/export", {
method: "POST",
headers: {
  Authorization: "Bearer YOUR_API_KEY",
  "Content-Type": "application/json",
},
body: JSON.stringify({
  project_id: "PROJECT_ID",
  settings: { target_resolution: "1080p", codec: "h264" },
}),
});
const { data } = await res.json();
const jobId = data.job_id;

settings is optional. To check the credit cost before committing, post the same body to /v1/export/cost first.

5. Poll, then download

Poll the job until it is completed, then read the file URL from result_data. See Jobs and polling for the full loop.

curl https://api.rendley.com/v1/jobs/JOB_ID \
  -H "Authorization: Bearer YOUR_API_KEY"

A completed job carries the download link:

{
  "data": {
    "status": "completed",
    "result_data": "{\"storage_url\":\"https://storage.rendley.com/exports/...mp4\",\"media_id\":\"med_...\"}"
  }
}

result_data is a JSON string, so parse it before reading storage_url. The link is time limited, so download the file soon after the job completes.