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

## Usage

<CodeGroup>
  ```cs C# theme={"system"}
  // 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);
  ```

  ```go Go theme={"system"}
  // 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)
  ```

  ```java Java theme={"system"}
  // 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);
  ```

  ```js JavaScript theme={"system"}
  // 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);
  ```

  ```kotlin Kotlin theme={"system"}
  // 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)
  ```

  ```php PHP theme={"system"}
  // 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);
  ```

  ```python Python theme={"system"}
  # 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)
  ```

  ```ruby Ruby theme={"system"}
  # 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)
  ```

  ```scala Scala theme={"system"}
  // 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)
  ```

  ```swift Swift theme={"system"}
  // 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)
  ```
</CodeGroup>

<Card icon="folder-code" horizontal="true" title="See the full API reference" arrow="true" href="/doc/rest-api/monitoring/get-metrics">
  For more details about input parameters
  and response fields.
</Card>
