Using an AI agent? Copy the docs link for full API context:
https://docs.viggle.ai/llms-full.txt
Rendering modes
On-Demand
Preprocessed
Import Templates
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
Create character (1 credit) + scene (free) once, then render with IDs for lower latency. import requests
API_KEY , BASE = "YOUR_API_KEY" , "https://apis.viggle.ai"
h = { "Authorization" : f "Bearer { API_KEY } " }
char = requests.post( f " { BASE } /api/characters/preprocess" , headers = h,
files = { "image" : open ( "character.png" , "rb" )}, data = { "name" : "My Character" }).json()
scene = requests.post( f " { BASE } /api/scenes/preprocess" , headers = h,
files = { "video" : open ( "dance.mp4" , "rb" )}, data = { "name" : "Dance" }).json()
job = requests.post( f " { BASE } /api/render" , headers = h, data = {
"character_id" : char[ "id" ], "scene_id" : scene[ "id" ],
}).json()
Preprocessing Guide Polling, download, and asset reuse
Use templates from viggle.ai instead of uploading a driving video. import requests
API_KEY , BASE = "YOUR_API_KEY" , "https://apis.viggle.ai"
h = { "Authorization" : f "Bearer { API_KEY } " , "Content-Type" : "application/json" }
scene = requests.post( f " { BASE } /api/scenes/import" , headers = h,
json = { "template_uuid" : "TEMPLATE_UUID_FROM_VIGGLE" }).json()
Import Templates Guide Hot Picks, multi-person templates, character mapping
Model
V3_Preview (default) or V4_Preview. Pass model on character preprocess, scene preprocess, and render requests. Characters and scenes are bound to the model they were preprocessed with and can only be used in renders with the same model.
Quick start
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