Home / Resources / FAQs / Developer Video Questions

Explore FAQs

Developer Video Questions

Getting Started

How to get started with EnableX platform? How to build a prototype quickly?

Once you have registered, login to the EnableX Portal

Create your Application

Get your App ID and App Key delivered to your registered email. You will need to use this key in your code to connect & authenticate with our Platform.

Clone or download this repository and follow the instructions at

Pricing

How do I estimate my EnableX platform usage?

The EnableX Video minutes are priced on a per participant/per minute basis. The below working shows how it works.

# of Participants: 2

Duration of call: 30

Total Billable Minutes: = 2 X 30 = 60 minutes

Rate: US$ 0.0045

Total cost of the call will be 60 * 0.0045 = US$ 0.27

How much does recording cost?

There are two components for recordings cost: individual streams and composite transcoded file which combines all participants. Individual stream recording costs $0.01 per minute per stream. The composite file cost is the total duration of the video call at $0.01 per minute. For example, a 5 party 30-minute video call will cost 5*30*0.01=$1.50 for recording plus 0.01*30=$0.3 for transcoding giving a total of $1.8

Does EnableX bill per minute or per seconds?

EnableX bills per minute of connection time for each user i.e. from the point when a user successfully connects to a room until the user is disconnects or gets disconnected.

What are the available pricing plans?

What are payment modes available? Credit card, Debit card. For other forms of payment modes kindly contact sales@enablex.io

Security

What kind of security features does EnableX implement?

EnableX platform is designed with security and privacy in mind.

  • Signaling Encryption: HTTPS with PKI certificate validation
  • All control plane messaging uses HTTPS
  • Media Encryption: AES 256-bit encryption DTLS-SRTP for Audio, Video & Shared Content
  • Infrastructure resides within its own private network and there is no access of the core infrastructure from the public internet. 
  • Every request that is processed by the server needs a valid token authenticated by the system through APP_ID/APP_KEY.
Data & Privacy All users’ data, including identities, and payment information, stay anonymous.Infrastructure Security Fortified network with Private VPN accessible only via secure API gatewaySecure Protocol HTTPS authentication and secure RTP for media transportation
GDPR and HIPPA EnableX platform is GDPR compliant and HIPPA ready, which means that any business can trust EnableX with data privacy and confidentiality.Encryption   AES256 encryption for all voice, video and signalling trafficPKI Certificate Valid PKI certs for all customer facing servers

Video is encrypted at the sender endpoint. Once arriving to the media server, each participant’s video is briefly decrypted in memory before immediately being re-encrypted and sent out to other participants. WebRTC requires this, as it does not allow the negotiation of a single set of DTLS keys between more than two participants.

Decrypted video is not stored in any server or storage device or transported over any network. Each participant in an EnableX video room negotiates its own DTLS/SRTP connection to EnableX’s media server and all video streams are subscribed to via secure transport layer.

Does EnableX store customer account information on the EnableX server?

EnableX stores the contact information of its own customers only and not of the end users of your applications/solutions. The information so stored is for billing purposes and to identify each unique customer account and provide safe and secure API keys.

Does EnableX store end user information or end user customer content on EnableX server?

EnableX does not collect and store any end user information from the video and voice chat services made available via the customer API keys of the registered account. The end user information management storage is the responsibility of the Application developer/solution provider.

Sample Code

Do you have code samples available?

You can access code samples below:

Do you provide one-one calling or group calling?

We support both. Please see sample code below for 1-1 calling and for group calling respectively to get started quickly.

Do you provide sample code/SDK’s for Windows Desktop?

We do not have SDK’s for Windows Desktop Applications as of now. However, you can use hybrid frameworks like Electron and develop Desktop applications using our API’s

Can I build a desktop application using EnableX?

You can use hybrid frameworks like Electron and develop Desktop applications using our API’s

Capacity

How many participants can join a video call?

We support 2 modes of video calls – Group Mode & Webinar Mode.

We support up to 100 participants for group mode and 1000 participants for Webinar mode.

Recording

How do I start recording?

Join the room with a token as a moderator role as below or ensure participants can be assigned moderator role during the session

POST https://api.enablex.io/v1/rooms//tokens
Authorization: Basic XXXXXXX
Content-Type: application/json
{
“name”: “User Name”,
“role”: “moderator”,
“user_ref”: “XXX”
}
//To start Recording for a room
room.startRecord (function(result, error ) {
if (result == 0) {
// Recording started
}
});

If recording is started, you may check the developer console for the following

{eventType: “roomRecordingSuccess”, roomId: “”, logId: “YyNT2w”, timestamp: Thu Apr 30 2020 21:17:08 GMT-0700 (Pacific Daylight Time), externalIp: “”}
eventType: “roomRecordingSuccess”
externalIp: “”
logId: “YyNT2w”
roomId: “”
timestamp: Thu Apr 30 2020 21:17:08 GMT-0700 (Pacific Daylight Time) {}
// To stop recording for a room room.stopRecord( function(result, error ) {      if (result == 0){          // Recording stopped      }  });

If recording stopped, you may check the developer console for the following

// To stop recording for a room
room.stopRecord( function(result, error ) {
if (result == 0){
// Recording stopped
}
});
{eventType: “roomRecordingStopped”, roomId: “”, logId: “YyNT2w”, timestamp: Thu Apr 30 2020 21:18:58 GMT-0700 (Pacific Daylight Time), externalIp: “xxx.xxx.xxx.xxx”}
eventType: “roomRecordingStopped”
externalIp: “”
logId: “YyNT2w”
roomId: “”
timestamp: Thu Apr 30 2020 21:18:58 GMT-0700 (Pacific Daylight Time) {}

What is the recording quality and file sizes generated from a recording session?

If room video quality is set to 720p then individual streams will be recorded at 720p while transcoded stream will be 480p

  1. Individual Stream Recording Quality is also set HD 720p max. (Note: 1-to-1 call may continue to have HD streaming throughout the session subject. Network conditions may affect stream quality received at server for recording even if the bitrate is high. In addition, video quality for large party calls may be reduced.
  2. Individual Stream Recording File Size:
    • HD 600MB (Approx.)/Hour (Max size).
    • HD 10MB (Approx.)/ Minute
    • SD 300MB (Approx.)/Hour (Max size).
    • SD 5MB (Approx.)/ Minute
  3. Transcoded File Quality: HD 480p max
  4. Transcoded File Size:
    • SD 300MB (Approx.)/Hour (Max size).
    • SD 5MB (Approx.)/ Minute

How do I fetch recording?

Recordings of your video sessions can be downloaded from your dashboard in portal.enablex.io. Go to Downloads->Recordings and it will show files available for download. Note that your room sessions must end before the individual recorded files and transcoded files can be processed. Also note that processing time would not be immediate. See below how to get notification when recorded files are ready.

Individual Archive

Transcoded archive merges all the individual video sessions into single MP4 file

Retrieve recordings via API is the easiest and most secure. Refer to https://developer.enablex.io/latest/server-api/archive-route/ to set the from and to date to list the recordings

curl -X GET \ -H “Authorization: Basic $(echo -ne “<APP_ID>:<APP_KEY> ” | base64 –wrap 0)” https://api.enablex.io/v1/archive/period/2020-04-30/2020-05-01
{
“result”: “0”,
“archive”: [
{
“_id”: “XXXXX”,
“trans_date”: ” YYYY-MM-DDTHH:II:SS.mmmZ “,
“conf_num”: “XXXX”,
“metadata”: “https://portal.enablex.io/recordings//metadata.json”,
“transcoded”: [{
“url”: “https://portal.enablex.io/recordings//588922003159_1.MP4”}
],
“app_id”: “xyz”,
“room_id”: “abc”,
“recording”: [{
“url”: “https://portal.enablex.io/recordings//42992483_1.mkv”},
{
“url”: “https://portal.enablex.io/recordings//98256913_1.mkv”
}]}]
}

To download do the following

curl -o my-transcoded-mp4.mp4 https://portal.enablex.io/recordings/<your_path>/588922003159_1.MP4

Delivery of recordings via SFTP and SCP

You may also to get your recording delivered to you via SFTP or SCP. You can do this by login to your portal->Manage Application->Recording Delivery. Only the transcoded file will be delivered per recording. Please test the settings and credentials you entered to ensure we have connectivity to your server.

When can I expect the recording of the session to be delivered to me? Why is there a delay in getting recording?

As soon as your session completes and if the recording was enabled for your session, EnableX platform initiates a transcoding job to mix all participants stream into a composite “mp4” file. The transcoding job is compute intensive and depending on your session duration/number of participants it can take some time to have the recording file of your session available. As soon as the transcoding is complete you will be notified to download your recorded session files (assuming you have setup the notification URL in the portal -> settings)

How do I setup my notification URL as soon as my recordings are available for download after the session?

EnableX may notify you as soon as any recording file is available for downloading by HTTP POST to a designated Notification URL. Go to your Portal Login > My Applications (Left Bar) > Action (Column of Each Row) > Manage Application. See below screenshot

On the Manage Application page, enter the notification URL so that EnableX may perform a HTTP POST to the URL once the recordings are available. EnableX performs a HTTP POST with JSON Raw Body to the URL.

Can any participant start & stop a recording?

No, only a participant with a moderator role can do so. You may assign any participants to have the moderator role during the call session. https://developer.enablex.io/latest/client-api/web-toolkit/moderator-controls/#change-role

Is there an API I can use to fetch usage?  How do I get session usage data? Where can I download usage information?

You may get the session usage of your room via rest API below or you may go to your portal dashboard and download the summary of your session CDR. You will find more information in the developer documentation reference API https://developer.enablex.io/latest/server-api/cdr-route/

Example to obtain CDR for a specified room you may use this below

curl -X GET -H “Authorization: Basic $(echo -ne “<APP_ID>:<APP_KEY>” | base64 –wrap 0)” “https://api.enablex.io/v1/cdr/room/<room_id>” | jq

Is there an API I can use to fetch usage from a start to an end date?

curl -X GET -H “Authorization: Basic $(echo -ne “<APP_ID>:<APP_KEY>” | base64 –wrap 0)” “https://api.enablex.io/v1/cdr/period/2020-04-28/2020-04-30” | jq

You may also fetch CDR for

  • Requesting CDR for a Room & Period
  • Requesting CDR for a Conference Number

Features

How to create EnableX room?

An EnableX room is necessary for participants to join a video call. Refer here to the key description for room creation https://developer.enablex.io/latest/server-api/rooms-route/#create-room

How do I change my room from SD to HD and vice-versa?

You can choose to create a SD or HD room here https://developer.enablex.io/latest/server-api/rooms-route/#create-room

Below is an example for room creation.

POST https://api.enablex.io/v1/rooms
Authorization: Basic XXXXXXX
Content-Type: application/json
{
“name”: “Topic or Room Title”,
“owner_ref”: “xyz”,
“settings”: {
“description”: “Descriptive text”,
“mode”: “group”,
“scheduled”: false,
“adhoc”: false,
“duration”: 50,
“participants”: “10”,
“billing_code”: “”,
“auto_recording”: false,
“quality”: “HD”,
“canvas”: true ,
“abwd”: true,
“max_active_talkers”: 4
},
“sip” : {
“enabled”: true
},
“data”: {
“custom_key”: “”
}
}

To change the room to SD, set the parameter key to “quality” : “SD” using  HTTPS PATCH

PATCH \
-H “Authorization: Basic $(echo -ne “: ” | base64 –wrap 0)” \
-H “content-type: application/json” -d ‘
{
“name”: “test Room”,
“settings”: {
“participants”: “6”,
“quality”: “SD”,
“auto_recording”: true
}
}’ “https://api.enablex.io/v1/rooms/

What is the common aspect ratio of the video frame for any stream?

It is 16:9

Does EnableX SDK provide mirror property for any stream? No

What is the use for maxVideo layer in room property? It is used to create multiple video layer for publisher stream.  The enumerated Values: 0, 1, 2, 3

  • Audio calls
  • HD 720p layer only
  • HD 720p & SD 480p layers only
  • HD 720p, SD 480p & LD 240p/180p layers

What is the minimum bandwidth required to run a video call? The minimum bandwidth for a connection must always be at least 200kbps, that is, it must not drop below that bandwidth for any time interval.

Do you provide voice calling with chat feature? Yes, we do provide voice calling with messaging feature. You may refer to voice chat sample code https://github.com/EnableX/Multiparty-Audio-Chat-Open-Source-NodeJS-Application. To add text chat feature you may add the following

// To send message to all (Public Messaging)
room.sendMessage(“Text Message”, true, [], function(data){
// Message sent
});
// To send to selected Participant (Private Messaging)
room.sendMessage(“Text Message”, false, [“XXXX”], function(data){
// Message sent
});
// To receive message notification
room.addEventListener(“message-received”, function (event) {
var InMsg = event.message;
if (InMsg.broadcast === true) {
// Handle Public Message
}
else {
// Handle Message from InMsg.sender
}
});

In addition there is also a sample code for text chat only application here https://github.com/EnableX/One-to-One-Chat-Webrtc-Application-Sample-for-Web

How do I implement voice-only calls?

While you join the EnableX session you need to pass “audio”: true in room info. More information can be found https://developer.enablex.io/latest/client-api/web-toolkit/basic-functions/#init-stream

// Local Stream Definition
var config = {
audio: true,
video: false,
data: true,
videoSize: [320, 180, 640, 480],
options: options,
maxVideoLayers: 0,
attributes: {
name: name
},
};

Can I exchange the chat message without subscribing remote stream or publishing local stream?

Yes, we provide a more advanced version of chat without having the sender to publish a stream or the receiver to subscribe to a stream. Please see https://developer.enablex.io/latest/client-api/web-toolkit/advance-features/#send-chat-data

Can I mute and unmute audio/video of any of the participant in the room?

Yes, you can do so by passing the recipient’s client ID to the mute/unmute method. Details are found here https://developer.enablex.io/latest/client-api/web-toolkit/moderator-controls/#hard-mute-unmute-participants

How can I change video aspect ratio? Technical support

Can I run 2 presentation at a same time (Screen share & Canvas)?

No, only 1 at a time is possible.

Can I take a snapshot of any participant in a session?

Yes, it is possible. To take snapshot of a video stream in your application use the EnxStream.getVideoFrameImage() method. The image from the video stream will be captured as raw bitmap data into the Canvas DOM Element.

Can I change video resolutions at run time? Yes, it is possible with update the room quality. However, note that any update on the room definition will take effect only on subsequent sessions of the room

HTTP PATCH
-H “Authorization: Basic $(echo -ne “: ” | base64 –wrap 0)” \
-H “content-type: application/json” -d ‘
{
“name”: “test Room”,
“settings”: {
“participants”: “6”,
“quality”: “SD”,
“auto_recording”: true
}
}’ “https://api.enablex.io/v1/rooms/”

HD, SD, LD will provide up to 720p, 480p and 240p resolution respectively

Can I change video resolutions for canvas at run time? Yes, but the changes will be effective in the subsequent call session.

Can I share my desktop using EnableX?

Yes, the details for screen sharing is here https://developer.enablex.io/latest/client-api/web-toolkit/advance-features/#share-screen

Device/Browsers support

Which platforms are supported for Video Chat?

We support Video Chat APIs for Web, Android & IOS platforms.

Which browsers are supported by EnableX for video and voice calling?

On the client side, EnableX supports Advanced Browsers like Chrome, Firefox, Safari. 

For mobile devices, EnableX provides SDKs for iOS and Android. 

EnableX needs min Android version as: V 4.4

EnableX needs min Android version as: iOS 10

The following is a table showing which browsers are supported by EnableX on which platforms

 Web BrowsersApp
Call SessionsChromeSafariFirefoxMS EdgeiOS AppAndroid App
WindowsYesNoYesYesN/AN/A
OSXYesYesYesN/AN/AN/A
AndroidYesN/AYesN/AN/AYes
IOS 12+N/AYesN/AN/AYesN/A

Which platforms support screen sharing?

ScreenShareChrome v72 & aboveSafariFirefoxEdge
WindowsYesYesYesYes
OSXYesYesYes 
UbuntuYes Yes 
AndroidReceive Only Yes 
IOS 12+N/AReceive Only  

What are the languages supported for Video Chat sample codes?

For Android – Java/Kotlin

For IOS – Swift

For Web – NodeJS/PHP/Laravel/Python/VueJS

For Hybrid – React Native

What is the size of EnableX SDK for IOS and Android?

EnableX Toolkits for Android and iOS are light weight. Released on April 1, 2020, Android Toolkit v1.5.6 is of 879KB whereas iOS Toolkit v1.5.6 is of 546KB.

Call Reports/logs

Will I get the detailed call logs for all the sessions conducted? Yes, you can via an API call to obtain all the CDRs for a particular room or you can download the CDR reports from your portal https://portal.enablex.io/my-account/reports/ Below is an example for retrieving the CDR for a room

GET -H “Authorization: Basic $(echo -ne “APP_ID:APP_KEY” | base64 –wrap 0)” \
“https://api.enablex.io/v1/cdr/room/”{
“result”: “0”,
“cdr”: [{
“trans_date”: “YYYY-MM-DDTHH:II:SS.mmmZ”,
“conf_num”: “XXX”,
“call_num”: “XXX”,
“call_log_id”: “XXX”,
“parent_partner_id”: “”,
“room”: {
“room_id”: “XXX”,
“connect_dt”: “YYYY-MM-DDTHH:II:SS.mmmZ”,
“room_details”: {
“_id”: “XXX”,
“name”: “XXX”,
“service_id”: “XXX”,
“owner_ref”: “XXX”,
“settings”: {
“mode”: “group”,
“scheduled”: false,
“adhoc”: false,
“duration”: “60”,
“participants”: “6”,
“auto_recording”: false,
“active_talker”: true,
“canvas”: false,
“media_configuration”: “default”,
“quality”: “HD”,
“moderators”: 1},
“sip”: {
“enabled”: false},
“created”: “YYYY-MM-DDTHH:II:SS.mmmZ”,
“enablexControllerId”: “XXXX”,
“mute”: false},
“sip”: false,
“disconnect_dt”: “YYYY-MM-DDTHH:II:SS.mmmZ”,
“duration”: 40.483},
“user”: {
“ip”: “XXX”,
“name”: “XXX”,
“role”: “moderator”,
“ref”: “XXX”,
“agent”: “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36”},
“sigserver”: {
“disconnect_dt”: “YYYY-MM-DDTHH:II:SS.mmmZ”,
“connect_dt”: “YYYY-MM-DDTHH:II:SS.mmmZ,
“ip”: “ssnode1.enablex.io:443”,
“duration”: 40.487,
“hold_duration”: 0.004},
“published_track”: {
“audio”: true,
“data”: true,
“video”: true,
“screen”: false,
“url”: false},
“usage”: {
“subscribed_minutes”: 306.986,
“published_minutes”: 39.316,
“screen_minutes”: 0,
“connect_minutes”: 40.487,
“room_connect_minutes”: 40.483
},
“app_id”: “xyz”,
“cdr_id”: “abc”
}]}

SUPPORT

How can I get support from EnableX if I have any issues with my room?

Calls are identified with unique client _id and call_log_Id. Kindly provide these to EnableX support using the Active Talker list and the call_log_id found in the CDR logs above for the specified room

{ “active” : true,
“activeList”: [
{ “clientId” : “String”,
“mediatype” : “audiovideo”, // Enum: audiovideo, audioonly
“name” : “String”,
“reason” : “user”,
“streamId” : Number,
“videoaspectratio” : “16:9”,
“videomuted” : Boolean
}
]
}

Will I get the support while integrating the EnableX platform? Yes, we can provide integration support which come under professional services. As a standard process, you are advised to open a support ticket from your portal to get technical/integration support.

You may contact sales@enablex.io for the different available plans.

Do you provide 24/7 support? Currently, we are providing the support from 9am – 7pm on IST on business days.

Do you have support ticket system?

You can log a ticket from the portal which will be addressed as per the ticket priority.

Do you offer professional support services?

Yes! EnableX offers professional support services. For details, contact EnableX Sales Team at sales@enablex.io

Quality Issues

VIDEO

During the session, I keep getting frequent disconnects and reconnects into the room. What should I do?

EnableX, by default, reconnects into the room when   is available. Reconnect is enabled by default into the EnableX room. Room “reconnect” is an optional feature so if you would prefer not to allow the clients to reconnect in case of a network disruption you can switch it off in your client-side application side

How to avoid lip-sync issues?

Have cam/mic from same source/device. This avoids any kind of audio video sync issue.

Voice

Do you provide message broadcasting? Yes. More details will be available shortly. Kindly contact sales@enablex.io

Does EnableX provide SIP trunking?

Yes. EnableX supports SIP Trunking. You can do inbound call to join a RTC Session and being in-session you can dial-out a PSTN number to join the session. For SIP Provisioning, you need to submit your SIP Server Information with us and EnableX will direct all SIP Calls to the provisioned server.

I want to make a desktop to telephone call. How do I get started?

EnableX provides support for calling from the browser to the PSTN phone. To make an outgoing call to the PSTN call, EnableX provides the SIP interface which is used to start an outbound call from the EnableX WebRTC Room -> EnableX SIP interface. From this SIP interface EnableX call can be terminated onto a PSTN number. To check the list of countries covered which are supported by the EnableX  WebRTC-PSTN termination please refer to developer.enablex.io.

Is EnableX GDPR compliant?

Please refer to our GDPR Policy here

Are you HIPPA compliant?

Please refer to our HIPPA Policy here


Explore FAQs