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

# (Beta) Query a numeric distribution

> Beta: this endpoint is under active development and may change without notice.

**Required ACL:** `analytics`

Buckets one or more numeric fields into histograms and returns an object keyed by `histogram<Field>`,
each mapping a bin label to a count. `distributions` and `parameters` are required; `filters` is
optional. Discover valid field kinds per domain with `/3/patterns/fields`.

## Usage

<CodeGroup>
  ```cs C# theme={"system"}
  // Initialize the client
  var client = new AnalyticsClient(
    new AnalyticsConfig("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY", "ALGOLIA_APPLICATION_REGION")
  );

  // Call the API
  var response = await client.QueryPatternsDistributionAsync(
    new DistributionPayload
    {
      Distributions = new List<DistributionDefinition>
      {
        new DistributionDefinition
        {
          Kind = "clickPosition",
          Bins = new List<BinEdge>
          {
            new BinEdge(1),
            new BinEdge(2),
            new BinEdge(3),
            new BinEdge(4),
            new BinEdge(5),
          },
        },
      },
      Parameters = new List<ParameterDefinition>
      {
        new ParameterDefinition
        {
          Kind = "indices",
          Value = new ParameterValue(new List<string> { "index" }),
        },
      },
    },
    "index"
  );

  // print the response
  Console.WriteLine(response);
  ```

  ```go Go theme={"system"}
  // Initialize the client with your application region, eg. analytics.ALGOLIA_APPLICATION_REGION
  client, err := analytics.NewClient("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY", analytics.US)
  if err != nil {
    // The client can fail to initialize if you pass an invalid parameter.
    panic(err)
  }

  // Call the API
  response, err := client.QueryPatternsDistribution(client.NewApiQueryPatternsDistributionRequest(

    analytics.NewEmptyDistributionPayload().SetDistributions(
      []analytics.DistributionDefinition{*analytics.NewEmptyDistributionDefinition().SetKind("clickPosition").SetBins(
        []analytics.BinEdge{*analytics.Int32AsBinEdge(1), *analytics.Int32AsBinEdge(2), *analytics.Int32AsBinEdge(3), *analytics.Int32AsBinEdge(4), *analytics.Int32AsBinEdge(5)})}).SetParameters(
      []analytics.ParameterDefinition{
        *analytics.NewEmptyParameterDefinition().SetKind("indices").SetValue(analytics.ArrayOfStringAsParameterValue(
          []string{"index"})),
      }),
  ).WithIndex("index"))
  if err != nil {
    // handle the eventual error
    panic(err)
  }


  // print the response
  print(response)
  ```

  ```java Java theme={"system"}
  // Initialize the client
  AnalyticsClient client = new AnalyticsClient("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY", "ALGOLIA_APPLICATION_REGION");

  // Call the API
  Map response = client.queryPatternsDistribution(
    new DistributionPayload()
      .setDistributions(
        Arrays.asList(
          new DistributionDefinition()
            .setKind("clickPosition")
            .setBins(Arrays.asList(BinEdge.of(1), BinEdge.of(2), BinEdge.of(3), BinEdge.of(4), BinEdge.of(5)))
        )
      )
      .setParameters(Arrays.asList(new ParameterDefinition().setKind("indices").setValue(ParameterValue.of(Arrays.asList("index"))))),
    "index"
  );

  // print the response
  System.out.println(response);
  ```

  ```js JavaScript theme={"system"}
  // Initialize the client
  // Replace 'us' with your Algolia Application Region
  const client = algoliasearch('ALGOLIA_APPLICATION_ID', 'ALGOLIA_API_KEY').initAnalytics({ region: 'us' });

  // Call the API
  const response = await client.queryPatternsDistribution({
    distributionPayload: {
      distributions: [{ kind: 'clickPosition', bins: [1, 2, 3, 4, 5] }],
      parameters: [{ kind: 'indices', value: ['index'] }],
    },
    index: 'index',
  });


  // print the response
  console.log(response);
  ```

  ```kotlin Kotlin theme={"system"}
  // Initialize the client
  val client =
    AnalyticsClient(
      appId = "ALGOLIA_APPLICATION_ID",
      apiKey = "ALGOLIA_API_KEY",
      region = "ALGOLIA_APPLICATION_REGION",
    )

  // Call the API
  var response =
    client.queryPatternsDistribution(
      distributionPayload =
        DistributionPayload(
          distributions =
            listOf(
              DistributionDefinition(
                kind = "clickPosition",
                bins =
                  listOf(
                    BinEdge.of(1),
                    BinEdge.of(2),
                    BinEdge.of(3),
                    BinEdge.of(4),
                    BinEdge.of(5),
                  ),
              )
            ),
          parameters =
            listOf(
              ParameterDefinition(kind = "indices", value = ParameterValue.of(listOf("index")))
            ),
        ),
      index = "index",
    )


  // print the response
  println(response)
  ```

  ```php PHP theme={"system"}
  // Initialize the client
  $client = AnalyticsClient::create('ALGOLIA_APPLICATION_ID', 'ALGOLIA_API_KEY', 'ALGOLIA_APPLICATION_REGION');

  // Call the API
  $response = $client->queryPatternsDistribution(
      ['distributions' => [
          ['kind' => 'clickPosition',
              'bins' => [
                  1,

                  2,

                  3,

                  4,

                  5,
              ],
          ],
      ],
          'parameters' => [
              ['kind' => 'indices',
                  'value' => [
                      'index',
                  ],
              ],
          ],
      ],
      'index',
  );


  // print the response
  var_dump($response);
  ```

  ```python Python theme={"system"}
  # Initialize the client
  # In an asynchronous context, you can use AnalyticsClient instead, which exposes the exact same methods.
  client = AnalyticsClientSync(
      "ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY", "ALGOLIA_APPLICATION_REGION"
  )

  # Call the API
  response = client.query_patterns_distribution(
      distribution_payload={
          "distributions": [
              {
                  "kind": "clickPosition",
                  "bins": [
                      1,
                      2,
                      3,
                      4,
                      5,
                  ],
              },
          ],
          "parameters": [
              {
                  "kind": "indices",
                  "value": [
                      "index",
                  ],
              },
          ],
      },
      index="index",
  )


  # print the response
  print(response)
  ```

  ```ruby Ruby theme={"system"}
  # Initialize the client
  client = Algolia::AnalyticsClient.create("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY", "ALGOLIA_APPLICATION_REGION")

  # Call the API
  response = client.query_patterns_distribution(
    Algolia::Analytics::DistributionPayload.new(
      distributions: [Algolia::Analytics::DistributionDefinition.new(kind: "clickPosition", bins: [1, 2, 3, 4, 5])],
      parameters: [Algolia::Analytics::ParameterDefinition.new(kind: "indices", value: ["index"])]
    ),
    "index"
  )


  # print the response
  puts(response)
  ```

  ```scala Scala theme={"system"}
  // Initialize the client
  val client = AnalyticsClient(
    appId = "ALGOLIA_APPLICATION_ID",
    apiKey = "ALGOLIA_API_KEY",
    region = Option("ALGOLIA_APPLICATION_REGION")
  )

  // Call the API
  val response = Await.result(
    client.queryPatternsDistribution(
      distributionPayload = DistributionPayload(
        distributions = Seq(
          DistributionDefinition(
            kind = "clickPosition",
            bins = Seq(BinEdge(1), BinEdge(2), BinEdge(3), BinEdge(4), BinEdge(5))
          )
        ),
        parameters = Seq(
          ParameterDefinition(
            kind = "indices",
            value = ParameterValue(Seq("index"))
          )
        )
      ),
      index = Some("index")
    ),
    Duration(100, "sec")
  )

  // print the response
  println(response)
  ```

  ```swift Swift theme={"system"}
  // Initialize the client
  let client = try AnalyticsClient(appID: "ALGOLIA_APPLICATION_ID", apiKey: "ALGOLIA_API_KEY", region: .us)

  // Call the API
  let response = try await client.queryPatternsDistribution(
      distributionPayload: DistributionPayload(distributions: [DistributionDefinition(
          kind: "clickPosition",
          bins: [BinEdge.int(1), BinEdge.int(2), BinEdge.int(3), BinEdge.int(4), BinEdge.int(5)]
      )], parameters: [ParameterDefinition(kind: "indices", value: ParameterValue.arrayOfString(["index"]))]),
      index: "index"
  )

  // print the response
  print(response)
  ```
</CodeGroup>

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