Skip to content

Document & settings

Generated from project.v1.schema.json at the documented engine version. The schema checks shape only; the engine’s validation also checks ranges, limits, references and keyframe order.

Project

The deserialized shape of a Project before its invariants are checked.

This is the wire contract the published JSON Schema is derived from; validate then decides whether a well-shaped document is valid.

FieldTypeDescription
audioMasterAudio

Master bus applied to the summed track audio.

Default: {"effects":[],"gain":{"mode":"constant","value":1},"limit…

compositionsComposition[]

Composition graphs that clips show.

Default: []

effect_resourcesEffectResource[]

Non-media resources referenced by effect invocations.

Default: []

idrequiredProjectId

Stable identity of this project.

namerequiredstring

Human-readable project name. It has no semantic meaning.

schema_versionrequired1

Document version. This build reads and writes only CURRENT_SCHEMA_VERSION.

settingsrequiredProjectSettings

Output-wide timeline settings.

sourcesrequiredMediaSource[]

Media resources referenced by clips.

timelinerequiredTimeline

Ordered visual and audio tracks.

AudioStreamShape

An audio stream's channel count and sample rate.

FieldTypeDescription
channelsrequiredinteger (uint32)

Channel count.

sample_raterequiredinteger (uint32)

Samples per second per channel.

EffectResource

Host-resolved, non-media data consumed by one or more visual effects.

FieldTypeDescription
idrequiredEffectResourceId

Stable identity referenced by effect invocations.

kindrequiredEffectResourceKind

Resource representation expected by the effect definition.

locatorrequiredstring

Opaque host locator. The core never opens it directly.

EffectResourceId

A stable effect-resource identifier.

Type: string

EffectResourceKind

Portable effect-resource categories supported by the render ABI.

  • "lut3d" A cubic, filterable RGB lookup table, normally authored as a .cube file.

FrameRate

A positive rational frame rate in reduced form, at most one frame per tick (120 000 fps).

FieldTypeDescription
denrequiredinteger (uint32)

Seconds per num frames. Positive.

numrequiredinteger (uint32)

Frames per den seconds. Positive, and at most 120 000 times den.

HdrSources

What a project does with HDR sources.

  • "tone_map" Tone-map them into the SDR working space.
  • "reject" Refuse to render them.

LoopMode

How each pass of a Loop follows the one before.

  • "repeat" Every pass plays forward from the start. Sound fades out and in over LOOP_FADE_SECONDS at each wrap so the jump does not click.
  • "ping_pong" Passes alternate forward and backward.

MediaFingerprint

Evidence of a source's media, each part recorded only when known.

A matching content hash proves the same bytes; without one, the other parts can only show a difference. modified_ms narrows a search and never decides identity.

FieldTypeDescription
byte_lengthinteger | null

The file's length in bytes.

colorColorMetadata | null

The color the decoded pictures carry.

content_sha256string | null

SHA-256 of the whole file, as 64 lowercase hexadecimal digits.

duration_ticksinteger | null

Where the media ends on its own timeline, in ticks: first presentation plus length (a stream starting at 1.4 s and lasting 2 s ends at 3.4 s). Non-negative.

modified_msinteger | null

The file's modification time, in milliseconds since the Unix epoch.

streamsStreamTopology | null

The streams the file carries.

MediaKind

The payload domain of a source.

  • "video" A video stream, potentially with an audio stream.
  • "audio" An audio stream.
  • "image" A still visual image.
  • "generated" A picture the engine draws from the source's Generator; the host supplies nothing.
  • "composition" A composition of the project, drawn with the source time as its own time. The host supplies only the media its nodes read.

MediaSource

A host-resolved media resource.

FieldTypeDescription
color_metadataColorMetadata | null

The color a Video source's pictures are in, overriding frame and stream tags on every host. Recorded at import or declared to correct missing or wrong tags; None leaves the tags in charge. Stills are always read as sRGB code values.

Default: null

compositionCompositionId | null

The composition a Composition source shows; present exactly for that kind.

fingerprintMediaFingerprint | null

What the host found at the locator when the project recorded it, so another host can tell whether media it finds is the same. Generated sources have none.

generatorGenerator | null

What a Generated source draws; present exactly for that kind.

Default: null

has_audioboolean

Whether the media has an audio stream. This is a fact of the file, recorded the same by every host whether or not it can decode the stream; a host that cannot plays the source silent.

Audio always does. A Video source must declare it for its clips on a visual track to contribute to the mix.

Default: false

idrequiredSourceId

Stable source identity.

kindrequiredMediaKind

Media payload domain.

locatorstring

Opaque URI or host locator; the engine does not open it. Required except for Generated and Composition sources.

Default: ""

providerProviderSource | null

The extension provider and settings that supply this source's media when the host's own decoders do not read it.

MissingFrames

How an image sequence shows a frame missing from its numbering.

  • "reject" A sequence with a missing frame is refused.
  • "hold" The frame before it is shown.
  • "blank" Nothing is shown: a transparent frame.

ProjectId

A stable project identifier.

Type: string

ProjectSettings

Output-wide settings independent of a renderer or encoder.

FieldTypeDescription
backgroundRgb

Opaque color under every layer, in preview and export alike, so empty canvas is never left to a host or encoder.

Default: {"blue":0,"green":0,"red":0}

blend_spaceBlendSpace

The space in which clips' blend modes are evaluated, in preview and export alike.

Default: "linear_light"

colorColorPipeline

How sources' colors come into the working space.

Default: {"hdr":"tone_map","hdr_peak_nits":1000}

frame_raterequiredFrameRate

Timeline frame rate.

heightrequiredinteger (uint32)

Canvas height in output pixels, at most MAX_CANVAS_DIMENSION. The canvas area is at most MAX_CANVAS_PIXELS.

sample_raterequiredinteger (uint32)

Internal audio sample rate, within SAMPLE_RATE_RANGE.

widthrequiredinteger (uint32)

Canvas width in output pixels, at most MAX_CANVAS_DIMENSION.

ProviderSource

A source whose media an extension provider supplies instead of the host's video and image decoders.

A host picks the provider by probing the bytes at import, never by file name, and records it here so every host opens the source the same way. The engine does not read it.

One of:

format: "svg"

A static SVG document, rasterized at its shown size. The source's kind is image.

format: "animated_image"

A GIF, animated WebP, or APNG: one cycle of frames, each with its own duration. Repetition is the clip's. The source's kind is video.

format: "lottie"

A Lottie animation (JSON file or dotLottie package), evaluated at its own frames. The source's kind is video.

FieldTypeDescription
animationstring | null

The dotLottie animation shown, by ID. Absent means the package's first; always absent for a Lottie JSON file.

format: "image_sequence"

Still images played in order at a fixed rate. The source's kind is video.

FieldTypeDescription
frame_raterequiredFrameRate

The rate the frames play at.

framesrequiredstring | null[]

Each frame's locator, in play order. null marks a missing number, allowed only when missing says how to show it.

missingMissingFrames

How a missing frame is shown.

Default: "reject"

primariesLinearPrimaries | null

The primaries of OpenEXR frames' linear RGB, overriding the first frame's chromaticities. Only for OpenEXR frames.

start_numberinteger (uint64)

The number of the first frame, as its file was numbered.

Default: 0

format: "exr"

A still OpenEXR image: linear-light RGB(A), read at half precision. The source's kind is image.

FieldTypeDescription
primariesLinearPrimaries | null

The primaries of its linear RGB, overriding the file's chromaticities (BT.709 when the file has none, as OpenEXR defines).

SourceId

A stable media-source identifier.

Type: string

StreamTopology

The streams a media file carries.

FieldTypeDescription
audioAudioStreamShape | null

The primary audio stream, if there is one.

videoVideoStreamShape | null

The primary video stream, if there is one.

VideoStreamShape

A video stream's displayed size and frame rate.

FieldTypeDescription
frame_rateFrameRate | null

The rate the first frames are presented at, measured from packet times and rounded (alpha2_assets::FrameRateEvidence), when measurable. Declared rates are not used because they are guesses for variable-rate media and browsers report none.

heightrequiredinteger (uint32)

Displayed height in square pixels, after the pixel aspect ratio and orientation.

widthrequiredinteger (uint32)

Displayed width in square pixels, after the pixel aspect ratio and orientation.