---
title: "Show Media Traffic Breakdown"
method: GET
path: "/analytics/medias/{mediaId}/traffic"
tags: ["Analytics:Media"]
---

# Show Media Traffic Breakdown

`GET /analytics/medias/{mediaId}/traffic`

## Request

- Base URL: `https://api.wistia.com/modern`
- URL: `https://api.wistia.com/modern/analytics/medias/{mediaId}/traffic`
- Auth: HTTP bearer

Retrieve traffic breakdown analytics for a video, grouped by a specified dimension
such as UTM campaign, UTM source, UTM medium, referrer domain, or viewer screen size.

The date range between `start_date` and `end_date` must not exceed 2 years.


## Requires api token with one of the following permissions
```
Read detailed stats
```

Tokens with the "Act with a team member's permissions" permission
(`all:delegate_to_contact_permissions` scope) can also be used. Requests
made with such a token are authorized using the permissions of the
contact assigned to the token.

An [expiring access token](https://docs.wistia.com/reference/post_expiring-token)
created with the `all:delegate_to_contact_permissions` scope and an
authorization granting the `view-stats` permission on this media can also
be used.

## Path parameters

- `mediaId` string, required: The hashed ID of the media (e.g., "4d23503f70")

## Query parameters

- `start_date` string, date, required
- `end_date` string, date, required
- `group_by` 'utm_campaign' | 'utm_source' | 'utm_medium' | 'referrer_domain' | 'viewer_screen_size', required
- `sort_by` 'plays' | 'loads' | 'engagement_rate'
- `sort_direction` 'asc' | 'desc'
- `per_page` integer

## Headers

- `X-Wistia-API-Version` string, required

## Response `200`

Success response with traffic breakdown data.

- object[]
  - `utm_campaign` string, nullable: The UTM campaign value (present when group_by is utm_campaign).
  - `utm_source` string, nullable: The UTM source value (present when group_by is utm_source).
  - `utm_medium` string, nullable: The UTM medium value (present when group_by is utm_medium).
  - `referrer_domain` string, nullable: The referrer domain (present when group_by is referrer_domain).
  - `viewer_screen_size` string, nullable: The viewer screen size (present when group_by is viewer_screen_size).
  - `loads` integer, nullable: The number of video loads for this group.
  - `plays` integer, nullable: The number of video plays for this group.
  - `engagement_rate` number, float, nullable: The average engagement rate for this group (between 0 and 1).

## Other responses

- `400`: Bad request
- `401`: Unauthorized, invalid or missing token
- `403`: Forbidden, token is valid but account does not have access to feature
- `404`: Media not found or does not belong to account
- `500`: Internal server error
- `503`: Analytics service is temporarily unavailable

---

[API](https://skmtc.dev/wistia/apis/analytics-api.md) - [All operations](https://skmtc.dev/wistia/apis/analytics-api/llms.txt) - [OpenAPI document](https://skmtc.dev/wistia/apis/analytics-api/revisions/51b37cd3d37c?raw)
