Nodes/ComfyUI-HttpRequestNodes/Media Form Post Node
ComfyUI Node

Media Form Post Node

Upload image, audio, and video together as a form — one node, any mix

By ahkimkoo·Created 3 months ago·Updated 3 months ago· 1
Media Form Post Node
  • image
  • audio
  • video
  • form_fields
  • headers
  • text
  • response_bytes
  • json
  • status_code
  • response_headers
target_urlhttp://127.0.0.1:8000/api/upload
image_fieldimage
audio_fieldaudio
video_fieldvideo

The Media Form Post Node is the "upload my stuff" node. Where the pack's other senders do one job - raw binary, or a single image - this one accepts an IMAGE, an AUDIO, and a VIDEO input all at once and ships whatever you connect as a classic multipart/form-data file upload, with plain form fields alongside. It's built for APIs that take file uploads: TTS services that want a reference voice, SVC servers that take a clip, video-processing endpoints that want a source video.

It's the newest member of ComfyUI-HttpRequestNodes, ahkimkoo's fork of felixszeto's ComfyUI-RequestNodes. If the Binary Post Request Node is the "one raw body" tool, this is the "proper browser-style upload" tool - and it's the only node in the pack that lets you send all three media types in a single request.

What you set

Only target_url is required. Everything else is optional, but the node's own description is the rule: at least one media input required - connect an image, an audio clip, a video, or any combination. If you don't, it bails with a friendly "No media input provided" response without sending anything.

  • image / audio / video - the media sockets. Each is re-encoded before upload: images to PNG, audio to WAV (via soundfile), video to MP4 (via imageio, fps auto-detected from the VIDEO type).
  • image_field / audio_field / video_field - the multipart field names, defaulting to image, audio, video. If your API expects file or voice instead, this is where you fix it without touching the server.
  • form_fields (KEY_VALUE) - extra non-file fields, like a model name or a speed setting, wired from a Key/Value Node.
  • headers (KEY_VALUE) - merged over whatever requests sets automatically.

The outputs

Five: text, response_bytes (raw bytes, blob-decoder friendly), json (parsed response or {"raw": ...}), status_code, and response_headers. Like the binary node it uses a 300-second timeout, and it fails soft - connection errors come back as an error dict and status 0, not a crash.

Install

ComfyUI Manager → search ComfyUI-HttpRequestNodes → Install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/ahkimkoo/ComfyUI-HttpRequestNodes
pip install soundfile imageio imageio-ffmpeg

Category: RequestNode/Post Request. Those three pip packages are the real dependency story here - they're what encode your audio and video into WAV/MP4 before upload. No models, no keys. The workflow pattern to steal: Audio To Blob Node → this node → Blob To Audio Node on the way back in, and you've built a round-trip TTS or voice-clone pipeline that never touches disk.

CategoryRequestNode/Post Request

Inputs (9)

NameTypeDefaultDescription
target_urlSTRINGhttp://127.0.0.1:8000/api/upload
imageoptIMAGE
audiooptAUDIO
videooptVIDEO
image_fieldoptSTRINGimage
audio_fieldoptSTRINGaudio
video_fieldoptSTRINGvideo
form_fieldsoptKEY_VALUE
headersoptKEY_VALUE

Outputs (5)

NameTypeDescription
textSTRING
response_bytesBYTES
jsonJSON
status_codeINT
response_headersDICT