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=1Presets
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.