video
A video clip. animated designs only — a video layer on a static, printer or printer_multipage payload is rejected with unknown_enum_value, because those types accept a smaller set of layer types.
| Property | Type | Notes |
|---|---|---|
src | string | Required. A filename (.mp4 / .webm, which returns a presigned upload), a public https:// URL that must carry a .mp4 or .webm extension, or a data URI (data:video/mp4, data:video/webm). See Create Import → src resolution. |
muted | boolean | Mutes the clip's own audio track. Defaults to false. |
opacity | int | 0 – 100. Defaults to 100. |
Extensions are matched case-insensitively — HERO.MP4 and hero.mp4 are equally accepted. This is the one place case does not matter; enum values elsewhere remain case-sensitive.
Using a media extension on an image or logo layer's src is rejected with unsupported_for_type — use this layer type instead.
Size limits
A video uploaded through a presigned URL may be up to 100 MB. A data URI is capped at 2 MB decoded, like every other data URI in the contract, so it is only practical for very short clips — prefer a filename or an https:// URL.
Timing and tweens
Every layer on an animated design may carry an animation object giving its start_at_s / end_at_s and its tweens, and the design carries a top-level animation.duration. That model is shared by all layer types and is documented in Animated Imports.
Two rules specific to video
- Videos must be contiguous in the top-level
layersarray — no non-video layer may sit between two of them. An interleavedvideois rejected withinvalid_payload. - A video may not be a group member. A
videolayer name inside a group'slayer_idsis rejected withunsupported_for_type. (Anaudiolayer may be a group member.)
Both rules are described with their reasoning in Animated Imports → Video layer rules.
Layout
A video takes a required layout like any other layer, in the same flat-or-keyed-by-format shape. Its extents must fit the format; see Animated Imports for the animated dimension bounds.
