Video · Text to video · Image to video · Video to video

HeyGen Video 1 API

HeyGen Video 1. Text, image and multi-reference video with generated sound, 5-15 seconds up to 2K.

Price
From $0.10 per run from $0.02/s
Typical time
~2 min
Model id
heygen_video_1

HeyGen Video 1 runs on one varg API key and one credit balance, the same as every other model here. You pay the provider's price, with no markup.

POST /v2/tools/video/call
curl -X POST https://api.varg.ai/v2/tools/video/call \
  -H "Authorization: Bearer $VARG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "heygen_video_1",
  "prompt": "A barista slides a latte across the counter and smiles at the camera, warm cafe ambience.",
  "aspect_ratio": "16:9",
  "duration": 5
}'

HeyGen Video 1 pricing

From $0.10 per run. Prices are in US dollars and are the provider's own, with no markup. HeyGen Video 1 has 3 routes: "model": "heygen_video_1" picks one automatically, or pass a route key as "model" to pin it. For the exact price of a request, send the same body to POST https://api.varg.ai/v2/estimate.

  • heygen from $0.02/s
    heygen:heygen-video-1/text-to-video

    Text to video HeyGen Video 1 text-to-video — 5-15 s, 480p / 768p / 2k, generated sound.

    Resolution 480p
    $0.02/s
    Resolution 2k
    $0.09/s
    Other
    $0.03/s
    Minimum charge
    $0.10
    Most one request can cost
    $1.35
    Typical time
    ~2 min
  • heygen from $0.02/s
    heygen:heygen-video-1/image-to-video

    Image to video HeyGen Video 1 image-to-video — the image is the literal first frame; 5-15 s, generated sound.

    Resolution 480p
    $0.02/s
    Resolution 2k
    $0.09/s
    Other
    $0.03/s
    Minimum charge
    $0.10
    Most one request can cost
    $1.35
    Typical time
    ~2 min
  • heygen from $0.04/s
    heygen:heygen-video-1/reference-to-video

    Image to video, Video to video HeyGen Video 1 reference-to-video — up to 9 images, 3 videos and 3 audio clips (<Picture N> / <Video N> in the prompt).

    Resolution 480p
    $0.04/s
    Resolution 2k
    $0.18/s
    Other
    $0.06/s
    Minimum charge
    $0.20
    Most one request can cost
    $2.70
    Typical time
    ~2 min

HeyGen Video 1 inputs

The JSON body of the request. Media inputs are URLs: upload a local file with POST /v2/files and pass the URL it returns. Full JSON Schema, no key needed: api.varg.ai/v2/tools/video?model=heygen_video_1

HeyGen Video 1 request fields
FieldWhat it does
model string requiredheygen_video_1 picks a route automatically. To pin one, pass a route key from Pricing above.
prompt string —
files array of { url } —
aspect_ratio string Allowed e.g. 16:9 | 9:16 | 1:1 | 4:3 | 3:4 | 21:9 | auto
resolution string Quality tier. Supported by this model: 480p, 720p, 1080p. Unsupported tiers fall back to the nearest available. Allowed 480p | 720p | 1080p | 4k
audio boolean Native audio track request. Not supported by this model — ignored if sent.
duration integer Length in seconds. Supported by this model's routes: heygen: integer 5-15. A non-numeric value such as "auto" is routed to a route whose schema accepts it; when none does, the request is rejected. Allowed 5–15

Provider options

Optional, under provider_options.<provider>. Only the options of the provider that runs the job apply; pin a route to choose it.

provider_options.heygen

HeyGen Video 1 options for heygen
FieldWhat it does
prompt string Instructions for the video to generate. At most 16,000 Unicode characters.
mode string Generate from the prompt alone.
duration integer Requested video duration in whole seconds, from 5 through 15 inclusive. Allowed 5–15
resolution string Allowed 480p | 768p | 2k
aspect_ratio string Allowed 21:9 | 16:9 | 4:3 | 1:1 | 3:4 | 9:16 | adaptive
prompt_enhancement string Allowed turbo | quality | default | disabled

Call the HeyGen Video 1 API

POST https://api.varg.ai/v2/tools/video/call with Authorization: Bearer $VARG_API_KEY. It answers 202 with a job right away.

1. Send the request

cURL
curl -X POST https://api.varg.ai/v2/tools/video/call \
  -H "Authorization: Bearer $VARG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "heygen_video_1",
  "prompt": "A barista slides a latte across the counter and smiles at the camera, warm cafe ambience.",
  "aspect_ratio": "16:9",
  "duration": 5
}'
JavaScript
JavaScript
const headers = {
  Authorization: `Bearer ${process.env.VARG_API_KEY}`,
  'Content-Type': 'application/json',
}

const res = await fetch('https://api.varg.ai/v2/tools/video/call', {
  method: 'POST',
  headers,
  body: JSON.stringify({
    "model": "heygen_video_1",
    "prompt": "A barista slides a latte across the counter and smiles at the camera, warm cafe ambience.",
    "aspect_ratio": "16:9",
    "duration": 5
  }),
})
const job = await res.json() // { id: "job_…", status: "queued" }
Python
Python
import os
import requests

headers = {"Authorization": f"Bearer {os.environ['VARG_API_KEY']}"}

job = requests.post(
    "https://api.varg.ai/v2/tools/video/call",
    headers=headers,
    json={
      "model": "heygen_video_1",
      "prompt": "A barista slides a latte across the counter and smiles at the camera, warm cafe ambience.",
      "aspect_ratio": "16:9",
      "duration": 5
    },
).json()  # {"id": "job_…", "status": "queued"}

2. Get the result

Poll the job until its status is completed, failed or cancelled; HeyGen Video 1 typically takes about 2 min. The result is at output.outputs[0].url.

GET /v2/jobs/{id}
curl https://api.varg.ai/v2/jobs/$JOB_ID \
  -H "Authorization: Bearer $VARG_API_KEY"

# Poll until "status" is completed, failed or cancelled.
# The result is in output.outputs[0].url
JavaScript
JavaScript
let current = job
while (!['completed', 'failed', 'cancelled'].includes(current.status)) {
  await new Promise((resolve) => setTimeout(resolve, 3000))
  current = await (await fetch(`https://api.varg.ai/v2/jobs/${current.id}`, { headers })).json()
}
console.log(current.output?.outputs?.[0]?.url)
Python
Python
import time

while job["status"] not in ("completed", "failed", "cancelled"):
    time.sleep(3)
    job = requests.get(f"https://api.varg.ai/v2/jobs/{job['id']}", headers=headers).json()

print(job["output"]["outputs"][0]["url"])
Or take a webhook instead of polling

Add options.webhook_url and varg POSTs the finished job to it.

request body
{
  "model": "heygen_video_1",
  "prompt": "A barista slides a latte across the counter and smiles at the camera, warm cafe ambience.",
  "aspect_ratio": "16:9",
  "duration": 5,
  "options": {
    "webhook_url": "https://your-app.com/varg-webhook"
  }
}

From Claude, ChatGPT or Cursor (MCP)

The varg MCP server, https://mcp.varg.ai/mcp, runs HeyGen Video 1 with call_tool. Sign in with varg, no API key to paste. How to connect it

call_tool
{
  "tool": "video",
  "input": {
    "model": "heygen_video_1",
    "prompt": "A barista slides a latte across the counter and smiles at the camera, warm cafe ambience.",
    "aspect_ratio": "16:9",
    "duration": 5
  },
  "wait": true
}

HeyGen Video 1 API: questions

How much does HeyGen Video 1 cost on varg?
HeyGen Video 1 costs from $0.10 per run on varg (from $0.02/s on the cheapest route). varg charges the provider's price with no markup, from one credit balance. For the exact price of a request before you run it, send the same body to POST https://api.varg.ai/v2/estimate.
How do I call the HeyGen Video 1 API?
Send POST https://api.varg.ai/v2/tools/video/call with the header "Authorization: Bearer $VARG_API_KEY" and a JSON body that includes "model": "heygen_video_1". The call answers 202 with a job right away. Poll GET https://api.varg.ai/v2/jobs/{id} until "status" is "completed", then read output.outputs[0].url, or pass options.webhook_url to be called back.
Can I use HeyGen Video 1 from Claude, ChatGPT or Cursor?
Yes. Add the varg MCP server (https://mcp.varg.ai/mcp) to Claude, ChatGPT, Cursor or any other MCP client and sign in with varg, with no API key to paste. The agent runs HeyGen Video 1 with call_tool, passing tool "video" and "model": "heygen_video_1".
How long does a HeyGen Video 1 request take?
Typically about 2 min on the fastest route, by the catalog's estimate. The API answers at once with a job id, so nothing waits on an open connection while it runs.

For AI agents: this page as Markdown is varg.ai/models/heygen_video_1.md, and every model is listed in varg.ai/models/llms.txt.