Video generation¶
Text → video, tri-parity across Azure / GCP / AWS. Every provider is async. The pattern is submit → poll → fetch; the app never waits synchronously.
The pipeline¶
┌─────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ prompt │──► │ submit │──► │ poll │──► │ fetch │
│ text │ │ (job) │ │ (status) │ │ bytes │
└─────────┘ └──────────┘ └──────────┘ └──────────┘
~1s ~30-300s+ seconds
Video generation takes 1–5 minutes on every provider. The service returns a job_id immediately and the caller polls a separate endpoint for the finished MP4.
Per-cloud services¶
| Cloud | Service | Default model | SDK / API |
|---|---|---|---|
| Azure | Azure OpenAI Sora | sora-2 |
REST POST /openai/v1/video/generations/jobs (Sora endpoints are REST-only during preview — no client.videos.generate in the openai package yet). |
| GCP | Vertex AI Veo | veo-3.1-generate-preview |
google-genai client.models.generate_videos (returns an Operation; poll with client.operations.get). |
| AWS | Bedrock Nova Reel | amazon.nova-reel-v1:1 |
boto3 bedrock-runtime start_async_invoke (result lands in S3; poll with get_async_invoke). |
Docs verified 2026-08-08¶
- Azure OpenAI Sora quickstart — learn.microsoft.com/…/openai/video-generation-quickstart
- Vertex AI Veo — ai.google.dev/gemini-api/docs/veo
- Bedrock Nova Reel overview — docs.aws.amazon.com/nova/…/video-generation
- Bedrock Nova Reel code examples — docs.aws.amazon.com/nova/…/video-gen-code-examples
Model catalog snapshot¶
| Provider | Model IDs (verified) | Notes |
|---|---|---|
| Azure OpenAI | sora-2 (current default), sora-2-pro, sora (legacy) |
REST preview api-version. Sizes 480×480, 480×854, 720×1280, 1280×720, 1024×1792, 1792×1024. Duration n_seconds up to 20 (sora-2) or 60 (sora-2-pro). |
| Vertex Veo | veo-3.1-generate-preview, veo-3.1-fast-generate-preview, veo-3.1-lite-generate-preview |
Aspect 16:9 or 9:16. Resolution 720p (default) / 1080p / 4k. Duration 4 / 6 / 8 seconds (8 required for 1080p/4k). |
| Bedrock Nova Reel | amazon.nova-reel-v1:1 |
1280×720 fixed. 24 fps. durationSeconds in 6-second increments up to 120s. Text + optional first-frame image. Requires outputDataConfig (S3 URI). |
Pages¶
- Generate — submit-poll-fetch per provider, verified request shapes.
- Deploy — Terraform composing E1 baseline + per-cloud video resources (S3 bucket + IAM for Bedrock; SA + IAM for Vertex; API-version note for Azure).
Validate-only¶
No live video generation in CI. Each page's "verify" block is the local one-liner to run against your own credentials. Live video jobs typically cost a few dollars each — the recipe assumes you'll opt in per-run.