---
title: report.getTable
url: https://docs.kaltura.com/docs/rich-media-cms-apis/analytics/analytics-get-table
---

## report.getTable

Retrieves tabular analytics data with dimensions and metrics. Supports pagination.

```bash
curl -X POST "$KALTURA_SERVICE_URL/service/report/action/getTable" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "reportType=38" \
  -d "reportInputFilter[objectType]=KalturaEndUserReportInputFilter" \
  -d "reportInputFilter[fromDate]=$FROM_TIMESTAMP" \
  -d "reportInputFilter[toDate]=$TO_TIMESTAMP" \
  -d "reportInputFilter[timeZoneOffset]=-240" \
  -d "reportInputFilter[interval]=days" \
  -d "order=-count_plays" \
  -d "pager[pageSize]=25" \
  -d "pager[pageIndex]=1" \
  -d "responseOptions[objectType]=KalturaReportResponseOptions" \
  -d "responseOptions[delimiter]=|" \
  -d "responseOptions[skipEmptyDates]=false"
```

**Required parameters:**

| Parameter | Description |
|-----------|-------------|
| `reportType` | KalturaReportType integer ID (see [Report Types Reference](/docs/rich-media-cms-apis/analytics/analytics-report-types)) |
| `reportInputFilter[objectType]` | Always `KalturaEndUserReportInputFilter` |
| `reportInputFilter[fromDate]` | Start date as Unix timestamp in **seconds** |
| `reportInputFilter[toDate]` | End date as Unix timestamp in **seconds** |

**Optional parameters:**

| Parameter | Default | Description |
|-----------|---------|-------------|
| `reportInputFilter[timeZoneOffset]` | 0 | Timezone offset in minutes |
| `reportInputFilter[interval]` | `days` | Granularity: `days`, `months`, `hours`, `tenSeconds`, `years` |
| `order` | varies | Sort field with direction prefix: `-count_plays`, `+date_id` |
| `pager[pageSize]` | 25 | Results per page (max 500) |
| `pager[pageIndex]` | 1 | Page number (1-based) |
| `responseOptions[delimiter]` | `,` | Field delimiter (use `|` for consistency) |
| `responseOptions[skipEmptyDates]` | false | Omit dates with zero values |

### Filtering by Entry

```bash
curl -X POST "$KALTURA_SERVICE_URL/service/report/action/getTable" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "reportType=38" \
  -d "reportInputFilter[objectType]=KalturaEndUserReportInputFilter" \
  -d "reportInputFilter[fromDate]=$FROM_TIMESTAMP" \
  -d "reportInputFilter[toDate]=$TO_TIMESTAMP" \
  -d "reportInputFilter[entryIdIn]=$KALTURA_ENTRY_ID" \
  -d "pager[pageSize]=25" \
  -d "pager[pageIndex]=1" \
  -d "responseOptions[objectType]=KalturaReportResponseOptions" \
  -d "responseOptions[delimiter]=|"
```

### Filtering by Category

```bash
curl -X POST "$KALTURA_SERVICE_URL/service/report/action/getTable" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "reportType=38" \
  -d "reportInputFilter[objectType]=KalturaEndUserReportInputFilter" \
  -d "reportInputFilter[fromDate]=$FROM_TIMESTAMP" \
  -d "reportInputFilter[toDate]=$TO_TIMESTAMP" \
  -d "reportInputFilter[categoriesIdsIn]=$CATEGORY_ID" \
  -d "pager[pageSize]=25" \
  -d "pager[pageIndex]=1" \
  -d "responseOptions[objectType]=KalturaReportResponseOptions" \
  -d "responseOptions[delimiter]=|"
```

Multiple values within a filter are **pipe-separated** (e.g., `entryIdIn=1_abc123|1_def456`).

### Filtering by Virtual Event

```bash
curl -X POST "$KALTURA_SERVICE_URL/service/report/action/getTable" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "reportType=38" \
  -d "reportInputFilter[objectType]=KalturaEndUserReportInputFilter" \
  -d "reportInputFilter[fromDate]=$FROM_TIMESTAMP" \
  -d "reportInputFilter[toDate]=$TO_TIMESTAMP" \
  -d "reportInputFilter[virtualEventIdIn]=$VIRTUAL_EVENT_ID" \
  -d "pager[pageSize]=25" \
  -d "pager[pageIndex]=1" \
  -d "responseOptions[objectType]=KalturaReportResponseOptions" \
  -d "responseOptions[delimiter]=|"
```
