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

# Set or update the "sortingStrategy" configuration for an existing composition

> Updates the "sortingStrategy" field of an existing composition. This endpoint lets you create a new sorting strategy mapping or replace the configured one. The provided sorting indices must be associated indices or replicas of the main targeted index.

**Required ACL:** `editSettings`

This endpoint can't validate whether the sort index is related to the composition's main index.
Validation fails at runtime if the index you updated isn't related.

The update is applied to the specified composition within the current Algolia application and returns a taskID that can be used to track the operation’s completion.

## Usage

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

  // Call the API
  var response = await client.UpdateSortingStrategyCompositionAsync(
    "my-compo",
    new Dictionary<string, string>
    {
      { "Price-asc", "products-low-to-high" },
      { "Price-desc", "products-high-to-low" },
    }
  );

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

  ```dart Dart theme={"system"}
  // Initialize the client
  final client = CompositionClient(
      appId: 'ALGOLIA_APPLICATION_ID', apiKey: 'ALGOLIA_API_KEY');

  // Call the API
  final response = await client.updateSortingStrategyComposition(
    compositionID: "my-compo",
    requestBody: {
      'Price-asc': "products-low-to-high",
      'Price-desc': "products-high-to-low",
    },
  );

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

  ```go Go theme={"system"}
  // Initialize the client
  client, err := composition.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.UpdateSortingStrategyComposition(client.NewApiUpdateSortingStrategyCompositionRequest(
    "my-compo", map[string]string{"Price-asc": "products-low-to-high", "Price-desc": "products-high-to-low"}))
  if err != nil {
    // handle the eventual error
    panic(err)
  }


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

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

  // Call the API
  TaskIDResponse response = client.updateSortingStrategyComposition(
    "my-compo",
    new HashMap() {
      {
        put("Price-asc", "products-low-to-high");
        put("Price-desc", "products-high-to-low");
      }
    }
  );

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

  ```js JavaScript theme={"system"}
  // Initialize the client
  const client = compositionClient('ALGOLIA_APPLICATION_ID', 'ALGOLIA_API_KEY');

  // Call the API
  const response = await client.updateSortingStrategyComposition({
    compositionID: 'my-compo',
    requestBody: { 'Price-asc': 'products-low-to-high', 'Price-desc': 'products-high-to-low' },
  });


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

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

  // Call the API
  var response =
    client.updateSortingStrategyComposition(
      compositionID = "my-compo",
      requestBody =
        mapOf("Price-asc" to "products-low-to-high", "Price-desc" to "products-high-to-low"),
    )


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

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

  // Call the API
  $response = $client->updateSortingStrategyComposition(
      'my-compo',
      ['Price-asc' => 'products-low-to-high',
          'Price-desc' => 'products-high-to-low',
      ],
  );


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

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

  # Call the API
  response = client.update_sorting_strategy_composition(
      composition_id="my-compo",
      request_body={
          "Price-asc": "products-low-to-high",
          "Price-desc": "products-high-to-low",
      },
  )


  # print the response
  print(response)
  ```

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

  # Call the API
  response = client.update_sorting_strategy_composition(
    "my-compo",
    {:"Price-asc" => "products-low-to-high", :"Price-desc" => "products-high-to-low"}
  )


  # print the response
  puts(response)
  ```

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

  // Call the API
  val response = Await.result(
    client.updateSortingStrategyComposition(
      compositionID = "my-compo",
      requestBody = Map("Price-asc" -> "products-low-to-high", "Price-desc" -> "products-high-to-low")
    ),
    Duration(100, "sec")
  )

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

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

  // Call the API
  let response = try await client.updateSortingStrategyComposition(
      compositionID: "my-compo",
      requestBody: ["Price-asc": "products-low-to-high", "Price-desc": "products-high-to-low"]
  )

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

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