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

# Explore with Postman

> Import the Seamless OpenAPI spec into Postman, set your API key, and run search and research requests interactively.

Postman is the fastest way to explore the REST API without writing a script. Import the same OpenAPI document that powers the [API Reference](/searchcompanies) tab.

## Prerequisites

* A Seamless account with Public API access
* An [API key](/authentication/api-keys)
* [Postman](https://www.postman.com/downloads/) installed

## Import the collection

<Steps>
  <Step title="Get the OpenAPI URL">
    Use the production OpenAPI spec:

    ```text theme={null}
    https://docs.seamless.ai/openapi.json
    ```
  </Step>

  <Step title="Import into Postman">
    In Postman, click **Import → Link**, paste the OpenAPI URL, and confirm.
  </Step>

  <Step title="Set the API key">
    Open the collection **Variables** (or each request) and set:

    | Variable  | Value                                   |
    | --------- | --------------------------------------- |
    | `baseUrl` | `https://api.seamless.ai/api/client/v1` |
    | `apiKey`  | Your API key from Settings → Public API |

    For each request, add header: `Token: {{apiKey}}`.
  </Step>
</Steps>

<Tip>
  OAuth apps should use the **Get an access token** request, then set `Authorization: Bearer {{accessToken}}` on other requests instead of the `Token` header.
</Tip>

## Runnable flow in Postman

Run these requests in order. Copy IDs from each response into the next request.

<Steps>
  <Step title="Search contacts">
    **POST** `/search/contacts`

    ```json theme={null}
    {
      "jobTitle": ["Chief Technology Officer"],
      "companyName": ["Acme Corp"],
      "limit": 5
    }
    ```

    Copy `data[0].searchResultId` from the response.
  </Step>

  <Step title="Research contacts">
    **POST** `/contacts/research`

    ```json theme={null}
    {
      "searchResultIds": ["PASTE_SEARCH_RESULT_ID"]
    }
    ```

    Copy `requestIds[0]` from the response.
  </Step>

  <Step title="Poll until done">
    **GET** `/contacts/research/poll?requestIds=PASTE_REQUEST_ID`

    Send every 3–5 seconds until `data[0].status` is `done`, `error`, `missing`, or (contacts only) `duplicate`.
  </Step>
</Steps>

## Environment template

Create a Postman environment with these variables:

```json theme={null}
{
  "baseUrl": "https://api.seamless.ai/api/client/v1",
  "apiKey": "",
  "searchResultId": "",
  "requestId": ""
}
```

Use Postman's **Tests** tab on the search request to auto-save IDs:

```javascript theme={null}
const body = pm.response.json();
if (body.data && body.data[0]) {
  pm.environment.set("searchResultId", body.data[0].searchResultId);
}
```

On the research request:

```javascript theme={null}
const body = pm.response.json();
if (body.requestIds && body.requestIds[0]) {
  pm.environment.set("requestId", body.requestIds[0]);
}
```

## Next steps

* [First API request](/authenticate-and-make-your-first-request) — same flow in curl, Python, and Node.js
* [Webhooks](/receive-research-results-with-webhooks) — replace polling with push delivery
* [MCP quickstart](/mcp/quickstart) — use Seamless from Cursor or Claude without REST setup
