> ## Documentation Index
> Fetch the complete documentation index at: https://gcore.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Live unique viewers via CDN

> Calculates time series of unique viewers of Live streams via CDN.

The statistics are taken from the data of CDN and work regardless of which player the views were made with.


Works similar to the method ```/statistics/cdn/uniqs```. But this allows you to break down data with the specified granularity: minutes, hours, days.


Based on this method, a graph of unique views in the Customer Portal is built.

![Unique viewers via CDN in Customer Portal](https://demo-files.gvideo.io/apidocs/cdn_unique_viewers.png)



## OpenAPI

````yaml /api-reference/services_documented/streaming_api.yaml get /streaming/statistics/stream/viewers
openapi: 3.1.0
info:
  title: Gcore OpenAPI – Streaming API
  description: >-
    This OpenAPI is an aggregated OpenAPI specification that unifies all Gcore
    products into a single file. It covers Cloud, CDN, DNS, WAAP, DDoS
    Protection, Object Storage, Streaming, and FastEdge services.
  version: '2026-05-15T06:37:28.230198+00:00'
servers:
  - url: https://api.gcore.com
security:
  - APIKey: []
tags:
  - name: AI
    x-displayName: AI
  - name: Broadcasts
    x-displayName: Broadcasts
  - name: Directories
    x-displayName: Directories
  - name: Overlays
    x-displayName: Overlays
  - name: Players
    x-displayName: Players
  - name: Playlists
    x-displayName: Playlists
  - name: QualitySets
    x-displayName: QualitySets
  - name: Restreams
    x-displayName: Restreams
  - name: Streaming Statistics
    x-displayName: Statistics
  - name: Streams
    x-displayName: Streams
  - name: Subtitles
    x-displayName: Subtitles
  - name: Videos
    x-displayName: Videos
paths:
  /streaming/statistics/stream/viewers:
    get:
      tags:
        - Streaming Statistics
      summary: Get Live unique viewers via CDN
      description: >-
        Calculates time series of unique viewers of Live streams via CDN.


        The statistics are taken from the data of CDN and work regardless of
        which player the views were made with.



        Works similar to the method ```/statistics/cdn/uniqs```. But this allows
        you to break down data with the specified granularity: minutes, hours,
        days.



        Based on this method, a graph of unique views in the Customer Portal is
        built.


        ![Unique viewers via CDN in Customer
        Portal](https://demo-files.gvideo.io/apidocs/cdn_unique_viewers.png)
      operationId: getStreamViewersChart
      parameters:
        - name: from
          in: query
          required: true
          description: Start of time frame. Format is date time in ISO 8601
          schema:
            type: string
          example: '2024-07-01T00:00:00Z'
        - name: to
          in: query
          required: true
          description: End of time frame. Format is date time in ISO 8601
          schema:
            type: string
          example: '2024-07-31T23:59:59Z'
        - name: stream_id
          in: query
          required: false
          description: Filter by "stream_id"
          schema:
            type: integer
        - name: client_user_id
          in: query
          required: false
          description: Filter by "client_user_id"
          schema:
            type: integer
        - name: granularity
          in: query
          description: Specifies the time interval for grouping data
          schema:
            type: string
            default: 1h
            enum:
              - 1m
              - 5m
              - 15m
              - 1h
              - 1d
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/stream_stat'
        '400':
          $ref: '#/components/responses/error_bad_request'
        '500':
          $ref: '#/components/responses/error_internal_server'
      x-codeSamples:
        - lang: Python
          source: |-
            import os
            from gcore import Gcore

            client = Gcore(
                api_key=os.environ.get("GCORE_API_KEY"),  # This is the default and can be omitted
            )
            response = client.streaming.statistics.get_live_unique_viewers(
                from_="from",
                to="to",
            )
            print(response)
        - lang: Go
          source: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/G-Core/gcore-go\"\n\t\"github.com/G-Core/gcore-go/option\"\n\t\"github.com/G-Core/gcore-go/streaming\"\n)\n\nfunc main() {\n\tclient := gcore.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tresponse, err := client.Streaming.Statistics.GetLiveUniqueViewers(context.TODO(), streaming.StatisticGetLiveUniqueViewersParams{\n\t\tFrom: \"from\",\n\t\tTo:   \"to\",\n\t})\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", response)\n}\n"
components:
  schemas:
    stream_stat:
      type: array
      items:
        type: object
        required:
          - client
          - metrics
        properties:
          client:
            type: integer
          metrics:
            type: object
            required:
              - streams
            properties:
              streams:
                type: array
                items:
                  type: integer
                  format: int64
                  description: >-
                    first value in array is timestamp, second is count of
                    transcoding minutes
      example:
        - client: 123
          metrics:
            streams:
              - - 1640995210
                - 10
              - - 1640995310
                - 10
              - - 1640995410
                - 10
              - - 1640995510
                - 20
              - - 1640995610
                - 20
    error_common:
      required:
        - data
        - errors
      type: object
      properties:
        data:
          type: array
          items:
            type: string
        errors:
          type: array
          items:
            type: string
  responses:
    error_bad_request:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error_common'
          examples:
            missingParam:
              summary: Missing query param
              value:
                data: []
                errors:
                  - 'from: query param is not set'
    error_internal_server:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error_common'
          examples:
            internalServerError:
              summary: Internal Server Error
              value:
                data: []
                errors:
                  - internal server error
  securitySchemes:
    APIKey:
      description: >-
        API key for authentication. Make sure to include the word `apikey`,
        followed by a single space and then your token.

        Example: `apikey 1234$abcdef`
      type: apiKey
      in: header
      name: Authorization

````