---
title: stats.collect
url: https://docs.kaltura.com/docs/rich-media-cms-apis/analytics/analytics-events-stats-collect
---

## stats.collect

Server-side event collection via the standard API v3 endpoint. Use this for backend systems, kiosks, set-top boxes, digital signage, and any non-browser playback environment.

```bash
curl -X POST "$KALTURA_SERVICE_URL/service/stats/action/collect" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "event[objectType]=KalturaStatsEvent" \
  -d "event[partnerId]=$KALTURA_PARTNER_ID" \
  -d "event[entryId]=$KALTURA_ENTRY_ID" \
  -d "event[eventType]=3" \
  -d "event[sessionId]=$SESSION_ID" \
  -d "event[eventTimestamp]=$(date +%s)"
```

### Event Type IDs

| ID | Event | Description |
|----|-------|-------------|
| 1 | WIDGET_LOADED | Player widget initialized |
| 2 | MEDIA_LOADED | Media entry loaded |
| 3 | PLAY | Playback started |
| 4 | PLAY_REACHED_25 | 25% of content played |
| 5 | PLAY_REACHED_50 | 50% of content played |
| 6 | PLAY_REACHED_75 | 75% of content played |
| 7 | PLAY_REACHED_100 | 100% of content played |
| 8 | OPEN_EDIT | Edit dialog opened |
| 9 | OPEN_VIRAL | Share dialog opened |
| 10 | OPEN_DOWNLOAD | Download dialog opened |
| 11 | OPEN_REPORT | Report dialog opened |
| 12 | BUFFER_START | Buffering started |
| 13 | BUFFER_END | Buffering ended |
| 14 | OPEN_FULL_SCREEN | Fullscreen activated |
| 15 | CLOSE_FULL_SCREEN | Fullscreen deactivated |
| 16 | REPLAY | Content replayed |
| 17 | SEEK | User seeked |
| 18 | OPEN_UPLOAD | Upload dialog opened |
| 19 | SAVE_PUBLISH | Publish action completed |
| 20 | CLOSE_EDITOR | Editor closed |
| 21 | PRE_BUMPER_PLAYED | Pre-roll bumper played |
| 22 | POST_BUMPER_PLAYED | Post-roll bumper played |
| 23 | BUMPER_CLICKED | Bumper ad clicked |
| 24 | PREROLL_STARTED | Pre-roll ad started |
| 25 | MIDROLL_STARTED | Mid-roll ad started |
| 26 | POSTROLL_STARTED | Post-roll ad started |
| 27 | OVERLAY_STARTED | Overlay ad started |
| 28 | PREROLL_CLICKED | Pre-roll ad clicked |
| 29 | MIDROLL_CLICKED | Mid-roll ad clicked |
| 30 | POSTROLL_CLICKED | Post-roll ad clicked |
| 31 | OVERLAY_CLICKED | Overlay ad clicked |
| 32 | PREROLL_25 | Pre-roll ad 25% |
| 33 | PREROLL_50 | Pre-roll ad 50% |
| 34 | PREROLL_75 | Pre-roll ad 75% |
| 35 | MIDROLL_25 | Mid-roll ad 25% |
| 36 | MIDROLL_50 | Mid-roll ad 50% |
| 37 | MIDROLL_75 | Mid-roll ad 75% |
| 38 | POSTROLL_25 | Post-roll ad 25% |
| 39 | POSTROLL_50 | Post-roll ad 50% |
| 40 | POSTROLL_75 | Post-roll ad 75% |

### Required Fields

| Field | Type | Description |
|-------|------|-------------|
| `event[partnerId]` | int | Your Kaltura partner ID |
| `event[entryId]` | string | The media entry ID being played |
| `event[eventType]` | int | Event type ID (see table above) |
| `event[sessionId]` | string | Analytics session identifier (unique per playback session) |
| `event[eventTimestamp]` | int | Unix timestamp in seconds |

### Optional Fields

| Field | Type | Description |
|-------|------|-------------|
| `event[uiconfId]` | int | Player configuration ID |
| `event[clientVer]` | string | Client version string |
| `event[referrer]` | string | Page URL where playback occurred |
| `event[currentPoint]` | int | Current playback position in seconds |
| `event[duration]` | int | Total content duration in seconds |
| `event[seek]` | boolean | Whether user is seeking |

### Reporting a Complete Playback Session

Fire events in lifecycle order for a complete session:

```bash
SESSION_ID="analytics_$(date +%s)_$$"

# Widget loaded
curl -s -X POST "$KALTURA_SERVICE_URL/service/stats/action/collect" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "event[objectType]=KalturaStatsEvent" \
  -d "event[partnerId]=$KALTURA_PARTNER_ID" \
  -d "event[entryId]=$KALTURA_ENTRY_ID" \
  -d "event[eventType]=1" \
  -d "event[sessionId]=$SESSION_ID" \
  -d "event[eventTimestamp]=$(date +%s)"

# Media loaded
curl -s -X POST "$KALTURA_SERVICE_URL/service/stats/action/collect" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "event[objectType]=KalturaStatsEvent" \
  -d "event[partnerId]=$KALTURA_PARTNER_ID" \
  -d "event[entryId]=$KALTURA_ENTRY_ID" \
  -d "event[eventType]=2" \
  -d "event[sessionId]=$SESSION_ID" \
  -d "event[eventTimestamp]=$(date +%s)"

# Play
curl -s -X POST "$KALTURA_SERVICE_URL/service/stats/action/collect" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "event[objectType]=KalturaStatsEvent" \
  -d "event[partnerId]=$KALTURA_PARTNER_ID" \
  -d "event[entryId]=$KALTURA_ENTRY_ID" \
  -d "event[eventType]=3" \
  -d "event[sessionId]=$SESSION_ID" \
  -d "event[eventTimestamp]=$(date +%s)"

# Quartiles (25%, 50%, 75%, 100%)
for EVENT_TYPE in 4 5 6 7; do
  curl -s -X POST "$KALTURA_SERVICE_URL/service/stats/action/collect" \
    -d "ks=$KALTURA_KS" \
  -d "format=1" \
    -d "event[objectType]=KalturaStatsEvent" \
    -d "event[partnerId]=$KALTURA_PARTNER_ID" \
    -d "event[entryId]=$KALTURA_ENTRY_ID" \
    -d "event[eventType]=$EVENT_TYPE" \
    -d "event[sessionId]=$SESSION_ID" \
    -d "event[eventTimestamp]=$(date +%s)"
done
```
