Video rendering · Text to video
Render API
Render a varg composition written as code into a finished video in the cloud. Flat price per run.
- Price
- From $0.05 per run
- Typical time
- ~2 min
- Model id
render
Render 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.
curl -X POST https://api.varg.ai/v2/tools/render/call \
-H "Authorization: Bearer $VARG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "render",
"code": "\nconst music = Music({\n prompt: \"dark cyberpunk electronic odyssey, brooding synth bass, pulsing industrial beats, neon noir atmosphere, dystopian city vibes\",\n model: elevenlabs.musicModel(\"music_v1\"),\n volume: 0.75,\n duration: 10\n});\n\nconst vid = Video({\n prompt: \"slow cinematic drone glide low through rain-soaked cyberpunk alleyway at night, neon signs reflecting in puddles, steam rising from grates, holographic advertisements flickering on walls, atmospheric fog, flying vehicles in the distance\",\n model: varg.videoModel(\"kling-v3\"),\n duration: 10,\n aspectRatio: \"16:9\"\n});\n\nexport default (\n <Render width={1920} height={1080}>\n <Clip duration={10}>\n {vid}\n </Clip>\n {music}\n </Render>\n);\n",
"verbose": true
}'Render pricing
From $0.05 per run. Prices are in US dollars and are the provider's own, with no markup. For the exact price of a request, send the same body to POST https://api.varg.ai/v2/estimate.
- varg $0.05
varg:renderText to video
- Fixed price
- $0.05
- Typical time
- ~2 min
Render 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/render?model=render
| Field | What it does |
|---|---|
model string required | render picks a route automatically. |
code string required | — |
verbose boolean | — |
mode string | Allowed strict | preview |
output string | Allowed video | frames |
Call the Render API
POST https://api.varg.ai/v2/tools/render/call with Authorization: Bearer $VARG_API_KEY. It answers 202 with a job right away.
1. Send the request
curl -X POST https://api.varg.ai/v2/tools/render/call \
-H "Authorization: Bearer $VARG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "render",
"code": "\nconst music = Music({\n prompt: \"dark cyberpunk electronic odyssey, brooding synth bass, pulsing industrial beats, neon noir atmosphere, dystopian city vibes\",\n model: elevenlabs.musicModel(\"music_v1\"),\n volume: 0.75,\n duration: 10\n});\n\nconst vid = Video({\n prompt: \"slow cinematic drone glide low through rain-soaked cyberpunk alleyway at night, neon signs reflecting in puddles, steam rising from grates, holographic advertisements flickering on walls, atmospheric fog, flying vehicles in the distance\",\n model: varg.videoModel(\"kling-v3\"),\n duration: 10,\n aspectRatio: \"16:9\"\n});\n\nexport default (\n <Render width={1920} height={1080}>\n <Clip duration={10}>\n {vid}\n </Clip>\n {music}\n </Render>\n);\n",
"verbose": true
}'JavaScript
const headers = {
Authorization: `Bearer ${process.env.VARG_API_KEY}`,
'Content-Type': 'application/json',
}
const res = await fetch('https://api.varg.ai/v2/tools/render/call', {
method: 'POST',
headers,
body: JSON.stringify({
"model": "render",
"code": "\nconst music = Music({\n prompt: \"dark cyberpunk electronic odyssey, brooding synth bass, pulsing industrial beats, neon noir atmosphere, dystopian city vibes\",\n model: elevenlabs.musicModel(\"music_v1\"),\n volume: 0.75,\n duration: 10\n});\n\nconst vid = Video({\n prompt: \"slow cinematic drone glide low through rain-soaked cyberpunk alleyway at night, neon signs reflecting in puddles, steam rising from grates, holographic advertisements flickering on walls, atmospheric fog, flying vehicles in the distance\",\n model: varg.videoModel(\"kling-v3\"),\n duration: 10,\n aspectRatio: \"16:9\"\n});\n\nexport default (\n <Render width={1920} height={1080}>\n <Clip duration={10}>\n {vid}\n </Clip>\n {music}\n </Render>\n);\n",
"verbose": true
}),
})
const job = await res.json() // { id: "job_…", status: "queued" }Python
import os
import requests
headers = {"Authorization": f"Bearer {os.environ['VARG_API_KEY']}"}
job = requests.post(
"https://api.varg.ai/v2/tools/render/call",
headers=headers,
json={
"model": "render",
"code": "\nconst music = Music({\n prompt: \"dark cyberpunk electronic odyssey, brooding synth bass, pulsing industrial beats, neon noir atmosphere, dystopian city vibes\",\n model: elevenlabs.musicModel(\"music_v1\"),\n volume: 0.75,\n duration: 10\n});\n\nconst vid = Video({\n prompt: \"slow cinematic drone glide low through rain-soaked cyberpunk alleyway at night, neon signs reflecting in puddles, steam rising from grates, holographic advertisements flickering on walls, atmospheric fog, flying vehicles in the distance\",\n model: varg.videoModel(\"kling-v3\"),\n duration: 10,\n aspectRatio: \"16:9\"\n});\n\nexport default (\n <Render width={1920} height={1080}>\n <Clip duration={10}>\n {vid}\n </Clip>\n {music}\n </Render>\n);\n",
"verbose": True
},
).json() # {"id": "job_…", "status": "queued"}2. Get the result
Poll the job until its status is completed, failed or cancelled; Render typically takes about 2 min. The result is at output.outputs[0].url.
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].urlJavaScript
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
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.
{
"model": "render",
"code": "\nconst music = Music({\n prompt: \"dark cyberpunk electronic odyssey, brooding synth bass, pulsing industrial beats, neon noir atmosphere, dystopian city vibes\",\n model: elevenlabs.musicModel(\"music_v1\"),\n volume: 0.75,\n duration: 10\n});\n\nconst vid = Video({\n prompt: \"slow cinematic drone glide low through rain-soaked cyberpunk alleyway at night, neon signs reflecting in puddles, steam rising from grates, holographic advertisements flickering on walls, atmospheric fog, flying vehicles in the distance\",\n model: varg.videoModel(\"kling-v3\"),\n duration: 10,\n aspectRatio: \"16:9\"\n});\n\nexport default (\n <Render width={1920} height={1080}>\n <Clip duration={10}>\n {vid}\n </Clip>\n {music}\n </Render>\n);\n",
"verbose": true,
"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 Render with call_tool. Sign in with varg, no API key to paste. How to connect it
{
"tool": "render",
"input": {
"model": "render",
"code": "\nconst music = Music({\n prompt: \"dark cyberpunk electronic odyssey, brooding synth bass, pulsing industrial beats, neon noir atmosphere, dystopian city vibes\",\n model: elevenlabs.musicModel(\"music_v1\"),\n volume: 0.75,\n duration: 10\n});\n\nconst vid = Video({\n prompt: \"slow cinematic drone glide low through rain-soaked cyberpunk alleyway at night, neon signs reflecting in puddles, steam rising from grates, holographic advertisements flickering on walls, atmospheric fog, flying vehicles in the distance\",\n model: varg.videoModel(\"kling-v3\"),\n duration: 10,\n aspectRatio: \"16:9\"\n});\n\nexport default (\n <Render width={1920} height={1080}>\n <Clip duration={10}>\n {vid}\n </Clip>\n {music}\n </Render>\n);\n",
"verbose": true
},
"wait": true
}Render API: questions
- How much does Render cost on varg?
- Render costs from $0.05 per run on varg. 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 Render API?
- Send POST https://api.varg.ai/v2/tools/render/call with the header "Authorization: Bearer $VARG_API_KEY" and a JSON body that includes "model": "render". 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 Render 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 Render with call_tool, passing tool "render" and "model": "render".
- How long does a Render 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/render.md, and every model is listed in varg.ai/models/llms.txt.