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

# Retrieve metrics

> Retrieves metrics related to your Algolia infrastructure, aggregated over a selected time window.

Access to this API is available as part of the [Premium or Elevate plans](https://www.algolia.com/pricing).
You must authenticate requests with the `x-algolia-application-id` and `x-algolia-api-key` headers (using the Monitoring API key).


## OpenAPI

````yaml specs/monitoring.yml get /1/infrastructure/{metric}/period/{period}
openapi: 3.1.0
info:
  title: Algolia Monitoring API
  summary: The Monitoring API lets you check the status of your Algolia infrastructure
  description: >
    The metrics exposed by this API are based on results from external
    monitoring probes checking Algolia’s infrastructure.

    These metrics **reflect the overall infrastructure status and don’t
    represent the performance of the specific APPID** used for authentication.


    ## Base URLs


    Base URL for the Monitoring API:


    - `https://status.algolia.com`


    **All requests must use HTTPS.**


    ## Availability and authentication


    Access to the Infrastructure endpoints

    is available as part of the [Premium or Elevate
    plans](https://www.algolia.com/pricing).


    To authenticate requests to the Infrastructure endpoints, add these headers:


    - `x-algolia-application-id`. Your Algolia application ID.

    - `x-algolia-api-key`. Your Monitoring API key.


    You can find your application ID and API key in the [Algolia
    dashboard](https://dashboard.algolia.com/account/api-keys).


    Other endpoints don't require authentication.


    ## Response status and errors


    The Monitoring API returns JSON responses.

    Since JSON doesn't guarantee any specific ordering, don't rely on the order
    of attributes in the API response.


    Successful responses return `2xx` statuses. Client errors return `4xx`
    statuses. Server errors return `5xx` statuses.

    Error responses have a `message` property with more information.


    ## Version


    The current version of the Monitoring API is version 1, indicated by the
    `/1/` in each endpoint's URL.
  version: 1.0.0
servers:
  - url: https://status.algolia.com
security: []
tags:
  - name: incidents
    description: List the known incidents.
    x-displayName: Incidents
  - name: infrastructure
    description: >-
      Return information about the Algolia infrastructure used by your
      application.
    x-displayName: Infrastructure
  - name: monitoring-tag
    description: >-
      Report search and indexing times for your clusters, and get a list of
      servers.
    x-displayName: Monitoring
  - name: status
    description: Report the status of Algolia clusters.
    x-displayName: Status
paths:
  /1/infrastructure/{metric}/period/{period}:
    get:
      tags:
        - infrastructure
      summary: Retrieve metrics
      description: >
        Retrieves metrics related to your Algolia infrastructure, aggregated
        over a selected time window.


        Access to this API is available as part of the [Premium or Elevate
        plans](https://www.algolia.com/pricing).

        You must authenticate requests with the `x-algolia-application-id` and
        `x-algolia-api-key` headers (using the Monitoring API key).
      operationId: getMetrics
      parameters:
        - $ref: '#/components/parameters/MetricInPath'
        - $ref: '#/components/parameters/PeriodInPath'
      responses:
        '200':
          $ref: '#/components/responses/InfrastructureResponse'
        '401':
          $ref: '#/components/responses/InfrastructureAPIUnauthorized'
      x-codeSamples:
        - lang: csharp
          label: C#
          source: |-
            // Initialize the client
            var client = new MonitoringClient(
              new MonitoringConfig("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY")
            );

            // Call the API
            var response = await client.GetMetricsAsync(
              Enum.Parse<Metric>("AvgBuildTime"),
              Enum.Parse<Period>("Minute")
            );

            // print the response
            Console.WriteLine(response);
        - lang: go
          label: Go
          source: >-
            // Initialize the client

            client, err := monitoring.NewClient("ALGOLIA_APPLICATION_ID",
            "ALGOLIA_API_KEY")

            if err != nil {
              // The client can fail to initialize if you pass an invalid parameter.
              panic(err)
            }


            // Call the API

            response, err := client.GetMetrics(client.NewApiGetMetricsRequest(
              monitoring.Metric("avg_build_time"), monitoring.Period("minute")))
            if err != nil {
              // handle the eventual error
              panic(err)
            }



            // print the response

            print(response)
        - lang: java
          label: Java
          source: >-
            // Initialize the client

            MonitoringClient client = new
            MonitoringClient("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY");


            // Call the API

            InfrastructureResponse response =
            client.getMetrics(Metric.AVG_BUILD_TIME, Period.MINUTE);


            // print the response

            System.out.println(response);
        - lang: javascript
          label: JavaScript
          source: >-
            // Initialize the client

            const client = algoliasearch('ALGOLIA_APPLICATION_ID',
            'ALGOLIA_API_KEY').initMonitoring();


            // Call the API

            const response = await client.getMetrics({ metric: 'avg_build_time',
            period: 'minute' });



            // print the response

            console.log(response);
        - lang: kotlin
          label: Kotlin
          source: >-
            // Initialize the client

            val client = MonitoringClient(appId = "ALGOLIA_APPLICATION_ID",
            apiKey = "ALGOLIA_API_KEY")


            // Call the API

            var response =
              client.getMetrics(
                metric = Metric.entries.first { it.value == "avg_build_time" },
                period = Period.entries.first { it.value == "minute" },
              )


            // print the response

            println(response)
        - lang: php
          label: PHP
          source: >-
            // Initialize the client

            $client = MonitoringClient::create('ALGOLIA_APPLICATION_ID',
            'ALGOLIA_API_KEY');


            // Call the API

            $response = $client->getMetrics(
                'avg_build_time',
                'minute',
            );



            // print the response

            var_dump($response);
        - lang: python
          label: Python
          source: >-
            # Initialize the client

            # In an asynchronous context, you can use MonitoringClient instead,
            which exposes the exact same methods.

            client = MonitoringClientSync("ALGOLIA_APPLICATION_ID",
            "ALGOLIA_API_KEY")


            # Call the API

            response = client.get_metrics(
                metric="avg_build_time",
                period="minute",
            )



            # print the response

            print(response)
        - lang: ruby
          label: Ruby
          source: >-
            # Initialize the client

            client = Algolia::MonitoringClient.create("ALGOLIA_APPLICATION_ID",
            "ALGOLIA_API_KEY")


            # Call the API

            response = client.get_metrics("avg_build_time", "minute")



            # print the response

            puts(response)
        - lang: scala
          label: Scala
          source: >-
            // Initialize the client

            val client = MonitoringClient(appId = "ALGOLIA_APPLICATION_ID",
            apiKey = "ALGOLIA_API_KEY")


            // Call the API

            val response = Await.result(
              client.getMetrics(
                metric = Metric.withName("avg_build_time"),
                period = Period.withName("minute")
              ),
              Duration(100, "sec")
            )


            // print the response

            println(response)
        - lang: swift
          label: Swift
          source: >-
            // Initialize the client

            let client = try MonitoringClient(appID: "ALGOLIA_APPLICATION_ID",
            apiKey: "ALGOLIA_API_KEY")


            // Call the API

            let response = try await client.getMetrics(metric:
            Metric.avgBuildTime, period: Period.minute)


            // print the response

            print(response)
        - lang: cURL
          label: curl
          source: |-
            curl --request GET \
              --url https://status.algolia.com/1/infrastructure/%2A/period/week \
              --header 'accept: application/json'
components:
  parameters:
    MetricInPath:
      name: metric
      in: path
      required: true
      description: >
        Metric to report.


        For more information about the individual metrics, see the description
        of the API response.

        To include all metrics, use `*`.
      schema:
        $ref: '#/components/schemas/Metric'
    PeriodInPath:
      name: period
      in: path
      required: true
      description: |
        Period over which to aggregate the metrics:

        - `minute`. Aggregate the last minute. 1 data point per 10 seconds.
        - `hour`. Aggregate the last hour. 1 data point per minute.
        - `day`. Aggregate the last day. 1 data point per 10 minutes.
        - `week`. Aggregate the last week. 1 data point per hour.
        - `month`. Aggregate the last month. 1 data point per day.
      schema:
        $ref: '#/components/schemas/Period'
  responses:
    InfrastructureResponse:
      description: OK
      content:
        application/json:
          schema:
            title: infrastructureResponse
            type: object
            additionalProperties: false
            properties:
              metrics:
                title: metrics
                type: object
                additionalProperties: false
                properties:
                  avg_build_time:
                    type: object
                    description: Average build time of the indices in seconds.
                    additionalProperties:
                      $ref: '#/components/schemas/InfraProbes'
                      x-additionalPropertiesName: probes
                  cpu_usage:
                    type: object
                    description: CPU idleness in %.
                    additionalProperties:
                      $ref: '#/components/schemas/InfraProbes'
                      x-additionalPropertiesName: probes
                  ram_indexing_usage:
                    type: object
                    description: RAM used for indexing in MB.
                    additionalProperties:
                      $ref: '#/components/schemas/InfraProbes'
                      x-additionalPropertiesName: probes
                  ram_search_usage:
                    type: object
                    description: RAM used for search in MB.
                    additionalProperties:
                      $ref: '#/components/schemas/InfraProbes'
                      x-additionalPropertiesName: probes
                  ssd_usage:
                    type: object
                    description: >
                      Solid-state disk (SSD) usage expressed as % of RAM. 

                      0% means no SSD usage. A value of 50% indicates 32&nbsp;GB
                      SSD usage for a machine with 64&nbsp;RAM.
                    additionalProperties:
                      $ref: '#/components/schemas/InfraProbes'
                      x-additionalPropertiesName: probes
          examples:
            success:
              value:
                metrics:
                  cpu_usage:
                    s4-fr:
                      - t: 1455101280
                        v: 46
                      - t: 1455101290
                        v: 46
                      - t: 1455101300
                        v: 46
                    c3-use-1:
                      - t: 1455101280
                        v: 42
                      - t: 1455101290
                        v: 42
                      - t: 1455101300
                        v: 42
                      - t: 1455101310
                        v: 37
                    c3-use-2:
                      - t: 1455101280
                        v: 56
                      - t: 1455101290
                        v: 56
                      - t: 1455101300
                        v: 56
                      - t: 1455101310
                        v: 56
                      - t: 1455101320
                        v: 51
    InfrastructureAPIUnauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            title: unauthorized
            type: object
            additionalProperties: false
            properties:
              reason:
                type: string
          examples:
            Unauthorized:
              value:
                reason: >-
                  The infrastructure usage API is only available on Enterprise
                  plans. Please contact enterprise@algolia.com for more detail.
  schemas:
    Metric:
      type: string
      enum:
        - avg_build_time
        - ssd_usage
        - ram_search_usage
        - ram_indexing_usage
        - cpu_usage
        - '*'
      example: '*'
    Period:
      type: string
      enum:
        - minute
        - hour
        - day
        - week
        - month
      example: week
    InfraProbes:
      title: probes
      type: array
      items:
        $ref: '#/components/schemas/ProbesMetric'
    ProbesMetric:
      title: metric
      type: object
      additionalProperties: false
      properties:
        t:
          $ref: '#/components/schemas/Timestamp'
        v:
          type: integer
          description: Value of the metric.
    Timestamp:
      type: integer
      format: int64
      description: Timestamp, measured in milliseconds since the Unix epoch.

````