# Use the Client SDK

List integrations and open the SDK modal to install or manage an end-user installation.

After you [load the SDK and set an end-user token](/docs/embedded/embedded-sdk/build-an-integrations-page/install-the-client-sdk), list the integrations available to that customer:

```js
const integrations = await mindCloud.getIntegrations();
```

`getIntegrations()` returns an array. Each integration can contain an `installations` array. Render one install control for the integration and a separate manage control for each existing installation.

To let the customer create an installation:

```js
mindCloud.install({
  integrationId: integration.id,
  onAuthenticationComplete: ({ installationId }) => {
    // Save or refresh the installation shown in your UI.
  }
});
```

To reopen an existing installation, pass its ID:

```js
mindCloud.modify({ installationId: installation.id });
```

Use `onClose` if your page must respond when the modal closes. A close alone does not prove authentication succeeded; use `onAuthenticationComplete` for that signal. Call `getIntegrations({ includeWorkflows: true })` after changes to fetch fresh installation state. A call without options can return cached data.

An end user may install the same integration more than once. See [Support multiple installations per app](/docs/embedded/embedded-sdk/advanced-topics/support-multiple-installations-per-app) and the [SDK reference](/docs/embedded/embedded-sdk/sdk-reference).