Skip to main content
The Render API combines a character and scene to generate an animated video. Submit a render job, poll the status endpoint until complete, and download the final video from the cdn_url.

Job Status Flow

Jobs progress through the following statuses:
StatusDescription
queuedJob is waiting in the queue
processingJob is being prepared
renderingVideo frames are being generated
mergingFinal video is being assembled
completeVideo is ready — use cdn_url to download
failedJob failed (check error_code and error_message fields)

Polling Example

import requests, time

API_KEY, BASE = "YOUR_API_KEY", "https://apis.viggle.ai"
headers = {"Authorization": f"Bearer {API_KEY}"}

# Create render job
job = requests.post(f"{BASE}/api/render", headers=headers, data={
    "character_id": "char_xxx",
    "scene_id": "scene_xxx",
}).json()

# Poll until complete (no auth required)
while True:
    status = requests.get(f"{BASE}/api/render/{job['job_id']}").json()
    print(f"Status: {status['status']} ({status.get('progress_pct', 0)}%)")
    if status["status"] == "complete":
        print(f"Video: {status['cdn_url']}")
        break
    elif status["status"] == "failed":
        raise Exception(f"{status.get('error_code')}: {status.get('error_message')}")
    time.sleep(3)

# Download
video = requests.get(status["cdn_url"])
open("output.mp4", "wb").write(video.content)

Create Render Job

Start a single-character render

Multi-Character Render

Render multiple people with different avatars

Get Job Status

Check render progress (no auth required)

Cancel Job

Cancel a running job and refund credits

On-Demand Guide

Render without preprocessing — one API call

Import Templates

Find and import pre-made scenes from viggle.ai