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

# Getting Started

Welcome to the Proview SDK. Follow these steps to embed the latest SDK in your application.

## Prerequisites

* Talview-provisioned tenant + project DSN (customer success or [Talview Sales](https://www.talview.com/request-a-demo) can help).
* Modern browser with WebRTC support and HTTPS hosting for your delivery app.
* Ability to add a script tag and a small bootstrap snippet wherever proctoring needs to run.

### Content Security Policy (CSP)

If your application enforces CSP headers, allow the domains and inline resources required by the SDK:

```
Content-Security-Policy:
  script-src 'unsafe-inline' https://*.tlv.io;
  style-src 'unsafe-inline';
  connect-src 'self' https://*.googleapis.com https://*.tlv.com wss://*.tlv.com https://*.talview.com wss://*.talview.com;
  img-src 'self' https://*.tlv.io;
```

## Installation

### Script tag

Place the loader as the **last script** on any page that needs Proview SDK. The loader attaches itself globally as `window.Proview`.

```html theme={null}
<!-- load the hosted bundle -->
<script
  src="https://sdk.tlv.cx"
  async
  crossorigin="anonymous"
></script>
```

## Initialize

Define `window.proviewOnLoad` before loading the script. The SDK fires this callback when it is ready. Call `Proview.init` inside the callback to bootstrap the SDK.

```html theme={null}
<script>
  window.proviewOnLoad = async function () {
    Proview.onError(function (err) {
      console.error('Proview SDK error', err);
    });

    const success = await Proview.init({
      dsn: 'YOUR_PROJECT_DSN',  // optional
      modules: ['session'],     // optional; defaults to session
      credential: Proview.auth.FirebaseAuthStrategy({ token: 'your-token' }), // optional
    });

    if (!success) {
      console.error('Proview failed to initialize');
      return;
    }
  };
</script>

<!-- Load the SDK after defining the callback -->
<script
  src="https://sdk.tlv.cx"
  async
  crossorigin="anonymous"
></script>
```

## Interfaces

The Proview SDK is composed of the following modules:

* `form` – enables dynamic form loading and submission with integrated authentication. See the [Form](/sdk/forms) guide for details.
* `scheduler` – manages interview scheduling, RSVP, and availability with integrated authentication. See the [Scheduler](/sdk/scheduler) guide for complete API reference.
* `session` – enables remote proctoring with session management, media capture, and real-time monitoring. See the [Proctoring](/sdk/proctoring/getting-started) guide for complete setup instructions.
* `session-playback` – enables embedding and playback of recorded proctoring sessions. See the [Session Playback](/sdk/session-playback/getting-started) guide for integration details.

## Global Error Handling

Register a global error hook after the loader runs to observe failures from any Proview module:

```js theme={null}
Proview.onError((module, error) => {
  if (module === 'form') {
    console.error('Form module failed', error);
  } else if (module === 'scheduler') {
    console.error('Scheduler module failed', error);
  } else if (module === 'proctoring') {
    console.error('Proctoring module failed', error);
  } else {
    console.error(`Module ${module} failed`, error);
  }
});
```
