> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://fastpix.com/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://fastpix.com/docs/_mcp/server.

# List video views

GET https://api.fastpix.com/v1/data/viewlist

Retrieves a list of video views that fall within the specified filters and have been completed within a defined timespan. It lets you to analyse viewer interactions with your video content effectively.

#### How it works

1. Send a `GET` request to this endpoint with the desired query parameters.

2. Specify the timespan for which you want to retrieve the video views using the `timespan[]` parameter.

3. Filter the views based on dimensions such as browser, device, video title, viewer ID, etc., using the `filterby[]` parameter. Get the dimensions by calling list the dimensions endpoint.

4. Paginate the results using the `limit` and `offset` parameters.

5. You can also filter by `viewerId`, `errorCode`, `orderBy` a specific field, and `sortOrder` in ascending or descending order.

6. You receive a response containing the list of video views matching the specified criteria.

Each view in the response includes a unique `viewId`. You can use this `viewId` with the  Get Video View Details endpoint to retrieve more detailed information about that specific view.

#### Example

If you manage a video streaming service and want to analyze content performance across devices and browsers. By calling the List Video Views endpoint with filters such as `browser_name` and `device_type`, you can identify which platforms are most popular with your audience. This information helps optimize content for widely used platforms and troubleshoot playback issues on less common devices.

Related guide: Audience metrics, Views dashboard

Reference: https://fastpix.com/docs/video-data-api/views/list-video-views

## Authentication

- `Authorization` header (basic auth, required) — FastPix APIs are secured with Basic Authentication. Use your Access Token ID as the username and Secret Key as the password in the Authorization header of each API request. * Username: Access Token ID * Password: Secret Key Activate your FastPix account to generate your API credentials. See the guide here

## Request

### Query parameters

- `timespan[]` (enum, optional) — This parameter specifies the time span between which the video views list must be retrieved by. You can provide either from and to unix epoch timestamps or time duration. The scope of duration is between 60 minutes to 30 days. **Accepted formats are:** array of epoch timestamps for example `timespan[]=1498867200&timespan[]=1498953600` duration string for example `timespan[]=24:hours` or `timespan[]=7:days`
  - Allowed values: `60:minutes`, `6:hours`, `24:hours`, `3:days`, `7:days`, `30:days`
- `filterby[]` (string, optional) — Pass the dimensions and their corresponding values you want to filter the views by. For excluding the values in the filter we can pass "!" before the filter value. The list of filters can be obtained from list of dimensions endpoint. Example Values : [ browser_name:Chrome , os_name:macOS , !device_name:Galaxy ]
- `limit` (integer, optional, default: 10) — Pass the limit to display only the rows specified by the value.
- `offset` (integer, optional, default: 1) — Pass the offset value to indicate the page number.
- `viewerId` (string, optional) — Pass the viewer_id to filter the list of views. This value can be manually set during integration or generated by FastPix. When set manually it can be a string of aplha numeric values of any length.
- `errorCode` (string, optional) — Pass the error code to filter the list of views. The possible values of error code can be fetched from list of errors end point.
- `orderBy` (string, optional, default: view_end) — Pass this value to sort the view list by.
- `sortOrder` (string, optional, default: asc) — The order direction to sort the view list by.

## Response

### 200

Get the list of Views

- `success` (boolean, optional) — Shows the request status. Returns true for success and false for failure.
- `data` (list of ViewsList, optional) — Displays the result of the request.
- `pagination` (DataPagination, optional) — Pagination organizes content into pages for better readability and navigation.
- `timespan` (list of integer, optional) — The timespan from and to details displayed in the form of unix epoch timestamps.

## Types

### ViewsList

- `viewId` (string, optional) — The unique identifier for the viewing session of the user.
- `operatingSystem` (string, optional, nullable) — Operating System signifies the software platform utilized by the viewer
- `application` (string, optional, nullable) — The browser name of the viewer.
- `viewStartTime` (string, optional, nullable) — The start timestamp of the video view.
- `viewEndTime` (string, optional, nullable) — The end timestamp of the video view.
- `videoTitle` (string, optional, nullable) — The title of the Video.
- `errorCode` (string, optional, nullable) — The code which represents specific issues or failures that occur during playback. These can be implementation specific.
- `errorMessage` (string, optional, nullable) — The notifications or messages that inform users or developers about issues or failures that have occurred during the playback representing error codes.
- `errorId` (string, optional, nullable) — The unique identifier for the error that occurred during playback.
- `country` (string, optional, nullable) — Country of the viewer.
- `viewWatchTime` (double, optional, nullable) — The watch time represents the time spent watching the video including staruptime, playback time ,buffering time.
- `QoeScore` (double, optional, nullable) — The viewer experience encapsulated in the form of score while watching the video.

### DataPagination

Pagination organizes content into pages for better readability and navigation.

- `totalRecords` (integer, optional) — The total number of records retrieved within the timespan.
- `currentOffset` (integer, optional) — The current offset value. Default: 1
- `offsetCount` (integer, optional) — The total number of offsets based on limit.

## Examples

**Response**

```json
{
  "success": true,
  "data": [
    {
      "viewId": "92752c49-1bce-4cf8-bea4-5c2c2ac7575d",
      "operatingSystem": "MacOS",
      "application": "Chrome",
      "viewStartTime": "2024-04-15T04:43:44",
      "viewEndTime": "2024-04-15T04:44:05",
      "videoTitle": "Champion Engagement Model: Best practices for identifying and engaging your champion",
      "errorCode": null,
      "errorMessage": null,
      "errorId": null,
      "country": "IN",
      "viewWatchTime": 10016,
      "QoeScore": 0.955924359113425
    },
    {
      "viewId": "aa3f20e4-6065-4c7c-aed5-c7f8d127bcba",
      "operatingSystem": "MacOS",
      "application": "Chrome",
      "viewStartTime": "2024-04-15T11:31:48",
      "viewEndTime": "2024-04-15T11:32:30",
      "videoTitle": "How to reduce time-to-value for your customers",
      "errorCode": null,
      "errorMessage": null,
      "errorId": null,
      "country": "IN",
      "viewWatchTime": 31926,
      "QoeScore": 0.958520302068513
    },
    {
      "viewId": "d7e6929a-9b7f-4f88-a8eb-033fb9e6dc6d",
      "operatingSystem": "MacOS",
      "application": "Chrome",
      "viewStartTime": "2024-04-15T20:34:42",
      "viewEndTime": "2024-04-15T20:35:00",
      "videoTitle": "Implementing projects the ISRO way",
      "errorCode": null,
      "errorMessage": null,
      "errorId": null,
      "country": "IN",
      "viewWatchTime": 17562,
      "QoeScore": 0.958648125844009
    },
    {
      "viewId": "eca6400a-73e9-4250-8d0a-cb1cda15fed4",
      "operatingSystem": "MacOS",
      "application": "Chrome",
      "viewStartTime": "2024-04-15T20:38:48",
      "viewEndTime": "2024-04-15T20:39:23",
      "videoTitle": "Designing your onboarding and adoption journey",
      "errorCode": null,
      "errorMessage": null,
      "errorId": null,
      "country": "IN",
      "viewWatchTime": 34823,
      "QoeScore": 0.956301364903515
    },
    {
      "viewId": "687b3a54-6646-4343-bfbe-459742042f54",
      "operatingSystem": "MacOS",
      "application": "Chrome",
      "viewStartTime": "2024-04-16T09:20:34",
      "viewEndTime": "2024-04-16T09:21:24",
      "videoTitle": "How to Approach an Irate Customer With Mimecast\"s Alice Jeffery",
      "errorCode": null,
      "errorMessage": null,
      "errorId": null,
      "country": "IN",
      "viewWatchTime": 13493,
      "QoeScore": 0.472563044953793
    },
    {
      "viewId": "c1464fdb-f3f8-4ccd-8914-94e1851e8459",
      "operatingSystem": "MacOS",
      "application": "Chrome",
      "viewStartTime": "2024-04-16T09:22:42",
      "viewEndTime": "2024-04-16T09:22:45",
      "videoTitle": "How to Approach an Irate Customer With Mimecast\"s Alice Jeffery",
      "errorCode": null,
      "errorMessage": null,
      "errorId": null,
      "country": "IN",
      "viewWatchTime": 1,
      "QoeScore": 0.5
    }
  ],
  "pagination": {
    "totalRecords": 27,
    "currentOffset": 1,
    "offsetCount": 3
  },
  "timespan": [
    1712910924,
    1713515724
  ]
}
```

**SDK Code**

```python
import requests

url = "https://api.fastpix.com/v1/data/viewlist"

response = requests.get(url, auth=("<username>", "<password>"))

print(response.json())
```

```javascript
const url = 'https://api.fastpix.com/v1/data/viewlist';
const credentials = btoa("<username>:<password>");

const options = {method: 'GET', headers: {Authorization: `Basic ${credentials}`}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.fastpix.com/v1/data/viewlist"

	req, _ := http.NewRequest("GET", url, nil)

	req.SetBasicAuth("<username>", "<password>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.fastpix.com/v1/data/viewlist")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request.basic_auth("<username>", "<password>")

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.fastpix.com/v1/data/viewlist")
  .basicAuth("<username>", "<password>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.fastpix.com/v1/data/viewlist', [
  'headers' => [
  ],
    'auth' => ['<username>', '<password>'],
]);

echo $response->getBody();
```

```csharp
using RestSharp;
using RestSharp.Authenticators;

var client = new RestClient("https://api.fastpix.com/v1/data/viewlist");
client.Authenticator = new HttpBasicAuthenticator("<username>", "<password>");
var request = new RestRequest(Method.GET);

IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let credentials = Data("<username>:<password>".utf8).base64EncodedString()

let headers = ["Authorization": "Basic \(credentials)"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.fastpix.com/v1/data/viewlist")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```