# Create Customer Portal

* [Request Parameters](#request-parameters)
* [Response](#response)

Creates a new customer portal magic link with configurable features.

<details>

<summary>Authentication Methods</summary>

* API key
* Personal access token\
  Must also include the `seam-workspace` header in the request.

To learn more, see [Authentication](https://docs.seam.co/latest/api/authentication).

</details>

## Request Parameters

**`customer_data`** *Object*

<details>

<summary><code>access_grants</code> <em>List</em></summary>

List of access grants.

</details>

***

<details>

<summary><code>bookings</code> <em>List</em></summary>

List of bookings.

</details>

***

<details>

<summary><code>buildings</code> <em>List</em></summary>

List of buildings.

</details>

***

<details>

<summary><code>common_areas</code> <em>List</em></summary>

List of shared common areas.

</details>

***

<details>

<summary><code>customer_key</code> <em>String</em></summary>

Your unique identifier for the customer.

</details>

***

<details>

<summary><code>facilities</code> <em>List</em></summary>

List of gym or fitness facilities.

</details>

***

<details>

<summary><code>guests</code> <em>List</em></summary>

List of guests.

</details>

***

<details>

<summary><code>listings</code> <em>List</em></summary>

List of property listings.

</details>

***

<details>

<summary><code>properties</code> <em>List</em></summary>

List of short-term rental properties.

</details>

***

<details>

<summary><code>property_listings</code> <em>List</em></summary>

List of property listings.

</details>

***

<details>

<summary><code>reservations</code> <em>List</em></summary>

List of reservations.

</details>

***

<details>

<summary><code>residents</code> <em>List</em></summary>

List of residents.

</details>

***

<details>

<summary><code>rooms</code> <em>List</em></summary>

List of hotel or hospitality rooms.

</details>

***

<details>

<summary><code>sites</code> <em>List</em></summary>

List of general sites or areas.

</details>

***

<details>

<summary><code>spaces</code> <em>List</em></summary>

List of general spaces or areas.

</details>

***

<details>

<summary><code>staff_members</code> <em>List</em></summary>

List of staff members.

</details>

***

<details>

<summary><code>tenants</code> <em>List</em></summary>

List of tenants.

</details>

***

<details>

<summary><code>units</code> <em>List</em></summary>

List of multi-family residential units.

</details>

***

<details>

<summary><code>user_identities</code> <em>List</em></summary>

List of user identities.

</details>

***

<details>

<summary><code>users</code> <em>List</em></summary>

List of users.

</details>

***

**`customer_resources_filters`** *Array* *of Objects*

Filter configuration for resources based on their custom\_metadata. Each filter specifies a field, operation, and value to match against resource custom\_metadata.

<details>

<summary><code>field</code> <em>String</em></summary>

The custom\_metadata field name to filter on.

</details>

***

<details>

<summary><code>operation</code> <em>Enum</em></summary>

The comparison operation. Currently only '=' is supported.

Enum values:

* `=`

</details>

***

<details>

<summary><code>value</code> <em>Object</em></summary>

The value to compare against.

</details>

***

**`customization_profile_id`** *String*

The ID of the customization profile to use for the portal.

***

**`exclude_locale_picker`** *Boolean*

Whether to exclude the option to select a locale within the portal UI.

***

**`features`** *Object*

<details>

<summary><code>configure</code> <em>Object</em></summary>

Configuration for the configure feature.

</details>

***

<details>

<summary><code>connect</code> <em>Object</em></summary>

Configuration for the connect accounts feature.

</details>

***

<details>

<summary><code>manage</code> <em>Object</em></summary>

Configuration for the manage feature.

</details>

***

<details>

<summary><code>manage_devices</code> <em>Object</em></summary>

### Configuration for the manage devices feature.

### deprecated: Use `manage` instead.

</details>

***

<details>

<summary><code>organize</code> <em>Object</em></summary>

Configuration for the organize feature.

</details>

***

**`is_embedded`** *Boolean*

Whether the portal is embedded in another application.

***

**`landing_page`** *Object*

Configuration for the landing page when the portal loads.

<details>

<summary><code>manage</code> <em>Object</em></summary>

</details>

***

**`locale`** *String*

The locale to use for the portal.

***

**`navigation_mode`** *String*

Navigation mode for the portal. 'restricted' tells frontend to hide navigation UI, typically used for embedded deep links.

***

## Response

{% hint style="success" %}
Returns: [**customer\_portal**](/latest/api/customers.md)
{% endhint %}

{% tabs %}
{% tab title="JSON" %}

```json
{
  "created_at": "2025-06-16T16:54:17.946594Z",
  "customer_key": "My Company",
  "expires_at": "2025-06-17T16:54:17.946594Z",
  "url": "https://se.am/1234",
  "workspace_id": "67c58f1f-f148-4415-a63c-dc6c145c6b91"
}
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.seam.co/latest/api/customers/create_portal.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
