FL Kartel Job Input
Decode a Kartel job payload into usable ComfyUI values
- job_id
- user_id
- user_email
- app_name
- callback_url
- string_1
- string_2
- string_3
- string_4
- int_1
- int_2
- int_3
- int_4
- float_1
- float_2
- float_3
- float_4
- bool_1
- bool_2
- bool_3
- bool_4
- image_1
- image_2
- image_3
- image_4
If you're running ComfyUI as a backend behind Kartel - a job-pipeline system that dispatches work with a JSON payload and expects results posted back to a callback URL - you need something that turns that inbound payload into typed values your graph can actually wire up. That's this node's entire job: read a Kartel job's metadata and its params_json blob, and fan it out into 25 separate typed sockets.
How it works
You feed it the job's core metadata fields as strings (job ID, user ID, email, app name, callback URL) plus a params_json string containing whatever parameters the specific job needs. The node parses that JSON and exposes it as four sockets each of STRING, INT, FLOAT, and BOOLEAN, plus four IMAGE sockets. The image sockets aren't passed as base64 or raw bytes in the JSON - the node looks for image_url_1 through image_url_4 keys inside params_json and downloads each one into an IMAGE output. That's a meaningful design choice: your job payload stays small JSON with URLs in it, and the actual image fetching happens here rather than needing to be handled by whatever's producing the job.
The inputs and outputs that matter
Required: job_id, user_id, user_email, app_name, callback_url, and params_json (multiline, default {}) - the raw job payload.
Outputs, 25 in total: the five metadata strings passed straight through (job_id, user_id, user_email, app_name, callback_url), then string_1–string_4, int_1–int_4, float_1–float_4, bool_1–bool_4, and image_1–image_4 - all pulled out of params_json by key.
How to install it
Ships in ComfyUI_Fill-Nodes. ComfyUI Manager: search ComfyUI_Fill-Nodes, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_Fill-Nodes
then restart. This node itself just needs Python's JSON parsing and an HTTP fetch for the image URLs - no model download.
Common issues & troubleshooting
This is infrastructure plumbing, not a general-purpose node. Unless you're actually integrating with Kartel specifically, this node has no use - the fixed shape of its outputs (four typed slots per type, image_url_N as the exact key convention) is built around Kartel's job format, not a generic webhook standard. If you're building your own job-dispatch integration against a different system, this is a reference for the pattern, not a drop-in tool.
Malformed or unexpected params_json is the most likely failure point. Since the node fans a JSON blob out into fixed typed sockets, a payload missing an expected key, or carrying a value of the wrong type for a given slot (a string where an int is expected), is where problems surface. Validate the payload shape on the sending side before it reaches this node - that's easier to fix than debugging a downstream type mismatch in the graph.
Image downloads depend on the URLs being reachable from wherever ComfyUI is running. If image_url_1 points at something behind auth, a private network, or a URL that's since expired, that image socket won't populate. This matters especially if ComfyUI is running somewhere with different network access than whatever originally uploaded the image.
Its output is meant to feed a workflow that ends in FL_KartelJobOutput. The pairing mirrors FL_InpaintCrop / FL_Inpaint_Stitch - this node decodes the job in, its counterpart posts the result back out, and job_id plus callback_url are the values that need to travel from this node to that one unchanged.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| job_id | STRING | — | |
| user_id | STRING | — | |
| user_email | STRING | — | |
| app_name | STRING | — | |
| callback_url | STRING | — | |
| params_json | STRING | {} | — |
Outputs (25)
| Name | Type | Description |
|---|---|---|
| job_id | STRING | — |
| user_id | STRING | — |
| user_email | STRING | — |
| app_name | STRING | — |
| callback_url | STRING | — |
| string_1 | STRING | — |
| string_2 | STRING | — |
| string_3 | STRING | — |
| string_4 | STRING | — |
| int_1 | INT | — |
| int_2 | INT | — |
| int_3 | INT | — |
| int_4 | INT | — |
| float_1 | FLOAT | — |
| float_2 | FLOAT | — |
| float_3 | FLOAT | — |
| float_4 | FLOAT | — |
| bool_1 | BOOLEAN | — |
| bool_2 | BOOLEAN | — |
| bool_3 | BOOLEAN | — |
| bool_4 | BOOLEAN | — |
| image_1 | IMAGE | — |
| image_2 | IMAGE | — |
| image_3 | IMAGE | — |
| image_4 | IMAGE | — |