- seed
- any
PostText is the least glamorous node in the RequestsPoster pack, and honestly the most useful. It does exactly one thing: when the upstream node fires, it sends an HTTP POST to a URL you give it. That's the whole job. No image upload, no model download, no API key - just "this pipeline finished, now tell something."
If you've ever queued a 40-minute upscale, wandered off, and come back to a dead screen, you already know why this exists. Hook it to the end of your graph and your phone buzzes instead.
How it works
Under the hood it's a one-liner:
requests.post(url, {"content": "done"})
When execute is on, the node fires the POST the moment anything connected to its any input completes. That any input is the trick that makes the node usable everywhere - it accepts any type of wire, so you can trigger it from a sampler, a VAE decode, a video, a text output, whatever. You don't need a specific data type, which is why this node slots into the end of just about any workflow.
One thing to know: it sends your value as form-encoded data (the data= argument, not json=). That matters, because some endpoints will happily accept it and some expect a JSON body and will shrug at you. The three classic targets all work fine:
- Discord webhook -
key = content,value = your message - ntfy.sh -
key = message, and you get a push notification - Slack / generic webhook -
keyis usuallytext
The inputs that matter
url- the webhook or endpoint. Copy the whole thing; a Discord webhook URL looks likehttps://discord.com/api/webhooks/....key/value- the form field name and its content. Defaults arecontent/Hello, World!!.any- your trigger. Wire the node that finishes your pipeline into this.execute- master switch. Turn it off to silence the node without deleting the wiring.seed- this one's a lie. It's a ComfyUI seed widget with a randomize button and it does absolutely nothing. The author clearly copied a template and left it in. It's harmless; just ignore it.
Installing it
This is part of the aburahamu/ComfyUI-RequestsPoster pack, so you get it along with the rest. Easiest is ComfyUI Manager → "Install Custom Nodes" → search "requests" → install ComfyUI-RequestPoster → restart. Or, the manual way:
cd ComfyUI/custom_nodes
git clone https://github.com/aburahamu/ComfyUI-RequestsPoster.git
Then restart ComfyUI. No models, no heavy dependencies - the pack's requirements.txt is just requests, tweepy, Pillow, numpy, torch, and you almost certainly already have all but maybe tweepy.
Common issues
Nothing happens when the job finishes. Check that execute is on, and that the node is actually connected to something - if any is unplugged, there's no trigger. Then test the URL in a browser or curl before blaming ComfyUI:
curl -X POST https://your-webhook-url -d "content=test"
The target ignores you. Again: this node sends form data, not JSON. If the endpoint expects JSON you'll need a different tool. Discord and ntfy are the safe bets.
Your webhook got hijacked. A webhook URL is a secret - anyone who has it can post to your channel. It's embedded in the workflow JSON, and ComfyUI bakes that JSON into every PNG you save, so think twice before sharing a workflow that has your webhook sitting in it. Revoke and regenerate the URL if it ever leaks.
PostText has no outputs - it's a dead-end node by design, the final stop on the graph. If you're tired of babysitting long queues, it's the two-minute fix.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| url | STRING | https://~ | — |
| key | STRING | content | — |
| value | STRING | Hello, World!! | — |
| seed | INT:seed | — | |
| any | * | — | |
| execute | BOOLEAN | true | — |
Outputs (0)
No outputs