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
Get an API key
Create a project-scoped runtime API key in the Opper dashboard.
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:
| Model | Example parameters |
|---|---|
openai/sora-2 | { "seconds": "4", "size": "1280x720" } |
xai/grok-imagine-video | { "duration": 6, "aspect_ratio": "16:9", "resolution": "720p" } |
pruna/wan-t2v | { "resolution": "720p", "aspect_ratio": "16:9" } |
vertexai/veo-3.1-fast-generate-001 | { "durationSeconds": 4, "resolution": "720p", "generateAudio": false } |
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 or a data-URI.
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.
| Provider | image / video accepts |
|---|---|
| Sora | http URL or base64/data-URI. The image’s pixel dimensions must equal the requested size. |
| Veo | base64 / data-URI / gs:// URI only — an http URL is not fetched. (A gs:// object must be readable by Opper’s Vertex service account, so base64/data-URI is the reliable choice.) |
| Pruna, xAI | a public, server-fetchable URL only (a data-URI or private URL won’t work). |
Reference
- Generate a video —
POST /v3/videos - List video models —
GET /v3/videos/models