Call Log Quick Start

Last updated: 2023-06-22Contributors
Edit this page

Calling the RingCentral API for the first time? We recommend you try out getting started experience.

In this quick start, we are going to help you access your company's call log, or a detailed audit of all the calls that have been routed through your account. Let's get started.

Create an app and obtain credentials

The first thing we need to do is create an app in the RingCentral Developer Console. This can be done quickly by clicking the "Create Call Log App" button below. Just click the button, enter a name and description if you choose, and click the "Create" button. If you do not yet have a RingCentral account, you will be prompted to create one.

Create Call Log App

  1. Login or create an account if you have not done so already.
  2. Go to Console/Apps and click 'Create App' button.
  3. Select "REST API App" under "What type of app are you creating?" Click "Next."
  4. Under "Auth" select "JWT auth flow."
  5. Under "Security" add the following permissions:
    • Read Call Log
  6. Under "Security" select "This app is private and will only be callable using credentials from the same RingCentral account."

When you are done, you will be taken to the app's dashboard. Make note of the Client ID and Client Secret. We will be using those momentarily.

Download and edit a .env file

Follow the instructions found in our guide to running Developer Guide code samples. Or:

  1. Download our env-template and save it as a file named .env.
  2. Edit your newly downloaded .env file, setting its variables with the proper values for the app you created above, paying close attention to the following:
    • RC_CLIENT_ID - set to the Client ID of the app you created above
    • RC_CLIENT_SECRET - set to the Client Secret of the app you created above
    • RC_JWT - set to the JWT credential you created for yourself

Access your company's call log

const RC = require('@ringcentral/sdk').SDK

var rcsdk = new RC({
    'server':       process.env.RC_SERVER_URL,
    'clientId':     process.env.RC_CLIENT_ID,
    'clientSecret': process.env.RC_CLIENT_SECRET
var platform = rcsdk.platform();
platform.login({ 'jwt':  process.env.RC_JWT })

platform.on(, () => {

async function read_user_calllog() {
  try {
    var resp = await platform.get('/restapi/v1.0/account/~/call-log', {
      view: 'Detailed'
    var jsonObj = await resp.json()
    for (var record of jsonObj.records)
      console.log("Call type: " + record.type)
  } catch (e) {

# You get the environment parameters from your 
# application dashbord in your developer account 

import os
import sys

from dotenv import load_dotenv
from ringcentral import SDK

rcsdk = SDK( os.environ.get('RC_CLIENT_ID'),
             os.environ.get('RC_SERVER_URL') )
platform = rcsdk.platform()
  platform.login( jwt=os.environ.get('RC_JWT') )
except Exception as e:
  sys.exit("Unable to authenticate to platform: " + str(e))

params = {
    'view': 'Detailed'

resp = platform.get('/restapi/v1.0/account/~/call-log', params)
for record in resp.json().records:
    print(f'Call type: {record.type}')
/* You get the environment parameters from your 
   application dashbord in your developer account */

$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/../');

$rcsdk = new RingCentral\SDK\SDK( $_ENV['RC_CLIENT_ID'],
                                  $_ENV['RC_SERVER_URL'] );
$platform = $rcsdk->platform();
$platform->login( [ "jwt" => $_ENV['RC_JWT'] ] );

$params = array(
   'view' => 'Detailed'

$resp = $platform->get('/account/~/call-log', $params);
foreach ($resp->json()->records as $record) {
    print_r ("Call type: ".$record->type);
using System;
using System.Threading.Tasks;
using RingCentral;

namespace Read_CallLog
class Program
        static RestClient restClient;
    static void Main(string[] args)
            restClient = new RestClient(
    static private async Task read_user_calllog()
        var parameters = new ReadUserCallLogParameters();
        parameters.view = "Detailed";

        var resp = await restClient.Restapi().Account().CallLog().List(parameters);
        foreach (CallLogRecord record in resp.records)
            Console.WriteLine("Call type: " + record.type);
package com.ringcentral;

import com.ringcentral.*;
import com.ringcentral.definitions.*;

public class ReadCallLog {
    static RestClient rc;

    public static void main(String[] args) {
        var obj = new ReadCallLog();
    rc = new RestClient( System.getenv("RC_CLIENT_ID"),
                 System.getenv("RC_SERVER_URL") );
    try {
        rc.authorize( System.getenv("RC_JWT") );
    } catch (RestException | IOException e) {

    public static void read_user_call_log() throws RestException, IOException {
    ReadUserCallLogParameters parameters = new ReadUserCallLogParameters();
    parameters.view = "Detailed";
    UserCallLogResponse response = rc.restapi().account().extension().callLog().list(parameters);
    for (UserCallLogRecord record : response.records) {
        System.out.println("Call type: " + record.type);


require 'ringcentral' require 'dotenv/load'


$rc.authorize(jwt: ENV['RC_JWT'])

resp = $rc.get('/restapi/v1.0/account/~/call-log', { view: 'Detailed' })

for record in resp.body['records'] do puts "Call type: " + record['type'] end