> ## 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 watching duration via CDN

> Calculates a time series of live streams watching duration in minutes. Views of only those streams that meet the specified filters are summed up.


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


Please note that the result for each time interval is in minutes, it is rounded to the nearest upper integer. You cannot use the sum of all intervals as the total watch time value; instead, use the /total method.



## OpenAPI

````yaml /api-reference/services_documented/streaming_api.yaml get /streaming/statistics/stream/watching_duration
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/watching_duration:
    get:
      tags:
        - Streaming Statistics
      summary: Get Live watching duration via CDN
      description: >-
        Calculates a time series of live streams watching duration in minutes.
        Views of only those streams that meet the specified filters are summed
        up.



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



        Please note that the result for each time interval is in minutes, it is
        rounded to the nearest upper integer. You cannot use the sum of all
        intervals as the total watch time value; instead, use the /total method.
      operationId: getStreamWatchingDurationChart
      parameters:
        - name: from
          in: query
          required: true
          description: >-
            Start of the time period for counting minutes of watching. Format is
            date time in ISO 8601.
          schema:
            type: string
          example: '2024-05-01T00:00:00Z'
        - name: to
          in: query
          required: false
          description: >-
            End of time frame. Datetime in ISO 8601 format. If omitted, then the
            current time is taken
          schema:
            type: string
          example: '2024-05-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 field "client_user_id"
          schema:
            type: integer
        - name: granularity
          in: query
          description: Data is grouped by the specified time interval
          schema:
            type: string
            default: 1h
            enum:
              - 1m
              - 5m
              - 15m
              - 1h
              - 1d
              - 1mo
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/streamstat'
        '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
            )
            stream_series = client.streaming.statistics.get_live_watch_time_cdn(
                from_="from",
            )
            print(stream_series)
        - 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\tstreamSeries, err := client.Streaming.Statistics.GetLiveWatchTimeCDN(context.TODO(), streaming.StatisticGetLiveWatchTimeCDNParams{\n\t\tFrom: \"from\",\n\t})\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", streamSeries)\n}\n"
components:
  schemas:
    streamstat:
      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

````