Skip to content

Importing (cURL & Postman)

You don’t have to type a request from scratch to use Composer. Two common starting points — a curl command from a terminal and a Postman collection from a teammate — both come in directly.

Paste any curl command into the cURL importer (collection sidebar header → ImportFrom cURL, or use the toolbar Import menu) and Probe parses it into a draft request.

Supported flags:

FlagMaps to
-X / --request <verb>HTTP method
-H / --header <h: v>Request header
-d / --dataRequest body
--data-rawRequest body (no @file expansion)
--data-binaryRequest body, treated literally
--data-urlencodeRequest body
The first positional arg without a leading dashURL

If -X isn’t given, Probe infers the method: POST when there’s a body, GET otherwise. The Content-Type is taken from the headers if present, defaulting to application/json.

Quoting works the way your shell expects — single and double quotes group tokens, backslash-newline continuations are stripped, and \" inside double quotes is unescaped. Multi-line curl from --curl-trace or copy-as-curl from a browser pastes cleanly.

A handful of flags are recognised but ignored — they don’t have a Composer equivalent and would otherwise confuse the parser:

  • --compressed, -k / --insecure, -L / --location, -v / --verbose, -s / --silent — boolean flags, dropped.
  • -o / --output, -u / --user, --connect-timeout, --max-time — value-taking flags, dropped along with their argument.

That last one is worth noting: if your curl uses -u user:pass for Basic Auth, the parser doesn’t translate it into Composer’s auth tab — it’s discarded. After importing, set the auth manually under the Auth sub-tab.

Paste:

Terminal window
curl -X POST 'https://api.example.com/users' \
-H 'Authorization: Bearer abc123' \
-H 'Content-Type: application/json' \
-d '{"name":"Ada","email":"ada@example.com"}'

You get a draft request with method POST, the URL, both headers in the Headers tab, and the JSON body pretty-printed in the Body tab. Hit Send to fire it through Probe; hit Cmd+S to save it into a collection.

Drop a Postman v2.1 .json file into the importer (sidebar +Import from Postman, or Import in the toolbar) and Probe parses it into a fresh collection.

What’s preserved:

  • Collection name and structure — folders, sub-folders, requests, all in their original order and nesting.
  • Method, URL, headers, and body — request bodies in raw (JSON / XML / text), urlencoded, and formdata modes all come across. Form-data files are imported as field placeholders; you’ll need to re-attach the actual files in Composer.
  • Collection-level variables — Postman’s collection variables (pm.collectionVariables) come in as a list at the collection level.
  • Auth — collection-level and request-level auth for the supported types: Bearer, Basic, and API Key. If a request has no auth set in Postman, it’s left as Inherit from parent in Probe (Postman’s default).
  • Pre-request and test scripts — both at the collection level and per-request. The script bodies are imported verbatim.

What’s lossy:

  • Postman-specific scripting APIs (pm.test, pm.expect, pm.collectionVariables) come across as text but won’t run unmodified. Probe’s scripting engine exposes a different global, pro. For simple cases the pm polyfill covers pm.environment.get/set and pm.test; deeper usages need a manual port.
  • OAuth 2.0 auth blocks are imported as Bearer placeholders — re-run the OAuth flow in Composer to populate the token.
  • Environments, in Postman, are separate files. The Postman importer here pulls them from the collection JSON only; if your team ships environments as .postman_environment.json, import them separately via the environment editor.
  • Postman flow control (newman-style data files, request chaining via runner config) doesn’t translate. Use Composer’s runner — see Collections — for sequential runs.

After import, Probe shows a confirmation dialog with the count of requests pulled in. The new collection appears in the sidebar; switch to it and start sending.

Going the other direction is one click. Right-click a collection in the sidebar and pick Export as Postman. Probe writes a Postman v2.1 JSON file you can hand to a teammate using Postman, Insomnia, or any other tool that reads that schema.

What’s exported:

  • The full folder/request tree.
  • Every request’s method, URL, headers, and body (raw mode, with language set from the content type).
  • Pre-request and tests scripts at both collection and request level.
  • The active environment’s variables — but secret-marked variables ship with an empty value so you don’t accidentally leak credentials. Recipients see the keys and re-fill the values themselves.

The export is plain JSON, formatted with two-space indent. Safe to commit to a repo, diff with git diff, or paste into a Slack thread.

Composer requests can be copied out as a curl command — useful for sharing a one-off repro in a bug report or pasting into a CI script. Right-click a request in the collection sidebar (or use the More menu in the request editor) and pick Copy as cURL. The same option is available on captured rows in the log table, in case you want to start a Composer draft from real traffic and then ship it as a curl.