> ## 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.

# Aggregated statistics

> Get aggregated CDN resources statistics.

Request URL parameters should be added as a query string after the endpoint.

Aggregated data does not include data for the last two hours.



## OpenAPI

````yaml /api-reference/services_documented/cdn_api.yaml get /cdn/statistics/aggregate/stats
openapi: 3.1.0
info:
  title: Gcore OpenAPI – CDN 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-11T15:10:30.328297+00:00'
servers:
  - url: https://api.gcore.com
security:
  - APIKey: []
tags:
  - name: CDN service
    description: Information about the current state of the CDN service in your account.
    x-displayName: CDN service
  - name: CDN resources
    x-displayName: CDN resources
  - name: Origins
    x-displayName: Origins
  - name: Rules
    description: >-
      Rules allow to set up custom settings for certain file types or paths.

      By default, the rule inherits all options values from the related CDN
      resource.


      Each option in rule settings can be in one of the following states:

      - **Inherit** - Option is not added to the rule. Option inherits its value
      from the CDN resource settings. In this case, the option value is
      **null**.

      - **ON** - Option is added to the rule and enabled. Option values
      configured in the rule will override values from the CDN resource
      settings.

      - **OFF** - Option is added to the rule and disabled. Option will be
      turned off.
    x-displayName: Rules
  - name: Rule templates
    x-displayName: Rule templates
  - name: SSL certificates
    x-displayName: SSL certificates
  - name: Let's Encrypt certificates
    x-displayName: Let's Encrypt certificates
  - name: CA certificates
    x-displayName: CA certificates
  - name: CDN activity logs
    description: |-
      Get the history of users requests to CDN.
      It contains requests made both via the API and via the control panel.

      The following methods are not tracked in the activity logs:
      - HEAD
      - OPTIONS
    x-displayName: CDN activity logs
  - name: Log viewer
    description: >-
      Log viewer provides you with general information about CDN operation. This
      information does not contain all possible

      sets of fields and restricted by time. To receive full data, use Logs
      Uploader.
    x-displayName: Log viewer
  - name: Logs uploader
    description: >-
      Logs uploader allows you to upload logs with desired format to desired
      storages.


      Consists of three main parts:

      - **Policies** - rules that define which logs are uploaded and how they
      are uploaded.

      - **Targets** - destinations where logs are uploaded.

      - **Configs** - combinations of logs uploader policies, targets and
      resources to which they are applied.
    x-displayName: Logs uploader
  - name: Tools
    x-displayName: Tools
  - name: CDN Statistics
    description: >-
      Consumption statistics is updated in near real-time as a standard
      practice.

      However, the frequency of updates can vary, but they are typically
      available within a 24-hour period.

      Exceptions, such as maintenance periods, may delay data beyond 24 hours
      until servers resume and fill in the missing statistics.
    x-displayName: Statistics
  - name: Advanced analytics
    description: >-
      Advanced analytics allows to get statistics about unique visitors,
      traffic, and requests for countries, directories, browsers, devices, and
      operation systems for up to 90 days starting from today.


      Advanced analytics API is based on the [GraphQL
      framework](https://graphql.org/).


      Advanced analytics API has one single endpoint:

       https://api.gcore.com/cdn/advanced/v2/query

      You can pass the query parameters as a JSON object in the payload of a
      POST request to this endpoint.

      You can use curl to make requests to the Advanced analytics API.
      Alternatively, you can use a GraphQL client

      to construct queries and pass requests to the Advanced analytics API.


      You can write queries in GraphQL much like in SQL: specify the data set
      (CDN resource), the metrics

      to retrieve (such as unique visitors and traffic), and filter or group by
      dimensions (for example, a country).
    x-displayName: Advanced analytics
  - name: Origin shielding
    x-displayName: Origin shielding
  - name: IP addresses list
    x-displayName: IP addresses list
  - name: Purge history
    x-displayName: Purge history
paths:
  /cdn/statistics/aggregate/stats:
    get:
      tags:
        - CDN Statistics
      summary: Aggregated statistics
      description: >-
        Get aggregated CDN resources statistics.


        Request URL parameters should be added as a query string after the
        endpoint.


        Aggregated data does not include data for the last two hours.
      operationId: aggregated-statistics
      parameters:
        - $ref: '#/components/parameters/service'
        - $ref: '#/components/parameters/query-from'
        - $ref: '#/components/parameters/query-to'
        - $ref: '#/components/parameters/metrics_aggregated'
        - $ref: '#/components/parameters/group_by'
        - $ref: '#/components/parameters/regions'
        - $ref: '#/components/parameters/countries'
        - $ref: '#/components/parameters/resource'
        - $ref: '#/components/parameters/flat'
      responses:
        '200':
          description: Successful.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAggregatedCDNStatisticsResponse'
        '204':
          description: There is no data for the requested time period.
        '400':
          description: Bad Request. Required parameter is missing.
        '401':
          description: >-
            Unauthorized. Provided credentials are invalid or your API token has
            expired.
        '403':
          description: Forbidden. Access denied. You do not have enough rights.
        '500':
          description: Server errors. Something is wrong on our side.
      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
            )

            resource_aggregated_stats =
            client.cdn.statistics.get_resource_usage_aggregated(
                from_="from",
                metrics="metrics",
                service="service",
                to="to",
            )

            print(resource_aggregated_stats.max_bandwidth)
        - 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/cdn\"\n\t\"github.com/G-Core/gcore-go/option\"\n)\n\nfunc main() {\n\tclient := gcore.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tresourceAggregatedStats, err := client.CDN.Statistics.GetResourceUsageAggregated(context.TODO(), cdn.StatisticGetResourceUsageAggregatedParams{\n\t\tFrom:    \"from\",\n\t\tMetrics: \"metrics\",\n\t\tService: \"service\",\n\t\tTo:      \"to\",\n\t})\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", resourceAggregatedStats.MaxBandwidth)\n}\n"
components:
  parameters:
    service:
      in: query
      name: service
      schema:
        type: string
      required: true
      description: |-
        Service name.

        Possible value:
        - CDN
    query-from:
      in: query
      name: from
      schema:
        type: string
      required: true
      description: Beginning of the requested time period (ISO 8601/RFC 3339 format, UTC.)
    query-to:
      in: query
      name: to
      schema:
        type: string
      required: true
      description: End of the requested time period (ISO 8601/RFC 3339 format, UTC.)
    metrics_aggregated:
      in: query
      name: metrics
      schema:
        type: string
      required: true
      description: >-
        Types of statistics data.


        Possible values:

        - **`upstream_bytes`** – Traffic in bytes from an origin server to CDN
        servers or to origin shielding when used.

        - **`sent_bytes`** – Traffic in bytes from CDN servers to clients.

        - **`shield_bytes`** – Traffic in bytes from origin shielding to CDN
        servers.

        - **`backblaze_bytes`** - Traffic in bytes from Backblaze origin.

        - **`total_bytes`** – `shield_bytes`, `upstream_bytes` and `sent_bytes`
        combined.

        - **`cdn_bytes`** – `sent_bytes` and `shield_bytes` combined.

        - **requests** – Number of requests to edge servers.

        - **`responses_2xx`** – Number of 2xx response codes.

        - **`responses_3xx`** – Number of 3xx response codes.

        - **`responses_4xx`** – Number of 4xx response codes.

        - **`responses_5xx`** – Number of 5xx response codes.

        - **`responses_hit`** – Number of responses with the header Cache: HIT.

        - **`responses_miss`** – Number of responses with the header Cache:
        MISS.

        - **`response_types`** – Statistics by content type. It returns a number
        of responses for content with different MIME types.

        - **`cache_hit_traffic_ratio`** – Formula: 1 - `upstream_bytes` /
        `sent_bytes`. We deduct the non-cached traffic from the total traffic
        amount.

        - **`cache_hit_requests_ratio`** – Formula: `responses_hit` / requests.
        The share of sending cached content.

        - **`shield_traffic_ratio`** – Formula: (`shield_bytes` -
        `upstream_bytes`) / `shield_bytes`. The efficiency of the Origin
        Shielding: how much more traffic is sent from the Origin Shielding than
        from the origin.

        - **`image_processed`** - Number of images transformed on the Image
        optimization service.

        - **`request_time`** - Time elapsed between the first bytes of a request
        were processed and logging after the last bytes were sent to a user.

        - **`upstream_response_time`** - Number of milliseconds it took to
        receive a response from an origin. If upstream `response_time_` contains
        several indications for one request (in case of more than 1 origin), we
        summarize them. In case of aggregating several queries, the average of
        this amount is calculated.

        - **`95_percentile`** - Represents the 95th percentile of network
        bandwidth usage in bytes per second. This means that 95% of the time,
        the network resource usage was below this value.

        - **`max_bandwidth`** - The maximum network bandwidth that was used
        during the selected time represented in bytes per second.

        - **`min_bandwidth`** - The minimum network bandwidth that was used
        during the selected time represented in bytes per second.


        Metrics **`upstream_response_time`** and **`request_time`** should be
        requested separately from other metrics
    group_by:
      in: query
      name: group_by
      schema:
        type: string
      description: >-
        Output data grouping.


        Possible values:

        - **resource** – Data is grouped by CDN resources IDs.

        - **region** – Data is grouped by regions of CDN edge servers.

        - **country** – Data is grouped by countries of CDN edge servers.

        - **vhost** – Data is grouped by resources CNAMEs.

        - **`client_country`** - Data is grouped by countries, based on
        end-users' location.


        To request multiple values, use:

        - &`group_by`=region&`group_by`=resource
    regions:
      in: query
      name: regions
      schema:
        type: string
      description: |-
        Regions for which data is displayed.

        Possible values:
        - **na** – North America
        - **eu** – Europe
        - **cis** – Commonwealth of Independent States
        - **asia** – Asia
        - **au** – Australia
        - **latam** – Latin America
        - **me** – Middle East
        - **africa** - Africa
        - **sa** - South America
    countries:
      in: query
      name: countries
      schema:
        type: string
      description: >-
        Names of countries for which data should be displayed.

        English short name from [ISO 3166 standard][1] without the definite
        article ("the") should be used.

         [1]: https://www.iso.org/obp/ui/#search/code/

        To request multiple values, use:

        - &countries=france&countries=denmark
    resource:
      in: query
      name: resource
      schema:
        type: integer
      description: >-
        CDN resources IDs by that statistics data is grouped.


        To request multiple values, use:

        - &resource=1&resource=2


        If CDN resource ID is not specified, data related to all CDN resources
        is returned.
    flat:
      in: query
      name: flat
      schema:
        type: boolean
      description: |-
        The way the parameters are arranged in the response.

        Possible values:
        - **true** – Flat structure is used.
        - **false** – Embedded structure is used (default.)
  schemas:
    GetAggregatedCDNStatisticsResponse:
      type: object
      properties:
        resource:
          type: object
          description: Resources IDs by which statistics data is grouped.
        1 (example):
          type: object
          description: CDN resource ID for which statistics data is shown.
        region:
          type: object
          description: Regions by which statistics data is grouped.
        cis (example):
          type: object
          description: Region by which statistics data is grouped.
        metrics:
          type: object
          description: Statistics parameters.
        upstream_bytes:
          type: integer
          description: Traffic in bytes from the upstream to CDN servers.
        sent_bytes:
          type: integer
          description: Traffic in bytes from CDN servers to clients.
        total_bytes:
          type: integer
          description: Upstream bytes and `sent_bytes` combined.
        backblaze_bytes:
          type: integer
          description: Traffic in bytes from Backblaze origin.
        requests:
          type: integer
          description: Number of requests to edge servers.
        responses_2xx:
          type: integer
          description: Number of 2xx response codes.
        responses_3xx:
          type: integer
          description: Number of 3xx response codes.
        responses_4xx:
          type: integer
          description: Number of 4xx response codes.
        responses_5xx:
          type: integer
          description: Number of 5xx response codes.
        responses_hit:
          type: integer
          description: 'Number of responses with the header Cache: HIT.'
        responses_miss:
          type: integer
          description: 'Number of responses with the header Cache: MISS.'
        response_types:
          type: object
          description: >-
            Statistics by content type. It returns a number of responses for
            content with different MIME types.
        cache_hit_traffic_ratio:
          type: integer
          description: >-
            Formula: 1 - `upstream_bytes` / `sent_bytes`. We deduct the
            non-cached traffic from the total traffic amount
        95_percentile:
          type: integer
          description: 95 percentile bandwidth value
        min_bandwidth:
          type: integer
          description: Minimum bandwidth
        max_bandwidth:
          type: integer
          description: Maximum bandwidth
      example:
        resource:
          '1':
            region:
              cis:
                metrics:
                  95_percentile: 20023536
                  cache_hit_traffic_ratio: 0.9958449964158854
                  max_bandwidth: 34794756
                  min_bandwidth: 379257
                  requests: 21575631
                  responses_2xx: 21095299
                  responses_3xx: 278225
                  responses_4xx: 202026
                  responses_5xx: 81
                  sent_bytes: 22014089592053
                  total_bytes: 22105558213209
                  backblaze_bytes: 2105658213209
                  upstream_bytes: 91468621156
                  responses_hit: 63368252
                  responses_miss: 866237
                  response_types:
                    '-': 378412
                    application/json: 173054
                    application/vnd: 7224
                    application/zip: 8420
                    image/gif: 1349
                    image/jpeg: 2775
                    image/png: 7536543
                    image/webp: 746884
              eu:
                metrics:
                  95_percentile: 14324356
                  cache_hit_traffic_ratio: 0.9852247660029627
                  max_bandwidth: 22215199
                  min_bandwidth: 299608
                  requests: 64234595
                  responses_2xx: 62616980
                  responses_3xx: 1196666
                  responses_4xx: 420718
                  responses_5xx: 216
                  sent_bytes: 16552226067556
                  backblaze_bytes: 2105658213209
                  total_bytes: 16796789080876
                  upstream_bytes: 244563013320
                  responses_hit: 21235829
                  responses_miss: 339566
                  response_types:
                    '-': 478532
                    application/json: 172084
                    application/vnd: 3324
                    application/zip: 8100
                    image/gif: 1379
                    image/jpeg: 1975
                    image/png: 7131343
                    image/webp: 643574
  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

````