# URL Query Parameters

The Arcware Pixel Streaming WebSDK supports several **URL query parameters** that influence how the SDK initializes and behaves at runtime.

These parameters are mainly intended for:

* debugging
* testing
* white-labelling
* session control
* developer tools

Some parameters affect **only the UI integration (`ArcwareInit`)**, while others affect **both UI and Core integrations (`CoreSetup`)**.

***

## Overview

| Parameter    | Applies To | Description                                      |
| ------------ | ---------- | ------------------------------------------------ |
| `i` / `info` | UI only    | Shows the debug information overlay              |
| `wl`         | UI only    | Enables or injects white-labelling configuration |
| `noSession`  | UI + Core  | Prevents reuse of an existing session            |
| `session`    | UI + Core  | Forces usage of a specific session               |
| `reconnect`  | UI + Core  | Attempts to reconnect to a previous session      |

These parameters are only interpreted when:

```typescript
useUrlParams: true
```

is enabled in the SDK configuration.

***

## UI Debug Overlay

### `?i` or `?info`

Enables the **debug information overlay** in the default WebSDK UI.

Example:

```
https://example.com/?i
```

or

```
https://example.com/?info
```

#### Applies to

| Mode                 | Supported |
| -------------------- | --------- |
| ArcwareInit (UI)     | ✔         |
| CoreSetup (Headless) | ✖         |

The debug overlay may display information such as:

* FPS
* bitrate
* WebRTC connection statistics
* resolution
* latency information

This overlay is intended for **debugging and diagnostics**.

***

## White Labelling via URL

### `?wl`

The `wl` parameter enables **white-labelling configuration through the URL**.

Example:

```
https://example.com/?wl
```

or

```
https://example.com/?wl=<base64 encoded object>
```

#### Applies to

| Mode             | Supported |
| ---------------- | --------- |
| ArcwareInit (UI) | ✔         |
| CoreSetup        | ✔         |

***

### Enabling Remote White Labelling

When the parameter is present without a value:

```
?wl
```

the SDK automatically enables:

```javascript
fetchRemoteWhiteLabelling: true
```

The SDK will request branding configuration from the Arcware backend.

***

### Providing White Labelling via URL

The parameter can also contain a **base64-encoded JSON configuration object**.

Example URL:

```
https://example.com/?wl=eyJsb2FkaW5nSWNvb...
```

Decoded example:

```json
{
  "loadingIconUrl": "/branding/logo.png",
  "splashScreenUrl": "/branding/splash.jpg",
  "splashScreenMode": "contain"
}
```

***

## Session Control

The WebSDK normally manages sessions automatically. These parameters allow manual control of session behavior.

***

### `?noSession`

Disables session reuse and forces the SDK to **start without restoring a previous session**.

Example:

```
https://example.com/?noSession
```

#### Applies to

| Mode        | Supported |
| ----------- | --------- |
| ArcwareInit | ✔         |
| CoreSetup   | ✔         |

This is useful for testing scenarios where a clean instance should always be started.

***

### `?session=<id>`

Forces the SDK to connect using a specific session ID.

Example:

```
https://example.com/?session=abc123
```

#### Applies to

| Mode        | Supported |
| ----------- | --------- |
| ArcwareInit | ✔         |
| CoreSetup   | ✔         |

If the session exists and is still active, the SDK will reconnect to that session.

***

### `?reconnect`

Attempts to reconnect to a previously known session.

Example:

```
https://example.com/?reconnect
```

#### Applies to

| Mode        | Supported |
| ----------- | --------- |
| ArcwareInit | ✔         |
| CoreSetup   | ✔         |

If no valid session is found, a new session will be created automatically.

***

## Interaction with `useUrlParams`

URL parameters are only interpreted if the SDK configuration enables URL parsing.

Example:

```javascript
ArcwareInit(
  { shareId: "<share-id>" },
  {
    useUrlParams: true
  }
);
```

If `useUrlParams` is disabled, query parameters will be ignored.

***

## Example URLs

### Enable debug overlay

```
https://example.com/?i
```

***

### Enable white labelling

```
https://example.com/?wl
```

***

### Provide custom white labelling

```
https://example.com/?wl=<base64 configuration>
```

***

### Force new session

```
https://example.com/?noSession
```

***

### Reconnect to session

```
https://example.com/?session=abc123
```

***

## Notes

* Query parameters are primarily intended for **debugging and advanced usage**.
* Production applications typically configure behavior through **SDK configuration rather than URL parameters**.
* Parameters affecting the UI (such as `?i`) have no effect when using **headless CoreSetup integrations**.
