Skip to main content

Using the AddSearch Indexing API

All Indexing API endpoints require authentication. See the Authentication documentation for details.


Create a New Document​

Use this endpoint to add a new document to your index. A random ID will be generated for it.

POST /v2/indices/{index public key}/documents/

Request headers​

  • Content-Type: application/json
  • Authentication headers (see Authentication docs)

Request body​

Provide the document details as JSON. Example:

{
"custom_fields": {
"title": "Example product",
"description": "Description for example product",
"price_cents": 599,
"average_customer_rating": 4.5
}
}

Notes on fields​

  • custom_fields (optional): Key-value pairs representing custom document properties. Supported data types are text, integer, and double. Dates must be Unix timestamps (integers).

Important​

If you want to specify the document ID yourself or generate it from the URL, use the Update Document endpoint instead.

Response​

  • Returns HTTP 201 Created on success.
  • The Location header contains the URL of the newly created document.
  • Document availability may take a few seconds.

Retrieve a Document​

Fetch a single document by its document ID.

GET /v2/indices/{index public key}/documents/{document id}

Response example​

{
"id": "8700a03070a37982924597d6baa87be7",
"custom_fields": {
"title": "Example product",
"description": "Description for example product",
"price_cents": 599,
"average_customer_rating": 4.5
}
}

Update an Existing Document or Create with Predefined ID​

Use this endpoint to update a document or create a new document with a specified ID or URL.

PUT /v2/indices/{index public key}/documents/{document id}

or

PUT /v2/indices/{index public key}/documents/

Request body examples​

With document ID in URL:

{
"custom_fields": {
"title": "Example product",
"description": "Description for example product",
"price_cents": 599,
"average_customer_rating": 4.5
}
}

Or, include id or url fields in the JSON if omitting document ID from the URL:

{
"url": "https://www.example.com/",
"id": "8700a03070a37982924597d6baa87be7",
"custom_fields": {
"title": "Example product",
"description": "Description for example product",
"price_cents": 599,
"average_customer_rating": 4.5
}
}

Document identification rules​

  • If the URL contains the document ID, that ID is used.
  • Else, if the id field is present, use it.
  • Otherwise, the ID is generated as the MD5 checksum of the url.

Supported fields​

  • url (optional): The document's URL.
  • id (optional): Unique document identifier.
  • custom_fields (optional): Key-value pairs, supporting text, integer, or double values.

Response​

  • Returns HTTP 202 Accepted on successful queuing.
  • Changes take a few seconds to become visible.

Batch Update Documents​

Update or create multiple documents in a single request.

PUT /v2/indices/{index public key}/documents:batch

Request headers​

  • Content-Type: application/json

Request body example​

{
"documents": [
{
"url": "https://www.example.com/product1.html",
"id": "8700a03070a37982924597d6baa87be7",
"custom_fields": {
"title": "Example product",
"description": "Description for example product",
"price_cents": 599,
"average_customer_rating": 4.5
}
},
{
"url": "https://www.example.com/product2.html",
"id": "d3b07384d113edec49eaa6238ad5ff00",
"custom_fields": {
"title": "Example product",
"description": "Description for example product",
"price_cents": 349,
"average_customer_rating": 4.2
}
}
]
}

Limits and notes​

  • Maximum request body size is 1 MB.
  • Each document must have either a url or id field.
  • If id is missing, the document ID is the MD5 checksum of the url.
  • Existing documents with matching IDs will be replaced entirely.

Response​

  • Returns HTTP 202 Accepted if the batch update is queued successfully.

Delete a Document​

Remove a document by its ID.

DELETE /v2/indices/{index public key}/documents/{document id}

Response​

  • Returns HTTP 202 Accepted on successful queuing of deletion.

Delete Multiple Documents​

Delete multiple documents by specifying their IDs in the request body.

DELETE /v2/indices/{index public key}/documents:batch

Request body example​

{
"documents": [
"a9b9f04336ce0181a08e774e01113b31",
"68486f8ffd0f928de748de19b663c60a"
]
}

Response​

  • Returns HTTP 202 Accepted after queuing all delete operations.

For detailed authentication setup, refer to the API Authentication guide.