Embeddr Load Artifact (V2)
How you actually get your library's images back into the graph
- artifact_id
- image
- mask
- artifact_id_out
- artifact_info
Load Artifact is the on-ramp: it's how an image that lives in your Embeddr library becomes an IMAGE tensor inside ComfyUI. Every workflow that starts from something you already own starts here - a saved generation you want to img2img, a reference you want to feed an IP-Adapter, a masked edit you want to continue. If the Embeddr pack had one node to call its flagship, it's this.
The node takes a single artifact by its UUID and pulls it down from your server. The good part for beginners: you don't have to wire anything. Type the UUID into the manual_artifact_id field and it just works - the manual field is used when no artifact_id input is connected, so you can start bare and convert the field to a wired input later (right-click, "convert to input") once you're driving IDs dynamically from other nodes.
The inputs that matter
manual_artifact_id- the UUID string, used if nothing is connected toartifact_id. This is what you'll actually set as a beginner.artifact_id- the pack's customEMBEDDR_ARTIFACT_IDinput. Wire this from another Embeddr node's ID output (Load Artifacts, Split IDs, the search nodes) and it overrides the manual field.use_cache- defaults to true. The node keeps a class-level cache of loaded artifacts, so re-running a workflow that loads the same IDs doesn't re-download them every time. Leave it on; flip it off only if you're chasing stale-content weirdness.auth_ticket- an optional ephemeral auth ticket for per-user access, for setups where ownership matters. Most single-user setups never touch it.
Outputs - and the mask is the hidden gem
image- the loaded image tensor.mask- anMASKoutput. This is the one people discover late and love: if the artifact carries a mask (say, a cutout or an inpainted region), you get it for free, ready to wire into any compositing or inpainting node. If there's no mask, you get an empty one.artifact_id_out- the ID echoed back out, so you can pass it onward for lineage without re-typing it.artifact_info- the full metadata object, the companion to the Extract Artifact Info node's input. Wire this if you need parents, tags, or the raw JSON.
Mechanically it's a resolve-then-fetch: the node asks your server for /api/v1/artifacts/{id}/resolve?variant=original&proxy=1, follows the returned URL (proxying through the server if the content lives elsewhere), and decodes the bytes into a tensor.
Install & troubleshooting
Pack install, shared: run embeddr serve first (the README's opening warning exists for a reason), install via ComfyUI Manager or a release download into custom_nodes, restart ComfyUI. Only requests beyond the host environment.
The dominant failure mode is trivial and annoying: the server isn't running, or the URL/port is wrong, and the node errors on the resolve call. Check that embeddr serve is up, and if your backend isn't on the default http://localhost:8003, set embeddr_url in the pack's config.json or EMBEDDR_BACKEND_URL in the environment. A 404 means the ID doesn't exist - double-check the UUID. One quirk: with use_cache on, a previously-failed load can linger in the cache, so if a load "mysteriously" works after you deleted the artifact, that's the cache talking; clear it by restarting ComfyUI or toggling use_cache off.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| manual_artifact_id | STRING | Manual UUID string (used if input not connected) | |
| use_cache | BOOLEAN | true | — |
| artifact_idopt | EMBEDDR_ARTIFACT_ID | UUID of the artifact to load | |
| auth_ticketopt | STRING | Ephemeral auth ticket for per-user access |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |
| artifact_id_out | EMBEDDR_ARTIFACT_ID | — |
| artifact_info | EMBEDDR_ARTIFACT_INFO | — |