Generate a video
Submit a video job in image-to-video, text-to-video, or text-to-video-styled mode.
mode field selects the request shape
(image_to_video, text_to_video, or text_to_video_styled) and the call returns
202 Accepted with a job id; poll
GET /videos/generations/{id} for the
result. Check GET /videos/models for each
engine’s supported duration, resolution, aspect_ratio, end-frame, and audio
support.
Example: image-to-video with a start and end frame
Inimage_to_video mode, image is the start frame and end_image an optional
end frame (only on end-frame-capable engines — see supports_end_frame in
GET /videos/models). Each frame takes
exactly one of image_id, url, or base64 + mime_type.
duration is required and must be one the engine supports (see durations in
GET /videos/models) — an unsupported value
returns 422. For text_to_video_styled, style_id is required alongside
prompt and duration; the request body dropdown above shows all three modes.Authorizations
Organization API key as a bearer token: Authorization: Bearer samsa_sk_....
Headers
Body
- PublicImageToVideoRequest
- PublicTextToVideoRequest
- PublicTextToVideoStyledRequest
mode: image_to_video — animate a start frame (optional end frame).
Clip length in seconds. Each engine supports a specific set — see durations in GET /videos/models. Unsupported values return 422.
8
The start frame: exactly one of image_id, url, or base64+mime_type.
Video engine — a public engine id from GET /videos/models (e.g. veo_3_1_lite, the default). Unknown engines return 422.
"veo_3_1_lite"
Aspect ratio — 16:9, 9:16, or 1:1 (engine-dependent; see aspect_ratios in GET /videos/models).
"16:9"
Output resolution — 720p, 1080p, or 4k where the engine supports it (see resolutions in GET /videos/models). Omit to use the engine default. Credits scale with the engine's resolution multipliers.
"720p"
Generate audio with the video — audio-capable engines only (see supports_audio in GET /videos/models); adds the engine's audio credit multiplier.
false
Optional https webhook notified once on terminal status (signed per the webhook signature scheme; see the webhooks docs).
"https://example.com/webhooks/samsa"
"image_to_video"Optional end frame — only for end-frame-capable engines (see supports_end_frame in GET /videos/models).
Optional text prompt guiding the motion.
1"The camera slowly pans right as waves roll in"
Response
Successful Response
202 body for POST /videos/generations (ADR §7.1).
The video job id — poll GET /videos/generations/{id}.
Initial status: always pending at submit.
pending, processing, completed, failed, cancelled "pending"
The requested mode — image_to_video, text_to_video, or text_to_video_styled.
"text_to_video"
Credits this job is expected to cost (base 5/sec x engine multiplier x resolution x audio; styled adds a flat 10 for the intermediate image).
80

