GALAXY OF TOOLS

DEV SECTOR

HTTP Request Builder

Compose an HTTP request, send it from your browser and get cURL, fetch, axios, Python or HTTPie code.

 
Environments and variables — use {{name}} anywhere
Code

  

History

    Send uses your browser’s fetch: the request goes straight from this page to the URL you enter, and the server must allow it with CORS headers. History and variables are kept only in this browser’s local storage.

    Runs entirely in your browser. Nothing you enter or upload is sent to a server.

    Build, send and share HTTP requests from your browser

    This HTTP request builder is a lightweight REST client that needs no install or account. Choose a method, enter a URL, add query parameters and headers, pick Bearer or Basic auth and a JSON, form or raw body — the equivalent cURL, fetch, axios, Python requests and HTTPie code updates as you type, so you can paste a working call into a terminal, a script or a bug report.

    Press Send and the request goes out with your browser’s fetch: you see the status, the time it took, the body (JSON pretty-printed) and the response headers the server exposes. Variables such as {{baseUrl}} and {{token}} come from switchable Development, Staging and Production environments, and recent requests are kept in a history you can click to restore.

    There is no proxy in the middle: requests travel directly from your device to the API, and history and variables live only in this browser’s local storage.

    How to use the HTTP Request Builder

    1. Pick the Method and type the URL. Add extra Query parameters one per line as key=value; they are URL-encoded for you.
    2. Add Headers as Name: value lines, and choose Auth — a Bearer token or user:password for Basic.
    3. Choose a Body type. JSON is validated as you type; form bodies take key=value lines.
    4. Optionally open Environments and variables and define values such as token=…, then use {{token}} anywhere in the request.
    5. Copy the generated code from the cURL, fetch, axios, Python or HTTPie tab, or press Send to run the request and inspect the response.

    HTTP Request Builder features

    Five code targets

    cURL with correct shell quoting, browser/Node fetch, axios, Python requests and HTTPie — each written idiomatically, including Basic auth, form encoding and multipart bodies.

    Real sending with timing

    Requests use fetch with an abort timeout. The response shows status, total time, body size, readable headers and a pretty-printed JSON body; binary bodies are summarised.

    Environments and variables

    Three environments with their own name=value variables; undefined {{variables}} are flagged before you send.

    History

    The last 25 requests are saved locally with their status and timing. Repeated requests collapse into one entry; click an entry to restore every field.

    Honest error messages

    When a request fails, the tool explains CORS, preflight, mixed-content, TLS and timeout causes instead of a bare “Failed to fetch”.

    Why some requests work in cURL but fail in the browser

    Browsers enforce the same-origin policy. A page may read a response from another domain only if that server answers with an Access-Control-Allow-Origin header that permits it. Requests with custom headers (such as Authorization) or a JSON body also trigger a preflight OPTIONS request that the server must approve. Many APIs — especially internal ones — do not send these headers, so Send fails even though the endpoint works.

    This is a browser rule, not a problem with your request. The cURL, Python and HTTPie code generated here is not subject to CORS, so run it from a terminal. Public test APIs such as httpbin.org allow CORS and work with Send. The CORS tester shows which headers a server returns.

    • Forbidden headers: browsers silently drop Cookie, Host, Origin, Content-Length and a few others; the generated code still includes them for other environments.
    • Readable response headers: only CORS-safelisted headers and those listed in Access-Control-Expose-Headers are visible to the page.
    • Mixed content: an https:// page cannot call an http:// API except on localhost.

    Body types and the Content-Type they send

    BodyContent-TypecURL flagPython requests
    JSONapplication/json--data-rawjson=payload
    Form URL-encodedapplication/x-www-form-urlencoded--data-urlencodedata=payload
    Multipart form-datamultipart/form-data; boundary=… (set automatically)-Ffiles=…
    Raw texttext/plain unless you set one--data-rawdata=payload

    Related tools

    Already have a curl command from DevTools or documentation? Paste it into the cURL to Fetch converter. To read a long JSON response comfortably, use the JSON Formatter; to decode the bearer token you are sending, the JWT Decoder; and for the meaning of a status code, the HTTP status codes reference.

    HTTP Request Builder FAQ

    Is my API key sent anywhere other than the API?

    No. The HTTP request builder has no server of its own: Send calls the URL you entered directly from your browser. Variables and history are stored only in this browser’s local storage — use Clear history, or avoid saving production secrets on shared computers.

    Why does Send say the request failed when cURL works?

    Almost always CORS: the API did not allow requests from this page. Browsers do not reveal the exact reason to scripts, but the DevTools console shows it. Run the generated cURL or Python code instead, or enable CORS on your own API.

    Can I send cookies with the request?

    Requests are sent with credentials: "omit", so the browser does not attach cookies from other sites, and the Cookie header cannot be set by a page. Use an Authorization header or the generated terminal code for cookie-based APIs.

    How do variables work?

    Write {{name}} in the URL, query, headers, credentials or body. The value comes from the selected environment’s name=value lines. Unknown variables are left as written and listed in a warning.

    Can I upload a file?

    Not from this page — multipart bodies here contain text fields only. The generated cURL uses -F, so you can change a value to @path/to/file and run it in a terminal.

    Does the tool follow redirects?

    Yes, fetch follows redirects automatically and the response line notes when one happened. The generated cURL does not add -L; add it if you want curl to follow them too.

    You might also need