# `Gemini.Types.Generation.Video.VideoGenerationConfig`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/generation/video.ex#L91)

Configuration for video generation requests.

## Fields

- `number_of_videos` - Number of videos to generate (1-4, default: 1)
- `duration_seconds` - Video duration in seconds (4-8, default: 8)
- `aspect_ratio` - Video aspect ratio (default: "16:9")
- `fps` - Legacy option (not sent in current API request format)
- `compression_format` - Legacy option (not sent in current API request format)
- `safety_filter_level` - Legacy option (not sent in current API request format)
- `negative_prompt` - Text describing what to avoid in the video
- `seed` - Random seed for reproducibility
- `guidance_scale` - How closely to follow the prompt (1.0-20.0)
- `person_generation` - Person generation policy (default: :dont_allow)
- `image` - Optional image input for image-to-video
- `last_frame` - Optional last frame for interpolation (Veo 3.1)
- `reference_images` - Optional list of reference images (Veo 3.1)
- `video` - Optional input video for extension (Veo 3.1)
- `resolution` - Output resolution ("720p" or "1080p")

# `t`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/generation/video.ex#L91)

```elixir
@type t() :: %Gemini.Types.Generation.Video.VideoGenerationConfig{
  aspect_ratio: String.t(),
  compression_format: :h264 | :h265,
  duration_seconds: pos_integer(),
  fps: pos_integer(),
  guidance_scale: float() | nil,
  image: (Gemini.Types.Blob.t() | map()) | nil,
  last_frame: (Gemini.Types.Blob.t() | map()) | nil,
  negative_prompt: String.t() | nil,
  number_of_videos: pos_integer(),
  person_generation: atom(),
  reference_images:
    [Gemini.Types.Generation.Video.VideoGenerationReferenceImage.t()] | nil,
  resolution: String.t() | nil,
  safety_filter_level: atom(),
  seed: integer() | nil,
  video: (Gemini.Types.Blob.t() | map()) | nil
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
