Nodes/ComfyUI-BespokeAI-3D/BespokeAI 3D Generation
ComfyUI Node

BespokeAI 3D Generation

Image to 3D without a GPU — this node rents the heavy lifting for you

By SofianeAlla·Created 9 months ago·Updated 9 months ago· 1
BespokeAI 3D Generation
  • image
  • mesh_path
  • model_url
  • enhanced_image_url
api_key
resolution1m
with_texturetrue
ai_enhancementtrue
low_polyfalse
segmentationfalse
prompt
poll_interval5
max_poll_attempts120

Real image-to-3D inside ComfyUI is usually a mess. The local options - TripoSR, Trellis, Hunyuan3D - are multi-gigabyte model downloads that want serious VRAM, and half of them need their own runtime anyway. BespokeAI 3D Generation takes the other route: it hands your image to a cloud API and waits for a finished GLB. No local model, no GPU, no downloads. Just an API key, an internet connection, and credits on a third-party service. If that trade-off doesn't bother you, this is the fastest path from a 2D image to a mesh you can actually orbit around.

It's part of the ComfyUI-BespokeAI-3D pack by SofianeAlla, the same person behind bespokeai.build. Important framing up front: this is a paid wrapper, not a free local generator. The service is small and barely shows up in community discussion, so you're trusting a Supabase-hosted endpoint with your image and paying per generation. Fine for game-asset prototyping; not something to build a pipeline on without testing it first.

How it works

The node is thin and honest about it. It takes the first frame of your ComfyUI IMAGE tensor, encodes it as a base64 PNG, and POSTs it to the BespokeAI API (a Supabase edge function). The server does the actual reconstruction and returns a taskId; the node then polls every few seconds until the job reports complete, downloads the resulting GLB into ComfyUI/output/bespokeai_3d/, and hands you the local path. Under the hood it's requests plus Pillow/numpy - the full dependency list is three packages, and there's no torch model to load. Check the console and you'll see progress printed as [BespokeAI] Processing... N%.

Inputs that actually matter

Most of them are set-once. The ones a beginner touches:

  • api_key - required, starts with bspk_. Get it from bespokeai.build under Settings → API. No spaces, and don't commit it to a shared workflow you're going to post.
  • resolution - 500k, 1m, or 1.5m polygon count (default 1m). Bigger is smoother but slower and costs the same. 1m is the right default for almost everything.
  • ai_enhancement (default on) - runs a photorealistic upscale on your input before reconstruction. On for muddy phone photos, off if your source is already clean and you want zero drift.
  • with_texture (default on) - asks for PBR textures on the model. Turning it off saves a couple of credits.

The optional ones you can mostly ignore: low_poly optimizes for game use, segmentation splits the model into parts (and only works at 500k - the node silently forces it), prompt steers the AI enhancement, and poll_interval / max_poll_attempts control how long it waits before giving up (defaults of 5s × 120 attempts = a 10-minute ceiling).

Outputs

Three strings come out: mesh_path (the local .glb on disk), model_url (the hosted model), and enhanced_image_url (what the enhancement step produced). Wire mesh_path into the pack's BespokeAI 3D Preview node (or any GLB viewer) to see the result. Note that only the GLB gets downloaded locally - the README mentions OBJ output, but the shipped code fetches just the GLB.

Installing

cd ComfyUI/custom_nodes
git clone https://github.com/SofianeAlla/ComfyUI-BespokeAI-3D.git
cd ComfyUI-BespokeAI-3D
pip install -r requirements.txt

Restart ComfyUI and the nodes appear under BespokeAI/3D. ComfyUI Manager should find it by searching "BespokeAI". No model files to download, no VRAM requirements - the whole pack is just this API client.

Common gotchas

The README's troubleshooting is worth trusting because the error strings come straight from the code: 401 means a bad key, 402 means you're out of credits, 429 means you hit the ~20 requests/minute rate limit (wait a minute, or spread out a batch). Generation timeouts are usually the server being slow on a complex image - bump max_poll_attempts before retrying a clean, simple source image. And check your credit balance first; optional features stack up fast (base generation + enhancement + low poly + segmentation can run 12–23 credits per image).

CategoryBespokeAI/3D

Inputs (10)

NameTypeDefaultDescription
imageIMAGE
api_keySTRING
resolutionCOMBO1m3 options: 500k, 1m, 1.5m
with_textureBOOLEANtrue
ai_enhancementBOOLEANtrue
low_polyoptBOOLEANfalse
segmentationoptBOOLEANfalse
promptoptSTRING
poll_intervaloptFLOAT52–30
max_poll_attemptsoptINT12010–600

Outputs (3)

NameTypeDescription
mesh_pathSTRING
model_urlSTRING
enhanced_image_urlSTRING