Nodes/ComfyUI Silver Nodes/Silver API Text Loader
ComfyUI Node

Silver API Text Loader

Pull Live Text From Any URL Straight Into Your Prompt

By SilverAndJade·Created about a year ago·Updated about a month ago· 0
Silver API Text Loader
    • STRING
    url
    json_tag
    seed0

    Ever wanted a prompt that updates itself? A workflow that pulls today's headlines, a number from your own server, or the latest item from a feed into the text box without you touching anything? That's the whole job of Silver API Text Loader, and it's the rare "API" node with nothing to configure.

    What it actually is

    Despite the name, there's no API key, no client library, no credits. It just does an HTTP GET on whatever URL you give it and hands the response back as a plain string. The "API" is any endpoint you point it at. It sits in the lightweight corner of the API-node family - the kind of node that phones home for data rather than to run a model - and it's a plumbing-layer move more than anything else: one value source fanned out to your prompt, except the value happens to live on the internet.

    How it works

    The mechanism is about as simple as it gets. The node GETs your URL with a short 10-second timeout and a browser-style user agent. If you leave json_tag empty, you get the raw response body verbatim. If you set a tag, it parses the response as JSON and walks a dot-separated path into it - so data.prompt digs into {"data": {"prompt": "..."}}, and 0.text pulls [{"text": "..."}] off a list. Nested dicts and array indices both work.

    Two failure behaviors are worth knowing because they're unusually forgiving. If the tag isn't found, the node doesn't error - it returns the whole raw response instead and logs a line to the console, which is how you end up with a wall of JSON inside your prompt and no idea why. And if the fetch itself fails, it returns a string that literally says Error: .... That string then flows into whatever you wired it to, so a dead endpoint produces a prompt containing an error message rather than a crash. Keep that in mind before you point this at something flaky.

    The inputs that matter

    There are only three, and the last one is a trick:

    • url - where to GET. Empty means "output an empty string."
    • json_tag - the dot-path into a JSON response. Leave blank for raw text.
    • seed - this is the interesting one. The node never actually uses the seed for randomness; look at the code and it's accepted and ignored. Its real job is to break ComfyUI's execution cache. A node whose inputs haven't changed gets skipped on the next queue run, so the seed exists so you can force a fresh fetch by randomizing it (set the widget's control to randomize). If you leave it fixed at 0, the node fetches once and then happily reuses that cached string forever.

    The single output is a STRING, which wires straight into a CLIP Text Encode or any text input.

    Installing it

    Silver Nodes is a small utility pack by SilverAndJade - not a heavyweight like rgthree, but actively maintained (v1.1.0 added this node). The easiest path is ComfyUI Manager: search for "ComfyUI Silver Nodes" and install. Or do it by hand:

    cd ComfyUI/custom_nodes
    git clone https://github.com/SilverAndJade/comfyui-silver-nodes
    

    Then restart ComfyUI. No models to download - this node fetches everything at run time.

    Where people get burned

    Three things, in order of how often they bite. First, the cache thing above - a "why isn't it updating?" question is almost always the fixed seed. Second, endpoints that need auth: there's no header or token configuration here, so anything behind a login will fail. Third, and most importantly, remember you just made your workflow network-dependent. If the URL goes away, your run "succeeds" with an error string in the prompt. For a fun demo it's great; for a workflow you'll run unattended for months, think twice.

    Categorysilver_nodes/loaders

    Inputs (3)

    NameTypeDefaultDescription
    urlSTRING
    json_tagSTRING
    seedINT00–18446744073709550000

    Outputs (1)

    NameTypeDescription
    STRINGSTRING