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

# Define the personalization strategy

> Creates a new personalization strategy.

**Required ACL:** `recommendation`

## Usage

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

  // Call the API
  var response = await client.SetPersonalizationStrategyAsync(
    new PersonalizationStrategyParams
    {
      EventsScoring = new List<EventsScoring>
      {
        new EventsScoring
        {
          Score = 42,
          EventName = "Algolia",
          EventType = Enum.Parse<EventType>("Click"),
        },
      },
      FacetsScoring = new List<FacetsScoring>
      {
        new FacetsScoring { Score = 42, FacetName = "Event" },
      },
      PersonalizationImpact = 42,
    }
  );

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

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

  // Call the API
  response, err := client.SetPersonalizationStrategy(client.NewApiSetPersonalizationStrategyRequest(

    personalization.NewEmptyPersonalizationStrategyParams().SetEventsScoring(
      []personalization.EventsScoring{
        *personalization.NewEmptyEventsScoring().SetScore(42).SetEventName("Algolia").SetEventType(personalization.EventType("click")),
      }).
      SetFacetsScoring(
        []personalization.FacetsScoring{
          *personalization.NewEmptyFacetsScoring().SetScore(42).SetFacetName("Event"),
        }).
      SetPersonalizationImpact(42)))
  if err != nil {
    // handle the eventual error
    panic(err)
  }


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

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

  // Call the API
  SetPersonalizationStrategyResponse response = client.setPersonalizationStrategy(
    new PersonalizationStrategyParams()
      .setEventsScoring(Arrays.asList(new EventsScoring().setScore(42).setEventName("Algolia").setEventType(EventType.CLICK)))
      .setFacetsScoring(Arrays.asList(new FacetsScoring().setScore(42).setFacetName("Event")))
      .setPersonalizationImpact(42)
  );

  // 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').initPersonalization({ region: 'us' });

  // Call the API
  const response = await client.setPersonalizationStrategy({
    eventsScoring: [{ score: 42, eventName: 'Algolia', eventType: 'click' }],
    facetsScoring: [{ score: 42, facetName: 'Event' }],
    personalizationImpact: 42,
  });


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

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

  // Call the API
  var response =
    client.setPersonalizationStrategy(
      personalizationStrategyParams =
        PersonalizationStrategyParams(
          eventsScoring =
            listOf(
              EventsScoring(
                score = 42,
                eventName = "Algolia",
                eventType = EventType.entries.first { it.value == "click" },
              )
            ),
          facetsScoring = listOf(FacetsScoring(score = 42, facetName = "Event")),
          personalizationImpact = 42,
        )
    )


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

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

  // Call the API
  $response = $client->setPersonalizationStrategy(
      ['eventsScoring' => [
          ['score' => 42,
              'eventName' => 'Algolia',
              'eventType' => 'click',
          ],
      ],
          'facetsScoring' => [
              ['score' => 42,
                  'facetName' => 'Event',
              ],
          ],
          'personalizationImpact' => 42,
      ],
  );


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

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

  # Call the API
  response = client.set_personalization_strategy(
      personalization_strategy_params={
          "eventsScoring": [
              {
                  "score": 42,
                  "eventName": "Algolia",
                  "eventType": "click",
              },
          ],
          "facetsScoring": [
              {
                  "score": 42,
                  "facetName": "Event",
              },
          ],
          "personalizationImpact": 42,
      },
  )


  # print the response
  print(response)
  ```

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

  # Call the API
  response = client.set_personalization_strategy(
    Algolia::Personalization::PersonalizationStrategyParams.new(
      events_scoring: [
        Algolia::Personalization::EventsScoring.new(score: 42, event_name: "Algolia", event_type: "click")
      ],
      facets_scoring: [Algolia::Personalization::FacetsScoring.new(score: 42, facet_name: "Event")],
      personalization_impact: 42
    )
  )


  # print the response
  puts(response)
  ```

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

  // Call the API
  val response = Await.result(
    client.setPersonalizationStrategy(
      personalizationStrategyParams = PersonalizationStrategyParams(
        eventsScoring = Seq(
          EventsScoring(
            score = 42,
            eventName = "Algolia",
            eventType = EventType.withName("click")
          )
        ),
        facetsScoring = Seq(
          FacetsScoring(
            score = 42,
            facetName = "Event"
          )
        ),
        personalizationImpact = 42
      )
    ),
    Duration(100, "sec")
  )

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

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

  // Call the API
  let response = try await client
      .setPersonalizationStrategy(personalizationStrategyParams: PersonalizationStrategyParams(
          eventsScoring: [
              EventsScoring(score: 42, eventName: "Algolia", eventType: PersonalizationEventType.click),
          ],
          facetsScoring: [FacetsScoring(score: 42, facetName: "Event")],
          personalizationImpact: 42
      ))

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

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