Skip to content
Try RMDialer free for 3 days, no card3-day trial, no card Become our whitelabel reseller partnerBecome a reseller partner
Call Log API · GET /call-logs · Bearer Token · JSON

Call Log API Reference With Filters and JSON From RMDialer

RMDialer's call log API is one GET endpoint that returns every call your team's phones made, with direction, duration, caller and lead, filtered by date, type and employee.

  • Call log API
  • Call history API
  • Missed, rejected, connected
  • Per employee filter
  • updated_since sync

Read-only GET · 500 calls a page · 60 requests a minute

Your own SIM, no virtual number · Android and iPhone apps + Web CRM in one plan · No card for the trial

RAKPS 3,500+ businesses on Wappblaster tools · listed on G2, Capterra, SoftwareSuggest
The RMDialer Web CRM call logs dashboard, built from the same records the call log API returns
GET /call-logs200 OK · 500 calls
called_byAarti · id 4068

Short answer

What is the RMDialer call log API?

The RMDialer call log API is one read-only GET endpoint, /api/datalake/outbound/call-logs, that returns every call made or received on your team's Android phones as JSON. Each call carries the number, direction, time, duration, whether it connected, the employee who placed it and the lead it belongs to. Filter by date, call type, lead status or employee, page 500 at a time, and authenticate with a bearer token from Setup, Outbound API.

Key takeaways

  • The call log API returns incoming, outgoing, missed, voicemail, rejected and blocked calls.
  • Pages hold up to 500 calls and the limit is 60 requests a minute.
  • updated_since returns only the calls added or changed after your last sync.
  • The same token also reads leads, follow-ups and remarks from three sibling endpoints.
Endpoint

Call log API endpoint and authentication

One request, no body. Copy BASE_URL and TOKEN from Setup, then Outbound API in the RMDialer Web CRM.

GET {BASE_URL}/api/datalake/outbound/call-logs
Authorization: Bearer {TOKEN}
Accept: application/json

The token can also ride in the URL as ?token= when a tool cannot set headers, such as a spreadsheet import. A header is safer, because URLs end up in logs.

Call log API example request (curl)

curl -G "$BASE_URL/api/datalake/outbound/call-logs" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  --data-urlencode "from=2026-09-01" \
  --data-urlencode "to=2026-09-30" \
  --data-urlencode "type=outgoing" \
  --data-urlencode "per_page=500"

Call log API query parameters

All optional. Combine any of them; the response echoes what was applied.

RMDialer call log API query parameters and accepted values
ParameterWhat it doesExample
pagePage number, from 11
per_pageCalls per page, 1 to 500 (default 100)500
fromCalls on or after this date or date-time2026-09-01
toCalls on or before this date or date-time2026-09-30
updated_sinceOnly calls added or changed since this date-time2026-10-01T00:00:00
searchMatches the number or the contact name9812345678
typeincoming, outgoing, missed, voicemail, rejected or blockedmissed
lead_statelead, not_lead or lostlead
statusCalls to numbers whose lead has this statusFollow-Up
employeeA user id: calls they made plus numbers assigned to them4068
Response

Call log API JSON response

One object per call, inside data. meta tells you where you are in the result.

{
  "success": true,
  "data": [
    {
      "id": 918273,
      "phone_number": "+919812345678",
      "raw_number": "098123 45678",
      "contact_name": "Ravi Kumar",
      "call_type": "outgoing",
      "call_at": "2026-09-11T11:42:05+05:30",
      "duration_seconds": 184,
      "connected": true,
      "spam": false,
      "video": false,
      "lost_lead": false,
      "sim_slot": "0",
      "location": "Gujarat",
      "called_by": { "id": 4068, "name": "Aarti" },
      "lead": { "id": 436013, "name": "Ravi Kumar", "status": "Follow-Up" },
      "synced_at": "2026-09-11T11:45:10+05:30"
    }
  ],
  "meta": {
    "resource": "call-logs",
    "page": 1,
    "per_page": 100,
    "total": 1,
    "last_page": 1,
    "has_more": false,
    "timezone": "Asia/Kolkata"
  },
  "filters": {}
}

Call log API response fields

What each field in a call object holds.

RMDialer call log API response fields
FieldMeaning
idStable call id. Use it as your primary key so a re-read call updates, never duplicates
phone_numberThe number in international format
raw_numberThe number exactly as the phone stored it
contact_nameThe name the phone showed for the number
call_typeincoming, outgoing, missed, voicemail, rejected or blocked
call_atWhen the call started, with the account time zone offset
duration_secondsTalk time in seconds
connectedtrue when the call was answered
lost_leadtrue when the number was never reached
spam / videoSpam-flagged number; video call
sim_slotWhich SIM carried the call
locationThe region the number belongs to
called_byThe employee whose phone made or took the call
leadThe lead the number belongs to, with its status, or null
synced_atWhen the phone sent the call to your account
meta.has_moretrue while more pages remain
Examples

Call log API examples in Python and Node

Python: every missed call this month

import time
import requests

def fetch_call_logs(base_url, token, **filters):
    """Yield every call that matches the filters, one page of 500 at a time."""
    page = 1
    while True:
        r = requests.get(
            f"{base_url}/api/datalake/outbound/call-logs",
            headers={"Authorization": f"Bearer {token}", "Accept": "application/json"},
            params={**filters, "page": page, "per_page": 500},
            timeout=30,
        )
        if r.status_code == 429:      # over 60 requests a minute: wait, then retry this page
            time.sleep(5)
            continue
        r.raise_for_status()
        body = r.json()
        yield from body["data"]
        if not body["meta"]["has_more"]:
            break
        page += 1

for call in fetch_call_logs(BASE_URL, TOKEN, type="missed", **{"from": "2026-10-01"}):
    print(call["call_at"], call["phone_number"], call["called_by"]["name"])

Node: incremental sync with updated_since

// Node 18+ (built-in fetch). Pulls only what changed since the last run.
async function* fetchCallLogs(baseUrl, token, filters = {}) {
  for (let page = 1; ; page++) {
    const qs = new URLSearchParams({ ...filters, page, per_page: 500 });
    const res = await fetch(`${baseUrl}/api/datalake/outbound/call-logs?${qs}`, {
      headers: { Authorization: `Bearer ${token}`, Accept: 'application/json' },
    });
    if (res.status === 429) { await new Promise((r) => setTimeout(r, 5000)); page--; continue; }
    if (!res.ok) throw new Error(`Call log API ${res.status}`);
    const body = await res.json();
    yield* body.data;
    if (!body.meta.has_more) return;
  }
}

// Save when this run started, written in the account time zone (meta.timezone), for the next run.
const startedAt = startOfRunInAccountZone();
for await (const call of fetchCallLogs(BASE_URL, TOKEN, { updated_since: lastSyncStartedAt })) {
  await upsertCall(call.id, call); // the id is stable, so a re-read call updates instead of duplicating
}

The complete scripts, including that time-zone helper and PHP and curl versions, are in rmdialer/api-examples on GitHub.

Errors and the rate limit

  • 401: the token is missing or wrong.
  • 403: the token has been turned off in Setup, Outbound API.
  • 422: a parameter is invalid, for example type=answered or per_page=1000.
  • 429: more than 60 requests in a minute. Wait and repeat the same page.
Customer reviews

RMDialer reviews from business users

Real businesses, real numbers: how owners and sales teams across India and 12+ countries use RMDialer every day.

Rated 4.9 by customers 4.7 on Google Play 5K+ downloads India + 12+ countries
  • “Collections calling is volume work. The auto dialer clears 250 numbers per executive per day from their own SIM, promise-to-pay dates become reminders, and the daily call report shows connected versus not reachable per person. Talk time per employee ended the "phone was busy all day" excuse.”
    Ramesh Pandian Recovery manager · NBFC collections Madurai
  • “Every visa enquiry moves through counselling, documents and filing as lead statuses, and the counsellor's phone rings for each follow-up. What I check daily is the employee call logs report: calls, connected, talk time per counsellor, on my phone. The register we used to maintain is gone.”
    Arjun Mehta Branch manager · Immigration consultancy Chandigarh
  • “We use RMDialer as the dialer layer under our own CRM through the API. Our system pushes the lead and the assignment, the agent's phone dials it, and every call event comes back by webhook with duration, outcome and remark. Integration took our developer about two days with the GitHub samples.”
    Nikhil Bansal Product manager · Lending fintech Gurgaon
  • “Subscription business: every client's plan expiry is a renewal reminder and every prospect from the webinar list is auto dialled the next morning. Paid vs due on each client is visible, so collections are not in my head anymore. The daily call report keeps my two callers honest.”
    Rajesh Joshi Owner · Stock advisory service Vadodara
  • “Order calling to 350 chemists every week. The list auto dials from each MR's own SIM, the order remark goes on the chemist's number, and I see calls and talk time per MR every evening on the web. Bulk WhatsApp for the new scheme went to the whole list from the call log in one go.”
    Manoj Kumar Regional head · Pharma distribution Patna
  • “Good telecalling CRM for a small Saudi team. Arabic app, calls from our STC SIMs, and the manager report per employee is what we bought it for. Four stars because I want a desktop app for the manager too, not only the web. Support fixed our SIM selection question the same day.”
    Ahmed Al-Qahtani Sales supervisor · Car rental company Riyadh, Saudi Arabia

Reviews are collected from customers on WhatsApp and on this website. Share yours on WhatsApp

Same token

Call log API and its sibling endpoints

The outbound API has four read-only endpoints. Each takes the same page, per_page, from, to, updated_since and search parameters.

GET /api/datalake/outbound/call-logs

Every call from every phone on the account

from and to filter on: the time of the call

GET /api/datalake/outbound/leads

Leads with status, source, owner, latest remark and custom fields

from and to filter on: the date the lead was created

GET /api/datalake/outbound/followups

Follow-up reminders, open or done

from and to filter on: the time the follow-up is due

GET /api/datalake/outbound/remarks

Notes written after calls

from and to filter on: the date the remark was written

Which call log

Call log API vs the Android CallLog provider

Android has its own call log API, CallLog.Calls, and it is a different thing. It reads the log of the one phone your app is installed on, needs the READ_CALL_LOG permission, and Google Play only allows that permission for the default phone app and a short list of exceptions. It knows numbers and durations, not leads or employees.

RMDialer's call log API is the other half of the job: RMDialer is the dialer on each phone, so it reads CallLog.Calls there, attaches the lead and the caller, and your server reads every phone at once over HTTPS. If you are building the Android side yourself, start with how to read call logs in Android programmatically and the READ_CALL_LOG Google Play policy.

Call logs API for Android developers All developer routes Sync call logs to a CRM without code

Questions

RMDialer FAQ

What is a call log API?

A call log API is a web endpoint that returns the calls made and received on a phone system as data: number, direction, time, duration and whether it connected. RMDialer's call log API returns those for every Android phone on your account, plus the caller and the lead each call belongs to.

Where do I get the call log API token?

In the RMDialer Web CRM, open Setup, then Outbound API. The page shows your base URL and your API token. Send the token as Authorization: Bearer <token>, or as ?token=<token> in the URL.

Is the call log API read-only?

Yes. Every request is a GET with no body and the filters go in the query string. Calls reach the API because the phones running RMDialer sync them, so nothing has to be posted to it.

Does the call log API return missed and rejected calls?

Yes. call_type is incoming, outgoing, missed, voicemail, rejected or blocked, and the type filter takes the same values, so type=missed returns only the calls nobody answered.

How do I get the call history of one phone number?

Pass the number as search. It matches the number or the contact name, so search=9812345678 returns every call with that number across the whole team. Add from and to to narrow it to a period.

How do I get one employee's calls?

Pass their user id as employee. The API returns the calls that employee made plus calls to numbers assigned to them. called_by on each row tells you who actually placed the call.

How do I sync only new calls?

Save the time your last sync started and send it as updated_since on the next run. You get the calls added or changed since then, and the stable id on each call lets you update a row instead of inserting it twice.

Is there a call log webhook?

Yes. Besides polling this endpoint, the RMDialer backend can push calls to a URL of yours as they sync, so your system hears about a call without asking. Webhooks are set up with our team for your account; message us with the URL you want calls sent to.

What is the call log API rate limit?

Up to 60 requests a minute. With per_page=500 that is 30,000 calls a minute. Going over returns 429; wait a few seconds and repeat the same page.

Are iPhone calls in the call log API?

Calls placed from the RMDialer iPhone app are not, because Apple does not open the iPhone call log to any app. Leads, remarks and follow-ups made on an iPhone are in the API like any other.

Is this a call history API too?

Yes. The same endpoint is the call history API: page through it with a date range for the team's history, with search for one number's history, or with employee for one person's.

Is there an API to get call logs from Android phones?

Yes, when the dialer on the phone provides one. RMDialer's call logs API streams every call on each user's SIM (direction, duration, outcome, the lead, the remark, the follow-up) to your own system by REST and webhooks, and accepts leads and assignments back. Working samples are open on GitHub.

How can a manager see every call the team makes?

With a call tracking app installed as the phone app on each staff phone, every incoming, outgoing and missed call on the business SIM syncs to the owner's dashboard by itself. The manager filters by employee and date to see calls made, calls connected, missed calls, talk time and the status saved after each call, without asking anyone for a report.

How to track employee calls on Android without call recording?

Install a call tracking app that becomes the phone app on each employee's Android phone. It reads the phone's own call log, so every call on the business SIM is counted with direction, duration and outcome, and syncs to the owner's report. You get who was called, when, for how long, what status was saved and what follow-up was set, and call recording is supported too, set up with you during training.

No trial clock on the dialer

RMDialer free plan vs paid plan

The business dialer is free forever with no account and no expiry: the keypad, contacts, caller ID, the call log and your call analytics, plus free WhatsApp sends every day. A plan adds the customer record after every call, follow-up reminders, list auto dialing, your team and WhatsApp automation.

Free forever

₹0, no expiry

  • Your phone app: keypad, contacts, call log and caller ID
  • Spam and unknown-number screening on every incoming call
  • Call analytics: your day counted, by outcome, and by who you called
  • Missed calls kept in their own list, so nothing is returned late
  • Sending WhatsApp from a call, free every day

Free WhatsApp sends every day with a free account: 15 a day for your first 15 days, then 3 a day. The dialer itself needs no login at all.

On a plan

₹159/user/month, yearly

  • The customer record: lead status and remarks saved against every call
  • Follow-up reminders that ring like an alarm on the day you set
  • Auto dialing a whole list without touching the phone
  • Your team: seats, assigned calling lists and per-person reports
  • Automatic WhatsApp after calls, bulk sending and the WhatsApp API inbox
  • Backup and restore, so a new phone carries on where the old one stopped
  • Leads arriving on their own from Google Sheets, APIs and lead portals

Try it free for 3 days: unlimited use, no credit card required. Prices are per user, exclusive of taxes.

Get your call log API token

Install RMDialer on your team's phones, open Setup, then Outbound API, and make the first request.

₹159/user/month on yearly · every feature included · Prices are per user, exclusive of taxes.

Free forever: the business dialer never expires, and needs no account

Call recording supported · our team sets it up with you during training

On iPhone and Android. The iPhone app has every feature except the native call log.

Partners Download RMDialer Now