"Forge delivery fails but the preview GLB is still downloadable — recover it"
A Forge asset's deliver job errors out. You assume the entire generation spend is lost and need to re-run it.
Forge's pipeline has separate build and deliver stages. When deliver fails (network timeout, malformed payload, etc.), the build stage's output — including previewGlbUrl, a fully textured GLB — remains downloadable from the asset-detail API. The spend isn't wasted; only the final delivery step failed.
-
Fetch the GLB from the asset-detail API:
snippetGET /api/assets/{game}/{kind}-{slug}Header:
x-forge-token. The response'siterations[].previewGlbUrlpoints to the surviving build artifact. -
Recover via headless Blender into your standard delivery shape:
import_scene.gltf→ join meshestransform_apply(rotation + scale — the glTF importer applies its own Y-up rotation on import)- Ground at Blender z = 0
- Extract the first
TEX_IMAGEnode's.imageas the base-color PNG - Export Y-up OBJ:
forward_axis='NEGATIVE_Z', up_axis='Y'
-
Fix the material line: Blender's
export_materials=Falsedropsusemtlentirely;export_materials=Truewrites an unwanted stray.mtlfile. Manually injectusemtl <slug>_matbefore the firstfline in the exported OBJ. -
Author
.vmdl/.vmatwrappers from the recovered OBJ + PNG using the same schema as your other Forge-delivered assets (modeldoc29header,DefaultMaterialGroupremapping both"name"and"name.vmat",TextureColoras the full root-relative path).
Forge stores build artifacts independently of the delivery pipeline. The preview GLB is the same fully-textured mesh that would have been delivered — it just never made it through the final handoff. Recovering it through Blender reproduces the exact same asset at zero additional generation cost.