Dashboard →

URLs and presets

The URL is the API: every combination of parameters is a variant the CDN can serve.

Shape

https://cdn.glboost.com/{assetId}.glb
https://cdn.glboost.com/{assetId}.glb?p={preset}
https://cdn.glboost.com/{assetId}.glb?geo=meshopt&tex=ktx2&maxtex=1024&q=low
https://cdn.glboost.com/{assetId}.glb?v={versionId}
https://cdn.glboost.com/{assetId}.glb?p=web&exp=1760000000&sig={hmac}
https://cdn.glboost.com/{assetId}.glb?p=web&dl=1

Presets

p=compat
Default for the bare URL. Quantized geometry without extensions, JPEG colour textures with PNG normal and ORM maps, 2048 px cap. Loads in any glTF 2.0 loader.
p=web
meshopt geometry, WebP textures, 2048 px. three.js, Babylon, and model-viewer with the meshopt decoder.
p=gpu
meshopt geometry and KTX2 textures at medium quality. What the GLBoost viewer requests: smallest GPU memory.
p=mobile
meshopt and KTX2 at 1024 px, low quality, 25% simplification.
p=embedded
Raw float32 geometry, WebP textures at 512 px, 50% simplification, draw calls joined. LVGL and other OpenGL ES 2.0 runtimes.
p=original
The file exactly as uploaded.

Parameters

geo=meshopt|draco|none|raw
Geometry compression. none keeps quantization only; raw disables quantization and every geometry extension.
tex=ktx2|webp|avif|jpeg|png|original
Texture format. ktx2 uses ETC1S for colour and UASTC for normal and ORM maps.
maxtex=256|512|1024|2048|4096
Largest texture edge in pixels; bigger textures are resized.
q=low|med|high
Texture quality bucket.
simplify=0.1..1
Target ratio for the mesh simplifier; borders are preserved.
anim=keep|strip
strip removes animations, skins, and morph targets.
v={versionId}
Pin a version instead of the live one.
dl=1
Serve as an attachment with a filename.
exp, sig
Expiry (unix seconds) and HMAC-SHA256 signature; required for private assets and for projects that require signing.

Parameters are canonicalised (sorted, defaults dropped), so ?tex=webp&geo=meshopt and ?geo=meshopt&tex=webp are the same variant. A variant that does not exist yet is queued on the first request; until it is ready the CDN serves the closest ready fallback with an X-GLBoost-Variant: fallback header, or answers 202 with Retry-After when nothing is ready.

Caching

Responses are cached at the edge with a one-year immutable lifetime keyed on the path, the canonical parameters, and the version id. Replacing a model switches the version, so no purge is needed and old pinned URLs keep working. Signatures never enter the cache key.

Other paths

/{assetId}/config.json
Name, version, ready variants, saved viewer settings, and hotspots; what the viewer loads first.
/{assetId}/thumb.png
The poster captured in the dashboard.
/{assetId}.zip?p=...
Unpacked glTF export (.gltf, .bin, textures) of that variant, once created through the API or the Export menu.
/{assetId}.h?p=...
C byte-array header of that variant for lv_gltf_load_model_from_bytes.
/env/{envId}.hdr|jpg?size=64..1024
A custom environment map at the requested size.
/_/env/neutral|studio|outdoor.hdr
Built-in environment maps.
/_/embed.js
The viewer script.