Call Detail Report (CDR) which can be accessed via CDR Route contains individual usage information by each user during entire call session.

Table of Contents

Requesting CDR for a specific period

This API Route deploys a filter on the CDR Reporting. API call returns CDR for a given period, i.e. between given FROM and TO date. Note the usage of dates in the URL Structure.

  • API Route: https://api.enablex.io/video/v2/cdr/period/{from_date}/{to_date}
  • HTTP Request: GET
  • Date Format: YYYY-MM-DD
  • Time Zone: UTC
  • Try Open API Tool

Request Example

GET https://api.enablex.io/video/v2/cdr/period/{from_date}/{to_date}  
Authorization: Basic XXXXXXX

Response JSON

{
  "result": "0",
  "cdr": [
    {
      "trans_date": "YYYY-MM-DDTHH:MI:SS.mlsZ",
      "conf_num": "String",
      "sip": false,
      "call_num": "String",
      "call_log_id": "String",
      "parent_partner_id": "String",
      "room": {
        "room_id": "String",
        "connect_dt": "YYYY-MM-DDTHH:MI:SS.mlsZ",
	"disconnect_dt": "YYYY-MM-DDTHH:MI:SS.mlsZ",
        "duration": 999,
        "room_details": {},
        "sip": false
      },
      "user": {
        "role": "moderator/participant/viewer/audience",
        "ip": "String",
        "name": "String",
        "ref": "String",
        "agent": "String"
      },
      "sigserver": {
        "disconnect_dt": "YYYY-MM-DDTHH:MI:SS.mlsZ",
        "connect_dt": "YYYY-MM-DDTHH:MI:SS.mlsZ",
        "ip": "String",
        "duration": 999.99,
        "hold_duration": 9.99
      },
      "published_track": {
        "audio": true,
        "data": false,
        "video": true,
        "screen": false,
        "url": false
      },
      "usage": {
        "subscribed_minutes": 999,
        "published_minutes": 999,
        "screen_minutes": 999,
        "connect_minutes": 999,
        "connect_minutes_cal": 999,
        "room_connect_minutes": 999
      },
     "stats_quality": {
        "send": {
          "video": {
            "avg_bitrate": 999,
            "avg_bitrate_quality": "Good/Bad",
            "max_bitrate": 999,
            "min_bitrate": 999
          },
          "sharing": {},
          "audio": {
            "avg_bitrate": 999,
            "avg_bitrate_quality": "Good/Bad",
            "max_bitrate": 999,
            "min_bitrate": 999
          }
        },
        "receive": {
          "video": {
            "avg_bitrate": 999,
            "avg_bitrate_quality": "Good/Bad",
            "max_bitrate": 999,
            "min_bitrate": 999,
            "bitrate_good_percent": 999,
            "bitrate_moderate_percent": 999,
            "bitrate_bad_percent": 999
          },
          "sharing": {},
          "audio": {
            "avg_bitrate": 41020,
            "avg_bitrate_quality": "Good/Bad",
            "max_bitrate": 42752,
            "min_bitrate": 38231,
            "bitrate_good_percent": 100,
            "bitrate_moderate_percent": 0,
            "bitrate_bad_percent": 0
          },
          "rtt": {}
        },
        "call_quality": "Good/Bad"
      },
      "video_embed": true,
      "visual_builder": true,
      "lowcode": true,
      "app_id": "String",
      "cdr_id": "String"
    }
  ]
}

Try Open API Tool…

JSON Explanation

  • trans_date: CDR log time.
  • conf_num: This is “Conference Number” or “Session Identifier”. Assigned by Video Service. By definition, each video room may be used for one or multiple session. This identifies each session in a video room.
  • call_num: This is “Call Number”,  i.e., a user’s connection identifier. Assigned by Video Service.  Each connected user is identified with this in a session.
  • call_log_id: This is “Log ID”. Assigned by Video Service for logging of all events, activities, issues. Any issue in a session can be traced by “Log ID” post session. EnableX asks for “Log ID” to trace any issue in session.
  • parent_partner_id: This is “Partner ID” or “Customer ID”. Each EnableX Project is owned by EnableX Customer. So, CDR too has it.  
  • app_id: Application ID.
  • cdr_id: CDR ID. ID of CDR entry in database.
  • lowcode: Boolean. It indicates if Low-Code is used.
  • room: Object with Room / Session related information.
  • room.room_id: Room ID.
  • room.connect_dt: User’s connection time to the Video Room.
  • room.disconnect_dt: User’s disconnection time to the Video Room.
  • room.duration: Total Duration the user remain connected in the Video Room. It’s in Second.
  • room.room_details: Object. It includes complete Room Definition.
  • user: Object. It has information about the connected user.
  • user.role: User Role. This was passed while creating Token to join Video Room.
  • user.ip: IP Address of the user from where he was connected.
  • user.name: User name. This was passed while creating Token to join Video Room.
  • user.ref: User Reference Number. This was passed while creating Token to join Video Room.
  • user.agent: User Agent information of the end point from where the user was connected.
  • sigserver: Object. It contains information about EnableX Signalling Server to which the user is connected.  
  • published_track: Object. It contains different type of media stream that the user has used.
  • published_track.audio: User has used microphone feed.
  • published_track.video: User has used camera feed.
  • published_track.screen: User has shared screen.
  • usage: Object. Usage, rounded up to next second.
  • usage.published_minutes: Total Time in Second for which user has published his own stream into the Room.
  • usage.screen_minutes: Total Time in Second for which user has shared screen into the Room.
  • usage.connect_minutes: Total Time in Second for which user remained connected to the Room.
  • usage.connect_minutes_cal: Total calculated time in minutes (rounded up) for which user remained connected to video room. This is the time for which you are billed for user’s connection.
  • stats_quality: This object contains information about call quality for audio, video and screen sharing for both sending and receiving streams.
  • stats.quality.send: This child object contains quality stats for published audio, video and screen sharing stream.
  • stats.quality.receive: This child object contains quality stats for received audio, video and screen sharing stream. Data for each of these streams is contained in related child objects named as “audio”, “video” and “sharing”.
  • stats.quality.receive: This child object contains quality stats for received audio, video and screen sharing stream. Data for each of these streams is contained in related child objects named as “audio”, “video” and “sharing”.

Requesting CDR for a specified Room

This API Route provides a filter for Room id for CDR Reporting.

  • API Route: https://api.enablex.io/video/v2/cdr/room/{room_id}
  • HTTP Request: GET
  • Try Open API Tool

Request Example

GET https://api.enablex.io/video/v2/cdr/room/{room_id}  
Authorization: Basic XXXXXXX

Response JSON

Response JSON is same as example shown above.

Try Open API Tool…

Requesting CDR for a Room & Period

This API Route deploys a filter on the CDR Reporting. API call returns CDR for a given room and period. The specified date and Room ID format is described below in the URL Structure.

  • API Route: https://api.enablex.io/video/v2/cdr/room-period/{room_id}/{from-date}/{to-date}
  • HTTP Request: GET
  • Date Format: YYYY-MM-DD
  • Time Zone: UTC
  • Try Open API Tool

Request Example

GET https://api.enablex.io/video/v2/cdr/room/{room_id}  
Authorization: Basic XXXXXXX 

Response JSON

Response JSON is same as example shown above.

Try Open API Tool…

Requesting CDR for a Conference Number

This API Route provides a filter for Conference Number CDR Reporting. Note the usage of conf_num in the URL Structure.

  • API Route: https://api.enablex.io/video/v2/cdr/conf/{conf-num}
  • HTTP Request: GET
  • Try Open API Tool…

Request Example

GET https://api.enablex.io/video/v2/cdr/conf/{conf_num}  
Authorization: Basic XXXXXXX 

Response JSON

Response JSON is same as example shown above.

Try Open API Tool…