Roop Webhook: File Path
Push a finished video or saved file to a webhook
The image webhook node sends a tensor. This one sends a file that already exists on disk - and that turns out to be exactly what you need when the thing you want to deliver is a video, a zip, or a saved result that no node is going to hand you as a tensor.
Think about how the rest of this pack behaves: RoopFaceSwapVideo writes its output to roop_dir/temp_io/swapped_video.mp4 and returns nothing to the graph. The batch node dumps a folder of results to an output directory. Neither one gives you a node connection to attach anything to. This node is the delivery mechanism for those cases: give it the path to the file, and it POSTs the bytes to your webhook.
How it works
Plain multipart upload, same shape as the image webhook node:
POST <webhook_url>
Content-Type: multipart/form-data
file: <filename>
The content type is picked from the filename - video/mp4 if it ends in .mp4, otherwise application/octet-stream. If you set webhook_secret, it computes the GitHub-style X-Hub-Signature-256 HMAC-SHA256 header over the file bytes so your endpoint can verify the sender. No outputs, no retries, no queue - one POST, console logs the result, done.
The inputs that matter
- file_path - the absolute path to the file on disk. This is the one you actually set; everything else is mostly defaults.
- filename - the name the receiver sees in the upload, and what determines the content type. Default
output.mp4. If the real file isswapped_video.mp4but you leave the default, your receiver gets a file calledoutput.mp4with video/mp4 content type - usually fine, just know it. - webhook_url - where to send it.
- webhook_secret - optional HMAC secret.
- enable_webhook - master switch, default on.
Where people get burned
- "File does not exist" and nothing else happens. The node checks the path up front, prints
[WebhookFile] File does not exist: <path>to the console, and returns quietly. If your video node wrote toroop_dir/temp_io/with an auto-incremented name, copy the actual path from the console log - the_1,_2suffixes mean you can't guess it. - It only handles one file per run. No globbing, no folder uploads. For the batch node's output folder you'd chain several of these or point the receiver at the directory separately.
- Same webhook caveats as its sibling: the endpoint must accept multipart file uploads, there's no retry logic, and an empty URL or disabled toggle skips silently with a console line.
- No real authentication beyond the HMAC. The signature proves the request came from whoever holds the secret; it's not a substitute for TLS or endpoint-side access control.
Installing it
Same pack, same install as the rest of the Roop nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/glitchinthemetrix16/ComfyUI-Roop
Restart ComfyUI and the node appears under Roop/Webhook. The natural pairing: RoopFaceSwapVideo → note the output path → RoopSendWebhookFile with that path → your server or bot gets the finished clip the moment it's done. No polling, no manual downloads, which is genuinely the best quality of this pack.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| file_path | STRING | — | |
| filename | STRING | output.mp4 | — |
| webhook_url | STRING | — | |
| webhook_secret | STRING | — | |
| enable_webhook | BOOLEAN | true | — |
Outputs (0)
No outputs