Check graph and method requirements
Check what a method needs before you run it.
Updated
A graph is a ComfyUI workflow saved in API format: a JSON object of numbered nodes, each with a class_type and its inputs. Wavemaker stores, checks and runs that same plain JSON. This guide covers bringing a graph in, checking what it needs, running it, and what happens when something it needs is missing.
- Import
Bring in a Comfy API graph under 1 MB.
- Check
Graph check tests nodes, inputs and models.
- Save
Each save becomes a numbered revision.
- Run
Review the price, then run the saved revision.
Run a graph you already have
- In ComfyUI, export your workflow in API format. The file is a single JSON object keyed by node ID. A workflow saved in ComfyUI's regular (non-API) format is refused on import.
- In Wavemaker, open Conversations, choose Source tools, then Import graph, and pick the
.jsonfile. Files must be under 1 MB. Source tools appears only when you can write in the workspace. - The graph opens on its Source graph page as revision 1.
- Choose Check graph. Fix anything the banner lists, using Show node to jump to the node it names.
- Choose Save revision (or press Cmd+S / Ctrl+S). Run uses only the saved revision.
- Choose Run. The Run this graph dialog shows the expected cost and the most that will be reserved.
- Choose Run again to submit. Wavemaker confirms the run and opens the conversation's results, where the run appears under Production history.
To start from nothing instead, choose Source tools › New project, name it, and add nodes with Add node.
Check that it worked
- The run shows in Production history with its state. A run that is still going has a Cancel button.
- When it succeeds, its outputs appear with your other takes on the results page.
- A failed run shows its error and a Contact support link.
What a graph needs
A graph runs only when everything it names is available at once. Before running, make sure of each of these:
| Requirement | What has to be true |
|---|---|
| Node classes | Every class_type is a node the runtime has installed and allows. |
| Required inputs | Each node sets every input its schema requires. |
| Values | Numbers sit inside the node's limits; list choices match an available option exactly. |
| Model files | Each loader names a model file the runtime carries, or one of your registered models. |
| Connections | Each link points at an existing node and a real output socket of a matching type. |
| Shape | No cycles, at most 1,000 nodes. |
The graph page can only check structure and availability. It cannot tell you whether the result will look right; run a small test first.
Which nodes a graph can use
A graph you import or write may use:
- ComfyUI's own built-in nodes, not including its partner API nodes.
- The node classes that Wavemaker's own catalog graphs and model profiles use.
Other custom nodes are refused, even when the runtime has them installed. Some nodes never run in any graph, including nodes that save model weights as files (such as CheckpointSave or LoraSave) and nodes that delete or probe files.
Inputs that name a file path, folder, URL or expression accept only a literal value chosen from the node's own list of options. They can't be connected to another node or set to free text. Numbers, true/false values and empty values are allowed. One exception: the expression input of ComfyMathExpression takes free text up to 256 characters. A filename_prefix must stay inside the output folder. A graph that breaks one of these rules is refused before anything is reserved. Check graph reports a node outside the allowed set as node_not_permitted; a run is refused with "this node class is not available to graphs you send".
To find a node, choose Add node and search with Search available nodes. The search matches node class names and categories and shows up to 20 nodes the runtimes have installed. A custom node in those results can still be refused by the rules above, so check the graph after adding one.
Check graph
Check graph sends the current draft for validation. It does not save, reserve credits or run anything. It reports one of two results.
Graph check passed
The banner reads Graph check passed: every node, input and model was accepted by at least one runtime. It may also list warnings, for example an input the node's schema does not declare ("May require custom validation"). Warnings don't block a run.
Review the validation findings
The banner lists up to six findings, each naming the node and input. Common ones:
| Finding | Meaning and fix |
|---|---|
| Required input missing | Set the named input on that node. |
| Value is not in the observed choices | The value, often a model filename, isn't one the runtime offers. Pick an offered value. |
| Value is outside schema bounds | Bring the number inside the node's minimum and maximum. |
| Expected INT, FLOAT, BOOLEAN or STRING | The value has the wrong type. |
| Output slot is outside the source interface | The link points at an output socket the source node doesn't have. |
| A type "cannot bind to" another | The connected output and input types don't match. |
| Static graph contains a cycle | Remove the loop. This finding doesn't name the nodes involved. |
| Latent image width or height must be a multiple of 8 | Use aligned dimensions on EmptyLatentImage or EmptySD3LatentImage, then crop or resize later. |
When no single node input explains the refusal, the banner lists the reason each runtime gave instead, as a short code. The most common:
| Code | Meaning |
|---|---|
node_not_permitted | A node outside the set described in Which nodes a graph can use. |
node_not_admitted | The runtime doesn't have this node class. |
model_identity_unqualified | A loader names a model file the runtime doesn't carry. |
private_model_unqualified | Your registered model doesn't suit this loader or model family. |
input_not_permitted | A path, folder, URL or expression input isn't a literal listed option. |
resource_bounds | A setting, such as a size or length, is above the runtime's maximum. |
graph_node_limit | The graph has more nodes than the runtime accepts. |
While a finding is showing, Run stays held with the reason "Review the validation findings." Editing the graph clears the old result; check again after your changes.
Use your own models in a graph
A loader input can name a model registered in your workspace, as wm://model/{name}/{version} or as its filename {name}-v{version}.safetensors. Wavemaker checks the reference when you submit and again right before the job starts.
| What you see | What it means |
|---|---|
| "no such registered model" | A wm://model/... reference names a version that isn't registered in your workspace. |
| "the registered model's weights are missing" | The version is registered but its weights are no longer stored. |
| "the registered model was removed or changed after the job was submitted" | It was deleted or replaced while the job waited; the job fails. |
A filename in the {name}-v{version}.safetensors form that nobody registered is treated as an ordinary model file, which the runtime must carry. A registered model also has to suit the loader, model family and size limit the runtime expects. See Use trained models and reusable assets.
Run and what it costs
Run is available only when:
- You have saved every change. Otherwise it says "Save your graph revision before running."
- The saved graph has at least one node. Otherwise it says "Add or import a graph before running."
- The last check, if you ran one, passed.
- Your access lets you write in the workspace. With read-only access, Run is hidden.
The top bar shows Runs on the shared pool, nothing to start. There is no runtime to start or stop yourself.
The first Run prices the saved revision and shows Run this graph:
- "Expected cost" is the typical charge. "Up to" is the amount reserved while it runs; unused credits are released.
- If the graph can't be priced in advance, the dialog says the run settles to measured usage.
- If the price expires before you confirm, you get a fresh one: "The quote expired. Here is a fresh one; run again to accept it."
Each run makes one take and is charged in credits like any other generation. The charge covers the job's own work: copying in its models and files, executing the graph, and collecting the outputs. Startup and idle time are not charged. See Credits.
If a run is cancelled or fails
| What happened | What you're charged |
|---|---|
| Cancelled before it started | Nothing. The reservation is released. |
| Cancelled while running | The work done so far, never more than the reservation. |
| Failed while running, including timeouts, running out of memory, or finishing with no output files | The work done up to the failure. |
| Failed on Wavemaker's side, such as weights not copied in or outputs not collected | Nothing. |
A failed run keeps its error in Production history. Fix the cause, check the graph, save, then run again. Running the same revision again is new work and is charged again.
Edit, save and restore revisions
The Source graph page has three panes: the node list (Find a node in this graph, press / to focus it), the graph, and an inspector with four tabs.
| Tab | What it does |
|---|---|
| Inspector | Edit the selected node's inputs and Connect nodes by source node, output socket and input name. |
| JSON | The Complete Comfy API graph as editable text, and Download API JSON. |
| Compare | A line-by-line diff of your draft against the saved source or another revision. |
| History | Saved revisions, with Compare with draft and Restore as new revision. |
Every save creates a new numbered revision. Every saved revision is kept; restoring saves a copy as a new revision and overwrites nothing. The History tab lists the 10 most recent revisions. If a save is refused, for example because the graph changed elsewhere, it is listed under Earlier rejected attempts as "Not saved." for the rest of your visit. Your draft stays in the editor.
Unfinished JSON in the JSON tab keeps your draft but can't be checked or saved until it parses. Leaving the page with unsaved edits asks you to save or discard them first.
Keep a graph portable
- Download API JSON saves the graph as
wavemaker-graph.api.json, in the same plain Comfy API format you imported. It downloads what is in the editor, including unsaved edits. - Node positions on the canvas are kept in your browser only; they never change the saved graph.
- A saved or downloaded graph holds exactly the values you typed into it. Keep API keys, passwords and signed URLs out of node inputs. Provider keys belong in your connections, not in graphs. See Credentials and keys.
- A graph names model files and node classes but doesn't contain them. Anyone running it elsewhere needs the same nodes and weights.
Graphs in a conversation and in Library
The agent can also run graphs during a conversation, including your own files fed into a graph's image, audio or video loaders. Run on the graph page runs the saved graph exactly as it is; it doesn't attach uploads. To use your files with a graph, attach them in a conversation and say which node input each one feeds.
A graph or method saved in Library shows Requirements & availability on its detail page: its runtime status, declared dependencies and source download access. Adding an item to Library does not start a run. See Reuse an exact Library item.
Developers can validate a graph without running it through the API or the CLI. See Graph portability and explicit dependencies.