Exports
Create an export
POST
/v1/export Start an export render job. Provide either `project_id` (a project stored on Rendley) or `project` (render-ready project JSON), but not both. When sending `project` inline, every media item referenced in the JSON (video, image, audio, font) must use a permanent, publicly reachable URL so the render server can resolve and download it; expiring/signed URLs will fail the render. The response returns a job ID; poll `GET /jobs/{id}` for status and the resulting file.
Request
curl -X POST "https://api.rendley.com/v1/export" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"project": {},
"project_id": "<project_id>",
"settings": {}
}' 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": {},
"project_id": "<project_id>",
"settings": {}
}),
});
const { data } = await res.json(); import requests
res = requests.post(
"https://api.rendley.com/v1/export",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"project": {},
"project_id": "<project_id>",
"settings": {}
},
)
data = res.json()["data"] Request body
| Name | Type | Required | Description |
|---|---|---|---|
project | object | Optional | Render-ready project JSON to export inline, used instead of project_id when the project is not stored on Rendley. Every media item referenced in the JSON (video, image, audio, font) must use a permanent, publicly reachable URL so the render server can resolve and download it. Temporary or signed URLs that expire will cause the render to fail. |
project_id | string | Optional | ID of a project already stored on Rendley to export. Provide either project_id or project, not both. |
settings | object | Optional | Optional render settings. Defaults are applied when omitted. |
Example response
{
"data": {
"job_id": "string"
}
} Response codes
| Status | Description |
|---|---|
200 | OK |
400 | Bad Request |
401 | Unauthorized |
Calculate export cost
POST
/v1/export/cost Calculate the credit cost of an export without starting the render.
Request
curl -X POST "https://api.rendley.com/v1/export/cost" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"project": {},
"project_id": "<project_id>",
"settings": {}
}' const res = await fetch("https://api.rendley.com/v1/export/cost", {
method: "POST",
headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
"project": {},
"project_id": "<project_id>",
"settings": {}
}),
});
const { data } = await res.json(); import requests
res = requests.post(
"https://api.rendley.com/v1/export/cost",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"project": {},
"project_id": "<project_id>",
"settings": {}
},
)
data = res.json()["data"] Request body
| Name | Type | Required | Description |
|---|---|---|---|
project | object | Optional | Render-ready project JSON to export inline, used instead of project_id when the project is not stored on Rendley. Every media item referenced in the JSON (video, image, audio, font) must use a permanent, publicly reachable URL so the render server can resolve and download it. Temporary or signed URLs that expire will cause the render to fail. |
project_id | string | Optional | ID of a project already stored on Rendley to export. Provide either project_id or project, not both. |
settings | object | Optional | Optional render settings. Defaults are applied when omitted. |
Example response
{
"data": {
"credits": 0
}
} Response codes
| Status | Description |
|---|---|
200 | OK |
400 | Bad Request |
401 | Unauthorized |