# Rendley AI Video Agent (`rendley/rendley-ai-video-agent`) Actor

Create, edit, and automate video. The Rendley AI agent turns a prompt into an edited, rendered video; the same run can generate video, images, music and speech, transcribe, dub, lip sync and export MP4s.

- **URL**: https://apify.com/rendley/rendley-ai-video-agent.md
- **Developed by:** [Rendley](https://apify.com/rendley) (community)
- **Categories:**
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![Rendley](https://raw.githubusercontent.com/rendleyhq/integrations/main/assets/rendley-lockup-light.png)](https://rendley.com)

## Rendley AI Video Agent

[Rendley](https://rendley.com) lets you **create, edit, and automate video**. This Actor puts the Rendley AI agent in your Apify workflows. Describe the edit or the video you want, add your files, and the agent does the work on a real editing timeline. It has access to Rendley's full set of video editing tools and AI models, so any prompt that describes an edit or a video is fair game.

No setup in Rendley is needed. Each run creates a project for you, or edits one you name. Keep **Export a video file** on to get a finished video file, or turn it off to keep the edited project and continue working on it in Rendley Studio. The run waits for the agent and returns the finished video. The work happens on Rendley, so the run only polls while it waits, which costs cents an hour at the Actor's 128 MB.

### What can the Rendley AI Video Agent do?

Anything you would ask a video editor. Some examples:

- **Add captions** to a video, styled for social platforms.
- **Cut bad takes, filler words and long pauses** out of a recording.
- **Resize or reframe** a video for another aspect ratio, keeping the subject in frame.
- **Create a video from a prompt**, with generated footage, images, voiceover, music and text assembled into a finished edit.
- **Turn a long recording into shorts**, pick the strongest moments, add b-roll, or apply your brand kit.
- **Any other edit** you can describe, such as trims, transitions, overlays, translations, dubbing and sound design.

You can start from nothing, from your own media, or from an existing project. With only a prompt, the agent creates a new project and builds the video from generated media, text and music. Add files and it works with your clips, images and audio instead. Give it a project ID to edit a project you already have in Rendley, and pass along the thread ID from an earlier run to continue that conversation.

With **Export a video file** on (the default) the run ends with a video file and a durable download link. With it off, the edited project is ready in Rendley Studio, where you can keep editing it by hand or with the agent.

### What do you need to run it?

- A [Rendley](https://rendley.com) account and an **API key** from [app.rendley.com/settings](https://app.rendley.com/settings).
- An **active Rendley subscription with credits**. The agent and renders are billed in Rendley credits; without them Rendley answers with HTTP 402, which the Actor reports as a clear error.

### How to generate a video from a text prompt

1. Paste your **Rendley API key**.
2. Write the **Prompt**. Add **Files** if the agent should work with your own clips, images or audio.
3. Run it. The Actor creates a project in your first workspace, waits for the agent, exports the video when **Export a video file** is on, and returns the download link.

#### Example input

```json
{
  "rendley_api_key": "YOUR_KEY",
  "prompt": "Create a short, engaging social-media video using high-quality stock footage. Use an interesting, modern layout with dynamic cuts, varied framing, and smooth transitions. Add bold, clean text overlays on top of the footage, with the text appearing at key moments and remaining easy to read. Keep the overall style polished, energetic, visually appealing, and concise.",
  "resolution": "1080p"
}
```

#### Example output

Every field the run produces, with the signed URL shortened. Field names follow the Rendley API. The agent job comes back whole as `agent_job` and the render job as `export_job`, with their most useful fields also at the top level.

```json
{
  "status": "completed",
  "project_id": "ab29a4fd-0393-4067-a255-7b4635fbd17a",
  "workspace_id": "3b66b9b6-de8e-44c3-9f27-848a09c79320",
  "created_project": true,
  "thread_id": "026bf203-dbf7-4fd1-9245-73008ea04db9",
  "agent_job_id": "8ba0ed2d-9a94-44f6-a586-3911966e5719",
  "last_message": "Added an automatic caption track to the video, covering the full 59.4-second duration.",
  "commands_applied": 2,
  "commands_failed": 0,
  "agent_job": { "job_id": "8ba0ed2d-9a94-44f6-a586-3911966e5719", "project_id": "ab29a4fd-0393-4067-a255-7b4635fbd17a", "thread_id": "026bf203-dbf7-4fd1-9245-73008ea04db9", "status": "completed", "last_message": "Added an automatic caption track to the video, covering the full 59.4-second duration.", "commands_applied": 2, "commands_failed": 0, "save_status": "synced", "created_at": 1788876571775, "updated_at": 1788876645434 },
  "job_id": "92e54de7-ca6e-4107-ac23-9e4e822f72ff",
  "url": "https://storage.rendley.com/exports/ab29a4fd-...?X-Amz-Signature=...",
  "url_expires_at": "2026-09-08T17:46:24Z",
  "media_id": "6b1f0d2e-5c3a-4e8f-9a7b-1d2c3e4f5a6b",
  "file_hash": "7fd6a19855329dc7",
  "mime_type": "video/mp4",
  "size": 8421337,
  "width": 1920,
  "height": 1080,
  "duration": 59.4,
  "result_data": { "media_id": "6b1f0d2e-5c3a-4e8f-9a7b-1d2c3e4f5a6b", "file_hash": "7fd6a19855329dc7", "width": 1920, "height": 1080, "duration": 59.4 },
  "export_job": { "id": "92e54de7-ca6e-4107-ac23-9e4e822f72ff", "type": "export_video", "status": "completed", "source_type": "api", "output": { "media_id": "6b1f0d2e-5c3a-4e8f-9a7b-1d2c3e4f5a6b", "url": "https://storage.rendley.com/exports/ab29a4fd-...?X-Amz-Signature=...", "url_expires_at": "2026-09-08T17:46:24Z", "mime_type": "video/mp4", "size": 8421337, "duration": 59.4 } },
  "kvs_key": "OUTPUT_VIDEO",
  "kvs_url": "https://api.apify.com/v2/key-value-stores/.../records/OUTPUT_VIDEO",
  "url_expiry": "Download URLs are signed and expire after a few hours; use the key-value store copy (kvs_url) for a durable link."
}
```

With **Export a video file** off, the fields from `job_id` onward are replaced by a `note` saying the edited project is ready in Rendley. A run that reaches its Apify timeout while the job is still going pushes `status` = `running` with the IDs and a note. A failed run pushes `{ "status": "failed", "error": "..." }` and exits with an error, so schedules and integrations can react.

### Inputs

| Input | What it is |
| --- | --- |
| **Rendley API key** | Your key from app.rendley.com/settings. Stored as a secret. |
| **Prompt** | What the agent should create or change. |
| **Files** | Public URLs of clips, images or audio for the agent to work with. |
| **Project ID** | Leave empty to create a new project, or set it to edit an existing one. |
| **Workspace** | The workspace for a new project. Leave empty for your first workspace, or give a name or ID. |
| **Thread ID** | Continue an earlier conversation on the same project. |
| **Export a video file** | Export the finished project to a video file. On by default. |
| **Resolution**, **Quality**, **Format** | Settings for the exported video. |
| **Job ID** | The agent job or export job of a run that reached its timeout. The run fetches it instead of starting a new job. |
| **Copy the video to the key-value store** | Stream a copy of the video into the run so the link does not expire. On by default. |
| **API base URL** | Leave empty unless Rendley gave you a different API host. |

### Runs, waiting and cost

The agent and the export run on Rendley, not in the Actor, so the run only polls while it waits. At the Actor's 128 MB an hour of waiting costs about two cents of Apify compute, and a typical edit far less. The run waits until two minutes before its Apify timeout, one hour by default and settable per run. If the job is still going then, the run ends with `status` = `running`, the `agent_job_id` and the `project_id`, so nothing is lost. Run the Actor again with that ID in **Job ID** and it waits for the rest. When the agent is done, that run starts the export, remembers it, and waits for it. The export is only ever started once per agent job, so running again costs nothing on Rendley. The Actor keeps that link between agent job and export in a key-value store named `rendley-ai-video-agent-exports` in your Apify account.

The Actor forwards requests and streams files, so it needs no memory to speak of. It runs in 128 MB, the smallest memory Apify offers, which is its default.

### Projects and workspaces

- **Project ID** is optional. Leave it empty and the run creates a project named after the prompt. Set it to edit an existing project, and the run's `project_id` output lets you keep editing the same project later.
- **Workspace** is only used when a project is created. It defaults to your first workspace; give another workspace's name or ID to use it. Every run logs your workspaces with their IDs, so you can copy one from the log.
- **Thread ID** continues an earlier conversation with the agent. Pass the `thread_id` from a previous run together with its `project_id`.

### Output files and expiring links

The `url` in the result is a signed Rendley link that **expires after a few hours**. With **Copy the video to the key-value store** on (the default), the run that receives the finished export streams the video into its key-value store, under the Output tab, and the result's `kvs_url` points to that copy. That link does not expire.

### FAQ

**Which workspace does the video go to?** Your first workspace unless you set **Workspace**. Give a name or an ID; the run log lists them.

**Can I keep editing the same video?** Yes. Pass the run's `project_id` into the next run, and its `thread_id` too if you want to keep the conversation.

**Why did my run end with status running?** It reached its Apify timeout while the agent or the export was still going. The dataset item has the job ID. Run the Actor again with it in **Job ID**, or give runs a longer timeout.

**Is my API key stored?** It is a secret input field. Apify encrypts it and it never appears in logs or the dataset.

**What if the agent needs more information?** When a prompt is ambiguous the agent asks a question, which the Actor reports as an error. Make the prompt specific about length, format and captions, and run again.

### Support

The Rendley documentation lives at <https://docs.rendley.com>. For issues with the Actor, open a ticket on the Actor's Issues tab.

# Actor input Schema

## `rendley_api_key` (type: `string`):

Create one at https://app.rendley.com/settings. The agent and renders need an active Rendley subscription with credits.

## `prompt` (type: `string`):

What the agent should create or change, for example "Cut this interview down to a 30-second teaser with captions" or "Make a 15-second product teaser from these clips". Leave it empty only when Job ID is set.

## `files` (type: `array`):

Public URLs of clips, images or audio for the agent to work with. Leave empty when the prompt only uses generated media or the project's existing files.

## `project_id` (type: `string`):

Leave empty to create a new project for this run. Set it to edit an existing Rendley project instead.

## `workspace_id` (type: `string`):

Only used when a project is created. Leave empty for your first workspace, or give another workspace's name or ID.

## `thread_id` (type: `string`):

Continue a previous agent conversation by passing the thread\_id from an earlier run together with its project\_id.

## `render` (type: `boolean`):

Export the finished project to a video file once the agent is done. Turn off to keep the edited project in Rendley Studio and continue editing it there.

## `resolution` (type: `string`):

Output resolution of the rendered video.

## `quality` (type: `string`):

Encoding quality of the rendered video.

## `codec` (type: `string`):

H.264 produces an MP4; VP8 produces a WebM.

## `job_id` (type: `string`):

The ID of a job from an earlier run, from the dataset item of a run that reached its timeout before the job finished (the agent\_job\_id or the export job\_id). The run fetches that job instead of starting a new one, waits for it if needed and returns the result. The other inputs are ignored.

## `save_to_kvs` (type: `boolean`):

Stream the exported video into this run's key-value store as OUTPUT\_VIDEO, so there is a link that does not expire. Rendley's own download URLs expire after a few hours. The file is streamed, so the smallest memory setting is enough.

## `api_base_url` (type: `string`):

Leave empty unless Rendley gave you a different API host.

## Actor input object example

```json
{
  "prompt": "Create a short, engaging social-media video using high-quality stock footage. Use an interesting, modern layout with dynamic cuts, varied framing, and smooth transitions. Add bold, clean text overlays on top of the footage, with the text appearing at key moments and remaining easy to read. Keep the overall style polished, energetic, visually appealing, and concise.",
  "render": true,
  "resolution": "1080p",
  "quality": "high",
  "codec": "h264",
  "save_to_kvs": true
}
```

# Actor output Schema

## `results` (type: `string`):

One dataset item per run with the status, project, thread and job IDs, the agent's message, the exported video's signed URL and the key-value store copy URL.

## `video` (type: `string`):

Durable copy of the exported video (MP4, or WebM when the VP8 format is chosen), present once a run has picked up a finished export.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "prompt": "Create a short, engaging social-media video using high-quality stock footage. Use an interesting, modern layout with dynamic cuts, varied framing, and smooth transitions. Add bold, clean text overlays on top of the footage, with the text appearing at key moments and remaining easy to read. Keep the overall style polished, energetic, visually appealing, and concise."
};

// Run the Actor and wait for it to finish
const run = await client.actor("rendley/rendley-ai-video-agent").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "prompt": "Create a short, engaging social-media video using high-quality stock footage. Use an interesting, modern layout with dynamic cuts, varied framing, and smooth transitions. Add bold, clean text overlays on top of the footage, with the text appearing at key moments and remaining easy to read. Keep the overall style polished, energetic, visually appealing, and concise." }

# Run the Actor and wait for it to finish
run = client.actor("rendley/rendley-ai-video-agent").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "prompt": "Create a short, engaging social-media video using high-quality stock footage. Use an interesting, modern layout with dynamic cuts, varied framing, and smooth transitions. Add bold, clean text overlays on top of the footage, with the text appearing at key moments and remaining easy to read. Keep the overall style polished, energetic, visually appealing, and concise."
}' |
apify call rendley/rendley-ai-video-agent --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rendley/rendley-ai-video-agent"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Gznof7QY6qJmabjVv/builds/2I9ktNOR7MfMy8qHU/openapi.json
