--- title: "mix-fetch: fetch() Over the Nym Mixnet" description: "Drop-in fetch() replacement that routes HTTP and HTTPS requests through the Nym mixnet via an IPR exit gateway." schemaType: "TechArticle" section: "Developers" lastUpdated: "2026-06-05" --- # mix-fetch [`@nymproject/mix-fetch`](https://www.npmjs.com/package/@nymproject/mix-fetch) routes HTTP and HTTPS through the Nym mixnet behind the browser [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) signature: `mixFetch(url, init)` returns the same `Response` you would get from `fetch(url, init)`. The request travels mixnet hops first, exits at an [IPR (Internet Packet Router)](/network/infrastructure/exit-services#ip-packet-router) gateway, and reaches the destination with the IPR's IP, not yours. It is not a perfect substitute for `fetch`: no cookies or credentials, no HTTP cache, no `AbortController`, and HTTPS-only in practice (plain HTTP is fully visible at the exit; see [drop-in caveats](/developers/mix-fetch/guides#drop-in-caveats)). ```text ┌────────────────────────────────────────────────────────────────────┐ │ Your browser app │ │ └─ mixFetch('https://...') │ │ └─ mix-tunnel (shared singleton, Web Worker, smolmix-wasm) │ │ └─ smoltcp userspace TCP/IP + rustls TLS │ │ └─ WebSocket to entry gateway │ │ └─ Nym mixnet (3 mix layers) │ │ └─ IPR exit gateway → destination │ └────────────────────────────────────────────────────────────────────┘ ``` TLS terminates end-to-end between the WASM bundle and the destination server. The IPR sees destination IP and port; for HTTPS targets, payload is TLS ciphertext. ## In this section - [Get started](/developers/mix-fetch/get-started): install and make your first mixnet request. - [Reference](/developers/mix-fetch/guides): request shape, default headers, drop-in caveats, configuration. - [Concepts & security](/developers/mix-fetch/concepts): what the IPR exit sees. - [Migrating from v1.x](/developers/mix-fetch/migration): the v1 to v2 clean break. - [TypeDoc reference](/developers/mix-fetch/api/globals): generated from the source. - [Browser example](https://github.com/nymtech/nym/tree/develop/sdk/typescript/examples/mix-fetch/browser): a runnable example app.