Import from Postman, Insomnia, OpenAPI, or curl

Turn a Postman collection, an Insomnia export, an OpenAPI/Swagger spec, a Bruno request, or a curl command into ready-to-run .aether flows.

You don’t have to start from scratch. Bandura converts Postman collections, Insomnia exports, OpenAPI/Swagger specs, Bruno request files, and curl commands into .aether flows — after that, they’re plain files in your repo like everything else. Import is one-way and non-destructive: your original collection or spec is never modified.

Importing

The fastest way: drag the file onto the Bandura window. Drop a .postman_collection.json, an Insomnia export, an openapi.yaml, a .bru, or a Postman environment anywhere on the app and the Import dialog opens pre-filled with its contents — Bandura figures out the format for you. A “Drop to import” overlay confirms it’ll work while you drag.

Prefer menus? It’s the same dialog:

  1. Choose File → Import Flows… (or run Import flows from the command palette, ⌘⇧P).
  2. Give it the source, any way:
    • drag a file onto the window (pre-fills the dialog), or
    • Choose file… — pick a .json or .yaml file with the OS file dialog, or
    • paste the collection, spec, or curl command into the text area.
  3. Leave the format on Auto-detect — Bandura recognizes the source on its own. If detection guesses wrong, pick the format explicitly from the dropdown (Postman collection, Insomnia export, OpenAPI 3.x / Swagger 2.0, Bruno request, or curl).
  4. Click Import (or press ⌘⏎). The first imported flow opens — press ⌘⏎ again to run it.

Bandura writes the resulting .aether files into your workspace with collision-safe names (an existing login.aether makes the new one login-2.aether) and opens the first one in the editor. If anything about the source can’t be parsed, you get the error inline and nothing is written.

What each format becomes

SourceResult
Postman collection (v2.1)One flow per request; folders are flattened.
Insomnia export (v4 JSON)One flow per request (with a status assertion); request groups set order.
OpenAPI 3.x / Swagger 2.0One flow per operation.
Bruno request (.bru or OpenCollection YAML)One flow per request file.
curl commandOne flow with one request node.
Postman environment fileNot flows — values go to your .env, names to the manifest’s requiredEnv.

Insomnia import covers the common cases — method, URL, headers, JSON/form bodies, path/query params, and bearer/basic auth. A few Insomnia-specific things are skipped rather than half-imported: GraphQL bodies, gRPC/WebSocket requests, pre-request scripts, and OAuth flows. Export from Insomnia via Application → Preferences → Data → Export Data → Insomnia v4 (JSON).

Imported request nodes get structured pathParams/queryParams (not params baked into the URL string), so they’re immediately editable in the inspector’s Params tab. And because .aether request nodes speak GraphQL natively, a Bruno request with a body:graphql block imports as a real graphql request node — query and variables carried over, not flattened into an opaque JSON body.

After importing

  • Imported single-request flows are building blocks — chain them into real scenarios by setting next, adding assertions, and capturing values between steps.
  • Replace hard-coded hosts with ${{ variables.baseUrl }} or an environment so one suite runs against staging and production.
  • Commit the results — from here on, Git is your sync.

From the terminal

The same importers are available headlessly — bandura import ./openapi.yaml --out flows/ — see the CLI reference.