---
title: rDWS Remoteview Endpoints
slug: develop/rdws-remoteview-endpoints
docTags: 
createdAt: 2025-03-11T07:03:33.433Z
---

These APIs are exposed on the WebSocket server but are a separate set of APIs. Using Remoteview, you can control the player remotely through the WebSocket channel. This is a route between each configured player and the BSN network.

To use these APIs, you must have confirmed access to a WebRTC signaling server, and access to that server through a browser so you can use the necessary URL endpoints. You must also be authenticated with the necessary BSN server and the player must be registered with that same network.

:::hint{type="info"}
The web server must provide its content over an HTTPS connection (this is part of the WebRTC specification). If you do not have access to such a service, you can proxy a local (non-HTTPS) server through a remote service. This service is not part of BSN.Cloud.
:::

## Establishing a Remoteview Player Connection

1. Acquire an accessURL for a rendezvous service to use with Remoteview.
2. Add the accessURL to the player configuration in BSN.Cloud:
   - &#x20;`PUT /remoteview/config`&#x20;
3. Confirm the setting:
   - &#x20;`GET /remoteview/config endpoint`.
4. Start a session:
   - `POST /remoteview/{:source}/view`
5. Go to a Chrome browser and enter the rendezvous forwarding address and add webrtc\_client.html to the end of the address (for example: 7a24dceefaa4.ngrok.io/webrtc\_client.html)
6. Enter the player serial number that you wish to view.
7. Make sure everything is working. The following command should return a session id:
   - `GET /remoteview/{:source}/view`
8. Remove a session:
   - `DELETE /remoteview/{:source}/view/{:id}`&#x20;

## GET  /remoteview/config/ 

Use the PUT endpoint to configure the player with an access URL. You can then use this endpoint to check that the configuration is correct.

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

**Success Response Body**

<font color="#15803D">200</font>: This will return the access URL

**Example**

```json
{“accessURL”: “http://test-server-url/”}
```

**Failure Response**

<font color="#B91C1C">400</font>: The request is malformed and therefore invalid

<font color="#B91C1C">401</font>: The access token is invalid or not specified

<font color="#B91C1C">5XX</font>: Any 500 code is an internal server error

## PUT  /remoteview/config/ 

Configures the player with the access URL

**Request Body**

- `accessURL` <font color="#704ae0">string: </font>The remote view server URL

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

**Request Example**

```text
{"data": {“accessURL”: “http://test-server-url/”}}
```

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

**Success Response Body**

<font color="#15803D">200</font>: This returns the access URL - the same value that you passed in the request body to the player

**Failure Response**

<font color="#B91C1C">400</font>: Either the request or request body is malformed and therefore invalid

<font color="#B91C1C">401</font>: The access token is invalid or not specified

<font color="#B91C1C">5XX</font>: Any 500 code is an internal server error

## GET  /remoteview/\{:source}/view/ 

Returns the information about all the active remote view sessions.

**Request Body**

- `source` <font color="#704ae0">string: </font>This value will always be `"desktop"`

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

**Success Response Body**

<font color="#15803D">200</font>: Returns an array of session objects. Each object contains the following parameters:

- `id` <font color="#704ae0">string</font>: The session id
- `mediaSource` <font color="#704ae0">string</font>: The value is always `"desktop"`
- `available` <font color="#704ae0">bool</font>: This value is always `true` when the session is active.
- `viewing` <font color="#704ae0">bool</font>: This indicates that the session is active. The value will always be `true`.

**Example**

```json
{
      id: "9e61ac20-2014-11ee-a14d-73a9c31db7cd", 
      mediaSource: "desktop", 
      available: true,
      viewing: true
}
```

**Failure Response**

<font color="#B91C1C">400</font>: The request is malformed and therefore invalid

<font color="#B91C1C">401</font>: The access token is invalid or not specified

<font color="#B91C1C">5XX</font>: Any 500 code is an internal server error

## GET  /remoteview/\{:source}/view/\:id/ 

Returns information about the specified remote view session using its session id

**Request Body**

- `source` <font color="#704ae0">string: </font>This value will always be `"desktop"`
- `id` <font color="#704ae0">string: </font>The unique identifier for the session

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

**Success Response Body**

<font color="#15803D">200</font>: Returns the following specified session object:

- `id` <font color="#704ae0">string</font>: The session id
- `mediaSource` <font color="#704ae0">string</font>: This value is always `"desktop"`
- `available` <font color="#704ae0">bool</font>: This value is always `true` when the session is active.
- `viewing` <font color="#704ae0">bool</font>: This indicates that the session is active. The value will always be `true`.

**Example**

```json
{
      id: "9e61ac20-2014-11ee-a14d-73a9c31db7cd", 
      mediaSource: "desktop", 
      available: true,
      viewing: true
}
```

**Failure Response**

<font color="#B91C1C">400</font>: The request is malformed and therefore invalid

<font color="#B91C1C">401</font>: The access token is invalid or not specified

<font color="#B91C1C">404</font>: The specified session id was not found

<font color="#B91C1C">5XX</font>: Any 500 code is an internal server error

## POST  /remoteview/\{:source}/view/ 

Starts a new session and returns an id for the session (at this point, the signaling server has been initialized and has made a WebSocket connection to the player)

**Request Body**

- `source` <font color="#704ae0">string: </font>This value will always be `"desktop"`

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

**Success Response Body**

<font color="#15803D">200</font>: A successful response returns the session id.

**Example**

```json
{sessionID: "9e61ac20-2014-11ee-a14d-73a9c31db7cd"}
```

**Failure Response**

<font color="#B91C1C">400</font>: The request or request body is malformed and therefore invalid

<font color="#B91C1C">401</font>: The access token is invalid or not specified

<font color="#B91C1C">5XX</font>: Any 500 code is an internal server error

## DELETE  /remoteview/\{:source}/view/\:id/ 

Stops the specified remote view session using its session id

**Request Body**

- `source` <font color="#704ae0">string: </font>This value will always be `"desktop"`
- `id` <font color="#704ae0">string: </font>The unique identifier for the session you want to stop

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

**Success Response Body**

<font color="#15803D">200</font>: The specified session was stopped

**Example**

```json
{ stopped : true }
```

**Failure Response**

<font color="#B91C1C">400</font>: The request is malformed and therefore invalid

<font color="#B91C1C">401</font>: The access token is invalid or not specified

<font color="#B91C1C">404</font>: The specified session id was not found

<font color="#B91C1C">5XX</font>: Any 500 code is an internal server error
