Search Docs
Loading...
Skip to content

Error Catalog

Every recoverable engine failure is a structured error with a stable code (for example SCENE.NOT_VALID), an English developer-facing message and hint, typed arguments, and an optional documentation link. Match on the code rather than the message string — the code is stable across releases. For how to read these on each binding, see the structured-errors migration guide (Web).

This page lists all catalog errors grouped by category including links to documentation pages. The code is what you branch on. The message and hint are the English strings the engine renders (developer-facing — surface localized copy in your UI layer).

ASSET#

Asset sources, asset library, asset references.

Code Message Hint Docs
ASSET.CANNOT_APPLY_COLOR_NO_TARGET Could not apply color asset to block {block}. Block has nothing to apply color to. The block has no fill, stroke, or text color to receive the asset. Set the relevant property type first. Assets (Web)
ASSET.COLOR_CMYK_MISSING_FIELDS `payload.color` with `CMYK` color space must have fields `c`, `m`, `y`, `k`. CMYK colors require numeric `c`, `m`, `y`, `k` components. Add them to the payload. Assets (Web)
ASSET.COLOR_MISSING Asset does not contain a color. Color asset operations require a `color` payload. Verify the asset is a color asset. Assets (Web)
ASSET.COLOR_MISSING_COLOR_SPACE `payload.color` must have a `colorSpace` field. Add `colorSpace` (sRGB, CMYK, or SpotColor) to the asset payload. Assets (Web)
ASSET.COLOR_SPACE_UNKNOWN Unknown color space: {colorSpace} Color space ‘{colorSpace}’ is not supported. Valid values are sRGB, CMYK, and SpotColor. Assets (Web)
ASSET.COLOR_SPOT_MISSING_FIELDS `payload.color` with `SpotColor` color space must have fields `name`, `externalReference`, `representation`. Spot colors require all three fields; `representation` must itself be a sub-color in sRGB or CMYK. Assets (Web)
ASSET.COLOR_SPOT_REPRESENTATION_INVALID A `payload.color` with colorSpace `SpotColor` must use a `RGB` or `CMYK` color for its `representation` field. Spot color representation must be a primitive sRGB or CMYK value. Nested SpotColor is not allowed. Assets (Web)
ASSET.COLOR_SRGB_MISSING_FIELDS `payload.color` with `sRGB` color space must have fields `r`, `g`, and `b`. sRGB colors require numeric `r`, `g`, `b` components. Add them to the payload. Assets (Web)
ASSET.DOCUMENT_SOURCE_NO_ADD A document asset source does not allow adding assets. Document asset sources are read-only views into the active scene. Add assets to a local asset source instead. Assets (Web)
ASSET.DOCUMENT_SOURCE_NO_REMOVE A document asset source does not allow removing assets. Document asset sources are read-only. Remove the underlying scene blocks instead. Assets (Web)
ASSET.FACET_PATH_NOT_FACETABLE Asset property ‘{property}’ is not facetable. Use ‘tags’, ‘groups’, or ‘meta.<key>’. Facets enumerate bounded value sets; ‘label’ and ‘id’ are unbounded. Request ‘tags’, ‘groups’, or ‘meta.<key>’ instead. Assets (Web)
ASSET.FILTER_COMBINATOR_EMPTY Asset filter ‘{combinator}’ must have at least one child. Add at least one filter expression to the ‘{combinator}’ array. Assets (Web)
ASSET.FILTER_COMBINATOR_NOT_ARRAY Asset filter ‘{combinator}’ must be an array. Provide an array of filter expressions for ‘{combinator}’. Assets (Web)
ASSET.FILTER_META_KEY_MISSING Asset property filter ‘meta’ path must include a key (e.g. ‘meta.languages’). Append the meta key after ‘meta.’ — for example ‘meta.languages’. Assets (Web)
ASSET.FILTER_MULTIPLE_DISCRIMINATORS Asset filter has multiple discriminators; specify exactly one of ‘property’, ‘and’, ‘or’, ‘not’. Keep only one of ‘property’, ‘and’, ‘or’, ‘not’ on the expression. Assets (Web)
ASSET.FILTER_NOT_CHILD_NOT_OBJECT Asset filter ‘{combinator}’ must be an object. Provide a single filter-expression object as the value of ‘{combinator}’. Assets (Web)
ASSET.FILTER_NOT_OBJECT Asset filter must be an object. Wrap each filter expression in an object with one of ‘property’, ‘and’, ‘or’, ‘not’. Assets (Web)
ASSET.FILTER_NO_DISCRIMINATOR Asset filter must have exactly one of ‘property’, ‘and’, ‘or’, ‘not’. Set one discriminator key on the filter expression. Assets (Web)
ASSET.FILTER_OPERAND_MISSING Asset property filter must have exactly one of ‘contains’ or ‘equals’. Set either ‘contains’ or ‘equals’ on the property filter, not both and not neither. Assets (Web)
ASSET.FILTER_OPERAND_NOT_STRING Asset property filter ‘{operand}’ must be a string. Provide a string value for ‘{operand}’ on the property filter. Assets (Web)
ASSET.FILTER_PROPERTY_EMPTY Asset property filter ‘property’ must not be empty. Set ‘property’ to ‘label’, ‘id’, ‘tags’, ‘groups’, or ‘meta.<key>’. Assets (Web)
ASSET.FILTER_PROPERTY_NOT_STRING Asset property filter must have a string ‘property’. Provide ‘property’ as a string identifying the asset field to match. Assets (Web)
ASSET.FILTER_PROPERTY_UNKNOWN Unknown asset property ‘{property}’. Use ‘label’, ‘id’, ‘tags’, ‘groups’, or ‘meta.<key>’. Replace ‘{property}’ with one of the supported property roots. Assets (Web)
ASSET.FILTER_ROOT_NOT_ARRAY Asset filter must be an array of filter expressions. Pass the top-level filter as a JSON array of filter expressions (or null/empty for no filter). Assets (Web)
ASSET.FILTER_UNRECOGNIZED_DISCRIMINATOR Asset filter has no recognized discriminator. Use one of ‘property’, ‘and’, ‘or’, ‘not’ on the filter expression. Assets (Web)
ASSET.FIND_FN_REQUIRED findAssetsFn is required. Pass a non-null findAssetsFn callback when registering a custom asset source. Assets (Web)
ASSET.FONT_MISSING_NAME Missing required field ‘name’ in font. Each font entry needs a `name`. Add it to the payload. Assets (Web)
ASSET.FONT_MISSING_URL Missing required field ‘url’ in font. Each font entry needs a `url` pointing at the font file. Add it to the payload. Assets (Web)
ASSET.ID_ALREADY_EXISTS Asset with id {id} already exists in asset source. Each asset id must be unique within a source. Remove the existing asset, or use a different id. Assets (Web)
ASSET.JSON_INVALID_IN_URI Invalid JSON content in URI: {uri} The JSON at ‘{uri}’ could not be parsed. Validate the payload or check the URL response body. Assets (Web)
ASSET.JSON_MALFORMED_LOCAL Invalid JSON content for local asset source. Expected ‘id’ and ‘assets’ fields. The JSON payload must include top-level ‘id’ and ‘assets’ fields. See the local-asset-source schema for the full shape. Assets (Web)
ASSET.META_NON_STRING_ENTRY Unexpectedly found non-string entry in asset’s meta. Asset meta is a flat string map. Numeric or object values are not supported — stringify them before inserting. Assets (Web)
ASSET.NO_SELECTION No elements selected. This asset application requires a selected block. Verify a selection exists with api.block.findAllSelected() before applying. Assets (Web)
ASSET.RESOURCE_DATA_NOT_AVAILABLE Resource data not available: {uri} The resource at ‘{uri}’ is registered but has no data buffer. Confirm the source provides bytes (not just metadata). Assets (Web)
ASSET.RESOURCE_DATA_UNAVAILABLE Resource data is not available. The resource has no attached data provider. Ensure the resource has been fetched and is ready before requesting its data. Assets (Web)
ASSET.RESOURCE_NOT_FOUND_AT_URI Resource not found: {uri} No resource registered at ‘{uri}’. Confirm the asset source serves the URI and that loading completed. Assets (Web)
ASSET.RESOURCE_NOT_READY Resource is not ready. The resource is still loading or in an error state. Wait for the Ready state, or handle the error via the resource’s loading state. Assets (Web)
ASSET.RESOURCE_NOT_READY_AT_URI Resource not ready: {uri} The resource at ‘{uri}’ is still loading. Subscribe to resource events or retry after the resource is Ready. Assets (Web)
ASSET.SORT_KEY_MISSING Sort key not found in asset source. The asset source does not provide the requested sort key. Use a sort key the source declares, or omit the sort parameter. Assets (Web)
ASSET.SOURCE_ADD_DENIED Assets cannot be added to this asset source: {sourceId}. The source ‘{sourceId}’ rejected addAssets(). It may be backed by an immutable provider. Assets (Web)
ASSET.SOURCE_ALREADY_EXISTS AssetSource with id {sourceId} already exists. Asset source ids must be unique. Remove the existing source via removeAssetSource() or pick a different id. Assets (Web)
ASSET.SOURCE_CANNOT_ADD_ASSETS AssetSource with id {sourceId} cannot add assets. The source ‘{sourceId}’ is read-only. Modify the underlying data store or pick a writable source. Assets (Web)
ASSET.SOURCE_CANNOT_REMOVE_ASSETS AssetSource with id {sourceId} cannot remove assets. The source ‘{sourceId}’ is read-only. Modify the underlying data store or pick a writable source. Assets (Web)
ASSET.SOURCE_DOES_NOT_SUPPORT_APPLY_PROPERTIES Asset source {source} does not support applying properties. The source ‘{source}’ does not implement applyProperties(). Use a source that supports it, or apply properties through a different surface. Assets (Web)
ASSET.SOURCE_NOT_EXISTS AssetSource with id {sourceId} does not exist. No asset source registered under ‘{sourceId}’. Use api.asset.addLocalAssetSource() or addAssetSource() to register one first. Assets (Web)
ASSET.SOURCE_NOT_REMOVABLE AssetSource with id {sourceId} may not be removed. Built-in asset sources cannot be unregistered. Override their behavior by adding a higher-priority custom source instead. Assets (Web)
ASSET.SOURCE_NO_PROPERTY_MOD This asset source does not support property modification. The active asset source does not support property modification. Register a writable source via api.asset.addLocalAssetSource(), or modify the underlying assets directly. Assets (Web)
ASSET.SOURCE_REMOVE_DENIED Assets cannot be removed from this asset source: {sourceId}. The source ‘{sourceId}’ rejected removeAssets(). It may be backed by an immutable provider. Assets (Web)
ASSET.SOURCE_UNKNOWN The asset source {sourceId} is unknown. No asset source registered under ‘{sourceId}’. Add it before requesting its content. Assets (Web)
ASSET.STYLE_PRESET_INVALID_PAYLOAD Style preset payload is not a valid JSON object. The asset’s payload.stylePreset must be a JSON object. Check the asset definition’s stylePreset field. Assets (Web)
ASSET.STYLE_PRESET_MISSING_BLOCK_TYPE A style preset requires a blockType to create a new block. When applying a style preset without a target block, set meta.blockType so the engine knows which block type to create. Assets (Web)
ASSET.STYLE_PRESET_NOT_APPLICABLE Style preset is not applicable to a block of type ‘{blockType}’. The style preset declares the block types it supports. Apply it to a supported block type, or widen the preset’s blockType. Assets (Web)
ASSET.TARGET_BLOCK_NOT_VALID Block is not valid. The selected block is no longer valid. Re-resolve it via api.block.findAllSelected() and confirm with api.block.isValid(block) before applying an asset. Assets (Web)
ASSET.TRANSFORM_PRESET_FIXED_ASPECT_MISSING_FIELDS `payload.transformPreset` of type `fixedAspectRatio` must have fields `width`, and `height`. FixedAspectRatio presets need `width` and `height` to determine the ratio. Assets (Web)
ASSET.TRANSFORM_PRESET_FIXED_SIZE_MISSING_FIELDS `payload.transformPreset` of type `fixedAspectRatio` must have fields `width`, `height`, and `designUnit`. FixedSize presets need numeric `width`, `height`, and a `designUnit` (e.g. ‘Pixel’, ‘Inch’). Assets (Web)
ASSET.TRANSFORM_PRESET_MISSING_TYPE `payload.transformPreset` must have a `type` field. Add a `type` to the transformPreset payload (e.g. ‘FixedSize’, ‘FixedAspectRatio’, ‘ContentAspectRatio’). Assets (Web)
ASSET.TRANSFORM_PRESET_TYPE_UNKNOWN Unknown transformPreset type: {type} TransformPreset type ‘{type}’ is not recognized. Valid values: ‘FixedSize’, ‘FixedAspectRatio’, ‘ContentAspectRatio’. Assets (Web)
ASSET.TYPEFACE_MISSING_FAMILY Missing required field ‘family’ in typeface. Typefaces declare a `family` grouping their fonts. Add it to the payload. Assets (Web)
ASSET.TYPEFACE_MISSING_WEIGHT Missing required field ‘weight’ in typeface. Typefaces declare a `weight`. Add it to the payload. Assets (Web)
ASSET.UNSUPPORTED_MIME_TYPE Unsupported mime type for loadWithoutService: {mimeType} The bypass loader cannot handle ‘{mimeType}’. Route through the regular resource service or extend the loader. Assets (Web)
ASSET.UNSUPPORTED_MIME_TYPE_FOR_BLOCK Cannot create a block from an asset with the MIME type {mimeType}. MIME type ‘{mimeType}’ has no block factory. Convert the asset to a supported type (image/, video/, audio/*) or register a custom factory. Assets (Web)
ASSET.URI_INVALID_BARE Invalid URI {uri}. The asset URI is malformed. Use a valid absolute URL or a registered scheme like ‘buffer://’. Assets (Web)
ASSET.URI_META_MISSING ‘uri’ not found in asset ‘meta’. Can’t replace. The asset’s meta block must include a ‘uri’ field for replace() to work. Add it before invoking. Assets (Web)

AUDIO#

Audio playback and routing.

Code Message Hint Docs
AUDIO.DATA_SOURCE_INIT_FAILED Mini Audio data source initialization failed. miniaudio could not allocate the data source. Out-of-memory or invalid decoder state is the likely cause.
AUDIO.DATA_SOURCE_NODE_INIT_FAILED Data source node initialization failed ({resultCode}). miniaudio could not attach the data source as a node with error {resultCode}. The graph configuration may be invalid.
AUDIO.DATA_SOURCE_NO_DURATION Audio data source has no known duration. miniaudio could not determine the source length. Streaming or seekless sources may not report a duration; decode the source fully or supply one with a known length.
AUDIO.DECODER_FORMAT_FAILED Failed to get decoder data format. The decoder reported an indeterminate sample format. The file header may be truncated or malformed.
AUDIO.DECODER_INIT_FAILED Mini Audio decoder initialization failed ({resultCode}). miniaudio rejected the audio source with error {resultCode}. The file may be corrupted or use an unsupported codec.
AUDIO.DEVICE_INIT_FAILED Initializing audio device failed. The platform’s audio device could not be opened. Verify the device exists and is not in use by another process.
AUDIO.DEVICE_RESUME_FAILED Failed to resume the audio device. The audio device was suspended and could not be resumed. On web, trigger playback from within a user-gesture handler (e.g. a click) so the browser unlocks the audio context before calling play.
AUDIO.DEVICE_START_FAILED Audio device start failed. The audio device opened but did not start playback. Check device state and platform permissions.
AUDIO.DEVICE_STOP_FAILED Audio device stop failed. The audio device could not be stopped cleanly. Subsequent restart may be required.
AUDIO.INVALID_SOUND_HANDLE Invalid sound handle. The sound handle does not refer to a live audio source. It may have been stopped or never created.
AUDIO.NODE_ATTACH_OUTPUT_BUS_FAILED Attaching output bus failed ({resultCode}). miniaudio could not attach the node’s output bus with error {resultCode}. The graph layout may be invalid.
AUDIO.NODE_GRAPH_INIT_FAILED Audio node graph init failed. The miniaudio node graph could not be created. Check available system resources and the audio backend installation.
AUDIO.NODE_SET_STATE_FAILED Setting node state failed ({resultCode}). miniaudio rejected the node state transition with error {resultCode}.
AUDIO.NODE_STATE_CHANGE_FAILED Failed to change sound node state to {targetState}. miniaudio did not converge on the requested node state ‘{targetState}’. The node may have been destroyed concurrently.
AUDIO.PCM_READ_FAILED Failed to read PCM frames from node graph ({resultCode}). miniaudio returned error {resultCode} while reading PCM. The graph may be in an invalid state; re-create it.
AUDIO.RESAMPLER_INIT_FAILED Mini Audio resampler initialization failed. miniaudio could not construct a resampler for the source rate. The source sample rate may be unsupported.
AUDIO.UNSUPPORTED_CODEC Unsupported audio codec. miniaudio cannot decode this audio format. Re-encode the source as WAV, FLAC, or one of the documented supported codecs. File Format Support (Web)

BINDING#

Errors raised at the binding bridge layer (WASM/JNI/ObjC++/N-API parameter validation, host-callback invariants, asset-source platform plumbing).

Code Message Hint Docs
BINDING.ASSET_PLATFORM_SOURCE_UNAVAILABLE Platform source object is unavailable. The platform-side asset source backing this engine handle was garbage collected. Keep a reference while the engine may call into it.
BINDING.ASSET_SOURCE_ADD_UNSUPPORTED Assets cannot be added to this asset source. Implement `addAsset` on the asset source if you need this operation to succeed.
BINDING.ASSET_SOURCE_APPLY_PROPERTIES_UNSUPPORTED Asset properties cannot be applied by this asset source. Implement `applyAssetProperties` on the asset source if you need this operation to succeed.
BINDING.ASSET_SOURCE_FETCH_UNSUPPORTED Assets cannot be fetched from this asset source. Implement `fetchAsset` on the asset source if you need this operation to succeed.
BINDING.ASSET_SOURCE_REMOVE_UNSUPPORTED Assets cannot be removed from this asset source. Implement `removeAsset` on the asset source if you need this operation to succeed.
BINDING.FACETS_QUERY_ENTRY_NOT_STRING Each entry in ‘facets’ must be a property path string Every `facets` entry must be a string property path such as `‘groups’`, `‘tags’`, or `‘meta.<key>’`.
BINDING.FACETS_QUERY_NOT_ARRAY Field ‘facets’ must be an array of property path strings Pass `facets` as a JavaScript array of property path strings such as `‘groups’`, `‘tags’`, or `‘meta.<key>’`.
BINDING.FACETS_RESULT_NOT_OBJECT Field ‘facets’ in find assets result is not an object keyed by facet path Return `facets` from a custom source’s `findAssets` as an object keyed by the requested property paths.
BINDING.FACET_COUNT_NOT_NUMBER Field ‘count’ in facet ‘{facet}’ of find assets result is not a number Omit `count` or set it to a number; it is optional per bucket.
BINDING.FACET_ENTRY_NOT_OBJECT An entry of facet ‘{facet}’ in find assets result is not a value/count object Each facet bucket must be an object with a string `value` and an optional numeric `count`.
BINDING.FACET_NOT_ARRAY Facet ‘{facet}’ in find assets result is not an array of value/count entries Each `facets[path]` must be an array of value/count buckets.
BINDING.FACET_VALUE_MISSING Missing required string field ‘value’ in facet ‘{facet}’ of find assets result Every facet bucket must carry a string `value`.
BINDING.HOST_CALLBACK_THREW {operation} callback threw: {message} The platform-side `{operation}` callback raised an error. Inspect `args.message` for the original host-language exception text and ensure the callback handles its input correctly.
BINDING.JSON_NOT_REPRESENTABLE Value cannot be represented as JSON. Pass only JSON-serializable values (no functions, no cycles, no `BigInt`).
BINDING.JSON_PARSE_FAILED Failed to parse JSON from JS value. Pass a value the bridge can stringify with `JSON.stringify` without throwing.
BINDING.NODE_NOT_INITIALIZED Not initialized Call `CreativeEngine.init(…)` before invoking other engine methods.
BINDING.NO_TEXT_BLOCK_BEING_EDITED No text block is currently being edited. Enter text editing mode via `block.setTextEditMode(…)` before invoking text-editing APIs.
BINDING.URI_RESOLVER_INVALID_RESULT URI resolver returned an invalid result. Return a non-null string URL (or throw) from the URI resolver callback.
BINDING.URI_RESOLVER_PROMISE_REJECTED URI resolver promise rejected. Resolve the returned promise with a string URL, or reject with a descriptive error message.
BINDING.URI_RESOLVER_UNAVAILABLE Async URI resolver is unavailable. Configure an async URI resolver on the editor before triggering this call.
BINDING.WASM_ASSET_FILTER_JSON_PARSE_FAILED Failed to parse asset filter JSON from JS. Pass an object the JS engine can serialize to JSON (no functions, no cycles, no `BigInt`).
BINDING.WASM_ASSET_GROUPS_NOT_ARRAY Field ‘groups’ is not an array Pass `groups` as a JavaScript array of group id strings.
BINDING.WASM_ASSET_MISSING_ID Missing required field ‘id’ in asset Each asset definition must carry an `id` string.
BINDING.WASM_ASSET_PROPERTY_MISSING_DEFAULT_VALUE Missing required field ‘defaultValue’ in asset property Set the property’s `defaultValue` field to a value matching its declared `type` (same shape as `value`).
BINDING.WASM_ASSET_PROPERTY_MISSING_MAX Missing required field ‘max’ in asset property Provide a numeric `max` on a numeric asset property.
BINDING.WASM_ASSET_PROPERTY_MISSING_MIN Missing required field ‘min’ in asset property Provide a numeric `min` on a numeric asset property.
BINDING.WASM_ASSET_PROPERTY_MISSING_OPTIONS Missing required field ‘options’ in asset property Provide an `options` array on an `enum`-type asset property.
BINDING.WASM_ASSET_PROPERTY_MISSING_STEP Missing required field ‘step’ in asset property Provide a numeric `step` on a numeric asset property.
BINDING.WASM_ASSET_PROPERTY_MISSING_TYPE Missing required field ‘type’ in asset property Set the property’s `type` to a supported value: `String`, `Boolean`, `Color`, `Enum`, `Int`, `Float`, or `Double`.
BINDING.WASM_ASSET_PROPERTY_MISSING_VALUE Missing required field ‘value’ in asset property Set the property’s `value` field to a value matching its declared `type` (e.g. a number for `Int`/`Float`/`Double`, a string for `String`/`Enum`).
BINDING.WASM_ASSET_PROPERTY_UNKNOWN_TYPE Unknown property type: {type} ‘{type}’ is not a valid asset property type. Use one of `String`, `Boolean`, `Color`, `Enum`, `Int`, `Float`, or `Double`.
BINDING.WASM_ASSET_RESULT_MISSING_ID Missing required field ‘id’ in asset result Each asset result must carry an `id` string.
BINDING.WASM_ASSET_RESULT_MISSING_SOURCE_ID Missing required field ‘context.sourceId’ in asset result Set `context.sourceId` on each asset result to the asset source id that produced it.
BINDING.WASM_BLOCK_STATE_MISSING_ERROR Missing required field ‘error’ in block state Pass an `error` field on a block state with `type: ‘Error’`.
BINDING.WASM_BLOCK_STATE_MISSING_PROGRESS Missing required field ‘progress’ in block state Pass a numeric `progress` field on a block state with `type: ‘Pending’`.
BINDING.WASM_BLOCK_STATE_MISSING_TYPE Missing required field ‘type’ in block state Pass a `type` field of `‘Ready’`, `‘Pending’`, or `‘Error’` on the block state object.
BINDING.WASM_BLOCK_STATE_UNHANDLED Unhandled state error. Internal bridge error — file a bug if you encounter this with a reproducible block state.
BINDING.WASM_BLOCK_STATE_UNKNOWN_ERROR Unknown block state error: {error} Use one of the documented `BlockStateError` enum values.
BINDING.WASM_BLOCK_STATE_UNKNOWN_TYPE Unknown block state type: {type} Use one of `‘Ready’`, `‘Pending’`, `‘Error’`.
BINDING.WASM_COLOR_MISSING_COLOR_SPACE Missing colorSpace field in the color object. Provide a `colorSpace` value of `‘sRGB’`, `‘CMYK’`, or `‘SpotColor’` when constructing a color from JavaScript.
BINDING.WASM_COLOR_MISSING_COMPONENTS Missing components field in the color object. Provide a `components` array of channel values matching the color space (3 for sRGB, 4 for CMYK).
BINDING.WASM_COLOR_MISSING_EXTERNAL_REFERENCE Missing externalReference field in the color object. Set `externalReference` (empty string is allowed) when constructing a color from JavaScript.
BINDING.WASM_COLOR_MISSING_SPOT_NAME Missing spotColorName field in the color object. Set `spotColorName` to a non-empty string when constructing a SpotColor.
BINDING.WASM_COLOR_MISSING_TINT Missing tint field in the color object. Set `tint` to a number between 0 and 1 when constructing a color from JavaScript.
BINDING.WASM_COLOR_PARSE_FAILED Could not parse color. Pass a color object with `colorSpace` and the matching channel fields, not a raw value.
BINDING.WASM_COMMAND_ARG_MAP_FAILED Couldn’t map value for argument ${index} while executing command `{command}` > {message} Argument types must match the command’s declared signature; see the inner message for the failing field.
BINDING.WASM_COMMAND_SINGLE_ARG_MISMATCH Received single argument for command {command}. Expected {expected}. Pass exactly the number of arguments the command expects, as an array.
BINDING.WASM_FIND_RESULT_MISSING_ASSETS Missing required field ‘assets’ in find assets result Return an `assets` array (may be empty) from the asset source `findAssets` callback.
BINDING.WASM_FIND_RESULT_MISSING_CURRENT_PAGE Missing required field ‘currentPage’ in find assets result Return a `currentPage` integer from the asset source `findAssets` callback.
BINDING.WASM_FIND_RESULT_MISSING_TOTAL Missing required field ‘total’ in find assets result Return a `total` integer from the asset source `findAssets` callback.
BINDING.WASM_FONT_MISSING_SUBFAMILY Missing required field ‘subFamily’ in font Provide a `subFamily` string on each font entry.
BINDING.WASM_FONT_MISSING_URI Missing required field ‘uri’ in font Provide a `uri` string on each font entry.
BINDING.WASM_GRADIENT_STOP_MISSING_STOP_VALUE Gradient color stop must have a stop value Each gradient color stop needs a `stop` number between 0 and 1.
BINDING.WASM_MEM_ALLOC_FAILED_BUFFER Failed to allocate memory for buffer {bufferUri} Reduce the buffer size or grow the WASM memory cap before allocating.
BINDING.WASM_MEM_ALLOC_FAILED_HANDLE Failed to allocate memory for handle {handle} Reduce concurrent in-flight engine handles or grow the WASM memory cap.
BINDING.WASM_PAYLOAD_COLOR_CMYK_MISSING_FIELDS `payload.color` with `CMYK` color space must have fields `c`, `m`, `y`, `k`. Provide `c`, `m`, `y`, `k` numeric fields on `payload.color` when `colorSpace` is `‘CMYK’`.
BINDING.WASM_PAYLOAD_COLOR_MISSING_COLOR_SPACE `payload.color` must have `colorSpace` field. Set `payload.color.colorSpace` to `‘sRGB’`, `‘CMYK’`, or `‘SpotColor’`.
BINDING.WASM_PAYLOAD_COLOR_SPOT_MISSING_FIELDS `payload.color` with `SpotColor` color space must have fields `name`, `externalReference`, `representation`. Provide `name`, `externalReference`, and `representation` on a `SpotColor` payload color.
BINDING.WASM_PAYLOAD_COLOR_SPOT_REPRESENTATION_INVALID A `payload.color` with colorSpace `SpotColor` must use a `RGB` or `CMYK` color for its `representation`. Set `representation.colorSpace` to `‘sRGB’` or `‘CMYK’` on the SpotColor payload.
BINDING.WASM_PAYLOAD_COLOR_SRGB_MISSING_FIELDS `payload.color` with `sRGB` color space must have fields `r`, `g`, and `b`. Provide `r`, `g`, `b` numeric fields on `payload.color` when `colorSpace` is `‘sRGB’`.
BINDING.WASM_PROPERTIES_NOT_ARRAY ‘properties’ is not an array. Pass `properties` as a JavaScript array of `AssetProperty` objects.
BINDING.WASM_SOURCE_SET_NOT_ARRAY ‘sourceSet’ is not an array. Pass `sourceSet` as a JavaScript array of source objects.
BINDING.WASM_TRANSFORM_PRESET_FIXED_ASPECT_MISSING_FIELDS ‘payload.transformPreset’ of type ‘FixedAspectRatio’ must have fields ‘width’, and ‘height’. Provide numeric `width` and `height` fields on a `‘FixedAspectRatio’` transformPreset.
BINDING.WASM_TRANSFORM_PRESET_FIXED_SIZE_MISSING_FIELDS ‘payload.transformPreset’ of type ‘FixedSize’ must have fields ‘width’, ‘height’, and ‘designUnit’. Provide numeric `width`, `height`, and a `designUnit` string on a `‘FixedSize’` transformPreset.
BINDING.WASM_TRANSFORM_PRESET_MISSING_TYPE Missing required field ‘type’ in asset transformPreset Set `transformPreset.type` to one of `‘FreeAspectRatio’`, `‘FixedAspectRatio’`, `‘ContentAspectRatio’`, `‘FixedSize’`.
BINDING.WASM_TRANSFORM_PRESET_UNKNOWN_TYPE Unknown transformPreset type: {type} Use one of `‘FreeAspectRatio’`, `‘FixedAspectRatio’`, `‘ContentAspectRatio’`, `‘FixedSize’`.
BINDING.WASM_TYPEFACE_MISSING_FONTS Missing required field ‘fonts’ in typeface Provide a non-empty `fonts` array on the typeface object.
BINDING.WASM_TYPEFACE_MISSING_NAME Missing required field ‘name’ in typeface Provide a `name` string on the typeface object.
BINDING.WASM_UNKNOWN_AUDIO_OUTPUT_TYPE Unknown audio output type: {audioOutput} Pass one of the documented audio-output type strings.
BINDING.WASM_UNKNOWN_COLOR_SPACE Unknown color space: {colorSpace} Pass one of `‘sRGB’`, `‘CMYK’`, `‘SpotColor’`.
BINDING.WASM_UNKNOWN_CUTOUT_OPERATION Unknown CutoutOperation {op} Pass one of the documented `CutoutOperation` enum values.
BINDING.WASM_UNKNOWN_CUTOUT_TYPE Unknown CutoutType {type} Pass one of the documented `CutoutType` enum values.
BINDING.WASM_UNKNOWN_HORIZONTAL_ALIGNMENT Unknown horizontal alignment {alignment}, use Left, Right, or Center Pass `‘Left’`, `‘Right’`, or `‘Center’`.
BINDING.WASM_UNKNOWN_SCOPE_STATE Unknown GlobalScopeState {value} Pass one of the documented `GlobalScopeState` enum values.
BINDING.WASM_UNKNOWN_VERTICAL_ALIGNMENT Unknown vertical alignment {alignment}, use Top, Bottom, or Center Pass `‘Top’`, `‘Bottom’`, or `‘Center’`.

BLOCK#

Design-block lifecycle, properties, hierarchy, animation.

Code Message Hint Docs
BLOCK.ALWAYS_ON_BOTTOM_UNSUPPORTED The block does not have an always-on-bottom property. Only specific block types (e.g. scene, page) carry always-on-bottom. Check api.block.getType(block) is a supported container before calling. Blocks (Web)
BLOCK.ALWAYS_ON_TOP_UNSUPPORTED The block does not have an always-on-top property. Only specific block types (e.g. scene, page) carry always-on-top. Check api.block.getType(block) is a supported container before calling. Blocks (Web)
BLOCK.ANIMATION_ASSET_MALFORMED_MODE_KEY Malformed asset. The mode should be stored in meta under the “mode” key. Move the animation mode into asset.meta.mode. The current asset shape is rejected by the loader. Blocks (Web)
BLOCK.ANIMATION_ASSET_MALFORMED_TYPE_KEY Malformed asset. The animation type or “none” should be stored in meta under the “type” key. Move the animation type into asset.meta.type. The value must be the type identifier or the literal string ‘none’. Blocks (Web)
BLOCK.ANIMATION_ASSET_MISSING_MODE The asset does not contain a mode property. Animation assets must declare a ‘mode’ field in their meta. Add the field to the asset definition. Blocks (Web)
BLOCK.ANIMATION_ASSET_MISSING_TYPE The asset does not contain a type property. Animation assets must declare a ‘type’ field in their meta. Add the field to the asset definition. Blocks (Web)
BLOCK.ANIMATION_NOT_A_PAN_ANIMATION The selected animation is not a pan animation. This API only applies to pan-type animations. Switch to a pan animation first or use the generic property setter. Blocks (Web)
BLOCK.ANIMATION_NOT_A_SLIDE_ANIMATION The selected animation is not a slide animation. This API only applies to slide-type animations. Switch to a slide animation first or use the generic property setter. Blocks (Web)
BLOCK.ANIMATION_NOT_IN_TYPE The animation {blockId} cannot be used as an “in” animation. The animation block is not tagged as an in/out animation. Create an in/out animation via createAnimation with a compatible type. Blocks (Web)
BLOCK.ANIMATION_NOT_LOOP_TYPE The animation {blockId} cannot be used as a “loop” animation. The animation block is not tagged as a loop animation. Create a loop animation via createAnimation with a compatible type. Blocks (Web)
BLOCK.ANIMATION_NOT_OUT_TYPE The animation {blockId} cannot be used as an “out” animation. The animation block is not tagged as an in/out animation. Create an in/out animation via createAnimation with a compatible type. Blocks (Web)
BLOCK.ANIMATION_NO_ANIMATIONS_ON_BLOCK The block does not have any animations. No animation has been applied to this block. Add an animation asset before querying or modifying it. Blocks (Web)
BLOCK.ANIMATION_NO_ANIMATION_TO_EDIT The selected block does not have an animation to be edited. Apply an animation asset to the block before invoking edit APIs. Blocks (Web)
BLOCK.ANIMATION_NO_EASING_PROPERTY The selected animation has no easing property. The current animation type does not expose an easing setting. Verify the animation type supports easing before setting it. Blocks (Web)
BLOCK.ANIMATION_NO_EASING_PROPERTY_ON_BLOCK The target block does not have an animationEasing property. The current animation type doesn’t expose easing. Pick a type that does, or skip the property. Blocks (Web)
BLOCK.ANIMATION_NO_OVERLAP_PROPERTY The target block does not have an textAnimationOverlap property. textAnimationOverlap only exists on text-animation types. Confirm the animation type first. Blocks (Web)
BLOCK.ANIMATION_NO_TEXT_WRITING_STYLE The selected animation has no text writing style property. Text writing style is only available on text-animation types. Confirm the active animation supports it. Blocks (Web)
BLOCK.ANIMATION_NO_WRITING_STYLE_PROPERTY The target block does not have an textAnimationWritingStyle property. textAnimationWritingStyle only exists on text-animation types. Confirm the animation type first. Blocks (Web)
BLOCK.ANIMATION_TEXT_ONLY The animation {blockId} can only be added to text blocks. Text animations only apply to text blocks. Either pick a non-text animation or attach this animation to a text block. Blocks (Web)
BLOCK.ANIMATION_TYPE_NOT_REGISTERED Unknown animation type: {type} Animation type ‘{type}’ is not registered. Use createAnimation with a built-in type or register a custom animation first. Blocks (Web)
BLOCK.ANIMATION_UNKNOWN_EASING Unknown easing value: {value} Easing ‘{value}’ is not recognized. Use one of the predefined easing names. Blocks (Web)
BLOCK.ANIMATION_UNKNOWN_ENUM Unknown enum value: {value} The enum value ‘{value}’ is not a member of the targeted animation property. Inspect the property’s valid set via the schema. Blocks (Web)
BLOCK.ANIMATION_UNKNOWN_MODE Unknown animation mode: {mode} Animation mode ‘{mode}’ is not one of ‘In’, ‘Loop’, or ‘Out’. Blocks (Web)
BLOCK.ANIMATION_UNKNOWN_MODE_IN_ASSET The asset contains an unknown mode. The asset’s ‘mode’ value is not recognized. Valid modes are ‘In’, ‘Loop’, and ‘Out’. Blocks (Web)
BLOCK.ANIMATION_UNKNOWN_PROPERTY_TYPE Unknown property type. The animation property type is not handled by the editor. This likely indicates a stale or unsupported asset definition. Blocks (Web)
BLOCK.ANIMATION_UNKNOWN_TYPE Unknown animation type. The animation type identifier is not registered. Confirm the asset ‘type’ matches a built-in or registered custom animation. Blocks (Web)
BLOCK.ANIMATION_UNSUPPORTED The block does not support being animated. Only blocks with animation capability accept animation assets. Call api.block.supportsAnimation(block) before applying an animation. Blocks (Web)
BLOCK.ASSET_SOURCE_SORT_KEY_MISSING Sort key not found in asset source. The asset source does not provide the requested sort key. Use a sort key the source declares. Blocks (Web)
BLOCK.AUDIO_TRACK_INDEX_OUT_OF_BOUNDS Audio track index {index} is out of bounds. Valid range: 0-{max}. Pass an audio-track index in [0, {max}]. Use getAudioTrackCountFromVideo() to inspect the count. Blocks (Web)
BLOCK.AUTO_TO_FREE_LAYOUT_UNSUPPORTED Switching from an automatic to free layout isn’t supported yet. Once a page or stack is in automatic layout, free-layout switching requires reconstructing the children. Re-create the layout instead. Blocks (Web)
BLOCK.BACKGROUND_COLOR_UNSUPPORTED The block doesn’t have a background color. Only pages and a handful of container blocks expose a background color. Call api.block.supportsBackgroundColor(block) before calling. Blocks (Web)
BLOCK.BLEND_MODE_UNSUPPORTED The block doesn’t have a blend mode. Only renderable design blocks expose blendMode. Call api.block.supportsBlendMode(block) before setting it. Blocks (Web)
BLOCK.BLOCKS_NOT_COMBINABLE Blocks cannot be combined. Boolean combine requires two or more shape-bearing blocks. Verify the selection contains compatible shapes. Blocks (Web)
BLOCK.BLUR_UNKNOWN_TYPE Unknown blur type: {type} Blur type ‘{type}’ is not registered. Use one of the built-in blur types (uniform, linear, radial, mirrored). Blocks (Web)
BLOCK.BLUR_UNSUPPORTED Target block doesn’t support blur. Only renderable design blocks carry blur. Verify with supportsBlur(block) before applying. Blocks (Web)
BLOCK.BUFFER_LENGTH_OUT_OF_RANGE Length {length} at offset {offset} is out of range [0, {max}]. Ensure offset + length <= {max}. Either reduce the length or grow the buffer first. Blocks (Web)
BLOCK.BUFFER_NOT_FOUND Buffer not found: {uri} No buffer is registered at URI ‘{uri}’. Call createBuffer or write to the URI before reading. Blocks (Web)
BLOCK.BUFFER_OFFSET_OUT_OF_RANGE Offset {offset} is out of range [0, {max}]. Pass an offset in [0, {max}]. Use the buffer’s current size to validate before calling. Blocks (Web)
BLOCK.BUFFER_URI_INVALID Invalid buffer URI: {uri} Buffer URIs must use the ‘buffer://’ scheme. Re-create the buffer to obtain a valid URI. Blocks (Web)
BLOCK.CAMERA_DESTRUCTION_NOT_ALLOWED Destruction of camera is not allowed. Cameras are managed by the scene. Destroy the scene, not the camera, to remove camera state. Blocks (Web)
BLOCK.CAMERA_TRANSFORM_LOCK Camera’s transform cannot be locked. Cameras are not lockable. Use scene-level interaction settings to restrict camera movement. Blocks (Web)
BLOCK.CAPTIONS_DISABLED Creation of captions is not allowed. Please enable the video captions feature. Enable settings.features.videoCaptionsEnabled before creating a caption block. Blocks (Web)
BLOCK.CAPTION_TRACKS_DISABLED Creation of caption tracks is not allowed. Please enable the video captions feature. Enable settings.features.videoCaptionsEnabled before creating a caption track block. Blocks (Web)
BLOCK.CHILDREN_INDEX_OUT_OF_BOUNDS Index {index} is out of bounds for {count} children. Pass an index in [0, {count}]. Use getChildren(block).size() to inspect the current count. Blocks (Web)
BLOCK.COLOR_COMPONENT_OUT_OF_RANGE {component} color component out of range [0, 1]: {value}. Clamp ‘{component}’ to the [0, 1] range. NaN is also rejected. Blocks (Web)
BLOCK.COLOR_NOT_IN_COLOR_SPACE The color is not in the ‘{colorSpace}’ color space. Read the color via the accessor for its actual color space, or convert it first. Blocks (Web)
BLOCK.COLOR_SPACE_CONVERSION_NOT_SUPPORTED Cannot convert to that color space. Color-space conversion to SpotColor is not defined — convert to sRGB or CMYK instead. Blocks (Web)
BLOCK.COLOR_TINT_OUT_OF_RANGE Tint out of range [0, 1]: {value}. Clamp the tint to the [0, 1] range. NaN is also rejected. Blocks (Web)
BLOCK.COMBINE_TEXT_FONT_LOADING Block {id} is a text block whose fonts have not finished loading. Call forceLoadResources on it before combine. Wait for the text block’s fonts to load (api.block.forceLoadResources) before invoking boolean combine. Blocks (Web)
BLOCK.COMPONENT_NOT_REGISTERED {component} is not a registered type. Reflection has no registration for component ‘{component}’. Confirm the property string is correct. Blocks (Web)
BLOCK.COMPONENT_NO_PROPERTY {component} doesn’t have property {property}. Component ‘{component}’ has no field named ‘{property}’. Inspect findAllProperties(block) for valid keys. Blocks (Web)
BLOCK.CONTENT_ASPECT_IMAGE_NO_DIMENSIONS ContentAspectRatio: image fill has no usable intrinsic dimensions yet; the image is not decoded and the sourceSet is empty. Set ‘fill/image/sourceSet’ with explicit width and height, or wait for the image to decode before applying the preset. Blocks (Web)
BLOCK.CONTENT_ASPECT_NOT_IMAGE_OR_VIDEO ContentAspectRatio: fill is neither an image nor a video; only those carry intrinsic dimensions. Replace the fill with an image or video fill. Color and gradient fills have no intrinsic dimensions. Blocks (Web)
BLOCK.CONTENT_ASPECT_NO_FILL ContentAspectRatio: block has no fill; only image and video fills carry intrinsic dimensions. Add an image or video fill to the block before querying its content aspect ratio. Blocks (Web)
BLOCK.CONTENT_ASPECT_VIDEO_NO_DIMENSIONS ContentAspectRatio: video fill has no usable intrinsic dimensions yet; wait for the first frame to decode or set the sourceSet with explicit width and height. Wait for the first frame to decode, or set ‘fill/video/sourceSet’ with explicit width and height before applying the preset. Blocks (Web)
BLOCK.CONTENT_FILL_ALIGNMENT_UNSUPPORTED The block doesn’t support content fill alignment. Only blocks with a sized image/video fill support contentFillAlignment. Resolve the fill with api.block.getFill(block) and confirm api.block.getType(fill) is an image or video fill first. Blocks (Web)
BLOCK.CONTENT_FILL_MODE_UNSUPPORTED The block doesn’t have a content fill mode. Only blocks with image/video fills expose a content fill mode. Call api.block.supportsContentFillMode(block) before calling. Blocks (Web)
BLOCK.CREATION_NOT_ALLOWED Creation of {type} is not allowed. Type ‘{type}’ is not user-creatable. It is created implicitly by other engine operations. Blocks (Web)
BLOCK.CUTOUT_NO_BLOCK_SELECTED No block selected can be given a cutout. Cutouts apply to selected graphic blocks. Select at least one cutout-capable block first. Blocks (Web)
BLOCK.CUTOUT_PATH_REQUIRED ‘vectorPath’ is required for Cutout. Pass a non-empty ‘vectorPath’ string when creating a Cutout block. Blocks (Web)
BLOCK.DIFFERENCE_NO_EFFECT Difference has no visible effect. The subtracted shape does not intersect the base. Reposition or resize so they overlap. Blocks (Web)
BLOCK.DROP_SHADOWS_UNSUPPORTED The block doesn’t support drop shadows. Only renderable design blocks carry shadow properties. Call api.block.supportsDropShadow(block) before calling. Blocks (Web)
BLOCK.EFFECTS_UNSUPPORTED Target block doesn’t support effects. Only renderable design blocks carry an effects stack. Verify with supportsEffects(block) before mutating it. Blocks (Web)
BLOCK.EFFECT_INDEX_OUT_OF_BOUNDS Index {index} out of bounds ({count}). Pass an index in [0, {count}]. Use getEffects(block).size() to inspect the current count. Blocks (Web)
BLOCK.EFFECT_NOT_AN_EFFECT Only effects can be enabled and disabled. Use setVisible instead if you are trying to change the visibility of a design block. Pass an effect block, or use setVisible(block, …) to toggle a design block’s visibility. Blocks (Web)
BLOCK.EFFECT_UNKNOWN_TYPE Unknown effect type: {type} Effect type ‘{type}’ is not registered. Use a built-in effect type or register a custom one before creating. Blocks (Web)
BLOCK.ELEMENTS_NOT_ALIGNABLE Elements cannot be aligned. Alignment requires two or more selectable design blocks under a common parent that supports free layout. Blocks (Web)
BLOCK.ELEMENTS_NOT_DISTRIBUTABLE Elements cannot be distributed. Distribution requires three or more selectable design blocks under a common parent that supports free layout. Blocks (Web)
BLOCK.ELEMENTS_NOT_GROUPABLE Elements cannot be grouped. Grouping requires two or more design blocks under the same parent. Verify the selection before calling group(). Blocks (Web)
BLOCK.ENTITY_NOT_LAID_OUT Entity {block} has not been laid out yet. Call api.scene.update() (or wait for the next frame) so layout has run, then retry. Blocks (Web)
BLOCK.ENUM_VALUE_INVALID Invalid enum value {value} for property {property}. Use one of the values returned by api.block.getEnumValues(‘{property}’). Blocks (Web)
BLOCK.EXPORTABLE_UNSUPPORTED The block doesn’t have exportable option. Only specific block types track the ‘exportable’ flag. Check api.block.getType(block) before calling. Blocks (Web)
BLOCK.FILL_GET_SOLID_COLOR_WRONG_TYPE Tried to get solid color fill value on a block that has no such fill color. The block’s fill is not a solid color. Inspect the fill type via getType(getFill(block)) first. Blocks (Web)
BLOCK.FILL_MISSING Target block has no Fill. Attach a fill via setFill(block, fill) or use supportsFill(block) to confirm support. Blocks (Web)
BLOCK.FILL_NOT_VALID Specified fill is not a valid fill. Create the fill via api.block.createFill(…) and pass that id. Blocks (Web)
BLOCK.FILL_NO_SOLID_COLOR Fill has no solid color. The fill block is not a SolidColor. Inspect getType(getFill(block)) and use the matching accessor. Blocks (Web)
BLOCK.FILL_NO_SOLID_COLOR_FILL Block has no solid color fill. Attach a solid-color fill via setFill(block, createFill(‘color’)) before reading the color. Blocks (Web)
BLOCK.FILL_SET_SOLID_COLOR_WRONG_TYPE Tried to set Fill Color on a block with different fill type. Switch the block’s fill to a solid-color fill, or use the matching API for the current fill type. Blocks (Web)
BLOCK.FILL_TEXT_SOLID_COLOR_ONLY Text blocks only support solid color fills. Use createFill(‘color’) for text blocks. Image, video, and gradient fills are not supported on text. Blocks (Web)
BLOCK.FILL_UNSUPPORTED The block doesn’t have a fill. Only renderable design blocks expose a fill. Confirm the block type before calling. Blocks (Web)
BLOCK.GRADIENT_COLOR_STOPS_DUPLICATE Gradient color stops need to have unique values between 0 and 1. Found duplicate value {value}. Remove the duplicate stop at {value} so each stop’s position is unique. Blocks (Web)
BLOCK.GRADIENT_COLOR_STOPS_NOT_SORTED Gradient color stops must be sorted in ascending order. Sort the stops by position ascending before passing the array. Blocks (Web)
BLOCK.GRADIENT_COLOR_STOPS_OUT_OF_RANGE Gradient color stops must be between 0 and 1. Clamp each stop’s position into [0, 1] before passing the array to api.block.setGradientColorStops; positions outside the range are rejected. Blocks (Web)
BLOCK.GRADIENT_COLOR_UNSUPPORTED The block does not have a gradient color property. Only gradient-fill blocks expose gradient color stops. Resolve the fill with api.block.getFill(block) and confirm api.block.getType(fill) is a gradient fill first. Blocks (Web)
BLOCK.GROUP_ABSOLUTE_ONLY Block is a group and can only have Absolute position mode. Groups always use absolute layout. Don’t set a relative position mode on a group block. Blocks (Web)
BLOCK.HEIGHT_INVALID_FOR_SCALING Current height is invalid for scaling. The block’s current height is zero or non-finite. Set a valid height before scaling. Blocks (Web)
BLOCK.HISTORY_HANDLE_INVALID_AT {handle} is not a valid history handle. The history handle is unknown or has been released. Re-obtain it via createHistory() before calling. Undo And History (Web)
BLOCK.ID_INVALID The block with ID {block} is not valid. It may have been deleted, e.g., when a new scene was loaded. Re-resolve the block id after scene changes. Use isValid(block) to guard before calling. Blocks (Web)
BLOCK.IMAGE_FILL_UNSUPPORTED The block does not have an image fill property. Only blocks with an image fill expose this property. Resolve the fill with api.block.getFill(block) and confirm api.block.getType(fill) is an image fill before calling. Blocks (Web)
BLOCK.IMAGE_LOAD_FAILED Failed to load image. The image source could not be decoded or fetched. Verify the URI is reachable, the MIME type is one the engine supports, and the bytes are a valid image. Blocks (Web)
BLOCK.KEY_NOT_FOUND Key {key} on block {block} not found. Property ‘{key}’ is not defined on block {block}. Use findAllProperties(block) to enumerate valid keys. Blocks (Web)
BLOCK.MISSING_REQUESTED_COMPONENT The block doesn’t have the requested properties. The requested component is not attached to this block. Use the matching api.block.supports*(block) query (or check api.block.getType(block)) to confirm the feature before calling. Blocks (Web)
BLOCK.NAME_UNSUPPORTED The block does not have a name. Only renderable design blocks carry a name. Check api.block.getType(block) is a design block before calling. Blocks (Web)
BLOCK.NOT_ATTACHED_TO_SCENE Block {block} is not attached to a scene. Append the block under the active scene (or one of its descendants) before calling this API. Blocks (Web)
BLOCK.NOT_A_CUTOUT_BLOCK The block {id} is not a Cutout block. This API requires a cutout block. Use createCutout or filter by ‘//ly.img.ubq/cutout’ first. Blocks (Web)
BLOCK.NOT_A_DESIGN_BLOCK Block is not a design block. This API requires a design block (page, graphic, text, audio, video, etc.). Fills, shapes, and animations are not design blocks. Blocks (Web)
BLOCK.NOT_A_TEXT_BLOCK Entity {block} is not a text block. Pass a text block id. Use getType(block) to confirm the block type before calling. Blocks (Web)
BLOCK.NOT_A_TEXT_BLOCK_SIMPLE block is not a text block. Pass a text block. Use getType(block) to confirm the block type before calling. Blocks (Web)
BLOCK.NOT_A_VIDEO_FILL_BLOCK The provided block must be a video fill block or a block with a video fill. Pass a video fill block directly, or a design block whose fill is a video. Use getFill(block) to resolve. Blocks (Web)
BLOCK.NOT_KNOWN_BLOCK_TYPE {type} is not a known block type. Block type ‘{type}’ is not registered. Use findAllTypes() to enumerate supported types. Blocks (Web)
BLOCK.NOT_LAID_OUT Block hasn’t been laid out yet. Call api.scene.update() (or wait for the next frame) so layout has run, then retry. Blocks (Web)
BLOCK.NOT_LAID_OUT_AABB Could not get AABB. Block hasn’t been laid out yet. Layout has not run for this block. Trigger a layout pass or wait one frame before querying the AABB. Blocks (Web)
BLOCK.NOT_LAID_OUT_BEFORE_ADJUST_CROP Block has not been laid out yet. Call update() before adjustCropToFillFrame(). adjustCropToFillFrame() requires a laid-out frame. Run api.scene.update() first, then retry. Blocks (Web)
BLOCK.NOT_LAID_OUT_FLIP_H Could not flip horizontally. Block hasn’t been laid out yet. Layout has not run for this block. Trigger a layout pass or wait one frame before flipping. Blocks (Web)
BLOCK.NOT_LAID_OUT_FLIP_V Could not flip vertically. Block hasn’t been laid out yet. Layout has not run for this block. Trigger a layout pass or wait one frame before flipping. Blocks (Web)
BLOCK.NOT_LAID_OUT_FOR_SCENE The block {id} has not been layouted and may therefore not be part of the scene. Confirm block {id} is attached and the scene has been updated. Trigger an explicit update if the block was just added. Blocks (Web)
BLOCK.NOT_LAID_OUT_ROTATION Could not set rotation. Block hasn’t been laid out yet. Layout has not run for this block. Trigger a layout pass or wait one frame before setting rotation. Blocks (Web)
BLOCK.NOT_LAID_OUT_SCALE Could not scale. Block hasn’t been laid out yet. Layout has not run for this block. Trigger a layout pass or wait one frame before scaling. Blocks (Web)
BLOCK.NOT_VALID Block is not valid. The block id no longer references a live block. It may have been destroyed; re-resolve the id before calling this API. Blocks (Web)
BLOCK.NO_AUDIO_TRACKS_FOUND No audio tracks found in the video. The video container reports zero audio tracks. Use a source that includes audio or skip this operation. Blocks (Web)
BLOCK.NO_AUDIO_TRACKS_IN_VIDEO The video does not contain any audio tracks. The decoded video has no audio streams. Confirm the source file actually contains audio. Blocks (Web)
BLOCK.NO_BLOCK_SELECTED No block is selected. This API requires a selected block. Use api.block.findAllSelected() to confirm a selection before calling. Blocks (Web)
BLOCK.NO_KIND Block does not have a kind. Only design blocks expose a ‘kind’ property. Check api.block.getType(block) to confirm it is a design block (not a fill/shape/animation) before calling. Blocks (Web)
BLOCK.NO_PARENT Block doesn’t have a parent. The block is detached (e.g. the scene root). Attach it to a parent or guard with hasParent(block) before calling. Blocks (Web)
BLOCK.NO_POSITION Block has no defined position. Position requires a Position component. Auto-layout containers or unattached blocks may not expose one. Blocks (Web)
BLOCK.NO_SHAPE_PROPERTY Target block has no shape property. Only blocks with a shape component (graphic, vector) expose a shape property. Call api.block.supportsShape(block) before accessing the shape. Blocks (Web)
BLOCK.NO_SIZE Block has no defined size. Size requires a Size component. Confirm the block is a sized type (page, graphic, text) before calling. Blocks (Web)
BLOCK.OPACITY_UNSUPPORTED The block doesn’t have an opacity. Only renderable design blocks expose opacity. Call api.block.supportsOpacity(block) before setting it. Blocks (Web)
BLOCK.OPERATION_PRECONDITION_FAILED {reason} The structural precondition check returned a free-text reason — see `reason` for the specific blocker (e.g. mixed parents, incompatible block types, missing layout). Blocks (Web)
BLOCK.OP_NEEDS_TWO_BLOCKS Not enough blocks to perform operation. Must be at least two. Select at least two blocks before invoking this operation. Blocks (Web)
BLOCK.PARENT_NOT_LAID_OUT Parent block hasn’t been laid out yet. Layout has not run for the parent. Trigger an update or wait one frame before reading relative geometry. Blocks (Web)
BLOCK.PENDING_PROGRESS_INVALID Pending progress must be between 0 and 1. Clamp the progress value to [0, 1] before passing it to setPendingProgress. Blocks (Web)
BLOCK.POSITION_LOCKED Block’s position is locked and can’t be modified. Call setPositionLocked(block, false) before changing the position. Blocks (Web)
BLOCK.POSITION_PARENT_CONTROLLED Block’s position is controlled by the parent block and can’t be modified. The block’s parent uses an automatic layout. Detach the block, switch the parent to free layout, or modify the parent instead. Blocks (Web)
BLOCK.PROPERTY_ENUM_CAST_FAILED {property} cannot be cast to an enum value The property value does not convert to an unsigned 32-bit integer. The property may not actually be an enum type, or its reflected representation is misconfigured. Blocks (Web)
BLOCK.PROPERTY_ENUM_MEMBER_CAST_FAILED {member} cannot be cast to an enum value An enum member’s value does not convert to an unsigned 32-bit integer. The reflected enum is misconfigured. Blocks (Web)
BLOCK.PROPERTY_FONT_FILE_URI_DIRECT_UNSUPPORTED Setting the “text/fontFileUri” property directly is unsupported. Use the setFont API instead. Call setFont(block, fontFileUri, typefaceName) so the typeface, weight and style stay consistent. Blocks (Web)
BLOCK.PROPERTY_GETTER_MISMATCH Incorrect function used, expected get{kind}. The property’s type is ‘{kind}’. Call the matching get{kind}(…) accessor instead. Blocks (Web)
BLOCK.PROPERTY_INVALID_ENUM_VALUE {property} holds an invalid enum value. The property’s integer value does not match any registered enum member. The block’s stored state may be corrupt. Blocks (Web)
BLOCK.PROPERTY_INVALID_ENUM_VALUE_CHOICES Invalid enum value, expected one of: [{choices}] Pass one of the listed enum identifiers. The catalog `choices` arg carries the comma-separated quoted list the setter would have accepted. Blocks (Web)
BLOCK.PROPERTY_NOT_AN_ENUMERATION Property’s type is not an enumeration. Querying the allowed enum choices is only valid for enum-typed properties. Check the property’s `PropertyType` first. Blocks (Web)
BLOCK.PROPERTY_NOT_ENUM {property} is not an enum property. `getPropertyAllowedValues(…)` / enum accessors only apply to enum-typed properties. Check the property type first. Blocks (Web)
BLOCK.PROPERTY_NOT_FOUND Property not found: “{property}”. Inspect api.block.findAllProperties(block) for the set of properties this block exposes. Blocks (Web)
BLOCK.PROPERTY_NOT_FOUND_WITH_HINT {prefix}Valid properties, as listed by `findAllProperties(id)`, are: {properties}. Pick one of the listed properties or call findAllProperties(block) to inspect the live set. Blocks (Web)
BLOCK.PROPERTY_NOT_READABLE Property is not readable. This property is write-only on the requested block type. Use the matching setter instead. Blocks (Web)
BLOCK.PROPERTY_NOT_WRITEABLE Property is not writeable. This property is read-only on the requested block type. Inspect the value with the matching getter instead. Blocks (Web)
BLOCK.PROPERTY_SETTER_MISMATCH Incorrect function used, expected set{kind}. The property’s type is ‘{kind}’. Call the matching set{kind}(…) accessor instead. Blocks (Web)
BLOCK.RESULT_EMPTY_SHAPE Result is an empty shape. The boolean operation produced no visible geometry. Adjust the inputs so they overlap appropriately. Blocks (Web)
BLOCK.SCENE_CREATE_DIFFERENT To create a scene, use `createScene` instead. Scenes have a dedicated lifecycle. Call api.scene.create() rather than block.create(‘//ly.img.ubq/scene’). Scenes (Web)
BLOCK.SCOPES_UNSUPPORTED Block {block} does not support scopes. Scope APIs require a block type that carries access control. Most renderable design blocks do; pages and tracks typically do not. Blocks (Web)
BLOCK.SCOPE_INVALID Invalid scope: {scope} The scope name ‘{scope}’ is not recognized. Use one of the documented scope keys (e.g. ‘design/style’, ‘editor/select’). Blocks (Web)
BLOCK.SCOPE_MIXED_VALUES Not all underlying scopes of {scope} have the same value. The compound scope ‘{scope}’ aggregates multiple keys that currently disagree. Set them individually or accept the indeterminate state. Blocks (Web)
BLOCK.SCOPE_PERMISSION_DENIED {message} Unlock the scope ‘{scope}’ via setScopeEnabled(block, ‘{scope}’, true) before invoking this API. Blocks (Web)
BLOCK.SELECTION_DISABLED Selection disabled for block. The block’s selectability has been disabled via setSelectable(block, false). Re-enable to select it programmatically. Blocks (Web)
BLOCK.SHADOW_X_BLUR_INVALID The x-blur radius must be a finite number greater than or equal to 0. Pass a non-negative finite x-blur. NaN and negative values are rejected. Blocks (Web)
BLOCK.SHADOW_X_OFFSET_INVALID The x-offset must be a finite number. Pass a finite x-offset. NaN and ±infinity are rejected. Blocks (Web)
BLOCK.SHADOW_Y_BLUR_INVALID The y-blur radius must be a finite number greater than or equal to 0. Pass a non-negative finite y-blur. NaN and negative values are rejected. Blocks (Web)
BLOCK.SHADOW_Y_OFFSET_INVALID The y-offset must be a finite number. Pass a finite y-offset. NaN and ±infinity are rejected. Blocks (Web)
BLOCK.SHAPE_NOT_VALID Specified shape is not a valid shape. The provided block id does not reference a shape sub-block. Use createShape or pick a registered shape type. Blocks (Web)
BLOCK.SOME_ELEMENTS_NOT_LOADED Some elements are not completely loaded. Wait for the scene’s resources to finish loading. Subscribe to resource events or poll api.scene.loadingState. Blocks (Web)
BLOCK.SOURCE_SET_EMPTY The source set is empty. Populate the source set via addSource(…) before invoking source-set APIs. Blocks (Web)
BLOCK.STROKES_UNSUPPORTED The block doesn’t support strokes. Only renderable design blocks carry stroke properties. Verify with supportsStroke(block) before calling. Blocks (Web)
BLOCK.STROKE_DASH_ARRAY_INVALID Stroke dash array values must be finite numbers. Replace any NaN/infinity entries in the dash array with finite numbers. Blocks (Web)
BLOCK.STROKE_DASH_OFFSET_INVALID Stroke dash offset must be a finite number. Pass a finite numeric dash offset. NaN and ±infinity are rejected. Blocks (Web)
BLOCK.STROKE_MISSING Target block has no Stroke. Enable the stroke via setStrokeEnabled(block, true) before mutating stroke properties. Blocks (Web)
BLOCK.STROKE_WIDTH_INVALID The stroke width must be a finite number greater than or equal to 0. Pass a non-negative finite width. NaN and negative values are rejected. Blocks (Web)
BLOCK.SVG_PATH_PARSE_FAILED The SVG path could not be parsed. Pass a valid SVG path string (e.g. “M10 10 L20 20 Z”). Validate with an SVG path parser if unsure. Blocks (Web)
BLOCK.TARGET_NOT_AN_ANIMATION The target block is not an animation. Pass an animation block id. Use getType(block) to confirm before calling. Blocks (Web)
BLOCK.TARGET_NOT_A_VIDEO_FILL The target block is not a video fill. Pass a video fill block. Use getFill(block) on a design block to resolve it. Blocks (Web)
BLOCK.TEXT_CANNOT_TOGGLE_BOLD The block cannot be toggled between bold and normal font weights. The current typeface does not expose both regular and bold weights. Pick a typeface that does. Blocks (Web)
BLOCK.TEXT_CANNOT_TOGGLE_ITALIC The block cannot be toggled between italic and normal font styles. The current typeface does not expose both normal and italic styles. Pick a typeface that does. Blocks (Web)
BLOCK.TEXT_INVALID_FONT_SIZE The font size must be a positive finite number. Pass a positive finite font size. NaN, zero, and negative values are rejected. Blocks (Web)
BLOCK.TEXT_INVALID_KERNING Kerning must be a finite number. Pass a finite kerning value. NaN and ±infinity are rejected. Blocks (Web)
BLOCK.TEXT_INVALID_LINE_INDEX Invalid line index: {lineIndex}. Pass a line index in [0, lineCount(block) - 1]. Blocks (Web)
BLOCK.TEXT_INVALID_RANGE_FOR_LINE Invalid text range for line index: {lineIndex}. Wait for layout to settle (api.scene.update()) before requesting text ranges for a line. Blocks (Web)
BLOCK.TEXT_LINE_BOUNDS_FAILED Failed to calculate line bounds for line index: {lineIndex}. Ensure the block has been laid out (api.scene.update()) before requesting line bounds. Blocks (Web)
BLOCK.TEXT_LINE_HEIGHT_INVALID lineHeight must be greater than zero. Pass a positive lineHeight. Zero and negative values are rejected. Blocks (Web)
BLOCK.TEXT_LIST_LEVEL_NEGATIVE The list level must be non-negative. Pass a list level in [0, 4]. Blocks (Web)
BLOCK.TEXT_LIST_LEVEL_TOO_LARGE The list level must be less than 5. Pass a list level in [0, 4]. Blocks (Web)
BLOCK.TEXT_NO_BLOCK_BEING_EDITED No text block is currently being edited. Enter text editing mode (e.g. via setEditMode(‘Text’)) before calling cursor/composition APIs. Blocks (Web)
BLOCK.TEXT_NO_TYPEFACE block has no typeface. Assign a typeface to the block via setFont() before invoking this API. Blocks (Web)
BLOCK.TEXT_NO_TYPEFACE_AND_DEFAULT_NOT_REGISTERED block has no typeface set and the default font is not registered as a typeface. Either set a typeface explicitly via setFont() or register the default font as a typeface. Blocks (Web)
BLOCK.TEXT_ON_PATH_INVALID_SVG_PATH svgPath is not a valid SVG path string. Pass a non-empty, parseable SVG path (e.g. ‘M 0,0 L 100,0’). Validate the string before calling setTextOnPath. Blocks (Web)
BLOCK.TEXT_ON_PATH_MULTIPLE_SUBPATHS svgPath must contain exactly one subpath (no multiple ‘M’ commands). Text on path follows a single contour. Split the path or pass only one subpath (a single leading ‘M’). Blocks (Web)
BLOCK.TEXT_ON_PATH_NO_MEASURABLE_CONTOUR svgPath contains no measurable contour. The path has zero length (e.g. a single ‘M’ with no draw commands). Provide a path with a real, measurable contour. Blocks (Web)
BLOCK.TEXT_PARAGRAPH_INDEX_NEGATIVE paragraphIndex must be non-negative. Use a paragraph index >= 0. Blocks (Web)
BLOCK.TEXT_PARAGRAPH_INDEX_OUT_OF_RANGE paragraphIndex is out of range. Pass a paragraph index in [0, paragraphCount(block) - 1]. Blocks (Web)
BLOCK.TEXT_RANGE_FROM_OUT_OF_RANGE The `from` index is out of range. Clamp ‘from’ to a non-negative index within the block’s character count. Blocks (Web)
BLOCK.TEXT_RANGE_INVALID_ORDER Invalid range: from ({from}) cannot be greater than to ({to}). Swap or adjust the bounds so ‘from’ <= ‘to’. Blocks (Web)
BLOCK.TEXT_RANGE_NEGATIVE Invalid range: from ({from}) and to ({to}) must be -1 or non-negative. Use -1 to signal ‘end of text’ or pass a non-negative index for either bound. Blocks (Web)
BLOCK.TEXT_RANGE_TO_OUT_OF_RANGE The `to` index is out of range. Clamp ‘to’ to an index within the block’s character count. Blocks (Web)
BLOCK.TEXT_TYPEFACE_UPDATE_FAILED Failed to update text typeface: {reason} Inspect `reason` for the underlying text-shaping failure (typically font fallback, glyph coverage, or asset registry issues). Blocks (Web)
BLOCK.TEXT_UNKNOWN_TYPEFACE block has an unknown typeface: ‘{typeface}’. Register the typeface ‘{typeface}’ with the engine, or pick one that has already been registered. Blocks (Web)
BLOCK.TEXT_UNSUPPORTED_FONT_STYLE The block does not support the given style. Failed to find a font with the specified style. Pick a style that the current typeface supports. Inspect getTextFontStyles(block) for the available set. Blocks (Web)
BLOCK.TEXT_UNSUPPORTED_FONT_WEIGHT The block does not support the given weight. Failed to find a font with the specified weight. Pick a weight that the current typeface supports. Inspect getTextFontWeights(block) for the available set. Blocks (Web)
BLOCK.THRESHOLD_NOT_FINITE The threshold values must be a finite number. NaN and infinity are not accepted as threshold inputs. Pass finite floating-point values. Blocks (Web)
BLOCK.TRANSFORM_LOCKED_FILL_PARENT Block’s transform is locked and can’t fill its parent. Call setTransformLocked(block, false) before invoking fillParent. Blocks (Web)
BLOCK.TRANSFORM_LOCKED_FLIP Block’s transform is locked and can’t be flipped. Call setTransformLocked(block, false) before flipping. Blocks (Web)
BLOCK.TRANSFORM_LOCKED_RESIZE Block’s transform is locked and can’t be resized. Call setTransformLocked(block, false) before resizing, or pick a different block. Blocks (Web)
BLOCK.TRANSFORM_LOCKED_ROTATE Block’s transform is locked and can’t be rotated. Call setTransformLocked(block, false) before rotating. Blocks (Web)
BLOCK.TRANSFORM_LOCKED_SCALE Block’s transform is locked and can’t be scaled. Call setTransformLocked(block, false) before scaling. Blocks (Web)
BLOCK.TRANSITION_BLOCK_INVALID Block {blockId} is not a valid transition. The block passed to setTransition does not exist or has no block type. Create the transition via createTransition first. Blocks (Web)
BLOCK.TRANSITION_BLOCK_NOT_A_TRANSITION Block {blockId} is not a transition. The block passed to setTransition is not a transition block. Create one via createTransition and pass that instead. Blocks (Web)
BLOCK.TRANSITION_TYPE_NOT_REGISTERED Unknown transition type: {type} Transition type ‘{type}’ is not registered. Use createTransition with one of the built-in transition types. Blocks (Web)
BLOCK.TYPE_CANNOT_BE_ARRANGED Object of type {type} cannot be arranged. Arrange operations (bringToFront, etc.) apply only to design blocks within a container. Type {type} doesn’t qualify. Blocks (Web)
BLOCK.TYPE_CANNOT_BE_CLIPPED Object of type {type} cannot be clipped. Type {type} has no clipping support. Wrap it in a group or page and apply clipping there. Blocks (Web)
BLOCK.TYPE_CANNOT_BE_FLIPPED Object of type {type} cannot be flipped. Type {type} has no flip capability. Apply the flip to its parent or wrap in a group. Blocks (Web)
BLOCK.TYPE_CANNOT_BE_LOCKED Object of type {type} cannot be locked. Type {type} has no lock capability. Locking only applies to design blocks. Blocks (Web)
BLOCK.TYPE_CANNOT_BE_PLACEHOLDER Object of type {type} cannot be a placeholder. Placeholders only apply to design blocks with content (graphic, text). Type {type} cannot host placeholder behavior. Blocks (Web)
BLOCK.TYPE_CANNOT_BE_SELECTED Object of type {type} cannot be selected. Type {type} is not user-selectable. Use a different selection target. Blocks (Web)
BLOCK.TYPE_CANNOT_HAVE_ROTATION Object of type {type} cannot have a rotation. Type {type} does not support rotation. Wrap it in a group or rotate its parent instead. Blocks (Web)
BLOCK.TYPE_NOT_A_CHILD Cannot add block of type {type} as a child of another block. Blocks of type {type} are render blocks and must be attached via their dedicated property (e.g. fill, shape) rather than as a generic child. Blocks (Web)
BLOCK.TYPE_NO_ADDING_CHILDREN Cannot add children to a block of type {type}. Blocks of type {type} are not containers. Use a page, group, or track block to compose children. Blocks (Web)
BLOCK.TYPE_NO_CHILDREN Object of type {type} cannot have children. Blocks of type {type} are leaves in the scene tree. Use a container type (page, group, track) to hold children. Blocks (Web)
BLOCK.TYPE_NO_FRAME Object of type {type} does not have a frame. Only design blocks with computed layout expose a frame. Cameras, scenes, fills, and shapes do not. Blocks (Web)
BLOCK.TYPE_NO_GROUPS Object of type {type} does not support groups. Type {type} cannot be grouped. Only design blocks under a common parent can be grouped. Blocks (Web)
BLOCK.TYPE_NO_HIGHLIGHTING Object of type {type} does not support highlighting. Highlighting only applies to design blocks. Type {type} cannot be highlighted. Blocks (Web)
BLOCK.TYPE_NO_PARENT Object of type {type} cannot have a parent. Blocks of type {type} are render blocks (fills, shapes, blurs, effects). They live alongside design blocks rather than under them. Blocks (Web)
BLOCK.TYPE_NO_PLACEHOLDER_BEHAVIOR Object of type {type} does not support placeholder behavior. Type {type} cannot be configured with placeholder hints or controls. Blocks (Web)
BLOCK.TYPE_NO_PLACEHOLDER_CONTROLS Object of type {type} does not have placeholder controls. Type {type} has no placeholder-related properties. Choose a design block that supports placeholders (graphic, text). Blocks (Web)
BLOCK.TYPE_NO_POSITION Object of type {type} cannot have a position. Blocks of type {type} have no position property. Render blocks and scenes are positioned implicitly. Blocks (Web)
BLOCK.TYPE_NO_ROTATION Object of type {type} does not have a rotation. Rotation requires a Rotation component, which is not present on type {type}. Blocks (Web)
BLOCK.TYPE_NO_SIZE Object of type {type} cannot have a size. Blocks of type {type} have no size property. Cameras, scenes, fills, and shapes are sized implicitly via other blocks. Blocks (Web)
BLOCK.TYPE_NO_VISIBILITY_STATE Object of type {type} does not have any visibility state. Type {type} is always visible (cameras, scenes). Use show/hide on a design block instead. Blocks (Web)
BLOCK.TYPE_PERMANENTLY_NON_SELECTABLE Object of type {type} is permanently non-selectable. Type {type} is engine-managed and cannot be made selectable. Blocks (Web)
BLOCK.UNION_NO_EFFECT Union has no visible effect. The shapes already overlap or are identical. Pick distinct shapes to see a union result. Blocks (Web)
BLOCK.UNKNOWN Block {block} is unknown. The block id no longer references a live design block. Re-resolve the id, or guard with isValid(block) before calling. Blocks (Web)
BLOCK.UNKNOWN_BLOCK_TYPE Unknown block type: {type} Block type ‘{type}’ is not registered. Use a built-in type or register a custom type before calling create(). Blocks (Web)
BLOCK.UNKNOWN_FILL_TYPE Unknown fill type: {type} Fill type ‘{type}’ is not registered. Supported types: color, gradient/linear, gradient/radial, gradient/conical, image, video, pixelStream. Blocks (Web)
BLOCK.UNKNOWN_SHAPE_TYPE Unknown shape type: {type} Shape type ‘{type}’ is not registered. Use a built-in shape type or register a custom one before creation. Blocks (Web)
BLOCK.UUID_UNSUPPORTED The block does not have a UUID. Only renderable design blocks carry a UUID. Check api.block.getType(block) is a design block before calling. Blocks (Web)
BLOCK.VALUES_NOT_FINITE_THREE The values {first}, {second}, and {third} must be finite numbers. All three values must be finite. Replace any NaN or infinity with a concrete number. Blocks (Web)
BLOCK.VALUES_NOT_FINITE_TWO The values {first} and {second} must be a finite number. Both values must be finite. Replace any NaN or infinity with a concrete number. Blocks (Web)
BLOCK.VALUE_NOT_FINITE The value {value} must be a finite number. Pass a finite numeric value. NaN and ±infinity are rejected. Blocks (Web)
BLOCK.VALUE_NOT_FINITE_IN_UNIT_RANGE The value {value} must be a finite number in the range [0, 1]. Clamp the value to [0, 1] before passing it in. NaN and infinities are rejected. Blocks (Web)
BLOCK.VALUE_NOT_NUMBER The value {value} must be a number. Pass a numeric value. Strings, NaN, and infinities are rejected. Blocks (Web)
BLOCK.VARIABLE_NOT_FOUND Variable with name “{name}” not found. Variable ‘{name}’ has not been declared. Call setVariable(name, value) once before reading. Blocks (Web)
BLOCK.VIDEO_FILL_NO_URI The video fill block does not have a valid file URI. Set a non-empty fileURI on the video fill via setURI() before invoking this API. Blocks (Web)
BLOCK.VIDEO_LOAD_FAILED Failed to load video. The video source could not be decoded or fetched. Verify the URI is reachable, the container/codec is supported, and the bytes are a valid video. Blocks (Web)
BLOCK.VIDEO_RESOURCE_NOT_LOADED The video resource has not been loaded yet. Wait for the video resource to reach Ready, or call forceLoadAVResource(block, callback) before retrying. Blocks (Web)
BLOCK.VIDEO_RESOURCE_NOT_LOADED_FOR_OPERATION The video resource has not been loaded yet. Please ensure the video is loaded before {operation}. Await the resource-loaded signal (e.g. the `‘audio’`/`‘video’` block-state transition to `Ready`) before invoking `{operation}`. Blocks (Web)
BLOCK.WIDTH_INVALID_FOR_SCALING Current width is invalid for scaling. The block’s current width is zero or non-finite. Set a valid width before scaling. Blocks (Web)

CODEC#

Audio/video codec capability and decoding.

Code Message Hint Docs
CODEC.ANDROID_AUDIO_ENCODER_CREATE_FAILED Cannot create audio encoder: media_status = {mediaStatus} Android MediaCodec returned media_status={mediaStatus}. Consult the AMediaCodec status codes.
CODEC.ANDROID_JNI_ERROR {reason} The Android MediaCodec/JNI layer reported: {reason}
CODEC.APPLE_OSSTATUS_FAILURE {operation} failed ({status}) The Apple media-framework call ‘{operation}’ returned a non-success status: {status}. The codec, container, or hardware session could not be configured.
CODEC.AUDIO_DECODER_CREATE_FAILED Could not create audio decoder: {reason} The platform’s audio decoder rejected the configuration. Reason: {reason}
CODEC.AUDIO_DECODER_FATAL Encountered fatal audio decoder error: {reason} The audio decoder produced an unrecoverable error during playback. Reason: {reason}
CODEC.AUDIO_DECODER_METADATA_INVALID Invalid audio metadata. The audio metadata required to construct the decoder is missing or invalid.
CODEC.AUDIO_DECODER_NO_CHUNKS Audio has no chunks. The audio resource has no decoded chunks available. Ensure the source has audible data.
CODEC.AUDIO_DECODER_NO_FRAMES Audio has no frames. The audio resource has no decoded frames. The source may be empty or unparseable.
CODEC.AUDIO_DECODER_ZERO_FRAMES_PER_CHUNK Frames per chunk is zero. Audio chunking metadata is invalid; cannot decode. Re-encode the source.
CODEC.AUDIO_DECODER_ZERO_FRAMES_PER_PACKET Frames per packet is zero. Audio packetization metadata is invalid; cannot construct the decoder. Re-encode the source.
CODEC.AUDIO_DECODE_UNSUPPORTED Audio decoding is not supported on this platform. This build does not include an audio decoder. Rebuild with the relevant codec backend, or run on a supported platform.
CODEC.AUDIO_ENCODER_CONFIG_INVALID Invalid audio encoder configuration: {channels} channels at {sampleRate} Hz Audio channels and sample rate must be positive. Got channels={channels}, sampleRate={sampleRate}.
CODEC.AUDIO_ENCODER_CREATE_FAILED Could not create audio encoder: {reason} The platform’s audio encoder rejected the configuration. Reason: {reason}
CODEC.AUDIO_ENCODE_UNSUPPORTED Audio encoding is not supported on this platform. This build does not include an audio encoder. Rebuild with the relevant codec backend, or run on a supported platform.
CODEC.AUDIO_TRACK_NOT_FOUND Couldn’t find audio track in AVContainer. The container has no audio track. Use a media file with an audio stream.
CODEC.BACKEND_TEXTURE_INCOMPLETE Backend texture is incomplete. The Skia backend texture is missing state required for codec read-back.
CODEC.EMPTY_AUDIO_CODEC_STRING Empty audio codec string. The container did not declare an audio codec. Re-encode the file with explicit codec metadata.
CODEC.EMPTY_VIDEO_CODEC_STRING Empty video codec string. The container did not declare a video codec. Re-encode the file with explicit codec metadata.
CODEC.ENCODER_STATE_NOT_FOUND Could not find encoder state. The encoder state was released. Construct a fresh encoder before calling this API.
CODEC.GSTREAMER_CREATE_ELEMENT_FAILED Could not create GStreamer element {name} of type {factory} GStreamer factory ‘{factory}’ is not installed. Install the corresponding gst plugin or pick a different element.
CODEC.GSTREAMER_CREATE_SINK_CAPS_FAILED Could not create sink caps. GStreamer rejected the sink caps. The target codec or format may not be supported.
CODEC.GSTREAMER_CREATE_SOURCE_CAPS_FAILED Could not create source caps. GStreamer rejected the source caps. The codec or media format may not be supported.
CODEC.GSTREAMER_LINK_AUDIO_ENCODER_FAILED Could not link audio encoder pipeline elements. GStreamer could not connect the audio encoder branch. Verify supported caps.
CODEC.GSTREAMER_LINK_AUDIO_FAILED Could not link audio pipeline elements. GStreamer could not connect audio elements. Caps negotiation failed.
CODEC.GSTREAMER_LINK_VIDEO_ENCODER_FAILED Could not link video encoder pipeline elements. GStreamer could not connect the video encoder branch. Verify supported caps.
CODEC.GSTREAMER_LINK_VIDEO_FAILED Could not link video pipeline elements. GStreamer could not connect video elements. Caps negotiation failed.
CODEC.GSTREAMER_PIPELINE_CREATE_FAILED Could not create a new GStreamer pipeline. gst_pipeline_new() failed. The GStreamer runtime may be in a bad state.
CODEC.GSTREAMER_PIPELINE_ERROR {reason} GStreamer pipeline reported: {reason}
CODEC.GSTREAMER_UNEXPECTED_MESSAGE Unexpected message error type. The GStreamer bus reported an unexpected message kind. This may indicate a pipeline state mismatch.
CODEC.METAL_TEXTURE_FROM_IOSURFACE_FAILED Failed to create Metal texture from IOSurface. Metal rejected the IOSurface-backed texture descriptor. The pixel format or surface dimensions may be unsupported.
CODEC.NO_CONTEXT No context. The compute context is not initialized.
CODEC.NO_GPU_CONTEXT No GPU context. The compute context lacks GPU support required for this codec.
CODEC.OFFSCREEN_CANVAS_CREATE_FAILED Could not create offscreen canvas. Offscreen canvas allocation failed. Out-of-memory or unsupported size is the likely cause.
CODEC.OFFSCREEN_CONTEXT_UNAVAILABLE Cannot get offscreen context for encoding. The compute context is not an offscreen (Metal) context. Video encoding requires an offscreen GPU context.
CODEC.PIXEL_BUFFER_NO_IOSURFACE CVPixelBuffer has no IOSurface backing. The pooled pixel buffer is not IOSurface-backed, so it cannot be wrapped as a Metal texture. The pool was created without the IOSurface property.
CODEC.PIXEL_BUFFER_POOL_CREATE_FAILED Failed to create CVPixelBufferPool. CoreVideo could not allocate a pixel buffer pool for the encoder. Out-of-memory or an unsupported pixel format is the likely cause.
CODEC.PRESENTATION_TIMESTAMPS_NOT_UNIQUE Presentation timestamps are not unique. The video track has duplicate presentation timestamps, which prevents building a frame index. Re-mux the source with monotonically increasing PTS.
CODEC.RECORDING_CONTEXT_UNAVAILABLE Could not obtain a recording context. The Skia display canvas has no GPU recording context. The compute context may not be initialized for hardware video decoding.
CODEC.UNKNOWN_AUDIO_DECODER_HANDLE Unknown audio decoder handle. The audio decoder handle is not registered. It may have been destroyed already.
CODEC.UNKNOWN_CODEC_STRING Unknown codec string {codec} The codec identifier ‘{codec}’ is not recognized by this build. Pass a supported codec string (e.g. an H.264 video or AAC audio identifier) when configuring the export. See the supported codecs list for valid identifiers. File Format Support (Web)
CODEC.UNKNOWN_VIDEO_DECODER_HANDLE Unknown video decoder handle {handle} The decoder handle is not registered. It may have been destroyed already.
CODEC.UNKNOWN_VIDEO_DECODER_HANDLE_NO_ARG Unknown video decoder handle. The decoder handle is not registered. It may have been destroyed already.
CODEC.UNREACHABLE_FOR_CODEC Unreachable code reached for codec {codec} Internal switch did not handle codec ‘{codec}’. This is an engine bug — please file a ticket.
CODEC.UNSUPPORTED_CODEC_STRING Unsupported codec string {codec} Codec ‘{codec}’ is recognized but not supported in the current configuration. Choose a widely supported codec such as H.264 for video or AAC for audio. See the supported codecs list for the full set. File Format Support (Web)
CODEC.UNSUPPORTED_H265_CODEC_STRING Unsupported H265 codec string {codec} The H.265 profile encoded in ‘{codec}’ is not supported by GStreamer in this build. See the supported codecs list for alternatives. File Format Support (Web)
CODEC.VIDEO_BITRATE_INVALID Video bitrate must be equal or greater than 0. Pass a non-negative `bitrate` value to the video encoder configuration.
CODEC.VIDEO_DECODER_CREATE_FAILED Could not create video decoder: {reason} The platform’s video decoder rejected the configuration. Reason: {reason}
CODEC.VIDEO_DECODER_FATAL Encountered fatal video decoder error: {reason} The decoder produced an unrecoverable error during playback. Reason: {reason}
CODEC.VIDEO_DECODER_UNRESPONSIVE Video decoder has been unresponsive for more than 10 seconds. Possible decoder deadlock or hardware stall. Reset the decoder or fall back to a software path.
CODEC.VIDEO_DECODE_UNSUPPORTED Video decoding is not supported on this platform. This build does not include a video decoder. Rebuild with the relevant codec backend, or run on a supported platform.
CODEC.VIDEO_ENCODER_BUSY Already encoding another video. Wait for the current video encoding session to finish before starting another.
CODEC.VIDEO_ENCODER_CREATE_FAILED Could not create video encoder: {reason} The platform’s video encoder rejected the configuration. Reason: {reason}
CODEC.VIDEO_ENCODER_INVALID_RESOLUTION Invalid resolution for video encoder: {width} x {height} Resolution must be > 0 in both dimensions. Got {width}x{height}.
CODEC.VIDEO_ENCODE_UNSUPPORTED Video encoding is not supported on this platform. This build does not include a video encoder. Rebuild with the relevant codec backend, or run on a supported platform.
CODEC.VIDEO_SESSION_CREATE_FAILED VTCompressionSessionCreate failed. VideoToolbox could not create a compression session for the requested codec and resolution. The codec may be unsupported on this hardware.
CODEC.VIDEO_TRACK_NOT_FOUND Couldn’t find video track in AVContainer. The container has no video track. Use a media file with a video stream.
CODEC.WEBCODECS_INVALID_FORMAT Invalid codec string format for WebCodecs: {codec} WebCodecs requires a fully-qualified codec id. ‘{codec}’ is not in the expected format.
CODEC.WEBCODECS_NOT_AVAILABLE_NODE WebCodecs API is not available in Node.js. Run in a browser environment, or use a different codec backend on Node.
CODEC.WEBCODECS_NOT_SUPPORTED WebCodecs API is not supported. The current browser does not expose the WebCodecs API. Upgrade to a supported version.

COMPUTE#

Compute contexts (Metal, GL, CPU) and capability negotiation.

Code Message Hint Docs
COMPUTE.COLOR_SPACE_BIT_DEPTH_UNSUPPORTED The current device does not support the required pixel bit depth for the requested color space. Wide-gamut color spaces require 10+ bpp surfaces. Use sRGB on devices that don’t expose deep-color buffers.
COMPUTE.COLOR_SPACE_DISPLAY_UNSUPPORTED The current device does not support displaying the requested color space. The device’s display pipeline cannot render this color space. Fall back to sRGB or query supported spaces first.
COMPUTE.COLOR_SPACE_UNSUPPORTED_BY_ENGINE The engine does not support the requested color space on this platform. Pick a supported color space (sRGB / Display P3) for this build, or rebuild the engine with the appropriate Skia configuration.
COMPUTE.CONTEXT_CREATE_FN_NOT_FOUND Context creation function not found for type {type}. `createContext()` was called with a context type the build was not compiled with. Rebuild with the appropriate `HAS_UBQ_*_CONTEXT` macro defined, or pass a supported type.
COMPUTE.DATA_PROVIDER_EMPTY {kind} data provider is empty. No bytes have been registered for this resource yet. Ensure the data was provided before reading.
COMPUTE.DATA_PROVIDER_NOT_CONTIGUOUS Data provider does not expose contiguous data. The active data provider serves data in chunks. Use the streaming API instead of asking for a contiguous buffer.
COMPUTE.DATA_PROVIDER_NOT_FULLY_AVAILABLE {kind} data provider is not fully available. The provider is still streaming. Wait for the resource state to transition to Ready before requesting the full buffer.
COMPUTE.DATA_PROVIDER_TOO_LARGE {kind} data provider too large for contiguous data. The resource exceeds the contiguous-buffer threshold. Read in chunks via the streaming API instead.
COMPUTE.EGL_CREATE_CONTEXT_FAILED EGL create context error. `eglCreateContext` returned `EGL_NO_CONTEXT`. The requested GL version / attributes are not supported by the driver.
COMPUTE.EGL_CREATE_SURFACE_FAILED EGL create surface error. `eglCreateWindowSurface` / `eglCreatePbufferSurface` returned `EGL_NO_SURFACE`. The native window or pbuffer attributes are incompatible with the chosen EGL config.
COMPUTE.EGL_INVALID_CONTEXT_TYPE Invalid context type passed to the creation function. The EGL context factory received an unexpected type tag. Confirm the caller selects one of the supported context types.
COMPUTE.EGL_NO_CONFIGS_MATCH No EGL configs match the requested attribute list. The requested EGL config attributes (color depth, surface type, GL profile) are not satisfiable on this device. Relax the attribute list or fall back to a CPU context.
COMPUTE.EGL_NO_DISPLAY EGL display unavailable. `eglGetDisplay` returned `EGL_NO_DISPLAY`. The platform does not expose a usable EGL display — fall back to a CPU context.
COMPUTE.EGL_OPERATION_FAILED EGL {operation} error: {reason} The EGL driver reported a failure during `{operation}`. Inspect `reason` for the underlying EGL error string and ensure the platform’s EGL stack is initialized correctly.
COMPUTE.EMSCRIPTEN_MAKE_CONTEXT_CURRENT_FAILED Could not make the WebGL context current. `emscripten_webgl_make_context_current` failed. The browser may have lost the context or the canvas was detached from the DOM.
COMPUTE.GR_DIRECT_CONTEXT_CREATE_FAILED Creating a Skia GrDirectContext failed. Skia could not initialize a direct GPU context from the current EGL/GL surface. Inspect Skia logs for the underlying cause; falling back to a CPU context is the safe option.
COMPUTE.HTTP_DATA_NO_BUFFER HTTP data provider has no buffer. The HTTP data provider has not yet allocated its receive buffer. Wait for the first chunk before reading.
COMPUTE.MP3_PARSE_TRACK_DATA_FAILED Failed to parse MP3 file: could not load track data. The MP3 parser could not extract track frames. The file may be truncated or have an unsupported container variant.
COMPUTE.MP3_PARSE_TRACK_METADATA_INVALID Failed to parse MP3 file: invalid track metadata (channels, sample rate, or frames). The MP3 header lists impossible values for channels / sample rate / frames. Re-encode the file.
COMPUTE.MP4_DURATION_ZERO MP4 duration is zero. The container reports zero duration. The file may be truncated or be a fragmented MP4 missing the duration box.
COMPUTE.MP4_TIMESCALE_ZERO MP4 timescale is zero. The container reports zero timescale. The header is malformed; regenerate the file.
COMPUTE.OPFS_READ_FAILED Failed to read OPFS data. The Origin Private File System rejected the read. The file may have been removed or the browser revoked access.
COMPUTE.SKIA_GL_INTERFACE_INVALID Skia OpenGL interface failed validation. The GL function pointers Skia loaded for this context do not satisfy its requirements. Verify the GL driver advertises the extensions Skia depends on.
COMPUTE.VIDEO_UNSUPPORTED_AUDIO_TRACKS Video has {count} unsupported audio track{plural}. Tracks with unsupported codecs were removed. Re-encode with AAC or another supported codec to retain audio.

EDITOR#

Editor state, history, selection, commands.

Code Message Hint Docs
EDITOR.AUDIO_BUFFER_INVALID_SIZE Invalid audio buffer: size {bufferSize} is not a multiple of frame size {frameSize}. Audio buffer length must be aligned to the frame size. Trim the buffer to a multiple of {frameSize} bytes before submitting. Editing Workflow (Web)
EDITOR.AUDIO_BUFFER_INVALID_URI Invalid buffer URI: {uri} The audio buffer URI ‘{uri}’ does not resolve to a registered buffer. Confirm the buffer was created and the URI matches. Editing Workflow (Web)
EDITOR.AUDIO_BUFFER_NO_DATA No buffer data available. The audio buffer block has no data registered for its file URI. Ensure data is written to the buffer before requesting chunks. Editing Workflow (Web)
EDITOR.AUDIO_DECODER_CREATE_FAILED Could not create audio decoder: {reason} The platform’s audio decoder rejected the input. Confirm the codec is supported on this platform. Editing Workflow (Web)
EDITOR.AUDIO_DECODE_FAILED Fatal audio decoding error: {reason} The audio decoder produced an unrecoverable error during playback. The source may be corrupted or use an unsupported format. Editing Workflow (Web)
EDITOR.AUDIO_FETCH_FAILED Failed to fetch audio. The audio resource could not be retrieved. Check the URI, asset-source registrations, and network connectivity. Editing Workflow (Web)
EDITOR.AUDIO_INVALID_RANGE Invalid range requested: start = {start}, end = {end}. Audio chunk ranges must satisfy 0 <= start < end. Adjust the request bounds and retry. Editing Workflow (Web)
EDITOR.AUDIO_NOT_LOADED The audio has not been loaded yet. Call forceLoadAVResource(block, callback) or wait for the resource state to reach Ready before querying audio metadata. Editing Workflow (Web)
EDITOR.AUDIO_UNSUPPORTED_FORMAT Unsupported audio format with channels: {channels}, bits: {bits}, sample format: {sampleFormat}. The engine cannot resample this combination on the current platform. Re-encode the audio to a supported profile. Editing Workflow (Web)
EDITOR.AV_BLOCK_INVALID_WITH_HINT The block with ID {id} is not valid. It may have been deleted, e.g., when a new scene was loaded. Re-resolve the block id ({id}) before calling AV APIs. Async callbacks frequently outlive their target block. Editing Workflow (Web)
EDITOR.AV_DURATION_UNDEFINED The AV container duration is undefined. The decoder could not determine the resource’s total duration. The container may be malformed or use an unsupported codec. Editing Workflow (Web)
EDITOR.AV_OPERATION_AUDIO_OR_VIDEO_FILL This operation is only supported for audio blocks and video fills. Pass an audio block, or resolve the video fill of the block via getFill(block) before calling. Editing Workflow (Web)
EDITOR.AV_OPERATION_BLOCK_TYPE_UNSUPPORTED This operation is only supported for video fills and audio blocks. Resolve the video fill of the block via getFill(block), or pass an audio block directly. Editing Workflow (Web)
EDITOR.AV_OPERATION_VIDEO_ONLY This operation is only supported for video fills. Only blocks whose fill is a video fill expose video-specific metadata. Audio blocks don’t apply here. Editing Workflow (Web)
EDITOR.BLOCK_NOT_ATTACHED_TO_PAGE The target block is not attached to the page. Add the block as a child of the page before setting it as the page’s duration source. Pages (Web)
EDITOR.BLOCK_NOT_A_PAGE The given page block is not a page. The first argument must be a page block. Use api.block.findByType(‘//ly.img.ubq/page’) to obtain one. Pages (Web)
EDITOR.BLOCK_NO_DURATION The target block has no duration. The block has no Duration component. Confirm the block type supports durations, or check via supportsDuration(block) first. Editing Workflow (Web)
EDITOR.BLOCK_NO_DURATION_AS_PAGE_SOURCE The target block doesn’t support duration and therefore cannot be duration source. Pick a block that has a Duration component (e.g. video fill, audio, or track) to drive the page’s duration. Pages (Web)
EDITOR.BLOCK_NO_DURATION_SUPPORT The target block doesn’t support durations. Duration applies only to time-aware blocks (pages, tracks, video/audio fills). Use supportsDuration(block) before calling. Editing Workflow (Web)
EDITOR.BLOCK_NO_PLAYBACK_CONTROL_SUPPORT The target block doesn’t support playback control. Playback control (looping, muted, speed, volume) applies only to AV-source blocks. Use supportsPlaybackControl(block) before calling. Editing Workflow (Web)
EDITOR.BLOCK_NO_PLAYBACK_SUPPORT The target block doesn’t support playback. Playback time applies only to blocks with a PlaybackTime component (scenes, pages, video/audio). Use supportsPlaybackTime(block) before calling. Editing Workflow (Web)
EDITOR.BLOCK_NO_TIME_OFFSET_SUPPORT The target block doesn’t support time offsets. Time offsets apply only to time-aware children of a track. Use supportsTimeOffset(block) before calling. Editing Workflow (Web)
EDITOR.BLOCK_NO_TRIM_SUPPORT The target block doesn’t support trimming. Trimming applies only to video fills, audio blocks, and similar AV-source blocks. Use supportsTrim(block) before calling. Editing Workflow (Web)
EDITOR.CAMERA_CLAMP_ACROSS_SCENES Cannot clamp camera to elements of different scenes. All blocks passed to camera clamping must belong to the same scene. Group by scene before calling. Editing Workflow (Web)
EDITOR.CAMERA_CLAMP_BLOCKS_WITHOUT_SCENE Cannot clamp camera to blocks without a scene. Attach the blocks to a scene before enabling camera clamping. Floating blocks are not eligible. Editing Workflow (Web)
EDITOR.CAMERA_CLAMP_EMPTY_BLOCKS Cannot clamp camera to an empty block list. Provide at least one block (or the scene itself) to clamp against. Editing Workflow (Web)
EDITOR.CAMERA_CLAMP_NO_PAGES No pages found in the scene. Camera clamping with page-carousel features requires at least one page block. Add a page before enabling clamping. Pages (Web)
EDITOR.CAMERA_CLAMP_PAGE_NOT_LAYOUTED The page has not been layouted. Layout has not run yet for this page. Trigger an engine update or wait one frame before enabling camera clamping. Pages (Web)
EDITOR.CAMERA_ENTITY_INVALID Camera entity is invalid. Could not resolve a valid camera for the provided scene or camera id. Confirm the scene has a main camera and the id references it. Editing Workflow (Web)
EDITOR.CAMERA_NOT_VALID Camera is not valid. The active scene has no camera entity. Create the scene through the normal `scene.create*()` path so the camera is set up automatically. Scenes (Web)
EDITOR.CAMERA_POSITION_CLAMP_NOT_ENABLED This block does not have camera position clamping enabled. Enable camera position clamping for this block first, or check whether it is enabled before disabling it. Editing Workflow (Web)
EDITOR.CAMERA_ZOOM_CLAMP_LIMITS_INVALID To enable camera zoom clamping, at least one of minZoomLimit or maxZoomLimit must be positive. Set at least one of minZoomLimit or maxZoomLimit to a positive value. Use a negative value on the other side to leave it unbounded. Editing Workflow (Web)
EDITOR.CAMERA_ZOOM_CLAMP_LIMITS_ORDER The minZoomLimit has to be smaller or equal to maxZoomLimit. Swap or adjust the values so minZoomLimit <= maxZoomLimit. Editing Workflow (Web)
EDITOR.CAMERA_ZOOM_CLAMP_NOT_ENABLED This block does not have camera zoom clamping enabled. Enable camera zoom clamping for this block first, or check whether it is enabled before disabling it. Editing Workflow (Web)
EDITOR.CAMERA_ZOOM_LIMITS_NOT_FINITE The zoom limits must be finite numbers. Both minZoomLimit and maxZoomLimit must be finite. Use a negative value to indicate no limit on that side. Editing Workflow (Web)
EDITOR.COMMAND_ARG_TYPE_MISMATCH Argument at index {index} for command ‘{command}’ doesn’t match expected type ‘{expectedType}’. Got ‘{actualType}’ instead. Convert the argument to ‘{expectedType}’ or pass a different value matching the command signature. Editing Workflow (Web)
EDITOR.COMMAND_NOT_REGISTERED {command} is not a registered command. Command ‘{command}’ was not found in the registry. Confirm the name is correct and that the responsible module is loaded. Editing Workflow (Web)
EDITOR.COMMAND_RETURN_TYPE_MISMATCH Returned value for command ‘{command}’ did not match expected type (got ‘{actualType}’, expected ‘{expectedType}’). Did the responsible system never execute? The system handling ‘{command}’ returned a value of the wrong type. Verify the handler is registered and producing ‘{expectedType}’. Editing Workflow (Web)
EDITOR.COMMAND_UNIMPLEMENTED Unimplemented. The command type has no implementation of this method. Subclasses must override determineType() and any other defaults they rely on. Editing Workflow (Web)
EDITOR.COMMAND_WRONG_ARG_COUNT Received {received} arguments for command {command}, but expected {expected}. Command ‘{command}’ takes {expected} arguments. Adjust the call to match the documented signature. Editing Workflow (Web)
EDITOR.CROP_ELEMENT_NOT_CROPPABLE This element can’t be cropped. Crop operations require a block with a cropped fill (image or video). Verify api.block.supportsCrop(id) before calling {operation}. Editing Workflow (Web)
EDITOR.CROP_NO_SELECTED_ELEMENT Select an element to crop. Select a block before invoking {operation}. Use api.block.findAllSelected() to verify a selection exists. Editing Workflow (Web)
EDITOR.FONT_DATA_LOAD_FAILED Font resource ready but failed to load font data: {uri}. The font resource finished loading but the data could not be parsed. The payload may be empty or use an unsupported font format. Custom Fonts (Web)
EDITOR.FONT_LOAD_FAILED Failed to load font ‘{uri}’: {reason}. The font resource at ‘{uri}’ could not be loaded ({reason}). Verify the URI is reachable and the asset is registered. Custom Fonts (Web)
EDITOR.FONT_METRICS_EXTRACT_FAILED Failed to extract font metrics from: {uri}. The font file at ‘{uri}’ could not be parsed for metrics. Confirm the file is a valid TTF/OTF and not corrupted. Custom Fonts (Web)
EDITOR.FONT_URI_EMPTY Font file URI cannot be empty. Pass a non-empty URI pointing to a font file registered with the engine. See addLocalAssetSourceFromJSON or registerFont docs for setup. Custom Fonts (Web)
EDITOR.HISTORY_HANDLE_INVALID Could not obtain a valid history handle. The editor has no active history buffer. Confirm a scene is loaded and the engine has fully initialized before invoking history APIs. Undo And History (Web)
EDITOR.MEMORY_QUERY_UNAVAILABLE Could not obtain {kind} memory for the current platform. The platform does not expose {kind}-memory statistics, or the query failed. Treat memory metrics as best-effort on this platform. Editing Workflow (Web)
EDITOR.MOVEMENT_CONSTRAINT_NEGATIVE setMovementConstraint value must be non-negative; call removeMovementConstraint to clear a constraint. Pass a non-negative distance, or call removeMovementConstraint(targets) instead of using a negative sentinel. Editing Workflow (Web)
EDITOR.NEGATIVE_DURATION Negative durations are not supported. Pass a non-negative duration. Use 0 for an empty interval or std::numeric_limits<double>::infinity() for unbounded. Editing Workflow (Web)
EDITOR.NO_SCENE_AVAILABLE No scene available. The editor has no active scene. Load or create one before invoking this API. Editing Workflow (Web)
EDITOR.NO_UNDO_STEP_AVAILABLE No undo step available to remove. The undo stack is empty. Verify the editor has performed at least one undoable action before calling removeUndoStep(). Editing Workflow (Web)
EDITOR.PADDING_NOT_FINITE The padding values must be finite numbers. All four padding components must be finite. Replace any NaN or infinity with a concrete number (zero is fine). Editing Workflow (Web)
EDITOR.PAGES_NOT_RESIZED Pages could not be resized. Resize failed for one or more pages. Confirm each page is unlocked (api.block.isTransformLocked / isAllowedByScope) and that the requested width and height are finite and positive. Pages (Web)
EDITOR.PAGE_CONTENT_ASPECT_RATIO_INVALID ContentAspectRatio preset cannot be used to create a new page; it only applies to blocks with intrinsic content dimensions. Pages have no intrinsic content size. Use a FreeAspectRatio, FixedAspectRatio, or FixedSize preset instead.
EDITOR.PAGE_RESIZE_DISABLED Page resizing interaction is disabled in UBQ settings. Enable page resizing via settings (e.g. ‘features/page/resize’) before invoking the resize interaction. Pages (Web)
EDITOR.PAGE_RESIZE_FIXED_ASPECT_ONLY Page resizing interaction is restricted to fixed aspect ratio in UBQ settings. Allow free-aspect resizing in settings, or constrain the interaction to the configured fixed aspect ratio. Pages (Web)
EDITOR.PLAYBACK_SPEED_OUT_OF_RANGE Invalid playback speed {speed}. Must be between 0.25 and 3.0. For non-video blocks playback speed must be in [0.25, 3.0]. Video fills support a wider range. Editing Workflow (Web)
EDITOR.PLAYBACK_SPEED_TOO_LOW Invalid playback speed {speed}. Must be at least 0.25. Pass a playback speed of at least 0.25. Speeds below this are not supported. Editing Workflow (Web)
EDITOR.RESOURCE_LOAD_FAILED Failed to load resource {uri}. The resource at ‘{uri}’ could not be loaded. Check that the URI is reachable, CORS allows access, and the format is supported. Editing Workflow (Web)
EDITOR.RESOURCE_URI_EMPTY The resource has an empty URI. Set a non-empty file URI on the video fill or audio block before requesting a load. Editing Workflow (Web)
EDITOR.ROLE_NOT_FOUND Role {role} not found. ‘{role}’ is not a known editor role. Valid roles are defined by the EditorRole enum (e.g. Adopter, Creator). Settings (Web)
EDITOR.SAFE_AREA_INSETS_NEGATIVE Safe area inset values must be non-negative. Each inset describes a non-negative distance from the viewport edge. Use 0 to disable an inset rather than a negative value.
EDITOR.SAFE_AREA_INSETS_NOT_FINITE Safe area inset values must be finite numbers. All four inset components must be finite. Replace any NaN or infinity with a concrete number (zero is fine).
EDITOR.SCENE_CONTENT_EMPTY Received empty scene content. The scene-serialization command was called with an empty payload. Pass the serialized scene string returned by `scene.saveToString(…)`. Scenes (Web)
EDITOR.SCENE_DECOMPRESS_FAILED Failed to decompress scene data. The compressed scene payload could not be decoded. The file may be truncated or produced by an incompatible compressor. Editing Workflow (Web)
EDITOR.SCENE_ENTITY_INVALID Scene entity is invalid. Could not resolve a valid scene for the provided id. Confirm the id is a scene or a camera attached to a scene. Editing Workflow (Web)
EDITOR.SCENE_INPUT_INVALID Received scene input is not a valid serialization. The payload does not parse as a CE.SDK scene document. Confirm it was produced by api.scene.saveToString() or saveToArchive(). Editing Workflow (Web)
EDITOR.SCENE_MISSING_REQUIRED_KEY Invalid scene file: “{key}” key not found. The serialized scene is missing the required top-level “{key}” field. The file may be truncated or produced by an incompatible writer. Editing Workflow (Web)
EDITOR.SCENE_REQUIRES_URL_LOAD Scene is part of an archive and must be loaded via URL. Use api.scene.loadFromURL() or loadFromArchive() rather than loadFromString() for archive-bound scenes. Editing Workflow (Web)
EDITOR.SCENE_SIZE_UNAVAILABLE Could not get scene size. Scene may not have a layout yet. Wait for the first layout pass to complete (e.g. after the next `api.update()`) before reading scene dimensions.
EDITOR.SETTING_ENUM_VALUE_NOT_FOUND Enum value {value} not found. ‘{value}’ is not a member of the target enum. Call getSettingEnumOptions() to list valid values. Settings (Web)
EDITOR.SETTING_NOT_ENUM Setting {keypath} is not an enum. Use the type-specific getter/setter (Bool/Int/Float/String/Color) instead of the Enum variant for non-enum settings. Settings (Web)
EDITOR.SETTING_NOT_FOUND Setting {keypath} not found. No setting registered at ‘{keypath}’. Use findAllSettings() to discover valid key paths. Settings (Web)
EDITOR.SETTING_TYPE_UNSUPPORTED Unsupported setting type for {keypath}. The setting at ‘{keypath}’ has a type the public API does not expose. Use getSettingType() to discover the supported categories. Settings (Web)
EDITOR.SPLIT_BLOCK_FAILED Could not split block of type “{blockType}”: {reason} Splitting a block failed at an intermediate step ({reason}). Confirm the block via api.block.isValid(block) and api.block.supportsDuration(block), and that the split time lies inside the block’s time range (api.block.getTimeOffset(block) to getTimeOffset + getDuration). Editing Workflow (Web)
EDITOR.THUMBNAIL_SAMPLES_INVALID Can’t generate thumbnail sequence with samplesPerChunk <= 0. Pass a positive samplesPerChunk so each chunk contains a non-empty waveform sample window. Editing Workflow (Web)
EDITOR.TOUCH_ROTATE_TOO_MANY_POINTS Touch rotate event has more than two touch points. The rotate gesture is only defined for two-finger input. Cancel the gesture when a third pointer joins.
EDITOR.TRIM_OFFSET_UNDEFINED The trim offset is undefined. The AV resource duration or playback speed yields a non-finite trim offset. Confirm the resource is loaded and playback speed is positive. Editing Workflow (Web)
EDITOR.UNIT_CONVERSION_FAILED Failed to convert to given design unit. The requested unit conversion is not supported in this context. Confirm the scene has a configured DPI and design unit. Editing Workflow (Web)
EDITOR.UNSUPPORTED_SERIALIZATION_FORMAT Unsupported serialization format. The scene declares a serialization format this engine version cannot read. Re-save the scene with the current engine, or upgrade the engine. Editing Workflow (Web)
EDITOR.VALUE_NOT_FINITE The value {value} must be a finite number. NaN and infinity are not accepted. Pass a finite floating-point value. Editing Workflow (Web)
EDITOR.VECTOR_INVALID_MIRROR_MODE Invalid mirror mode {mode}. Expected 0 (None), 1 (AngleAndLength), or 2 (AngleOnly). Pass 0, 1, or 2 — values map to the VectorHandleMirrorMode enum (None, AngleAndLength, AngleOnly). Vector Edit (Web)
EDITOR.VECTOR_NODE_NOT_DELETABLE Cannot delete node: contour must have at least 3 nodes. A vector contour cannot be reduced below 3 nodes. Delete the entire contour or merge it with another path instead. Vector Edit (Web)
EDITOR.VECTOR_NO_CONTROL_POINT_SELECTED No vector control point is selected. Vector control-point operations require an active selection. Select a control point first before invoking this API. Vector Edit (Web)
EDITOR.VECTOR_NO_NODE_SELECTED No vector node is selected. Vector node operations require an active selection. Select a node first via the vector editor UI or programmatically before invoking this API. Vector Edit (Web)
EDITOR.VECTOR_NO_PATH_EDITING No vector path is being edited. Enter vector edit mode on a vector block before invoking this API. Vector path mutations require an active edited path. Vector Edit (Web)
EDITOR.VIDEO_DECODER_CREATE_FAILED Could not create video decoder: {reason} The platform’s video decoder rejected the input. Confirm the codec is supported on this platform — see CE.SDK capability docs. Editing Workflow (Web)
EDITOR.VIDEO_DECODE_FAILED Fatal video decoding error: {reason} The decoder produced an unrecoverable error during playback. The source may be corrupted or use an unsupported codec profile. Editing Workflow (Web)
EDITOR.VIDEO_FETCH_FAILED Failed to fetch video. The video resource could not be retrieved. Check the URI, asset-source registrations, and network connectivity. Editing Workflow (Web)
EDITOR.VIDEO_NOT_LOADED The video has not been loaded yet. Call forceLoadAVResource(block, callback) or wait for the resource state to reach Ready before querying video metadata. Editing Workflow (Web)
EDITOR.ZOOM_AUTO_FIT_NOT_ENABLED This block does not have zoom auto-fit enabled. Call enableZoomAutoFit(block) before disabling, or check isZoomAutoFitEnabled(block) first. Editing Workflow (Web)
EDITOR.ZOOM_BLOCK_NOT_LAYOUTED Could not zoom to block. Block hasn’t been layouted yet. Wait for the first layout pass to complete (e.g. after the next `api.update()`) before zooming to the block.
EDITOR.ZOOM_NO_CAMERA No valid camera exists, can’t zoom to block. Ensure the scene has been initialized with a camera before invoking zoom-to-block.

ENCODE#

Image and video encoding/export.

Code Message Hint Docs
ENCODE.AUDIO_BLOCK_DIRECT_EXTRACTION_UNSUPPORTED Unable to extract MP4 audio directly from audio block. The audio file may not be in a compatible format or may not be loaded. Re-encode the audio block as MP4-compatible AAC before attempting direct extraction, or load the block first.
ENCODE.AUDIO_BLOCK_INVALID Invalid audio block entity. The id does not reference a live audio block. Re-resolve it before exporting and verify with api.block.isValid(block).
ENCODE.AUDIO_BUFFER_EMPTY Audio buffer is empty. The audio block has zero bytes of audio data. Provide a valid, non-empty audio source for the block before exporting.
ENCODE.AUDIO_BUFFER_NOT_FOUND Audio buffer not found. The audio block’s buffer is not registered. Ensure audio data was provided before export.
ENCODE.AUDIO_CHANNEL_COUNT_INVALID Number of audio channels must be {expected}. Audio export requires {expected} channels. Convert mono/multichannel sources first.
ENCODE.AUDIO_CHUNK_READ_FAILED Failed to read audio chunk data from data provider. The data provider returned no bytes for an audio chunk. The source may be truncated.
ENCODE.AUDIO_CONTEXT_NOT_AVAILABLE_DURING_EXPORT Audio context not available during export. The audio context was destroyed mid-export. Keep it alive until the export callback fires.
ENCODE.AUDIO_CONTEXT_PARAMS_INVALID Invalid audio context parameters. Pass a supported sample rate and channel count in the audio export options before exporting.
ENCODE.AUDIO_CONTEXT_UNAVAILABLE No audio context available for export. Audio context is not initialized. Create one with the active compute context before exporting.
ENCODE.AUDIO_DURATION_INVALID Duration must be a positive finite number. Audio export duration must be > 0 and finite. Check the source has a well-defined duration.
ENCODE.AUDIO_EXPORT_OPTIONS_NOT_OBJECT Audio export options must be a valid JSON object. Pass the audio export options as a JSON object string, e.g. {“sampleRate”: 48000}.
ENCODE.AUDIO_EXPORT_OPTIONS_PARSE_FAILED Failed to parse audio export options: {reason} The audio export options string is not valid JSON ({reason}). Fix the JSON syntax and retry.
ENCODE.AUDIO_FRAME_CALC_INVALID Invalid audio frame calculations. Computed frame counts are nonsensical (zero or negative). Verify duration, sample rate, and processing rate.
ENCODE.AUDIO_FRAME_SIZE_CALC_INVALID Invalid audio frame size calculations. Frame-size math produced zero or negative values. Verify channel count and bit depth.
ENCODE.AUDIO_INVALID_SAMPLE_RATE_FOR_TIMESTAMP Invalid sample rate for timestamp conversion. Source audio sample rate is zero or negative. Verify it before computing timestamps.
ENCODE.AUDIO_MIME_TYPE_INVALID Mime type must be “audio/wav” or “audio/mp4”. Pass audio/wav or audio/mp4 as the target mime type for audio export.
ENCODE.AUDIO_MP4_NO_DATA_MUXED No audio data was muxed into MP4 container. The muxer received no PCM frames. Check the source produced audio packets before finalization.
ENCODE.AUDIO_MUXER_DESTROYED Muxer was destroyed before finalization. The MP4 muxer was released early. Keep the encode service alive until the result callback fires.
ENCODE.AUDIO_NO_CHUNKS_IN_RANGE No audio chunks found in the specified time range. The selected time range has no audio data. Adjust start/end times or verify the audio source covers the requested span.
ENCODE.AUDIO_NO_DATA_CAPTURED No audio data captured during export. The export pipeline produced no audio samples. Verify the source has audible content within the requested range.
ENCODE.AUDIO_NO_PCM_COLLECTED No PCM data was collected. The decoder returned zero PCM samples. The audio source may be empty or fully silent.
ENCODE.AUDIO_PROCESSING_RATE_INVALID Audio processing rate must be a positive finite number. Pass a positive, finite audio sample rate in the audio export options before exporting.
ENCODE.AUDIO_SAMPLE_RATE_INVALID Sample rate must be {expected}. Audio export requires sample rate {expected}. Resample the source before exporting.
ENCODE.AUDIO_SERVICE_UNAVAILABLE No audio service available for export. The engine was built without audio support. Enable it in the build config and rebuild.
ENCODE.AUDIO_SINGLE_TRACK_INDEX_NONZERO Single-track audio container only supports trackIndex=0, got {index} For single-track containers, pass trackIndex=0.
ENCODE.AUDIO_START_TIME_OUT_OF_BOUNDS Start time {start} is out of bounds. Valid range: 0-{max} Audio start time {start} must be within [0, {max}].
ENCODE.AUDIO_TIME_RANGE_INVALID Invalid time range: start={start}, end={end} Audio time range must satisfy 0 <= start < end. Got start={start}, end={end}.
ENCODE.AUDIO_TIME_RANGE_INVALID_AFTER_TRIM Invalid time range after applying trim settings and options. After applying trim/clip parameters the selected range is empty. Adjust start/end times.
ENCODE.AUDIO_TRACK_INDEX_OUT_OF_BOUNDS Audio track index {index} is out of bounds. Valid range: 0-{max} Pass an audio track index within [0, {max}].
ENCODE.AUDIO_UNSUPPORTED_EXPORT_FORMAT Unsupported audio export format. Use audio/wav or audio/mp4 as the export target.
ENCODE.BLOCK_MUST_BE_PAGE The block to export must be a page. Audio export targets a page block. Pass a page or call api.scene.getPages() to obtain one.
ENCODE.BLOCK_SIZE_ZERO Block to export has size 0. Set a positive width and height on the block, or pick a different block, before exporting.
ENCODE.CANCELLED_BY_BLOCK_ERROR The export was cancelled due to block {block} having an error: {reason} Block {block} entered an error state during export ({reason}). Resolve the block’s underlying issue and retry.
ENCODE.COLOR_MASK_DATA_FAILED Color masking data could not be generated. The renderer failed to produce the color-mask buffer. Retry, or simplify the scene if it has very high resolution.
ENCODE.COLOR_MASK_DISABLED Color masking is not enabled. Enable color masking via the export options before requesting mask data.
ENCODE.CONTEXT_AUDIO_CREATE_FAILED Could not create audio context. Audio context creation failed. Ensure the platform exposes an AudioContext and is not in a frozen tab.
ENCODE.CONTEXT_RENDER_CREATE_FAILED Could not create render context. GPU context creation failed. Confirm the host supports the required backend (WebGL2/Metal) and retry.
ENCODE.DIRECT_EXTRACTION_UNSUPPORTED Direct extraction not supported for this block/mime type combination. The requested block kind cannot be extracted directly to this mime type. Use a transcoding path instead.
ENCODE.ENTITY_INVALID Entity is invalid. The block id no longer references a live block. Re-resolve before exporting.
ENCODE.ENTITY_NOT_PART_OF_PAGE Entity is not part of a valid page. Audio export requires the block to be inside a page. Add the block to a page before exporting.
ENCODE.EXPORT_FAILED Export failed. A non-specific export error was produced. Check earlier log lines for the root cause and retry.
ENCODE.EXPORT_OPTIONS_NOT_OBJECT Export options must be a valid JSON object. Pass the export options as a JSON object string, e.g. {“pngCompressionLevel”: 6}.
ENCODE.EXPORT_OPTIONS_PARSE_FAILED Failed to parse export options: {reason} The export options string is not valid JSON ({reason}). Fix the JSON syntax and retry.
ENCODE.GPU_LOST_GENERIC GPU context was lost during export rendering. Try exporting at a lower resolution. Reduce the export resolution or split the scene, then retry. Restart the engine if the GPU context fails to recover.
ENCODE.GPU_LOST_PDF GPU context was lost during PDF export rendering. The scene may contain elements that exceed the device’s capabilities. Lower the export DPI or split the scene into multiple pages, then retry.
ENCODE.GPU_LOST_SVG GPU context was lost during SVG export rendering. Try reducing the size of large images. Re-encode large source images to a lower resolution before exporting, or restart the engine to recover the GPU context.
ENCODE.GROUP_INVALID Invalid group entity. The group id does not reference a live group. Re-resolve it before exporting and verify with api.block.isValid(group).
ENCODE.GROUP_NOT_IN_PAGE_HIERARCHY Group entity not found in page hierarchy. The group is not a descendant of the page passed to the encode call.
ENCODE.GROUP_NOT_PART_OF_PAGE Group is not part of a valid page. Groups must live under a page. Reparent the group or pick a page descendant.
ENCODE.GROUP_NO_CHILDREN Group has no child blocks. Audio export requires at least one block in the group.
ENCODE.IMAGE_JPEG_FAILED Failed to encode JPEG. The JPEG encoder rejected the input.
ENCODE.IMAGE_JPEG_OOM Failed to encode JPEG. Memory allocation failed. Not enough memory for the JPEG buffer.
ENCODE.IMAGE_PNG_FAILED Failed to encode PNG. The PNG encoder rejected the input. The image dimensions or pixel format may be unsupported.
ENCODE.IMAGE_PNG_OOM Failed to encode PNG. Memory allocation failed. Not enough memory for the PNG buffer. Reduce dimensions or free memory.
ENCODE.IMAGE_READ_PIXELS_FAILED Failed to read pixels. The source image could not be read into a CPU buffer. The compute context may be missing GPU read-back support.
ENCODE.IMAGE_TGA_OOM Failed to encode TGA. Memory allocation failed. Not enough memory for the TGA buffer. Reduce dimensions or free memory.
ENCODE.IMAGE_TGA_REQUIRES_RGBA32 TGA encoding only supports 32-bit RGBA pixel data. Convert the image to 32-bit RGBA before encoding to TGA.
ENCODE.IMAGE_UNKNOWN_MIME Unknown MIME type for image encoding: {mimeType} Mime type ‘{mimeType}’ is not supported. Use one of image/png, image/jpeg, image/webp, image/tga.
ENCODE.IMAGE_WEBP_FAILED Failed to encode WebP. The WebP encoder rejected the input.
ENCODE.IMAGE_WEBP_OOM Failed to encode WebP. Memory allocation failed. Not enough memory for the WebP buffer.
ENCODE.INSUFFICIENT_RESOURCES Not enough resources available on device. Try exporting at a lower resolution. Reduce the requested export resolution or simplify the scene to fit available memory.
ENCODE.MASK_BUFFER_FAILED Could not acquire mask buffer. Please try again. The renderer transiently failed to allocate a mask buffer. Retry the export after a short delay.
ENCODE.MASK_COLOR_OUT_OF_RANGE Mask color values must be between 0 and 1. Clamp each mask color component (r/g/b/a) to [0, 1] before passing to the export options.
ENCODE.MIME_TYPE_INVALID Invalid mime-type ‘{mimeType}’, expected ‘{a}’, ‘{b}’ or ‘{c}’. Use one of ‘{a}’, ‘{b}’, or ‘{c}’. Update the asset’s mime type at registration time.
ENCODE.NOT_ALL_RESOURCES_LOADED Not all resources were loaded. Some scene resources are still pending. Subscribe to resource events or poll until all assets reach Ready, then retry.
ENCODE.OFFSCREEN_CANVAS_CREATE_FAILED Could not create offscreen canvas. Offscreen canvas allocation failed. Confirm the host environment supports the required GPU surface.
ENCODE.OUTPUT_SIZE_EXCEEDS_MAX The output size of {width}x{height} px for the export exceeds the maximum supported size {maxSize} of the device. Reduce the export resolution so its larger dimension is at most {maxSize} px.
ENCODE.OUTPUT_SIZE_INSUFFICIENT_RESOURCES Could not export at {width}x{height}. Not enough resources available on device. Try exporting at a lower resolution. Reduce the export resolution from {width}x{height} or simplify the scene, then retry.
ENCODE.PAGE_NO_CHILDREN Page has no children. Audio export requires at least one child block on the page.
ENCODE.PDF_CREATE_FAILED Failed to create a PDF document. The PDF writer rejected the document. Check available memory and retry with a smaller scene if needed.
ENCODE.PDF_CREATE_FAILED_RESOURCES Failed to create PDF document. Not enough resources available on device. Try exporting at a lower resolution. Reduce the page size or DPI and retry. Very large scenes can exceed device memory limits.
ENCODE.PDF_RENDER_SIZE_EXCEEDS_MAX The effective rendering size of {width}x{height} px (at {dpi} DPI) for the PDF export exceeds the maximum supported texture size {maxSize} of the device. Try reducing the scene DPI or the size of the exported block. Reduce the scene DPI or the export size so the rendered dimensions stay at or below {maxSize} px.
ENCODE.PIXEL_BUFFER_UNEXPECTED_SIZE Unexpected pixel buffer size for color analysis. The pixel buffer dimensions don’t match the expected analysis layout. Re-read the buffer or verify the source surface.
ENCODE.PIXEL_STREAM_NO_DATA Failed to encode pixel stream: no data was produced. Inspect the pixel stream pipeline. The exporter produced an empty result for the requested options.
ENCODE.RELATIVE_URLS_NOT_SUPPORTED Relative URLs are not supported. Resolve all relative URLs to absolute ones before invoking the operation.
ENCODE.RESOURCE_DATA_EMPTY Empty resource data: {uri} The resource at ‘{uri}’ loaded but returned empty bytes. Re-source the file.
ENCODE.RESOURCE_LOAD_FAILED_WITH_REASON Failed to load resource ‘{uri}’: {reason} The resource at ‘{uri}’ failed to load ({reason}). Confirm reachability and supported format.
ENCODE.RESULT_BUFFER_FAILED Could not acquire result buffer. Please try again. The renderer transiently failed to allocate a result buffer. Retry the export after a short delay.
ENCODE.SVG_CANVAS_CREATE_FAILED Failed to create SVG canvas. The SVG canvas could not be allocated. Check available memory and retry.
ENCODE.SVG_COLOR_MASK_UNSUPPORTED Color masking is not supported for SVG export. SVG output cannot carry a color mask. Disable color masking or export as PNG/PDF instead.
ENCODE.SVG_MEMORY_ALLOC_FAILED Could not allocate memory for SVG export. Reduce the scene complexity or available pixel count, then retry the SVG export.
ENCODE.SVG_NO_DATA SVG export produced no data. The renderer produced an empty SVG. Confirm the page has visible content and try again.
ENCODE.TARGET_NOT_IN_PAGE_HIERARCHY Target entity not found in page hierarchy. The entity may not be part of this page. Verify the target block is a descendant of the page passed to the encode call.
ENCODE.TRACK_INVALID Invalid track entity. The track id does not reference a live track. Re-resolve it before exporting and verify with api.block.isValid(track).
ENCODE.TRACK_NOT_IN_PAGE_HIERARCHY Track entity not found in page hierarchy. The track is not a descendant of the page passed to the encode call.
ENCODE.TRACK_NOT_PART_OF_PAGE Track is not part of a valid page. Tracks must live under a page. Reparent the track or pick a page descendant.
ENCODE.TRACK_NO_CHILDREN Track has no child blocks. Audio export requires at least one block on the track.
ENCODE.VIDEO_BLOCK_HAS_ERROR The export was cancelled due to block {block} having an error: {reason} Block {block} reported an error during export: {reason}. Fix the block before retrying.
ENCODE.VIDEO_CONCURRENT_ENCODING The VideoEncodeService is currently encoding. Concurrent encoding is not supported. Wait for the current video export to finish before starting another.
ENCODE.VIDEO_EXPORT_OPTIONS_NOT_OBJECT Video export options must be a valid JSON object. Pass the video export options as a JSON object string, e.g. {“videoBitrate”: 8000000}.
ENCODE.VIDEO_EXPORT_OPTIONS_PARSE_FAILED Failed to parse video export options: {reason} The video export options string is not valid JSON ({reason}). Fix the JSON syntax and retry.
ENCODE.VIDEO_FILL_AUDIO_REQUIRES_MP4 Video fill audio extraction is only supported for audio/mp4 format. Pass audio/mp4 as the target mime type when extracting audio from a video fill.
ENCODE.VIDEO_FILL_INVALID Invalid video fill entity. The video fill id does not reference a live fill. Re-resolve it with api.block.getFill(block) and confirm api.block.isValid(fill) before exporting.
ENCODE.VIDEO_FILL_NO_URI The video fill block does not have a valid file URI. Assign a valid fileURI to the video fill before requesting audio extraction.
ENCODE.VIDEO_FRAME_FAILED Failed to encode video frame: {reason} The video encoder rejected a frame ({reason}). Confirm codec compatibility and available memory, then retry.
ENCODE.VIDEO_HAS_NO_AUDIO_TRACKS The video does not contain any audio tracks. Use a video that has at least one audio track for audio extraction.
ENCODE.VIDEO_MIME_NOT_MP4 Mime type is not “video/mp4”. Video export currently only supports video/mp4 as the target mime type.
ENCODE.VIDEO_NO_AUDIO_DURATION Video has no audio duration. The video’s audio track reports zero duration. The file may be malformed.
ENCODE.VIDEO_PCM_READ_FAILED Could not read PCM frames. The audio pipeline returned no PCM frames during video export. Audio context may have died.
ENCODE.VIDEO_RESOURCE_LOAD_FAILED Failed to load video resource. Please ensure the video file is accessible and valid. The video fill’s URI could not be loaded. Check accessibility and format.

EVENT#

Engine event subscription and dispatch.

Code Message Hint Docs
EVENT.SUBSCRIPTION_NOT_FOUND Event subscription does not exist. The subscription id does not refer to an active subscription. It may have been unsubscribed already or never created. Events (Web)

FETCH#

HTTP fetch and remote resource loading.

Code Message Hint Docs
FETCH.JSON_FETCH_FAILED Could not fetch JSON: {uri} The JSON resource at ‘{uri}’ could not be fetched. Check reachability, CORS, and the response status.
FETCH.JSON_URI_EMPTY Could not fetch JSON: URI cannot be empty. Pass a non-empty URI to the JSON fetch call.
FETCH.RESOURCE_DATA_EMPTY Empty resource data: {uri} The resource at ‘{uri}’ loaded but returned no bytes. Re-source the file or confirm the URL serves content.
FETCH.RESOURCE_FAILED Error fetching resource: {url} The HTTP fetch to ‘{url}’ failed. Inspect network status, response code, and CORS configuration.
FETCH.URI_INVALID Invalid URI: {uri} The URI ‘{uri}’ is malformed or uses an unsupported scheme. Provide a fully qualified URL or a registered scheme.
FETCH.URL_PARSE_FAILED Failed to parse URL: {url} The string ‘{url}’ is not a valid URL. Provide a fully qualified URL including the scheme.

LICENSE#

License unlock, API-key handling, entitlement checks.

Code Message Hint Docs
LICENSE.ALREADY_UNLOCKED License is already unlocked. The license has already been unlocked successfully. Skip the redundant unlock call.
LICENSE.API_SERVICE_UNAVAILABLE API service is unavailable. Please contact support. The license API endpoint did not respond. Check network connectivity; if the problem persists, contact support.
LICENSE.CANNOT_DEACTIVATE_OFFLINE Cannot deactivate offline license. Offline licenses cannot be deactivated remotely. Switch to an online license if dynamic activation is required.
LICENSE.DEACTIVATION_TIMEOUT Deactivation timed out. The license server did not acknowledge the deactivation in time. Retry, or contact support if the issue persists.
LICENSE.ENGINE_VERSION_INVALID The License Key (API Key) you are using requires a newer version of the IMG.LY SDK. Please update to the latest version. Upgrade the CE.SDK engine to a version compatible with this license.
LICENSE.EXPIRED Thanks for using IMG.LY for creative editing. Please note that your license file or commercial use is expired. Renew your subscription at https://img.ly/pricing to continue commercial use.
LICENSE.IDENTIFIER_MISMATCH The License Key (API Key) you are using to access the IMG.LY SDK is invalid for this app identifier. Current app identifier “{current}” differs from license app identifiers: [{allowed}] Your license is tied to specific app identifiers. Adjust the application bundle id to one of ‘{allowed}’ or update the license.
LICENSE.INVALID The License Key (API Key) you are using to access the IMG.LY SDK is invalid. Verify the License Key matches your IMG.LY subscription. If issues persist, contact support@img.ly.
LICENSE.INVALID_API_KEY Invalid API key. The API key did not authenticate. Verify it matches the subscription registered in your IMG.LY dashboard.
LICENSE.INVALID_FORMAT Invalid license format. Please contact support. The license string could not be parsed. Verify it was copied in full and contact support if the issue persists.
LICENSE.MISSING The license is missing. Call api.unlockWithLicense() or unlockWithAPIKey() before invoking engine APIs that require entitlements.
LICENSE.MISSING_FLUENDO_FLAG License does not support Fluendo codecs. Add the ‘fluendo’ capability flag to your license, or do not request a session that requires it.
LICENSE.MIXED_UNLOCK_METHODS unlockWithLicense shouldn’t be called after unlockWithAPIKey. Choose one unlock method per engine instance. Re-create the engine to switch between license-file and API-key authentication.
LICENSE.NO_ACTIVE_TO_DEACTIVATE No active license to deactivate. The deactivation request targets a license that is not currently active. Unlock a license first.
LICENSE.NO_USER_ID License does not have a user ID. User-specific entitlements require a license that carries a user id. Re-issue the license with a user id assigned.
LICENSE.PLATFORM_MISMATCH The License Key (API Key) you are using to access the IMG.LY SDK is invalid for this platform. Current platform: “{current}” differs from license platforms: [{allowed}] Your license restricts the platforms this engine may run on. Update the license to include ‘{current}’ or run on one of: {allowed}.
LICENSE.PRODUCT_MISMATCH The License Key (API Key) you are using to access the IMG.LY SDK is invalid for this product. Current build product: “{current}” differs from license product: “{required}” Your license is tied to a specific product. Use a build for ‘{required}’ or obtain a license for ‘{current}’.
LICENSE.REQUEST_IN_PROGRESS License request already in progress. A license fetch is in flight. Wait for it to finish before calling unlock again.
LICENSE.SERVER_ERROR License server reported an error: {reason} Server response: {reason}. If the message is unexpected, contact IMG.LY support.
LICENSE.STILL_FETCHING License is still being fetched. The license fetch has not completed. Await the unlock promise/callback before invoking entitlement-gated APIs.
LICENSE.TARGET_MISMATCH The License Key (API Key) you are using to access the IMG.LY SDK is invalid for this build target. Current build target triplet: “{target}” Your license restricts which build targets may run. Update the license to include ‘{target}’ or run on a permitted target.
LICENSE.UNSUPPORTED_SESSION_TYPE Unsupported session type. The requested session kind is not recognized. Pass a documented session type identifier.
LICENSE.VERSION_INVALID The License Key (API Key) you are using to access the IMG.LY SDK is invalid for this version. The license does not cover the running engine version. Update the license tier or downgrade the engine.

MEDIA#

Media containers and demuxing.

Code Message Hint Docs
MEDIA.BLOCK_NOT_AUDIO_OR_VIDEO_FILL Entity is not an audio block nor a video fill. Audio waveform/thumbnail APIs require an audio block or a block with a video fill.
MEDIA.BLOCK_NOT_A_PAGE Block is not a page. Page-grid thumbnail APIs require a page block. Pass a block where api.block.getType(id) == ‘//ly.img.ubq/page’.
MEDIA.BLOCK_NOT_PAGE_OR_CHILD Block must be a page or a child of a page. The block must live under a page in the scene tree. Reparent it or pick a page descendant.
MEDIA.BLOCK_NOT_VALID Block is not valid. The block id no longer references a live block. Re-resolve the id before requesting media.
MEDIA.BLOCK_NOT_VIDEO_FILL Block is not a video fill. This operation requires a block whose fill is a video. Verify api.block.getKind(id) returns ‘video’ before calling.
MEDIA.BLOCK_SIZE_ZERO Block size is zero. Cannot generate a thumbnail for a zero-sized block. Set the block’s width and height first.
MEDIA.CANVAS_SURFACE_GET_FAILED Could not get canvas surface. The canvas does not expose its underlying surface. This indicates an internal renderer state issue.
MEDIA.CHANNEL_COUNT_INVALID The number of channels must be 1 or 2. Mono (1) and stereo (2) are the only supported channel counts.
MEDIA.FRAME_COUNT_INVALID The number of frames must be greater than 0. Pass a positive `frameCount`.
MEDIA.GRID_DIMENSIONS_INVALID Rows and columns must be greater than 0. Pass positive `rows` and `columns` for grid-thumbnail generation.
MEDIA.IMAGE_ENCODE_FAILED Image encoding failed. The encoder rejected the source image. This is usually an unsupported pixel format or zero-sized input.
MEDIA.NEGATIVE_TIME_RANGE A negative time range is not allowed. Ensure end > start (both in seconds, non-negative).
MEDIA.OFFSCREEN_CANVAS_GET_FAILED Could not get offscreen canvas. Skia surface has no canvas attached. The compute context may not have been initialized.
MEDIA.OFFSCREEN_SURFACE_CREATE_FAILED Could not create offscreen surface. Skia could not allocate the offscreen rendering surface. Out-of-memory or unsupported pixel format is the likely cause.
MEDIA.OPERATION_UNSUPPORTED_FOR_BLOCK This operation is not supported for the given block. The selected block type does not implement this media operation. Check api.block.getType(id) and call this API only on the block types it supports.
MEDIA.SAMPLES_PER_CHUNK_INVALID The number of samples per chunk must be greater than 0. Pass a positive `samplesPerChunk`.
MEDIA.SAMPLE_COUNT_INVALID The number of samples must be greater than 0. Pass a positive `sampleCount`.
MEDIA.SNAPSHOT_FAILED Could not snapshot rendered thumbnail. Skia could not produce an image snapshot from the rendered surface. The surface may not be readable on this backend.
MEDIA.THUMBNAIL_ALLOC_FAILED Failed to allocate memory for thumbnail data. The thumbnail size exceeds available memory. Reduce dimensions or free memory.
MEDIA.THUMBNAIL_HEIGHT_INVALID The height of the thumbnail must be greater than 0. Pass a positive `height` (pixels).
MEDIA.THUMBNAIL_UPSCALE_FAILED Could not upscale thumbnail to requested size. Upscaling failed mid-render. The destination size may be larger than the maximum surface size on this platform.
MEDIA.UPSCALE_SURFACE_CREATE_FAILED Could not create upscale surface. Skia could not allocate the destination surface for upscaling. Out-of-memory or unsupported config is the likely cause.
MEDIA.VIDEO_FETCH_FAILED Failed to fetch video. The video resource could not be retrieved. Check the URI, asset-source registrations, and network connectivity.

SCENE#

Scene-level operations (load, save, archive, structural validation).

Code Message Hint Docs
SCENE.ARCHIVAL_REQUEST_FAILED Archival request failed: {reason} An async archival operation (save/load) was completed in error state. The underlying reason is: {reason} Scenes (Web)
SCENE.ARCHIVE_ADD_RESOURCE_FAILED Could not add the resource ‘{resource}’ to the archive. Adding data failed. The engine could not fetch or write the bytes for {resource}. Verify the resource is reachable and not larger than the archive can hold. Scenes (Web)
SCENE.ARCHIVE_CHUNK_READ_FAILED Failed to read chunk data from data provider. The data provider returned no bytes for an available range. The underlying source may have disconnected or returned a partial response. Scenes (Web)
SCENE.ARCHIVE_CORRUPTED_EMPTY_RESOURCE Corrupted archive. Some elements in the scene are referencing empty data, e.g., ‘{resource}’. The archive is internally inconsistent. Regenerate it from the original scene and verify the source has no missing assets. Scenes (Web)
SCENE.ARCHIVE_CREATE_FAILED Could not create archive. Final archive assembly failed for an unspecified reason. Inspect prior log lines for the underlying failure. Scenes (Web)
SCENE.ARCHIVE_DATA_PROVIDER_RANGE_UNAVAILABLE Data provider range is not available. The requested byte range cannot be served by the underlying provider. Check the resource size and the requested offset/length. Scenes (Web)
SCENE.ARCHIVE_DATA_UNAVAILABLE_FOR_URL Archive data is not available for URL ‘{url}’. The archive references {url} but the data could not be retrieved. Check the URL and the asset source it resolves through. Scenes (Web)
SCENE.ARCHIVE_FETCH_FAILED Failed to fetch archive from URL ‘{url}’: {reason} Network or asset-source failure. Verify the URL is reachable and the host serves the archive bytes. Scenes (Web)
SCENE.ARCHIVE_INVALID Not a valid archive. The supplied bytes are not a recognizable CE.SDK archive. Was the file produced by saveToArchive()? Scenes (Web)
SCENE.ARCHIVE_LOAD_AS_BLOCKS_NOT_SCENE Archive contains a blocks file. This archive has to be loaded as blocks and not as a scene. Call loadFromArchiveAsBlocks() instead of loadFromArchive() for this file. Scenes (Web)
SCENE.ARCHIVE_LOAD_AS_SCENE_NOT_BLOCKS Archive contains a scene file. This archive has to be loaded as a scene and not as blocks. Call loadFromArchive() instead of loadFromArchiveAsBlocks() for this file. Scenes (Web)
SCENE.ARCHIVE_MISSING_FILE Archive is missing a {kind} file. The archive is malformed: it does not contain the expected {kind}.* entry at its root. The file may be truncated or corrupted. Scenes (Web)
SCENE.ARCHIVE_NO_CURRENT_RESOURCE No current resource. The data provider has not selected a resource. Call seekResource() (or the equivalent) before reading. Scenes (Web)
SCENE.ARCHIVE_NO_RESOURCE_BEGUN No resource begun or entry not open. Call beginResource() before writing chunks or ending the resource. Scenes (Web)
SCENE.ARCHIVE_OFFSET_EXCEEDS_RESOURCE_SIZE Requested offset exceeds resource size. Clamp the requested offset to be less than the resource’s reported size before reading. Scenes (Web)
SCENE.ARCHIVE_RESOURCES_TOO_LARGE Resources too large. Not enough memory to create archive. Allocation for the in-memory archive failed. Reduce scene size, free memory, or use a platform with more available RAM. Scenes (Web)
SCENE.ARCHIVE_RESOURCE_ALREADY_BEGUN Resource already begun. A streaming resource is already in progress. Call endResource() before beginning another. Scenes (Web)
SCENE.ARCHIVE_RESOURCE_DATA_INVALID Resource data is invalid. The bytes returned by the data provider failed validation. The archive may be corrupted. Scenes (Web)
SCENE.ARCHIVE_RESOURCE_DATA_UNAVAILABLE Resource data is not available. The data provider has no bytes for the current resource. The underlying source may have been moved or deleted. Scenes (Web)
SCENE.ARCHIVE_STREAMED_WRITE_FAILED Failed to write streamed data to archive: {reason} Streaming a resource into the archive failed mid-flight. The underlying writer reported: {reason} Scenes (Web)
SCENE.ARCHIVE_WRITER_ALREADY_INITIALIZED Archive already initialized. The ArchiveBufferWriter is already in an initialized state. Construct a new writer or release the current one before re-initializing. Scenes (Web)
SCENE.ARCHIVE_WRITER_NOT_INITIALIZED Archive not initialized. Call initialize() on the ArchiveBufferWriter before invoking entry or directory operations. Scenes (Web)
SCENE.BLOCKS_INPUT_INVALID Received blocks input is not a valid serialization. The payload does not parse as a CE.SDK blocks document. Confirm it was produced by api.block.saveToString() or saveToArchive(). Scenes (Web)
SCENE.BLOCK_AT_INDEX_INVALID Block at index {index} is invalid. Can’t save list. One of the blocks in the list was destroyed. Filter or re-resolve the ids before saving. Scenes (Web)
SCENE.COMPRESSION_SERVICE_UNAVAILABLE Compression service not available for detected format. The archive is compressed with a codec this build does not support. Ensure the engine was built with the matching compression backend. Scenes (Web)
SCENE.CONTENT_EMPTY Received empty {kind} content. The serialized {kind} payload is empty. Verify the source produced non-empty content before passing it to the engine. Scenes (Web)
SCENE.DECOMPRESS_FAILED Failed to decompress scene data: {reason} The compressed payload could not be decoded. The archive may be truncated or produced by an incompatible writer. Scenes (Web)
SCENE.DISALLOWED_SCHEMES Scene contains disallowed schemes in resource URLs: {schemes} The scene references resources via blocked URL schemes ({schemes}). Update the policy or rewrite the scene’s resource URLs. Scenes (Web)
SCENE.ENTITY_INVALID Invalid scene entity. The provided design-block id no longer references a valid entity. It may have been destroyed by an earlier call; re-resolve the id before use. Scenes (Web)
SCENE.ENTITY_NOT_A_SCENE Entity is not a scene. Pass a scene block id. Use api.scene.get() or api.block.findByType(‘//ly.img.ubq/scene’) to obtain one. Scenes (Web)
SCENE.LOAD_FROM_URI_FAILED Could not load {kind} from {uri}. Check that the URI is reachable and serves a valid {kind} payload. Common causes: 404, CORS, or wrong file type. Scenes (Web)
SCENE.MEDIA_URI_NOT_FOUND Could not load {kind} from {uri}. The {kind} resource at {uri} could not be resolved. Check the URI, network connectivity, and asset-source registrations. Scenes (Web)
SCENE.MEDIA_URI_PARSE_FAILED Could not load {kind}: {reason} The {kind} URI failed to parse. Confirm it is a well-formed absolute URI (http(s)://, file://, or a data URL). Scenes (Web)
SCENE.MUST_EXIST A scene must already exist. Create or load a scene before invoking this API. Use api.scene.create() or loadFromString(). Scenes (Web)
SCENE.MUST_EXIST_FOR_TEMPLATE A scene must already exist for a template to be applied to it. Load a scene first, then apply the template. Templates only modify existing scenes. Scenes (Web)
SCENE.NOT_IMPLEMENTED Not implemented. This data-provider method has no implementation on the active subclass. The caller must select a different provider or operation. Scenes (Web)
SCENE.NOT_SCENE_TYPE Not a scene. The root deserialized entity is not a scene. The file may have been produced by saveAsBlocks() — load it with loadBlocks() instead. Scenes (Web)
SCENE.NOT_VALID No valid scene. Create or load a scene before calling APIs that operate on the active scene. Scenes (Web)
SCENE.NO_MODE Scene has no mode set. Use api.scene.setMode(scene, mode) before requesting mode-dependent behavior. Scenes (Web)
SCENE.NO_PAGES_FOR_AUDIO_EXPORT Scene has no pages to export audio from. Add at least one page to the scene before exporting audio. Scenes (Web)
SCENE.NO_PAGE_FOUND No page found. Add at least one page to the scene or check the current viewport’s page resolution. Pages (Web)
SCENE.NO_SCENE_FOUND No scene found. The serialized payload deserialized successfully but contains no scene root. Was the file saved as ‘blocks’ instead of ‘scene’? Scenes (Web)
SCENE.TEMP_FILE_CREATE_FAILED Failed to create temporary file. The engine could not create a scratch file for archival. Check available disk space and the platform’s temporary-directory permissions. Scenes (Web)
SCENE.ZIP_CHUNK_WRITE_FAILED Failed to write chunk to ZIP entry: {zipErrorCode} libzip rejected writing a chunk to the current streaming entry with error code {zipErrorCode}. Scenes (Web)
SCENE.ZIP_CREATE_FAILED Failed to create ZIP archive. The ZIP container could not be opened for writing. This is usually a file-system or memory issue. Scenes (Web)
SCENE.ZIP_DIRECTORY_ENTRY_CLOSE_FAILED Failed to close ZIP directory entry: {zipErrorCode} libzip rejected closing a directory entry with error code {zipErrorCode}. Scenes (Web)
SCENE.ZIP_DIRECTORY_ENTRY_OPEN_FAILED Failed to open ZIP directory entry: {zipErrorCode} libzip rejected opening a directory entry with error code {zipErrorCode}. Scenes (Web)
SCENE.ZIP_ENTRY_CLOSE_FAILED Failed to close ZIP entry: {zipErrorCode} libzip rejected closing the current entry with error code {zipErrorCode}. The entry data may be truncated. Scenes (Web)
SCENE.ZIP_ENTRY_OPEN_FAILED Failed to open ZIP entry: {zipErrorCode} libzip rejected opening a new entry with error code {zipErrorCode}. The archive state may be inconsistent. Scenes (Web)
SCENE.ZIP_ENTRY_WRITE_FAILED Failed to write ZIP entry: {zipErrorCode} libzip rejected writing bytes to the current entry with error code {zipErrorCode}. Scenes (Web)
SCENE.ZIP_STREAMING_ENTRY_CLOSE_FAILED Failed to close ZIP entry for streaming resource: {zipErrorCode} libzip rejected closing a streaming entry with error code {zipErrorCode}. The streamed bytes may be truncated. Scenes (Web)
SCENE.ZIP_STREAMING_ENTRY_OPEN_FAILED Failed to open ZIP entry for streaming resource: {zipErrorCode} libzip rejected opening a streaming entry with error code {zipErrorCode}. Scenes (Web)
SCENE.ZIP_WRITER_CLOSE_FAILED Failed to close ZIP writer: {zipErrorCode} libzip reported error {zipErrorCode} on close. The output bytes may be truncated; treat the archive as invalid. Scenes (Web)
SCENE.ZIP_WRITER_CREATE_FAILED Failed to create ZIP writer. The libzip writer could not be allocated. Out-of-memory or platform-resource exhaustion is the likely cause. Scenes (Web)
SCENE.ZIP_WRITER_OPEN_FAILED Failed to open ZIP writer: {zipErrorCode} libzip rejected the writer initialization with error code {zipErrorCode}. Inspect libzip’s documentation for the meaning. Scenes (Web)

UTILS#

Generic utility failures not specific to another category.

Code Message Hint Docs
UTILS.APNG_DATA_TOO_SMALL APNG data is empty or too small. The APNG buffer is too short to contain a valid PNG signature. The source may be truncated.
UTILS.APNG_FCTL_BEFORE_ACTL APNG has fcTL before acTL. fcTL chunks must follow acTL. Reorder or regenerate the APNG.
UTILS.APNG_FDAT_WITHOUT_FCTL APNG has fdAT with no preceding fcTL. Each fdAT chunk must follow an fcTL declaring its frame. The animation stream is broken.
UTILS.APNG_FDAT_WITHOUT_SEQ APNG has an fdAT chunk without a sequence number. fdAT chunks must include a 4-byte sequence number. The chunk is malformed.
UTILS.APNG_FRAME_INDEX_OUT_OF_RANGE APNG frame index out of range. The requested frame index is past the last frame. Clamp it to [0, frameCount).
UTILS.APNG_FRAME_NO_PIXEL_DATA APNG has an animation frame with no pixel data. Each animation frame must have at least one IDAT/fdAT chunk.
UTILS.APNG_FRAME_OUT_OF_CANVAS APNG frame rectangle extends beyond the canvas. fcTL coordinates must fit inside the canvas declared by IHDR. The file is malformed.
UTILS.APNG_FRAME_ZERO_DIMENSIONS APNG has an animation frame with zero dimensions. Each fcTL must declare positive width and height. The frame is invalid.
UTILS.APNG_IDAT_BEFORE_IHDR APNG has IDAT before IHDR. IDAT chunks must follow IHDR. The file violates PNG chunk ordering.
UTILS.APNG_INVALID_ACTL APNG has invalid or misplaced acTL chunk. The acTL chunk must precede IDAT and appear exactly once. The animation chunk is malformed.
UTILS.APNG_INVALID_FCTL APNG has an invalid fcTL chunk. An animation control chunk failed validation. The file may be partially corrupted.
UTILS.APNG_INVALID_IHDR APNG has invalid or duplicated IHDR chunk. PNG must contain exactly one IHDR chunk at the start. The file is malformed.
UTILS.APNG_INVALID_SIGNATURE APNG data does not start with a valid PNG signature. The first 8 bytes must be the PNG magic number. The source is not a PNG/APNG file.
UTILS.APNG_MISSING_ACTL Not an APNG: acTL chunk is missing. This is a static PNG, not an APNG. Use it with a single-frame decode path or supply an animated file.
UTILS.APNG_MISSING_IHDR APNG source has no valid IHDR chunk. Every PNG starts with IHDR. The file is empty or corrupted.
UTILS.APNG_NO_FRAMES APNG declares no animation frames. The acTL reports zero frames. Regenerate the APNG with at least one fcTL/fdAT.
UTILS.APNG_ZERO_CANVAS APNG has zero canvas dimensions. Canvas width and height must be > 0. The IHDR is corrupt.
UTILS.CAPTION_DATA_UNAVAILABLE Caption data not available. The caption resource has no bytes registered. Ensure data is loaded before requesting captions.
UTILS.CAPTION_PARSE_EMPTY Failed to parse captions, no captions found. The caption file parsed but contained no entries. Verify the source format.
UTILS.CAPTION_UNSUPPORTED_MIME Unsupported caption mime type: {mimeType} Caption format ‘{mimeType}’ is not recognized. Convert to a supported format (e.g. text/vtt, application/x-subrip).
UTILS.CAPTION_UTF16_INVALID_SIZE Failed to parse captions, unexpected file size for UTF-16BE encoded text. UTF-16BE text must have an even byte count. The file is truncated.
UTILS.COMPRESSION_EMPTY_DATA Cannot decompress empty data. The input buffer is empty. Pass at least one byte of compressed data.
UTILS.COMPRESSION_FORMAT_NONE_FOR_COMPRESS Cannot compress data with format None: no compression requested. Pass a non-None compression format if compression is intended.
UTILS.COMPRESSION_FORMAT_NONE_FOR_DECOMPRESS Cannot decompress data with format None: data is not compressed. The detected format is None — the data is not compressed and does not need decompression.
UTILS.COMPRESSION_FORMAT_UNSUPPORTED Unsupported compression format: {format} Compression format {format} is not handled by this build.
UTILS.COMPRESSION_NO_MAGIC_BYTES Unable to detect compression format: data does not have valid compression magic bytes. The first bytes do not match any supported compression format. The data may not be compressed.
UTILS.COMPRESSION_ZSTD_INVALID_FRAME Invalid zstd frame. The zstd decoder rejected the frame header. The data may be truncated.
UTILS.ENGINE_UNKNOWN_COMPONENT_TYPE Component {component} is not a known reflected type. Component ‘{component}’ is not registered with the reflection system.
UTILS.ENUM_VALUE_INVALID Invalid enum value, expected one of: {validValues} The supplied string is not a member of the target enum. Pass one of: {validValues}.
UTILS.FILE_ALLOC_FAILED Could not allocate an output buffer of size {size} to load {path} Out-of-memory loading ‘{path}’ ({size} bytes). Free memory or stream the file in chunks.
UTILS.FILE_MAP_FAILED Could not map file {path} into memory: {reason} mmap() rejected ‘{path}’: {reason}. Out-of-memory or virtual-memory limits may be the cause.
UTILS.FILE_OPEN_FAILED Could not open file {path}: {reason} The file ‘{path}’ could not be opened. Reason: {reason}
UTILS.FILE_READ_FAILED Could not read complete file {path}: {reason} Reading ‘{path}’ returned an error or hit EOF prematurely. Reason: {reason}
UTILS.FILE_SIZE_FAILED Could not determine file size for {path}: {reason} stat() failed on ‘{path}’: {reason}. The file may have been removed or is unreadable.
UTILS.FILE_TOO_LARGE File {path} has size {size} larger than the maximum supported {max} Loading is capped at {max} bytes. Use streaming APIs for files larger than this.
UTILS.GIF_PARSE_FAILED Failed to parse GIF file: {reason} The GIF source could not be decoded. Underlying reason: {reason}
UTILS.METAANY_EXPECTED_ARRAY Expected array, but got {actual} JS value must be an array. Got ‘{actual}’ instead.
UTILS.METAANY_ITEM_MAP_FAILED Couldn’t map item at index {index} > {reason} Array element {index} failed conversion. Reason: {reason}
UTILS.METAANY_MEMBER_MAP_FAILED Couldn’t map value for member `{member}` > {reason} Member ‘{member}’ failed conversion. Reason: {reason}
UTILS.METAANY_MISSING_PROPERTY Expected object of type ‘{type}’ to have property ‘{property}’. The JS object is missing required property ‘{property}’. Add it before passing across the boundary.
UTILS.METAANY_NON_STRING_TO_STRING Can’t map non-string em::val to string. The JavaScript value is not a string. Convert it to a string in JS before crossing the boundary.
UTILS.METAANY_RESULT_TYPE_NOT_REFLECTED Type of Result value for {details} is not reflected. The Result type returned from ‘{details}’ is not reflection-registered.
UTILS.METAANY_SET_FAILED Could not set value for {member} on object of type {type} The reflected setter for ‘{member}’ on ‘{type}’ rejected the value.
UTILS.METAANY_TYPE_NEEDS_REFLECTION Type {type} must have reflection info. Register type ‘{type}’ with the reflection system before crossing the JS↔C++ boundary.
UTILS.METAANY_UNDEFINED Can’t map `undefined` to `{type}` JavaScript `undefined` cannot be converted to ‘{type}’. Pass a defined value of the expected type.
UTILS.METAANY_UNHANDLED_INTEGRAL Unhandled integral type: {type} The integral type ‘{type}’ has no MetaAny ↔ em::val mapping.
UTILS.METAANY_UNHANDLED_SEQUENCE Unhandled sequence container type: {type} Sequence container ‘{type}’ has no MetaAny ↔ em::val mapping.
UTILS.METAANY_UNHANDLED_TYPE_KIND Unhandled type kind. {type} Type kind for ‘{type}’ is not recognized by the conversion layer.
UTILS.META_TYPE_FUNCTION_UNKNOWN Function must be known. The requested reflected function is not registered on this MetaType.
UTILS.META_TYPE_INVALID Not a valid type, no name available. The MetaType handle does not refer to a registered reflection type.
UTILS.META_TYPE_INVOKE_FAILED Could not invoke {name}. The reflected function ‘{name}’ could not be invoked. Argument types or arity may not match.
UTILS.MKV_EBML_PARSE_FAILED Failed to parse EBML header. The EBML header is malformed. The file may not be a Matroska container.
UTILS.MKV_INVALID_DATA Invalid MKV data. The MKV demuxer rejected the source bytes. The file may be truncated or use an unsupported variant.
UTILS.MKV_NO_TRACKS No tracks found. The MKV file declares no tracks. Verify it contains video/audio streams.
UTILS.MKV_SEGMENT_CREATE_FAILED Failed to create segment. libwebm could not allocate a segment. Out-of-memory or unsupported MKV variant.
UTILS.MKV_SEGMENT_LOAD_FAILED Failed to load segment. The MKV segment payload is unreadable. The file may be truncated mid-segment.
UTILS.MP4_AUDIO_CODEC_UNSUPPORTED Unsupported audio codec ‘{fourcc}’ (OTI={oti}). MP4 audio must use the AAC (mp4a), MP3, or AMR (samr/sawb) codec. Re-encode the audio to AAC.
UTILS.MP4_AUDIO_TRACK_INDEX_OUT_OF_BOUNDS Audio track index {index} is out of bounds. Valid range: 0-{max} Pass an audio track index within [0, {max}].
UTILS.MP4_OPEN_FAILED Failed to open MP4 file. The MP4 demuxer could not open the source. The file may be missing or unreadable.
UTILS.MP4_VIDEO_CODEC_UNSUPPORTED Unsupported video codec ‘{fourcc}’ (OTI={oti}). MP4 video must use the H.264 (avc1) or H.265 (hvc1) codec. Re-encode the video to H.264 or H.265, or use a WebM file for AV1, VP8, or VP9.
UTILS.PIXEL_BUFFER_BACKEND_TEXTURE_INCOMPLETE Backend texture is incomplete. The Skia backend texture handle does not carry enough state for read-back.
UTILS.PIXEL_BUFFER_GL_TEXTURE_INFO_FAILED Failed to retrieve OpenGL texture info. The backend texture did not expose its GL info. The compute context may not be a GL context.
UTILS.PIXEL_BUFFER_INVALID_IMAGE Invalid RasterImage or SkImage. The image handle is null or not a recognized Skia/raster image.
UTILS.PIXEL_BUFFER_NOT_STREAM_FILL This operation is only supported for pixel stream fills. Use a block with a pixel-stream fill type. Standard fills are not supported by this conversion API.
UTILS.PIXEL_BUFFER_NO_BACKEND_TEXTURE No valid backend texture. The Skia image is not backed by a GPU texture. The current compute context may not support direct read-back.
UTILS.PIXEL_BUFFER_NO_CANVAS No canvas. The Skia surface has no canvas attached. The compute context may not be initialized.
UTILS.PIXEL_BUFFER_NO_GPU_CONTEXT No GPU context. The compute context lacks a GPU backend. Pixel-buffer conversion requires GPU access.
UTILS.PIXEL_BUFFER_UNSUPPORTED_FORMAT Unsupported pixel format. The native pixel buffer is not 32-bit BGRA. Convert the source to kCVPixelFormatType_32BGRA before updating the pixel-stream fill.
UTILS.REFLECTION_BLOCK_NOT_VALID The block with ID {block} is not valid. It may have been deleted, e.g., when a new scene was loaded. Resolve the block id before invoking reflection APIs. Block ids become invalid after scene reloads or block destruction.
UTILS.REFLECTION_COMPONENT_NOT_REFLECTED ‘{component}’ is not a reflected type (tried to get ‘{memberPath}’ member). Register the component with the reflection system or pass an already-registered type name.
UTILS.REFLECTION_COMPONENT_NOT_SET Component {component} is not set on entity {entity}. Verify the entity has been assigned the component before reading. Use the entity’s component-list API to inspect.
UTILS.REFLECTION_ENTITY_MISSING_COMPONENT Entity ID {entity}{optionalType} doesn’t have component “{component}”. The block does not carry this component. Use a block type that supports it or attach the component first.
UTILS.REFLECTION_KEY_NOT_FOUND Could not find member “{key}” The key ‘{key}’ does not exist on the current type. Inspect available members and adjust.
UTILS.REFLECTION_KEY_PATH_EMPTY Key path must be at least 1 element but is empty. Provide a non-empty key path (e.g. “transform/x”).
UTILS.REFLECTION_KEY_PATH_MEMBER_MISSING Member “{member}” for type “{type}” not found for given key path “{keyPath}”. Valid members for key path “{prefix}*” are: {members}. Adjust ‘{keyPath}’ to reference one of the listed members.
UTILS.REFLECTION_MEMBER_NOT_ACCESSIBLE_BY_REF Could not get member “{member}”. Must access by reference, if not modifying the most nested member. Reflected members for key path “{prefix}*” are: {members}. Intermediate segments of a key path require by-reference access. Mark ‘{member}’ as a by-reference member or address its tail directly.
UTILS.REFLECTION_MEMBER_NOT_FOUND Member {member} not found on current type. The member ‘{member}’ is not a reflected field on this type. Check the type’s reflected members.
UTILS.REFLECTION_MEMBER_TYPE_NOT_REFLECTED Type of member named “{member}” on “{type}” is not reflected. Reflected members for key path “{prefix}*” are: {members}. Reflection cannot descend into ‘{member}’ because its type is not registered. Reflect the type or stop the key path at ‘{member}’.
UTILS.REFLECTION_NO_MEMBERS_FOR_PREFIX “{member}” has no reflected members. The intermediate type at ‘{member}’ has no fields to descend into. Adjust the key path.
UTILS.REFLECTION_SET_MEMBER_FAILED Could not set member “{member}” of type “{type}”. The reflected setter for ‘{member}’ returned false. Verify the value type matches the member.
UTILS.REFLECTION_SET_WILDCARD_TYPE_MISMATCH Type mismatch between “{lhs}” and “{rhs}”: “{lhsType}” vs. “{rhsType}”. Wildcard set requires all members to share a type.
UTILS.REFLECTION_TYPE_NOT_REFLECTED {component} is not a reflected type. Register the type with the reflection system before accessing it dynamically.
UTILS.REFLECTION_TYPE_NO_MEMBERS Type “{type}” has no reflected members. The wildcard key path requires a type with reflected fields. Use a concrete member name or pick a different type.
UTILS.REFLECTION_UNSUPPORTED_TYPE Unsupported type. The reflected type is not handled by this operation. Pass a supported type.
UTILS.REFLECTION_WILDCARD_NOT_TAIL Wildcard only supported at tail end of path. Move the wildcard ‘*’ to the last segment of the key path.
UTILS.REFLECTION_WILDCARD_SET_PARTIAL Could not set all members of type “{type}”. At least one reflected member of ‘{type}’ rejected the assignment. Member-level setters may have failed silently.
UTILS.REFLECTION_WILDCARD_TYPE_MISMATCH Type mismatch between “{lhs}” and “{rhs}”. Wildcard get requires all matched members to share a type. Members ‘{lhs}’ and ‘{rhs}’ differ.
UTILS.REFLECTION_WILDCARD_VALUE_MISMATCH Value mismatch between “{lhs}” and “{rhs}”. Wildcard get returns a single representative value; members ‘{lhs}’ and ‘{rhs}’ currently disagree.
UTILS.SETTING_NO_ARGS Received no arguments. Can’t determine type. The setting’s type is inferred from the value you pass, so the call cannot accept zero arguments. Pass the setting value explicitly (bool, int, float, color, or string).
UTILS.STD_EXPECTED_STRING_ERROR {message} Adapter path between `std::expected<T, std::string>` and `Result<T>`. The source returned a free-text `std::string` error — surfacing it through the catalog so consumers still see the original wording. Convert the producer to return a catalog id when possible.
UTILS.STORAGE_KEY_NOT_FOUND Key not found. The requested storage key has no value. Write it before reading, or guard the read by checking for existence first.
UTILS.TRACKING_NOT_ENABLED Tracking is not enabled. Enable tracking on the engine before invoking tracking APIs.
UTILS.URI_NON_ASCII Failed to parse URI: {uri}. Contains non-ASCII byte 0x{byte} at position {position}. URIs must only contain ASCII characters, please percent-encode special characters. Percent-encode special characters in ‘{uri}’ before parsing. Non-ASCII byte 0x{byte} found at position {position}.
UTILS.URI_PARSE_FAILED Failed to parse URI: {uri} The URI ‘{uri}’ is malformed. Confirm scheme, host, and path.
UTILS.WAV_DATA_BEFORE_FMT Invalid WAV file: data chunk found before fmt chunk. WAV chunk order requires fmt before data. Re-encode the file.
UTILS.WAV_FMT_CHUNK_TOO_SMALL WAV fmt chunk too small: expected at least {expected} bytes, got {actual}. The fmt chunk does not carry the minimum WAV header fields.
UTILS.WAV_INVALID_BITS_PER_SAMPLE Invalid WAV bits_per_sample: {bitsPerSample} WAV bits_per_sample must be one of 8/16/24/32. Got {bitsPerSample}.
UTILS.WAV_MISSING_FMT_OR_DATA Invalid WAV file: missing fmt or data chunk. Both fmt and data chunks are required. The file is missing one or both.
UTILS.WAV_NOT_WAVE Not a WAV file: RIFF format is not WAVE. The RIFF container is not a WAVE file. The source is a different RIFF type or not RIFF at all.
UTILS.WAV_TRUNCATED_FMT_CHUNK WAV file truncated: not enough data for fmt chunk. The fmt chunk is cut off. The file is incomplete.
UTILS.WAV_TRUNCATED_RIFF_HEADER WAV file truncated: not enough data for RIFF header. The file is shorter than the 12-byte RIFF header. The source is incomplete.
UTILS.WAV_TRUNCATED_UNKNOWN_CHUNK WAV file truncated: not enough data to skip unknown chunk. Parsing tried to skip an unknown chunk but ran past the buffer end. The file is incomplete.
UTILS.WAV_UNSUPPORTED_AUDIO_FORMAT Unsupported WAV audio format: {audioFormat} WAV audio format code {audioFormat} is not handled. Re-encode as PCM (1) or IEEE float (3).
UTILS.WAV_ZERO_CHANNELS Invalid WAV file: num_channels is 0. WAV must declare at least one channel.
UTILS.WAV_ZERO_SAMPLE_RATE Invalid WAV file: sample_rate is 0. WAV must declare a positive sample rate.
UTILS.WAV_ZERO_SIZE_CHUNK Invalid WAV file: zero-size chunk encountered. A chunk reports zero size, which would cause infinite parsing. The file is malformed.
UTILS.ZSTD_COMPRESS_FAILED Zstd compression failed: {reason} The zstd library reported a compression failure. `reason` is the value returned by `ZSTD_getErrorName(…)`.
UTILS.ZSTD_DECOMPRESS_FAILED Zstd decompression failed: {reason} The zstd library reported a decompression failure. `reason` is the value returned by `ZSTD_getErrorName(…)`. The input may be truncated or not zstd-encoded.