---
title: "Underlying counted inbound calls and exact booking evidence"
description: "Workspace admins and owners only. Same verified-workspace and date rules as inbound-calls-by-number. Reads rollup facts only, never raw calls or appointments. Filters follow the report's historical/current label rules. Booking evidence is withheld until a complete refresh; later cancellations remain included. Lead evidence records internal contact creation or an existing match at arrival; older unsupported calls remain unknown. Optional handling evidence describes saved answer/session signals, fallback routes, provider-reported transfers and ringing declines. Signed destination-leg acknowledgements are distinct from human pickup, booking ownership or a verified business handover.\n"
---

> Documentation Index
> Fetch the complete documentation index at: https://developer.channelautomations.com/llms.txt
> Use this file to discover all available pages before exploring further.

Path: Channel Automation API › Analytics

`GET /api/analytics/inbound-calls-by-number/calls`

Workspace admins and owners only. Same verified-workspace and date rules as inbound-calls-by-number. Reads rollup facts only, never raw calls or appointments. Filters follow the report's historical/current label rules. Booking evidence is withheld until a complete refresh; later cancellations remain included. Lead evidence records internal contact creation or an existing match at arrival; older unsupported calls remain unknown. Optional handling evidence describes saved answer/session signals, fallback routes, provider-reported transfers and ringing declines. Signed destination-leg acknowledgements are distinct from human pickup, booking ownership or a verified business handover.

## Query parameters

- `workspace_id` (`get/api/analytics/inbound-calls-by-number/calls.query.workspace_id`; string, optional)
- `fromDate` (`get/api/analytics/inbound-calls-by-number/calls.query.fromDate`; string, optional)
  - format `date-time`
- `toDate` (`get/api/analytics/inbound-calls-by-number/calls.query.toDate`; string, optional)
  - format `date-time`
- `number` (`get/api/analytics/inbound-calls-by-number/calls.query.number`; string, optional) — Exact recorded dialed number (normally E.164).
- `label` (`get/api/analytics/inbound-calls-by-number/calls.query.label`; string, optional) — Exact report label.
- `unlabeled` (`get/api/analytics/inbound-calls-by-number/calls.query.unlabeled`; boolean, optional)
- `bookedOnly` (`get/api/analytics/inbound-calls-by-number/calls.query.bookedOnly`; boolean, optional)
- `leadStatus` (`get/api/analytics/inbound-calls-by-number/calls.query.leadStatus`; string, optional) — Recorded contact resolution at call arrival. New means an internal contact was created by this call; older or unsupported calls are unknown.
  - one of `"new"`, `"returning"`, `"unknown"`
- `limit` (`get/api/analytics/inbound-calls-by-number/calls.query.limit`; integer, optional)
  - min 1; max 500; default `50`
- `offset` (`get/api/analytics/inbound-calls-by-number/calls.query.offset`; integer, optional)
  - min 0; default `0`
- `revision` (`get/api/analytics/inbound-calls-by-number/calls.query.revision`; string, optional) — Previous page revision; changes return report_changed.

## Code samples

### cURL

```bash
curl --request GET \
  --url https://api.channelautomation.com/api/analytics/inbound-calls-by-number/calls
```

### TypeScript

```typescript
const url = 'https://api.channelautomation.com/api/analytics/inbound-calls-by-number/calls';
const options = {method: 'GET'};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "https://api.channelautomation.com/api/analytics/inbound-calls-by-number/calls"

response = requests.get(url)

print(response.text)
```

## Responses

### 200

{ success, data }. Data includes available, revision, total, nextOffset, rows, verifiedBookingsAvailable, evidenceAvailable, handlingEvidenceAvailable, leadTrackingAvailable and lastRefreshedAt. Row handling is null until a complete handling refresh. Unavailable reasons include report_changed, bookings_pending and contract_not_deployed.

### 400

Invalid filter, page or range (maximum 400 days).

### 401

Authentication required

#### Example

```json
{
  "error": "Authentication required",
  "success": false
}
```

- `error` (`get/api/analytics/inbound-calls-by-number/calls.response.401.error`; string, optional)
  - example `"Authentication required"`
- `success` (`get/api/analytics/inbound-calls-by-number/calls.response.401.success`; boolean, optional)
  - example `false`

### 403

Not an authorized workspace manager, or a different workspace requested.


Source: https://developer.channelautomations.com/api/get-api-analytics-inbound-calls-by-number-calls/index.md
