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:
- Choose File → Import Flows… (or run Import flows from the command palette, ⌘⇧P).
- Give it the source, any way:
- drag a file onto the window (pre-fills the dialog), or
- Choose file… — pick a
.jsonor.yamlfile with the OS file dialog, or - paste the collection, spec, or curl command into the text area.
- 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).
- 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
| Source | Result |
|---|---|
| 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.0 | One flow per operation. |
Bruno request (.bru or OpenCollection YAML) | One flow per request file. |
| curl command | One flow with one request node. |
| Postman environment file | Not 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.