Skip to main content
Using an AI agent? Copy the docs link for full API context:
https://docs.viggle.ai/llms-full.txt

Rendering modes

Send an image + video in one request.
On-demand renders cost 1 credit/second of output video. No separate character charge.
import requests, time
API_KEY, BASE = "YOUR_API_KEY", "https://apis.viggle.ai"
h = {"Authorization": f"Bearer {API_KEY}"}
job = requests.post(f"{BASE}/api/render", headers=h, files={
    "ref_image": open("character.png", "rb"),
    "driving_video": open("dance.mp4", "rb"),
}).json()
while True:
    s = requests.get(f"{BASE}/api/render/{job['job_id']}").json()
    if s["status"] == "complete": break
    time.sleep(3)
video = requests.get(s["cdn_url"])
open("output.mp4", "wb").write(video.content)

On-Demand Guide

Render options, polling, and error handling

Model selection

Two avatar models are available:
ModelDescription
V4_PreviewDefault model
V3_PreviewAlternative avatar model with a dedicated GPU pool
On-demand renders: pass model on POST /api/render:
curl -X POST "https://apis.viggle.ai/api/render" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "[email protected]" -F "[email protected]" \
  -F "model=V3_Preview"
Preprocessed renders: pass model when creating the scene, not at render time. The model is baked into the scene metadata and automatically used for all renders with that scene:
# Preprocess scene with V3
curl -X POST "https://apis.viggle.ai/api/scenes/preprocess" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "[email protected]" -F "name=V3 Dance" -F "model=V3_Preview"

# Render — model is auto-detected from the scene
curl -X POST "https://apis.viggle.ai/api/render" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d "character_id=CHAR_ID" -d "scene_id=SCENE_ID"
A scene preprocessed on V3 cannot be rendered with V4 (and vice versa). The API returns an error if the models don’t match.

Quick start

Get your API key

Create one in the Viggle Dashboard.

Pick a mode

Use the Rendering modes tabs: On-Demand (fastest first render), Preprocessed (~3x faster at scale), or Import Templates.

Render

POST /api/render — poll GET /api/render/{job_id} every 3-5s until complete, then use cdn_url to download.

Resources

Discord Community

Support and discussions

API Reference

Full endpoint documentation

Pricing

1 credit/sec — about $0.01/sec