Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.runflow.io/llms.txt

Use this file to discover all available pages before exploring further.

Pricing: $0.034/second. Endpoint: POST /v1/models/heygen/v3/video-agent/runs.
Generate videos with a single prompt. Describe what you want in plain text, and the agent handles avatar selection, scripting, scene composition - all in one.

Overview

Pricing

  • Base price: $0.034/second
  • Note: Usage-based, per second of generated video

HeyGen Video Agent V3 API

Endpoint: POST /v1/models/heygen/v3/video-agent/runs

Run the model

Python

import requests

response = requests.post(
    "https://api.runflow.io/v1/models/heygen/v3/video-agent/runs",
    headers={"Authorization": "Bearer RUNFLOW_API_KEY"},
    json={
        "input": {
            "prompt": "Create a 20-second professional product announcement video from a CTO introducing a new AI video platform to prospective customers. Modern office backdrop, warm professional lighting, confident tone, medium shot, minimal graphics. End with call-to-action."
        },
        "callback_url": "https://your-server.com/webhook"
    },
)

data = response.json()
print(data)

Node.js

const response = await fetch(
  "https://api.runflow.io/v1/models/heygen/v3/video-agent/runs",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer RUNFLOW_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
        "input": {
            "prompt": "Create a 20-second professional product announcement video from a CTO introducing a new AI video platform to prospective customers. Modern office backdrop, warm professional lighting, confident tone, medium shot, minimal graphics. End with call-to-action."
        },
        "callback_url": "https://your-server.com/webhook"
    }),
  }
);

const data = await response.json();
console.log(data);

cURL

curl -X POST https://api.runflow.io/v1/models/heygen/v3/video-agent/runs \
  -H "Authorization: Bearer $RUNFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @- <<'JSON'
{
    "input": {
        "prompt": "Create a 20-second professional product announcement video from a CTO introducing a new AI video platform to prospective customers. Modern office backdrop, warm professional lighting, confident tone, medium shot, minimal graphics. End with call-to-action."
    },
    "callback_url": "https://your-server.com/webhook"
}
JSON

Request parameters

ParameterTypeRequiredDescription
inputobjectrequiredModel input parameters. See “Input schema” below.
callback_urlstring | nulloptionalWebhook URL - POSTed when the run reaches a terminal state.
metadataobject | nulloptionalArbitrary key-value pairs attached to the run.

Input schema

FieldTypeRequiredAllowed valuesDescription
promptstringrequiredAnyNatural language prompt describing the video to generate. The agent handles avatar selection, script, and production automatically.
orientationstringoptionallandscape, portraitVideo orientation. Auto-detected from the prompt if omitted.
avatarstringoptionalAnyAvatar to use in the video. Set to ‘auto’ to let the agent auto-select based on the prompt.
file_urlsfile_listoptionalAnyURLs of files to include as assets in the video (images, videos, audio, PDFs). Maximum 20 files.
incognito_modebooleanoptionalAnyWhen enabled, disables the agent’s memory functions.
style_idstringoptionalAnyStyle template ID from the /v3/video-agent/styles endpoint.
voicestringoptionalAnyVoice for narration. Set to ‘auto’ to let the agent auto-select.

Output schema

FieldTypeDescription
outputsjsonUnified output array.
seedjsonSeed used for generation, or null.
timingjsonProvider timing info, or null.
nsfw_detectedjsonNSFW flag, or null.

Callback payload

When you provide a callback_url, Runflow POSTs to it once the run reaches a terminal state.
FieldTypeDescription
eventstringEvent type: “run.completed”, “run.failed”, or “run.cancelled”.
run_idstringThe unique identifier of the run.
statusstringTerminal status: “succeeded”, “failed”, or “cancelled”.
outputobject | nullThe run output. Null if the run failed or was cancelled.
duration_msnumber | nullTotal run duration in milliseconds.
created_atstring | nullISO 8601 timestamp when the run was created.
completed_atstring | nullISO 8601 timestamp when the run reached terminal state.
metadataobject | nullThe metadata object passed at run creation, if any.
  • Retries: 3 attempts with exponential backoff (1s, 2s). Retries on 5xx / network errors only.
  • Headers: Runflow-Request-Id is always sent. Runflow-Signature is sent if a signing secret is configured.

Additional Resources

Browse all models

Browse the catalog.

Run lifecycle

Callbacks, polling, statuses.

Callbacks

Handle async results.

Pricing

How requests bill out.