> ## 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](https://docs.seamless.ai/api-reference/v1/company-search/search-companies.md) tab.

## Prerequisites

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

## Import the collection

**1. Get the OpenAPI URL**

Use the production OpenAPI spec:

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

**2. Import into Postman**

In Postman, click **Import → Link**, paste the OpenAPI URL, and confirm.

**3. 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}}`.

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

## v2 collection

Public API v2 is in beta and most of its endpoints are not in the OpenAPI document. To try v2, download the ready-made [v2 Postman collection](https://docs.seamless.ai/postman/seamless-public-api-v2.postman_collection.json), import it with **Import → File**, and set its `api_token` variable to your API key. It covers every v2 endpoint, including [engagement](https://docs.seamless.ai/api-catalog/engagement.md) and [account](https://docs.seamless.ai/api-catalog/account.md) routes, and sends your key as the `Token` header automatically.

## Runnable flow in Postman

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

**1. Search contacts**

**POST** `/search/contacts`

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

Copy `data[0].searchResultId` from the response.

**2. Research contacts**

**POST** `/contacts/research`

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

Copy `requestIds[0]` from the response.

**3. Poll until done**

**GET** `/contacts/research/poll?requestIds=PASTE_REQUEST_ID`

Send every 3–5 seconds until `data[0].status` is `done`, `error`, or (contacts only) `not found` or `duplicate`. For contacts, `missing` means the `requestId` is unknown; for companies it means the request has not finished yet.

## 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](https://docs.seamless.ai/authentication/first-request.md) — same flow in curl, Python, and Node.js
* [Webhooks](https://docs.seamless.ai/workflows/receive-research-results-with-webhooks.md) — replace polling with push delivery
* [MCP quickstart](https://docs.seamless.ai/mcp/quickstart.md) — use Seamless from Cursor or Claude without REST setup


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