Nodes/comfyui-sg-nodes/Call Remote URL
ComfyUI Node

Call Remote URL

An HTTP Request Node That Doesn't Want Your API Key

By sebagallo·Created 9 months ago·Updated 6 months ago· 0
Call Remote URL
  • passthrough
  • PASSTHROUGH
  • STATUS_CODE
  • RESPONSE_BODY
url
method
body
headers{}

The name is refreshingly honest: this node calls a remote URL. No model, no client, no "it also improves your seed." You give it a URL and an HTTP method, it makes a request from the machine running ComfyUI, and it hands you back the status code and the body. That's the whole feature, and it's exactly what a surprising number of workflows quietly need.

What do you do with a generic HTTP call inside a Comfy graph? Plenty:

  • Ping a webhook when a generation finishes - your own automation server, a Discord bot, a home-automation endpoint.
  • Trigger an external service mid-workflow: start a job on a local service, hit a control endpoint on your server.
  • Fetch a status or a value from an API and feed it into the JSON nodes in this same pack.

Note what it is not: this is not an API-wrapper node that holds a credential and calls a model provider. It stores no key, and there's no built-in "call GPT" behavior. You can paste a header into the headers widget if a service needs auth, but the node doesn't manage or remember anything for you. That's a genuine plus in an ecosystem where a "handy network node" is exactly the shape a malicious phone-home takes - a plain HTTP client you can read is about as low-risk as network nodes get.

The inputs that matter

  • url - the target. Plain string.
  • method - dropdown with GET, POST, PUT, DELETE, HEAD, PATCH.
  • passthrough - any type, echoed to the PASSTHROUGH output. Its real job is execution ordering: connect whatever you want to run first here, and this node is guaranteed to execute after it.
  • body (optional) - request body, e.g. the JSON payload for a POST.
  • headers (optional) - a JSON string of headers, default {}.

Three outputs: PASSTHROUGH (your value back), STATUS_CODE (INT), and RESPONSE_BODY (STRING). Wire RESPONSE_BODY into Map JSON To Property (same pack) and you've got a cheap little API client without leaving the canvas.

Gotchas, from reading the source

The call runs server-side over Python's requests library - so it happens on the machine hosting ComfyUI, with that machine's network access. If a request throws (bad URL, refused connection, timeout), the node doesn't crash the graph; it returns status 500 and puts an error string in the response body. That's graceful but easy to misread - a 500 doesn't necessarily mean the server returned 500, it can mean the request itself failed. Check RESPONSE_BODY before assuming the endpoint is angry at you.

There's no timeout widget, so an endpoint that hangs will hang the node. If you're calling flaky services, pair it with Wait For Milliseconds or keep your targets fast and local.

Install

Part of comfyui-sg-nodes by sebagallo. ComfyUI Manager → search comfyui-sg-nodes, or:

cd ComfyUI/custom_nodes
git clone https://github.com/sebagallo/comfyui-sg-nodes

Restart ComfyUI; it appears under SGNodes/Network. No model downloads, and the only runtime dependency (requests) comes with ComfyUI already.

CategorySGNodes/Network

Inputs (5)

NameTypeDefaultDescription
urlSTRINGTarget URL string
methodCOMBOHTTP method (GET, POST, etc.)
passthroughCOMFY_MATCHTYPE_V3Any type, passed through to output. Useful for execution ordering.
bodyoptSTRINGRequest body string
headersoptSTRING{}JSON string of request headers

Outputs (3)

NameTypeDescription
PASSTHROUGHCOMFY_MATCHTYPE_V3
STATUS_CODEINT
RESPONSE_BODYSTRING