Rendley docs

Exports

Sending a project inline? When you pass project instead of project_id, the render runs on Rendley's servers — it has no access to your browser's memory, blob URLs, or local files. Every image, video, and audio entry in the project's library.media array must therefore carry a permanentUrl pointing at a public http:// or https:// address, or the request is rejected with 400 MEDIA_MISSING_PERMANENT_URL. See Export a project inline for a complete example.

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_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();
import requests

res = requests.post(
    "https://api.rendley.com/v1/export",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "project_id": "<project_id>",
      "settings": {
        "target_resolution": "1080p",
        "codec": "h264"
      }
    },
)
data = res.json()["data"]

Request body

NameTypeRequiredDescription
projectobjectOptionalRender-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_idstringOptionalID of a project already stored on Rendley to export. Provide either project_id or project, not both.
settingsobjectOptionalOptional render settings. Defaults are applied when omitted.
settings.codec"h264" | "vp8"OptionalOptional. Video codec to render with. Defaults are applied server-side when omitted.
settings.quality"high" | "medium" | "low"OptionalOptional. Render quality. Higher quality produces larger files.
settings.target_resolution"720p" | "1080p" | "4K"OptionalOptional. Output resolution. Defaults are applied server-side when omitted.
Example response
{
  "data": {
    "job_id": "string"
  }
}
Response codes
StatusDescription
200OK
400Bad Request
401Unauthorized

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_id": "<project_id>",
    "settings": {
      "target_resolution": "1080p",
      "codec": "h264"
    }
  }'
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_id": "<project_id>",
    "settings": {
      "target_resolution": "1080p",
      "codec": "h264"
    }
  }),
});
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_id": "<project_id>",
      "settings": {
        "target_resolution": "1080p",
        "codec": "h264"
      }
    },
)
data = res.json()["data"]

Request body

NameTypeRequiredDescription
projectobjectOptionalRender-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_idstringOptionalID of a project already stored on Rendley to export. Provide either project_id or project, not both.
settingsobjectOptionalOptional render settings. Defaults are applied when omitted.
settings.codec"h264" | "vp8"OptionalOptional. Video codec to render with. Defaults are applied server-side when omitted.
settings.quality"high" | "medium" | "low"OptionalOptional. Render quality. Higher quality produces larger files.
settings.target_resolution"720p" | "1080p" | "4K"OptionalOptional. Output resolution. Defaults are applied server-side when omitted.
Example response
{
  "data": {
    "credits": 0
  }
}
Response codes
StatusDescription
200OK
400Bad Request
401Unauthorized