POST /v3/videos is a deterministic, provider-agnostic video endpoint. You pass a
model and a prompt; Opper runs the job and gives you a URL to poll. The same
two-step flow works across every video provider (OpenAI Sora, xAI Grok-Imagine,
Pruna Wan, Google Veo) — only the contents of parameters differ per model.
Video generation is asynchronous: submitting returns immediately with an
id, and you poll for the result. A clip typically takes from ~30 seconds to a
few minutes depending on the model, resolution, and duration.How it works
- Submit —
POST /v3/videoswithmodel+prompt→202 { id, status_url } - Poll —
GET {status_url}untilstatusiscompletedorfailed - Download — fetch the presigned
urlfrom the completed response (valid 1 hour)
Run your first generation
1
Get an API key
Create a project-scoped runtime API key in the Opper dashboard.
2
Submit a generation
- curl
- Python
3
Poll until ready, then download
- curl
- Python
Models and parameters
model and prompt are the only fields Opper owns. Everything inside
parameters is forwarded verbatim to the provider, which validates and
rejects it — so the accepted keys depend on the model. Common examples:
To discover what’s available programmatically — including each model’s accepted
aspect_ratios, resolutions, and max_duration — call
GET /v3/videos/models:
capabilities tells you the input modality: video_generation is
text-to-video, image_to_video needs a reference image, and video_editing is
video-to-video.
Reference image and video
Alongsideprompt, you can pass a top-level image (image-to-video) or video
(video-to-video). Each is an http(s) URL, a data-URI, or a file_id.
image— supported byimage_to_videomodels:openai/sora-2,openai/sora-2-pro,vertexai/veo-3.1-generate-001,vertexai/veo-3.1-fast-generate-001,pruna/wan-i2v,xai/grok-imagine-video.video— supported byvideo_editingmodels:pruna/vace.
A
file_id from a previous image generation or upload works as the seed image here — no re-upload. See Files for how files work, lifecycle, and storage quotas.Seed a video from a file_id
Reference
- Generate a video —
POST /v3/videos - List video models —
GET /v3/videos/models