---
title: "Show Account Top Content"
method: GET
path: "/analytics/account/top_content"
tags: ["Analytics:Account"]
---

# Show Account Top Content

`GET /analytics/account/top_content`

## Request

- Base URL: `https://api.wistia.com/modern`
- URL: `https://api.wistia.com/modern/analytics/account/top_content`
- Auth: HTTP bearer

Rank the account's content by a chosen metric over a date range. Returns the top
media, channels, or folders (controlled by `group_by`) with their analytics,
answering questions like "what were my most-played videos last month?".

Optionally pass `hashed_ids` to scope the ranking to a specific set of media
instead of the whole account — useful for fetching analytics for a known list
of videos, still sorted by `sort_by`.

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
`account` authorization granting the `view-stats` permission can also
be used.

## Query parameters

- `start_date` string, date, required
- `end_date` string, date, required
- `group_by` 'media' | 'channel' | 'project'
- `hashed_ids[]` string[]
- `sort_by` 'plays' | 'loads' | 'play_rate' | 'engagement_rate' | 'played_time' | 'unique_visitors'
- `sort_direction` 'asc' | 'desc'
- `per_page` integer

## Headers

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

## Response `200`

Success response with ranked content analytics. Entry shape depends on `group_by`.

- union[]
  - union
    - object
      - `plays` integer, nullable: The total number of plays.
      - `play_rate` number, float, nullable: The percentage of loads that resulted in a play (between 0 and 1).
      - `engagement_rate` number, float, nullable: The average percentage of the content watched (between 0 and 1).
      - `unique_visitors` integer, nullable: The number of unique visitors.
      - `played_time` number, float, nullable: Total time spent watching in seconds.
      - `media_name` string, nullable: The name of the media.
      - `media_hashed_id` string, nullable, required: The hashed ID of the media.
      - `media_type` string, nullable: The type of the media (e.g., "Video", "Audio").
      - `media_thumbnail_url` string, nullable: URL of the media's thumbnail image.
      - `media_duration` number, float, nullable: The duration of the media in seconds.
      - `media_uploaded_at` string, nullable: When the media was uploaded, in ISO 8601 format.
      - `media_deleted_at` string, nullable: When the media was deleted, in ISO 8601 format. Null for media that still exist.
      - `unique_loads` integer, nullable: The number of unique video loads.
      - `unique_plays` integer, nullable: The number of unique video plays.
      - `form_conversions` integer, nullable: The number of form submissions.
    - object
      - `plays` integer, nullable: The total number of plays.
      - `play_rate` number, float, nullable: The percentage of loads that resulted in a play (between 0 and 1).
      - `engagement_rate` number, float, nullable: The average percentage of the content watched (between 0 and 1).
      - `unique_visitors` integer, nullable: The number of unique visitors.
      - `played_time` number, float, nullable: Total time spent watching in seconds.
      - `channel_title` string, nullable: The title of the channel.
      - `channel_hashed_id` string, nullable, required: The hashed ID of the channel.
      - `channel_episode_count` integer, nullable: The number of episodes in the channel.
      - `channel_created_at` string, nullable: When the channel was created, in ISO 8601 format.
      - `channel_url` string, nullable: The URL of the channel.
    - object
      - `plays` integer, nullable: The total number of plays.
      - `play_rate` number, float, nullable: The percentage of loads that resulted in a play (between 0 and 1).
      - `engagement_rate` number, float, nullable: The average percentage of the content watched (between 0 and 1).
      - `unique_visitors` integer, nullable: The number of unique visitors.
      - `played_time` number, float, nullable: Total time spent watching in seconds.
      - `project_name` string, nullable: The name of the folder.
      - `project_hashed_id` string, nullable, required: The hashed ID of the folder.
      - `project_created_at` string, nullable: When the folder was created, in ISO 8601 format.
      - `project_url` string, nullable: The URL of the folder.
      - `project_video_count` integer, nullable: The number of videos in the folder.

## 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`: One or more of the requested hashed_ids were not found or do not belong to the 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)
