# 
1. [Overview](#Overview)
2. [Getting Started](#GettingStarted)
3. [Concepts](#Concepts)
5. [Device Management](#DeviceManagement)
4. [Examples](#Examples)
## Overview
Vidyo's client library enables the developer to add real-time communication capabilities to their applications using a simple API that spans multiple platforms (Windows/Mac/Linux/iOS/Android) and languages (C/Objective-C/Java/JavaScript).
## Getting Started
There are many possible ways to use the library depending on the application requirements.
#### Desktop application
Use the platform specific VidyoClient library (Windows/Mac/Linux) and interface using C/C# binding.
#### Web Browser application with Plugin
Use our NPAPI plugin and interface using our JavaScript binding (VidyoClient.js)
#### Web Browser application without Plugin
Use our Native Web-RTC version of VidyoClient.js and interface using our JavaScript binding.
#### iOS application
Use our iOS library and interface using Objective-C binding.
#### Android Application
Use our Android library and interface using Java binding.
Once you load our library by adding it to your project or installing the NPAPI plugin, you can call VidyoClient funcitons.
## Concepts
There is a hierarchy of object relationships in VidyoClient.
**Endpoint** > **User** > **Room** > **Participant**
It is a one-to-many relationship where multiple users can be instantiated on the endpoint and multiple rooms on the user. In order to create a **User** object, you need an existing **Endpoint** and to create a **Room** object you need a **User**. In addition to being referenced, these objects provide asynchronous responses through Feedbacks which need to be registered at the time of object creation.
```javascript
/* JavaScript Example: */
/* When calling VidyoUserLogin, the response will come asynchronously through loginComplete feedback.*/
var vidyoEndpointFeedback = new vidyoClient.VidyoEndpointFeedback(
{
/* Endpoint feedbacks are not implemented for this sample */
});
var vidyoUserFeedback = new vidyoClient.VidyoUserFeedback(
{
loginComplete: function(vidyoUserFeedback, vidyoUser, result)
{
switch(result) {
case("VIDYO_USERLOGINRESULT_OK"):
/* Login complete */
break;
default:
break;
}
}
/* Other User feedbacks not implemented for this sample */
});
var endpoint, user;
/* assume initialization of vidyoClient */
endpoint = new vidyoClient.VidyoEndpoint({feedback:vidyoEndpointFeedback, consoleLogFilter: "", fileLogFilter: "", fileLogName: ""});
user = new vidyoClient.VidyoUser({endpoint: endpoint, feedback: vidyoUserFeedback});
user.Login({username: "exampleUser@example.com", password: "examplePassword", host: "example.com"});
```
### Initializing
```javascript
/* JavaScript Example: */
/* Initialization */
/* add VidyoClient.js to the