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.
/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.
/v1/templates curl "https://api.rendley.com/v1/templates?limit=10"
3. Create a project from the template
/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.
/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.