Nodes/ComfyUI Roop Custom Nodes/Roop Webhook: File Path
ComfyUI Node

Roop Webhook: File Path

Push a finished video or saved file to a webhook

By glitchinthemetrix16·Created about a year ago·Updated about a year ago· 1
Roop Webhook: File Path
      file_path
      filenameoutput.mp4
      webhook_url
      webhook_secret
      enable_webhooktrue

      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 is swapped_video.mp4 but you leave the default, your receiver gets a file called output.mp4 with 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 to roop_dir/temp_io/ with an auto-incremented name, copy the actual path from the console log - the _1, _2 suffixes 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.

      CategoryRoop/Webhook

      Inputs (5)

      NameTypeDefaultDescription
      file_pathSTRING
      filenameSTRINGoutput.mp4
      webhook_urlSTRING
      webhook_secretSTRING
      enable_webhookBOOLEANtrue

      Outputs (0)

      No outputs