Skip to main content
Base URL:
All endpoints require Authorization: Bearer YOUR_API_KEY.

Request and response conventions

Public ID formats

IDs are opaque values generated by Viggle. Preserve them exactly as returned; do not construct, shorten, or strip their prefixes. There is no separate avatar_/anim_ ID family — 3D vsplat and glb extraction are now tracked on the owning Character/Motion itself (type, vsplat, glb) and downloaded via /export, not through their own resources. video_id on the Videos endpoints accepts both render_ and vid_ prefixed IDs — a Render and an H3 text-to-video generation are both read back as the same unified video resource.

Success and error responses

Creation endpoints return 200 OK (or, for the draft-based render flow, 202 Accepted) with an asynchronous resource in queued state. A resource status request can return 200 OK with status: "failed"; always inspect both the HTTP status and the response body.
See Errors and recovery for the full code vocabulary and how to use retryable/remediation.

Resources

Code examples

Go, JavaScript, Python, and cURL requests for the current V1 endpoints.
H3 Video Generation (POST /v1/videos) generates a Viggle-optimized MiniMax H3 video with native audio on every clip. quality=low generates faster, for quicker iteration; quality=high produces higher-fidelity output — both tiers are billed at the same $0.01 per generated second. See Generate Video (from Text) and Pricing and retention.

Resource model

V1 separates reusable content from work performed on that content: Direct image and motion_video inputs on POST /v1/renders are one-time inputs. They do not create a Character or Motion that appears in an asset list. Create an asset explicitly when it needs to be reused.

Endpoint index

Conventions

  • Requests that upload media use multipart/form-data, or the draft-based flow’s direct-upload PUT URLs.
  • IDs are resource-prefixed, such as char_... and render_....
  • Characters and Motions use queued, processing, ready, and failed; Renders may also reach cancelled — but a client cannot request cancellation, only observe it.
  • Error responses use { "error": { "code", "message", "retryable", "request_id", "details", "remediation" } }. Internal worker and pipeline codes are never exposed.