BespokeAI 3D Generation (URL)
The same image-to-3D node, but it fetches the picture for you
- mesh_path
- model_url
- enhanced_image_url
This is BespokeAI 3D Generation with the middleman removed. Where the main node needs a ComfyUI IMAGE tensor - which it base64-encodes and ships to the cloud - this one just takes a URL string and hands it straight to the BespokeAI API. The server downloads the image itself. Same backend, same credits, same outputs, one less input to plumb.
Reach for it when your image isn't sitting in ComfyUI at all: a render already hosted on an object store, a reference photo you grabbed from the web, something produced by an external tool. You get to skip the Load Image node entirely - just paste the link and run. It's genuinely handy for scripting and for keeping workflows tidy when the source lives elsewhere.
The one input that matters
Where the sibling node has image, this one has image_url - required, plain text, no default. Everything else is identical: api_key (starts with bspk_, from bespokeai.build), resolution (500k / 1m / 1.5m), with_texture and ai_enhancement (both on by default), plus the same optional extras - low_poly, segmentation (still 500k-only), prompt, and the poll_interval / max_poll_attempts pair that governs how long it waits before timing out.
The one trap that bites people: the URL has to be publicly reachable by BespokeAI's servers. That's not your machine fetching it - it's their edge function. localhost, a password-protected link, or a signed URL that expires in five minutes will fail. If you want to convert something from your own disk, that's what the regular image node (or a quick hosting step) is for. Worth noting the node strips whitespace around the URL before sending, so a stray space from copy-paste won't kill it - that's the one bit of fussiness the code actually handles for you.
Everything else
Installation is the same pack, one time: clone https://github.com/SofianeAlla/ComfyUI-BespokeAI-3D into ComfyUI/custom_nodes, pip install -r requirements.txt, restart - or find it via ComfyUI Manager by searching "BespokeAI". It shows up under BespokeAI/3D. No model files, no GPU, dependencies are just requests, Pillow, and numpy.
Outputs match the main node exactly: mesh_path (the downloaded .glb saved to ComfyUI/output/bespokeai_3d/), model_url, and enhanced_image_url. Wire mesh_path into the pack's BespokeAI 3D Preview to orbit around the result. Internally this node literally instantiates the regular generation class and reuses its submit/poll/download methods, so the two behave identically - same error codes (401 bad key, 402 out of credits, 429 rate-limited), same 10-minute polling ceiling, same honest progress logs in the console. Pick the one that matches how your image enters the workflow; the results won't differ.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| image_url | STRING | — | |
| api_key | STRING | — | |
| resolution | COMBO | 1m | 3 options: 500k, 1m, 1.5m |
| with_texture | BOOLEAN | true | — |
| ai_enhancement | BOOLEAN | true | — |
| low_polyopt | BOOLEAN | false | — |
| segmentationopt | BOOLEAN | false | — |
| promptopt | STRING | — | |
| poll_intervalopt | FLOAT | 52–30 | — |
| max_poll_attemptsopt | INT | 12010–600 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| mesh_path | STRING | — |
| model_url | STRING | — |
| enhanced_image_url | STRING | — |