> ## Documentation Index
> Fetch the complete documentation index at: https://docs.quixa.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Import from Postman

> Move existing Postman collections into Quixa: folders, requests, variables, auth settings and simple test checks, with a report before anything is saved.

If your API requests live in Postman today, you can bring them into Quixa as a collection and use them in flows. The import is a migration aid: a Postman collection is not an API contract, so **API maturity scoring and drift detection stay available only for OpenAPI collections**.

> [!NOTE]
>
> The Postman import is controlled by the `postman_import` feature flag. Ask your workspace administrator if the option is not shown.

## Steps

1. In Postman, export the collection as **Collection v2.1** (v2.0 also works; v1 is refused).
2. Optionally export the environment you use (for example *Staging*).
3. In Quixa, open **Collections → Add collection → Postman**, select the collection file and, if you have one, the environment file.
4. Click **Review Import**. Quixa reads the files on the server and shows a report; nothing is saved yet.
5. Check the report and click **Import**.

## What is converted

| Postman | Quixa |
| - | - |
| Folders (also nested) | Folders in the collection, e.g. `Users / Admin`; requests outside a folder stay at the collection root |
| Several requests for the same endpoint (test scenarios) | All kept, shown by their Postman name |
| Requests | Request endpoints: method, path, query, path and header parameters, description |
| `:id` path variables | `{id}` path parameters with the Postman value as default |
| Raw / JSON / XML bodies | Request body with a matching `Content-Type` |
| GraphQL bodies | JSON body with `query` and `variables` |
| URL-encoded and form-data bodies | URL-encoded body (file fields are not imported) |
| Collection and environment variables | Values are filled in at import time; the environment wins, as in Postman |
| The most common host | The collection's API Base URL |
| Dynamic variables (`{{$guid}}`, `{{$randomEmail}}`, …) | QMock expressions (`{{QMock.utility.uuid}}`, `{{QMock.contact.email}}`, …) |
| Collection auth (bearer, basic, API key, OAuth 2.0) | An active auth scheme on the collection with the non-secret settings (user name, key name, token URL, client id, scopes, grant type); enter the secrets in **Authorization** |
| Saved example responses | Kept with the request (up to 3) |

### Test scripts

Scripts are **never run** in Quixa. Common test checks are translated into [assertions](https://docs.quixa.io/testing/assertions-and-validation.md) on the request node:

| Postman test | Quixa assertion |
| - | - |
| `pm.response.to.have.status(201)` | Status code equals 201 |
| `pm.response.to.be.ok` | Status code between 200 and 299 |
| `pm.expect(pm.response.responseTime).to.be.below(500)` | Response time below 500 ms |
| `pm.response.to.have.header("X-Id")` | Header `X-Id` exists |
| `pm.expect(json.data.items[0].name).to.eql("Rex")` | Body `data.items.0.name` equals `Rex` |
| `pm.expect(pm.response.text()).to.include("ok")` | Body contains `ok` |

`pm.environment.set("token", json.token)` is reported with the binding to use instead: later steps read the value straight from the response, e.g. `{{Login.response.token}}`. Pre-request scripts and any other logic are listed under **Needs a manual look**, and the script text is kept with the imported request.

## What is not imported

* **Secret values.** Variables of type *secret* or with names such as `token`, `password` or `apiKey` stay as `{{name}}`, and tokens, passwords and client secrets in auth settings are dropped. Enter them in an auth scheme or as flow variables.
* **Literal credentials in headers** (`Authorization`, `Cookie`, `X-API-Key`, …) are emptied.
* Monitors, mock servers, Postman Flows, cookies and workspace settings are not part of a collection export.

## After the import

* If the report says no base URL was found (for example the requests used `{{baseUrl}}` without an environment), set the collection's **API Base URL** in **Configure**.
* Requests that call another host than the base URL are listed; override the URL on the node or import them as a separate collection.
* Drag requests onto the canvas as usual. The Postman body, header values and converted assertions come with the node.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.