The HTTP client that knows
your image is base64.
Multimodal LLM APIs want your image as base64 inside JSON. Generic HTTP clients leave you to copy-paste a 300KB blob by hand. MMRequest doesn't.
Vision LLMs want JSON.
You hand-carry a 300KB string.
Every multimodal API — GPT-4o, Claude vision, Gemini, vLLM, Llama vision — expects the file as a base64 string buried inside the request body. Generic HTTP clients (Postman, Insomnia, Bruno) don't help: they were built for REST in a pre-multimodal world.
- Drop image into a base64-encoder website. Hope it doesn't log your file.
- Copy the 300KB string. Paste it into Postman's body. Watch the editor stutter.
- Image changes? Re-encode. Re-paste. Re-format the JSON. Re-send.
- Push a Postman collection — your teammate gets a 300KB blob in their git diff.
- Debug "Content-Type mismatch" on a multimodal endpoint that takes 12 different body shapes.
- Drop the file. Encoded in your browser by FileReader. Bytes never leave your machine.
- Reference {{base64Image}} wherever your API expects it. JSON body stays human-readable.
- Send. Substitution happens at the network boundary — collection files stay 1 KB, not 300.
- Export to Postman when teammates ask for it. They don't need MMRequest to run it.
- Stream merged. Reasoning + content chunks rejoin into one clean JSON, not 200 NDJSON lines.
Three steps. No proxies. No upload services.
Everything happens in your browser — no cloud, no account, no proxy server in front of your API.
Attach the file.
Drag & drop, file picker, or ⌘ + V paste. Image or audio. Multiple files.
Use the variable.
Drop {{base64Image}} or {{rawBase64Image}} wherever the API expects it. Custom names allowed.
Hit ⌘+Enter.
MMRequest substitutes at the network boundary. Inspect via Pretty, Raw, Stream, Headers, or Console.
It's not Postman, and that's the point.
Postman, Insomnia, and Bruno are excellent general HTTP clients. MMRequest is built around one specific workflow they leave to you. Here's what differs.
All the HTTP-client niceties.
Plus the one thing nobody else does.
Built on the actual day-to-day workflow developers have against LLM APIs.
Auto base64 — your file, in your body.
Drag, paste, or pick. Encoded in-browser via FileReader. Multiple files, raw + data-URL variants, renameable variables.
Postman compatible.
Export to Collection v2.1 with real base64 embedded — runs anywhere. Import Postman collections too. No lock-in.
Streaming, merged.
A Stream tab merges chunked NDJSON / SSE (incl. reasoning tokens) into one combined JSON. OpenAI, vLLM, Anthropic, Gemini, or your own.
Collapsible JSON.
Pretty view folds per field. Long strings collapse with "…expand" — base64 stops flooding your screen.
VS Code-style editor.
CodeMirror: bracket match, multi-cursor, padded line numbers, ⌘ + / comments.
Tabs & collections.
Multi-session, drag & drop reorder, pin favorites. ⌘ + S save · ⌘ + E rename.
Ten themes.
Pick one — or sync with your system.
Whole-app recoloring (not just an accent). Seven dark, three light. Auto day/night follows your OS.
The biggest release yet.
Stop pasting base64.
Start shipping.
Free during beta. Users who sign in before public launch keep free access after paid plans launch.
Get on the Chrome Web Store →