Compose and repeat
Build a request from scratch, send a captured one again with edits, or send it many times and read the results.
Compose sends requests you write. Repeat sends a captured request again, as it was or with changes. The free plan keeps 2 saved Compose requests on each platform; Pro removes the limit.
On the Mac#
Open the Compose window with Tools ▸ Compose (⇧⌘N), or start a new request with File ▸ New Compose Request (⌘N). The menu bar status item has New Compose Request too.
Other ways in:
- Flow ▸ Open in Compose, or right-click a flow ▸ Open in Compose, starts from a captured request with its headers and body filled in.
- File ▸ Import ▸ cURL from Clipboard reads the method, URL, headers and body of a copied
curlcommand.
The sidebar keeps every request with its last response, with Search requests. Its New Request menu has New Request and New WebSocket.
The request editor#
- Pick the method, or Custom… for any method your API uses. Type the URL and press Send (⌘↩).
- The tabs are Params, Authorization, Headers, Body and Raw.
- Body modes: None, JSON, Text, Form, Multipart (with Add Part) and Binary.
- Authorization types: No Auth, Basic Auth, Bearer Token, API Key, JWT Bearer, OAuth 2.0 (with Use PKCE), Digest Auth and AWS Signature.
- The cookie button manages the request's cookie jar. The settings button holds Enable SSL certificate verification, Automatically follow redirects, Encode URL automatically, Send cookies and Request timeout.
- The ⋯ menu has Rename…, Duplicate, Convert to WebSocket, Copy as cURL, Import cURL from Clipboard, Presets (Empty, GET, JSON POST, Form), Disable SSL Verification and Delete….
The response opens below the request with the same viewers as the inspector.
Compose sends through the macOS system proxy. While capture runs with the system proxy on, the request appears in the traffic list and your rules apply to it. A request with SSL verification turned off goes straight to the server.
A WebSocket request connects, then sends text frames, bytes from hex, files and pings. See WebSocket.
Edit & Repeat#
Select a flow and choose Flow ▸ Edit & Repeat… (⌥⌘E), or right-click it ▸ Edit & Repeat…. The request opens as plain text you can change line by line. An Edited chip appears once it differs; Reset puts the original back.
| Control | What it does |
|---|---|
| Times | How many times to send it, up to 50 |
| At once | How many attempts may be on the wire together, up to 10 |
| Delay | A pause before each attempt after the first |
| Timeout | Seconds before an attempt gives up |
| Session state | Off strips the captured Cookie and Authorization headers |
| Follow redirects | Off stops at the first 3xx and shows that response |
Press Send or Send N Times (⌘↩); Cancel (⌘.) stops a run. Results arrive as attempts finish, under Body, Headers and Attempts: how many answered and failed, a count per status, and the median, p95 and min–max time. Each response is compared with the original call: same status or not, faster or slower, larger or smaller.
WireLens recomputes Content-Length and drops headers that belonged to the old connection. The repeat is sent through the system proxy, which makes it a captured flow linked to the original. Diff with Original compares the two, Open Captured Repeat opens it, and Restore This Request puts an earlier run's request back in the editor. If capture is not running, the sheet says so.
Repeat in the right-click menu sends the selected flows again as they are. Flow ▸ Diff Against Previous Repeat compares a flow with its last repeat.
On iPhone and iPad#
Compose is its own tab. Its ⋯ menu has New Request, Import cURL…, Import cURL from Clipboard, Import Postman Collection…, Include Auth/Cookie Secrets and Export Compose as Postman….
- A request has the tabs Params, Headers, Body and Auth. Body is None, JSON, Text or Form; Auth is No Auth, Bearer or Basic.
- A request's menu has Rename, Duplicate, Replace from Clipboard cURL and Disable SSL Verification. Swipe or long-press a row for Delete.
- From the Traffic tab, long-press a request, or open it and use ⋯, and choose Edit & Resend to open it in Compose. ⋯ ▸ Repeat sends it again as it was.
- With a key that carries Team Workspace, Share Requests to Team… and Import Requests from Team… appear in the + menu.
On Android#

Compose is its own tab. Its ⋮ menu has Import cURL…, Paste cURL from Clipboard, Import Postman…, Include secrets in export and Export Postman…. Search requests finds a saved one.
- A request has the tabs Params, Headers, Body and Auth. Methods are GET, POST, PUT, PATCH, DELETE, HEAD and OPTIONS. Body is None, JSON, Text or Form, with Format JSON and Minify. Auth is No Auth, Bearer or Basic.
- A request's ⋮ menu has Rename, Duplicate, Replace from Clipboard cURL, Copy as cURL and Delete.
- From the Traffic tab, long-press a request, or open it and use ⋮, and choose Edit & Resend to open it in Compose.
- ⋮ ▸ Repeat in a request sends it again and shows the answer, with Send Again and Open in Compose.
Compose and Repeat on Android send straight from WireLens to the server. Your rules do not apply to them, and they stay out of the traffic list.
Copy as code#
Take a request elsewhere instead of sending it again.
On the Mac, Edit ▸ Copy as cURL (⇧⌘C) copies the selected flow as a curl command with credentials removed. Right-click ▸ Copy ▸ Code writes it for:
| Group | Targets |
|---|---|
| Shell | cURL, HTTPie |
| JavaScript | Axios, JavaScript fetch, Node, jQuery |
| Python | Python requests, Python httpx |
| Swift | Swift URLSession, Alamofire, Moya |
| Interchange | Postman Collection, HAR |
| Other | Go, Java, Objective-C, Dart/Flutter, Kotlin, PHP, Rust |
Copy ▸ Code ▸ Including Secrets keeps the real Authorization and cookie values. File ▸ Export ▸ Selected Flow as cURL Script… saves the command to a file.
On iPhone, iPad and Android, Copy as cURL is in a request's long-press menu and in its ⋯ or ⋮ menu.
From MCP#
On the Mac, send_request sends a new request and replay_flow sends a captured one again with changes. Both need the server's --allow-mutations flag and go through the running listener: if a send succeeds and no row appears, capture was not running. generate_code and export_curl write a flow as code. See MCP for AI agents.
Something here is unclear, or wrong for your setup? Contact support or write to support@wirelens.app.