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

# Add a new record (with auto-generated object ID)

> Adds a record to an index or replaces it.

**Required ACL:** `addObject`

* If the record doesn't have an object ID, a new record with an auto-generated object ID is added to your index.
* If a record with the specified object ID exists, the existing record is replaced.
* If a record with the specified object ID doesn't exist, a new record is added to your index.
* If you add a record to an index that doesn't exist yet, a new index is created.

To update *some* attributes of a record, use the [`partial` operation](https://www.algolia.com/doc/rest-api/search/partial-update-object).
To add, update, or replace multiple records, use the [`batch` operation](https://www.algolia.com/doc/rest-api/search/batch).

This operation is subject to [indexing rate limits](https://support.algolia.com/hc/articles/4406975251089-Is-there-a-rate-limit-for-indexing-on-Algolia).

## Usage

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

  // Call the API
  var response = await client.SaveObjectAsync(
    "<YOUR_INDEX_NAME>",
    new Dictionary<string, string>
    {
      { "name", "Black T-shirt" },
      { "color", "#000000||black" },
      { "availableIn", "https://source.unsplash.com/100x100/?paris||Paris" },
      { "objectID", "myID" },
    }
  );

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

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

  // Call the API
  final response = await client.saveObject(
    indexName: "<YOUR_INDEX_NAME>",
    body: {
      'name': "Black T-shirt",
      'color': "#000000||black",
      'availableIn': "https://source.unsplash.com/100x100/?paris||Paris",
      'objectID': "myID",
    },
  );

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

  ```go Go theme={"system"}
  // Initialize the client
  client, err := search.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.SaveObject(client.NewApiSaveObjectRequest(
    "<YOUR_INDEX_NAME>",
    map[string]any{
      "name":        "Black T-shirt",
      "color":       "#000000||black",
      "availableIn": "https://source.unsplash.com/100x100/?paris||Paris",
      "objectID":    "myID",
    },
  ))
  if err != nil {
    // handle the eventual error
    panic(err)
  }


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

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

  // Call the API
  SaveObjectResponse response = client.saveObject(
    "<YOUR_INDEX_NAME>",
    new HashMap() {
      {
        put("name", "Black T-shirt");
        put("color", "#000000||black");
        put("availableIn", "https://source.unsplash.com/100x100/?paris||Paris");
        put("objectID", "myID");
      }
    }
  );

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

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

  // Call the API
  const response = await client.saveObject({
    indexName: '<YOUR_INDEX_NAME>',
    body: {
      name: 'Black T-shirt',
      color: '#000000||black',
      availableIn: 'https://source.unsplash.com/100x100/?paris||Paris',
      objectID: 'myID',
    },
  });


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

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

  // Call the API
  var response =
    client.saveObject(
      indexName = "<YOUR_INDEX_NAME>",
      body =
        buildJsonObject {
          put("name", JsonPrimitive("Black T-shirt"))
          put("color", JsonPrimitive("#000000||black"))
          put("availableIn", JsonPrimitive("https://source.unsplash.com/100x100/?paris||Paris"))
          put("objectID", JsonPrimitive("myID"))
        },
    )


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

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

  // Call the API
  $response = $client->saveObject(
      '<YOUR_INDEX_NAME>',
      ['name' => 'Black T-shirt',
          'color' => '#000000||black',
          'availableIn' => 'https://source.unsplash.com/100x100/?paris||Paris',
          'objectID' => 'myID',
      ],
  );


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

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

  # Call the API
  response = client.save_object(
      index_name="<YOUR_INDEX_NAME>",
      body={
          "name": "Black T-shirt",
          "color": "#000000||black",
          "availableIn": "https://source.unsplash.com/100x100/?paris||Paris",
          "objectID": "myID",
      },
  )


  # print the response
  print(response)
  ```

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

  # Call the API
  response = client.save_object(
    "<YOUR_INDEX_NAME>",
    {
      name: "Black T-shirt",
      color: "#000000||black",
      availableIn: "https://source.unsplash.com/100x100/?paris||Paris",
      objectID: "myID"
    }
  )


  # print the response
  puts(response)
  ```

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

  // Call the API
  val response = Await.result(
    client.saveObject(
      indexName = "<YOUR_INDEX_NAME>",
      body = JObject(
        List(
          JField("name", JString("Black T-shirt")),
          JField("color", JString("#000000||black")),
          JField("availableIn", JString("https://source.unsplash.com/100x100/?paris||Paris")),
          JField("objectID", JString("myID"))
        )
      )
    ),
    Duration(100, "sec")
  )

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

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

  // Call the API
  let response = try await client.saveObject(
      indexName: "<YOUR_INDEX_NAME>",
      body: [
          "name": "Black T-shirt",
          "color": "#000000||black",
          "availableIn": "https://source.unsplash.com/100x100/?paris||Paris",
          "objectID": "myID",
      ]
  )

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

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