Addon Endpoint Submit
The node that actually POSTs your job to the addon
- response_json
- job_id
- summary_json
Where Addon Endpoint Plan is the paperwork, Addon Endpoint Submit is the handshake. It's the runtime node in the MKRShift addon lane that actually makes the HTTP call: give it an endpoint_plan_json (from the Plan node) and an optional payload, and it POSTs to your addon's submit endpoint, reads the job_id out of the response, and hands it back to you. From there the job runs on the host's side - a render in After Effects, a document operation in Photoshop, a scene bake in Blender - and you poll for the result.
This is the node that makes the pack's DCC story real, and it's worth knowing the boundaries. ComfyUI's own API is a web API (the community has been driving it from scripts and other apps since day one); this pack's addons flip that direction - your host app runs a small HTTP endpoint and ComfyUI drives it. Submit is the "go" signal in that arrangement.
How it works
The node reads the plan JSON for base_url, submit_path, timeout_ms, and the auth settings, then POSTs the payload. The plan's auth_mode is applied automatically - bearer or custom-header auth gets attached before the request goes out, so you don't juggle headers by hand. If you pass a payload_json, it's used as the request body; if you leave it empty, the node falls back to a resolved payload built from the plan. The response is parsed as JSON, and the job_id field is pulled out and returned as its own STRING output - that ID is the handle you'll feed to the Poll node.
The outputs tell you everything you need:
response_json- the raw server response as textjob_id- the extracted ID, wired straight into MKRAddonEndpointPollsummary_json- URL used, HTTP status, job ID, and a warning count
Installation
cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes
Restart ComfyUI, or install via ComfyUI Manager ("MKRShift Nodes"). Pure stdlib HTTP here - no pip requirements, nothing to configure beyond the plan.
Common issues
Three things trip people up. First, the endpoint has to actually exist - if you haven't installed the matching addon in your host app (the pack ships per-app scaffolds under addons/), you'll get a connection error and an empty job_id, and no amount of ComfyUI-side tweaking fixes it. Check the host first. Second, a valid response with no job_id field: the node returns an empty string, which downstream will quietly poll forever - so verify the response shape once with a curl before wiring the whole chain. And third, timeouts: the default is 30 seconds, which is plenty for a submit handshake but tight if your host blocks on a long render before acknowledging. If your server waits to respond until the job is done, bump timeout_ms in the Plan node. And the standing rule from the ecosystem docs applies here too - don't point this at an unauthenticated ComfyUI across the network; the plan's auth fields are your friend.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| endpoint_plan_json | STRING | {} | — |
| payload_jsonopt | STRING | {} | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| response_json | STRING | — |
| job_id | STRING | — |
| summary_json | STRING | — |