Gemini 3.6 Flash
The native-format twin, and when to use the other one
- text
- raw_json
- credits_consumed
- usage_json
- credits_left
Open the Gemini folder in this pack's node menu and you'll see the same model twice, once plain and once with (openai) tacked on the end. It's not a duplicate - KIE publishes two documentation pages per Gemini model, one for its native Gemini-style route and one for an OpenAI-compatible shim, and the pack builds a node for each.
This is the native one. In the pack's shipped offline catalog it arrives without a resolved endpoint, which means a first run can fail with an error telling you the endpoint hasn't been resolved yet. Refresh the live catalog - restart ComfyUI or hit the pack's catalog refresh node - and the deep sync usually fills it in. If it doesn't, the (openai) twin next to it in the menu does the same job today.
So which one do you actually want?
- Starting fresh? Take the
(openai)node. It resolves from first launch, and its request schema is the OpenAI one you'll find examples for anywhere. - Pasting a request body from KIE's native Gemini docs? Then this node is the match, assuming its endpoint has resolved.
- Neither matters for output quality. Same model behind both. The difference is wire format and, occasionally, which fields each endpoint accepts - which is why they're separate nodes instead of a checkbox.
How it behaves once it's live
It's a chat completion: prompt in as a messages array, text out, parsed down to one clean string by the pack's response walker. No GPU work, no image socket, no local weights. Every run is a metered call, and the node reports the cost on its own body when it's done.
Inputs
prompt - required. The user message.
system_prompt - the job description, and the place you stop the model from opening with a chatty preamble. On a prompt-rewriting node this is not optional polish; a preamble lands in your conditioning as literal tokens.
history_json - an array of prior messages, passed through untouched. That's how you hold a conversation with a node that has no chat UI: keep the array in your flow and feed it back. It's also the only multimodal route here, since the pack doesn't declare an image input on the Gemini nodes.
tools_json - OpenAI-style function definitions, [] when you're not using tools.
stream - off by default, and turning it on doesn't stream tokens into the UI; the pack collects a streamed response back into one string before handing it over.
expert_override_json - a raw-request escape hatch for fields KIE hasn't documented. Author's tooltip: normal use doesn't require it.
Outputs
text is what you wire downstream. raw_json is the full provider response. usage_json is token accounting, which is the output to check when a chain costs more than expected. credits_consumed and credits_left are floats, also displayed on the node after each run.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
Or ComfyUI Manager, searched as "KIE.ai Nodes Next", then a restart. Four small dependencies - requests, Pillow, numpy, PyYAML - and no downloads of any kind. Add your KIE key once under Settings → KIE.ai Nodes Next → Connection; the pack validates it against KIE before replacing a saved key, keeps it out of workflow JSON, and KIE_API_KEY wins on headless installs.
Worth knowing
- Why the node list keeps changing. The pack reads KIE's live API documentation at startup, builds a node per page, and re-checks at most once a day. That's why a model released last week can already be a node - and why an occasionally half-defined one shows up before its page is machine-readable.
- Version numbers here are just the tier. 3.6 Flash sits between 3.5 and 3.7 in the same folder, all with identical controls. When KIE reprices them, swapping the node is the whole migration.
- The bill is per call, and a loop is a bill in a loop. Test with one short prompt before wiring an LLM into a path that runs on every queue.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | User prompt / message. | |
| system_promptopt | STRING | — | |
| streamopt | BOOLEAN | false | — |
| tools_jsonopt | STRING | [] | Optional function/tool definitions supported by this model endpoint. |
| history_jsonopt | STRING | [] | Optional prior message/input array as JSON. |
| expert_override_jsonopt | STRING | {} | Expert-only request overrides. Normal use does not require this. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |
| raw_json | STRING | — |
| credits_consumed | FLOAT | — |
| usage_json | STRING | — |
| credits_left | FLOAT | — |