POST /v1/videos, and poll the returned video until it’s ready. prompt is still required even though you’re also supplying an image — text guides how the frame animates. This is one of three H3 Video modes; see also Text to Video and First-Last Frames to Video.
Set VIGGLE_API_KEY and run the example below as-is — it uses a Viggle-hosted sample image, so you don’t need to prepare your own starting frame first.
What you need
- An API key from the Viggle Dashboard, exported as
VIGGLE_API_KEY - A non-empty text prompt and a
qualitychoice:loworhigh
The example below references a placeholder sample asset URL (
https://assets.viggle.ai/samples/first-frame.png). Swap in your own first_frame_image/first_frame_image_url, or Viggle’s published sample asset once available.Generate and poll the video
Response
status: "queued" — it’s an acceptance acknowledgment, not the final result. Poll GET /v1/videos/{video_id} every 3–5 seconds until status is ready, failed, or cancelled, then read video_url — a signed link, valid for 1 hour and re-signed on every read. Supply exactly one of first_frame_image (file upload) or first_frame_image_url; supplying both answers 400 INVALID_REQUEST.
See Pricing and retention — image-conditioned generation costs the same as text-only for the same quality and duration_s.
Generate Video (from First Frame and/or Text)
See every field, both upload forms, and common validation errors.

