Search Docs
Loading...
Skip to content

Serve Assets

Configure CE.SDK to load default and demo assets from your own servers or local filesystem for server-side deployments.

The @cesdk/node package bundles the core WASM engine files directly—no additional setup is required to initialize the engine and use its APIs. You only need to configure asset paths if you use addDefaultAssetSources() or addDemoAssetSources() to populate the asset library.

For rendering-only workflows (loading existing scenes and exporting to PDF, PNG, or video), you can skip asset configuration entirely. The engine loads scene-referenced assets directly from their embedded URLs.

Download Assets (v1.68.0)

This guide covers how to self-host default assets when you need them, either from the local filesystem or your own CDN.

Quick Start#

Download and extract the essential assets for your SDK version:

Terminal window
# Download assets for current SDK version
curl -O https://cdn.img.ly/packages/imgly/cesdk-node/1.68.0/imgly-assets.zip
# Create versioned directory and extract assets
mkdir -p cesdk-assets/1.68.0
unzip imgly-assets.zip -d cesdk-assets/1.68.0/
rm imgly-assets.zip

Then configure CE.SDK to use your local assets:

import CreativeEngine from '@cesdk/node';
import path from 'path';
import { pathToFileURL } from 'url';
const engine = await CreativeEngine.init({
license: 'YOUR_CESDK_LICENSE_KEY'
});
// Point to local assets instead of CDN
engine.addDefaultAssetSources({
baseURL: pathToFileURL(path.resolve(`./cesdk-assets/${CreativeEngine.version}`)).href + '/'
});

Understanding Asset Categories#

The imgly-assets.zip contains directories organized by function:

DirectoryContentsBundled in npm?When Needed
core/WASM engine filesYesAlways (bundled)
i18n/TranslationsYesAlways (bundled)
emoji/Emoji assetsNoIf rendering emojis
fonts/System fontsNoIf using system fonts
ui/UI resourcesNoBrowser only
ly.img.sticker/StickersNoIf using addDefaultAssetSources()
ly.img.sticker.misc/Additional stickersNoIf using addDefaultAssetSources()
ly.img.vectorpath/Shapes and arrowsNoIf using addDefaultAssetSources()
ly.img.typeface/Font definitionsNoIf using addDefaultAssetSources()
ly.img.filter.lut/LUT filter effectsNoIf using addDefaultAssetSources()
ly.img.filter.duotone/Duotone effectsNoIf using addDefaultAssetSources()
ly.img.effect/Visual effectsNoIf using addDefaultAssetSources()
ly.img.blur/Blur presetsNoIf using addDefaultAssetSources()
ly.img.colors.defaultPalette/Color palettesNoIf using addDefaultAssetSources()
ly.img.crop.presets/Crop aspect ratiosNoIf using addDefaultAssetSources()
ly.img.page.presets/Page format presetsNoIf using addDefaultAssetSources()
ly.img.page.presets.video/Video page presetsNoIf using addDefaultAssetSources()
ly.img.captionPresets/Caption formatting presetsNoIf using addDefaultAssetSources()
ly.img.animation/Animation presetsNoIf using addDefaultAssetSources()
ly.img.animation.text/Text animation presetsNoIf using addDefaultAssetSources()
ly.img.image/Sample images (demo content)NoDevelopment only
ly.img.video/Sample videos (demo content)NoDevelopment only
ly.img.audio/Sample audio (demo content)NoDevelopment only
ly.img.template/Design templates (demo content)NoDevelopment only
ly.img.video.template/Video templates (demo content)NoDevelopment only
ly.img.textComponents/Text components (demo content)NoDevelopment only

For most server-side integrations, you need the ly.img.* asset sources you use.

Default Asset Sources#

Calling addDefaultAssetSources() registers these asset sources:

  • ly.img.sticker - Stickers
  • ly.img.sticker.misc - Additional stickers
  • ly.img.vectorpath - Shapes and arrows
  • ly.img.typeface - Font definitions
  • ly.img.colors.defaultPalette - Color palettes
  • ly.img.filter.lut - LUT effects
  • ly.img.filter.duotone - Duotone effects
  • ly.img.effect - Visual effects
  • ly.img.blur - Blur presets
  • ly.img.crop.presets - Crop aspect ratios
  • ly.img.page.presets - Page format presets
  • ly.img.page.presets.video - Video page presets
  • ly.img.captionPresets - Caption formatting
  • ly.img.animation - Animation presets
  • ly.img.animation.text - Text animation presets

Configuration#

Using Local Filesystem#

Use Node.js pathToFileURL() to load assets directly from disk:

import CreativeEngine from '@cesdk/node';
import path from 'path';
import { pathToFileURL } from 'url';
const engine = await CreativeEngine.init({
license: 'YOUR_CESDK_LICENSE_KEY'
});
// Load default assets from local filesystem
engine.addDefaultAssetSources({
baseURL: pathToFileURL(path.resolve(`./cesdk-assets/${CreativeEngine.version}`)).href + '/'
});
// Use the engine for processing
// ...
// Clean up when done
engine.dispose();

The file:// protocol loads assets directly from the filesystem without network overhead.

Using Your Own CDN#

If you prefer serving assets from your own CDN:

import CreativeEngine from '@cesdk/node';
const engine = await CreativeEngine.init({
license: 'YOUR_CESDK_LICENSE_KEY'
});
engine.addDefaultAssetSources({
baseURL: `https://cdn.yourdomain.com/cesdk/${CreativeEngine.version}/`
});

Excluding Unused Asset Sources#

If you only need specific assets, exclude the rest to reduce initialization time:

engine.addDefaultAssetSources({
baseURL: pathToFileURL(path.resolve(`./cesdk-assets/${CreativeEngine.version}`)).href + '/',
excludeAssetSourceIds: [
'ly.img.sticker',
'ly.img.page.presets.video'
]
});

Troubleshooting#

404 Errors for Assets#

If you see errors loading content.json files:

  1. Verify the baseURL in addDefaultAssetSources() is correct
  2. Check that asset directories exist at the expected paths
  3. For file-based assets, ensure read permissions are set correctly

File URL Formatting#

When using file:// URLs:

  • Use path.resolve() to get absolute paths
  • URLs must end with a trailing slash for directories
  • Always use pathToFileURL() from the url module instead of string concatenation

API Reference#

Method/ConfigPurpose
CreativeEngine.init(config)Initialize engine with configuration
engine.addDefaultAssetSources(options)Register default asset sources
engine.addDemoAssetSources(options)Register demo asset sources
CreativeEngine.versionGet current SDK version string
pathToFileURL(path)Convert filesystem path to file:// URL (Node.js url module)