Generate a video
Internal testing. The Video API is available only to enabled workspaces and may be temporarily disabled while its public contract is finalised. The API may change before general availability.
Create an async video generation job and poll the returned URL until the job reaches a terminal status.
input_references. Depending on the selected model, a reference can be an
image, audio file, or source video. Use GET /v1/videos/models to check the
model’s advertised input types, modes, and supported parameters before sending
the request.
After creating a job:
- use
GET /v1/videos/{video_id}for status updates - use
GET /v1/videos/{video_id}/contentwhen the job is complete - use
POST /v1/videos/{video_id}/download_urlwhen you need a short-lived signed download link - use
GET /v1/videosto review owned jobs - use
GET /v1/videos/modelsto inspect active public video models
Lifecycle notes
- Video generation is async by design. Do not expect binary video data in the create response.
- Phaseo can hold funds up front and later settle or void them when the provider reaches a terminal state.
- Terminal states include
completed,failed,cancelled, andexpired. - Webhook configuration can be included in the create request when you want lifecycle notifications instead of pure polling.
- Audio-driven jobs require one
audio_urlreference and an accurateinput_audio_duration; support and duration limits are model-dependent. LTX jobs are billed at its 20-second input ceiling because LTX does not return authoritative duration or usage. - Reference roles and valid combinations are model-dependent. A model that supports a first frame may not support multiple references, source video, or source audio.
- Webhook callback URLs must use HTTPS. Literal private, loopback, link-local, and wildcard hosts are rejected;
http://localhost,http://127.0.0.1, andhttp://[::1]are allowed only for local development callbacks. - Webhook
eventsmay use genericjob.*names or matchingvideo.*names. Includejob.progressorvideo.progressto receive progress notifications when the provider reports progress. If omitted,job.status_changedand terminaljob.*events are used. If supplied, at least one event must be valid for video jobs; cross-kind-only or malformed event lists are rejected.
Authorizations
Bearer token authentication
Body
Desired duration in seconds (provider/model dependent).
Duration of the source video in seconds. Required when a provider bills source-video duration independently from generated output.
0 < x <= 3600Declared source-audio duration in seconds, used for provider range validation. Providers that do not report authoritative usage may bill at their supported input-duration ceiling.
2 <= x <= 20Explicit dimensions (for example 1280x720). Cannot be combined with resolution or aspect_ratio.
480p, 720p, 1080p, 1K, 2K, 4K. Can be combined with aspect_ratio. Cannot be combined with size.
Aspect ratio such as 16:9, 9:16, 1:1. Can be combined with resolution. Cannot be combined with size.
1 <= x <= 4HTTPS image, audio, or video inputs used to condition generation. Supported types, roles, counts, and combinations depend on the selected model. Check GET /videos/models before submitting a job.
A typed HTTPS media input. Use image_url for images and media_url for audio or video. Roles describe how the model should use the input; provider and model support varies.
- Option 1
- Option 2
Provider-specific extensions only. Complete request passthrough and duplicate routing, prompt, callback, or billing fields are rejected.
Provider routing preferences for gateway selection.
Response
Video response
WebSocket URL for subscribing to normalized async job lifecycle updates.
queued, processing, completed, failed, cancelled, expired Normalized async lifecycle status for polling, websocket, and webhook consumers.
pending, running, completed, failed, cancelled, expired Reserved for compatibility; currently always null.
bytes, signed_url, both Provider-native video/job id when it differs from the gateway-owned id.
"video"
20
Present when output_access includes bytes (authenticated endpoint).
Signed first-party URL for direct download when status is completed.
Unix timestamp (seconds) when the signed download_url expires.
Sanitized async webhook configuration plus delivery state. Secrets are never returned; has_secret indicates whether signed deliveries are enabled. Signed deliveries include x-phaseo-signature, x-phaseo-timestamp, x-phaseo-event-id, x-phaseo-event-type, x-phaseo-delivery-key, x-phaseo-attempt, and x-phaseo-max-attempts headers.
ISO timestamp for the next scheduled user-webhook retry, when queued.
Most recent coarse progress bucket dispatched to webhook consumers.
ISO timestamp when the most recent webhook progress bucket was dispatched.
ISO timestamp for the most recent webhook dispatch attempt.