asset.type to "shape". These are its own fields, on top of the clip fields every clip takes.
| Field | Type | What it does | |
|---|---|---|---|
shape | "rect" | "ellipse" | "circle" | "triangle" | "diamond" | "path" | What to draw, in the box the clip’s transform.size gives it. Size, place and turn the shape with the transform like any clip, and with no size it fills the frame. rect is the default and the only kind that takes a radius or a two-colour fill plus stroke. circle takes one side of the box, its diameter, so it stays round on any frame. triangle points down until you rotate it. path draws whatever SVG path data you paste into path. A LINE is a rect with a small height, turned with rotate when it needs to be diagonal. default "rect". | |
color | string | any[] | object[] | Fill colour, “#RRGGBB”, or “#RRGGBBAA” to make the fill itself translucent. “#00000080” is a 50% scrim to sit text on. Give TWO colours as an array and it is a gradient, [“#E11D48”,“#3B82F6”], running in the direction gradient names. Keyframes change it over time, and a solid can become a gradient. Leave it out and only the stroke draws, which is an outline with a real hole in it. The clip opacity makes the whole shape translucent the same way, outline and shadow included, and can be keyframed. | |
gradient | "vertical" | "horizontal" | "diagonal" | "radial" | Which way a two-colour color runs: vertical (top to bottom, the default), horizontal, diagonal, or radial from the centre out. The gradient is mapped to the SHAPE, not the frame, so a small badge still shows the whole ramp. | |
stroke | object | An outline drawn just inside the edge of the shape. With no color it is an outline only, and what it surrounds is genuinely transparent. | |
stroke.color * | string | Outline colour, hex like “#FFFFFF”. pattern ^#[0-9A-Fa-f]{6}$. | |
stroke.width * | number | Outline width in pixels of the output frame, drawn INSIDE the edge of the shape. 2-8 reads well at 1080p. over 0. | |
path | string | SVG path data, the d attribute straight out of a design tool, for shape: "path". Supports M L H V C S Q T Z, absolute and relative. Elliptical arcs (A) are refused rather than approximated, so re-export with arcs converted to curves. The path is scaled into the clip’s box, so the same data works at any size on any frame. | |
viewBox | string | The coordinate space path is written in, like “0 0 24 24” for a pasted icon. Defaults to “0 0 100 100”, so a path written in percentages needs no viewBox at all. | |
radius | number | object[] | Corner rounding on a rect. 0 is square, 1 is fully round, which gives a pill on a wide box and a circle on a square one. Keyframes round it off or square it up. Rectangles only, and not combinable with a turn or softness. default 0. | |
softness | number | Feathers the edge; 0 is a hard edge. 0.1 to 0.3 makes a soft spotlight or vignette instead of a hard-edged shape. Not available on a rect that has a radius. default 0, min 0, max 1. | |
shadow | object | A drop shadow behind the shape. Every field has a default, so “shadow”: {} is a sensible one. It follows the shape, including its outline, its turn and its animation. | |
shadow.color | string | Shadow colour, usually black with alpha like “#00000080”. default "#00000080", pattern `^#([0-9A-Fa-f] | [0-9A-Fa-f])$`. |
shadow.blur | number | Blur radius in pixels. 8-20 reads as a soft drop shadow; 0 is a hard offset copy. default 12, min 0. | |
shadow.x | number | Horizontal offset in pixels, positive to the right. default 6. | |
shadow.y | number | Vertical offset in pixels, positive downward. default 6. |
* are required. Every table on this page is generated from the schema the API validates with, so it cannot drift from what a render accepts.