Skip to main content
The Management API lets you automate everything you can do in the Doofinder Admin Panel — creating search engines, managing the data structure (indices), and pushing, updating, or deleting items. Version: v2

Base URL

https://{search_zone}-api.doofinder.com
Example: https://eu1-api.doofinder.com

Authentication

Supports both API Token and JWT Bearer token authentication:
Authorization: Token ab46030xza33960aac71a10248489b6c26172f07
Authorization: Bearer <jwt-token>
See the Authentication guide for JWT signing details.

Endpoints Overview

Search Engines

CRUD operations on search engine configurations.

Indices

Manage the data types (indices) within a search engine.

Items

Push, update, delete, and query individual items.

Bulk Index Operations

Full index replacement via temporary indices for zero-downtime updates.

Search Engines

A search engine is the top-level container for your searchable data. It holds one or more indices and is identified by its hashid.
MethodPathDescription
GET/api/v2/search_enginesList all search engines
POST/api/v2/search_enginesCreate a new search engine
GET/api/v2/search_engines/{hashid}Get a specific search engine
PATCH/api/v2/search_engines/{hashid}Update search engine settings
DELETE/api/v2/search_engines/{hashid}Delete a search engine
POST/api/v2/search_engines/{hashid}/_processTrigger reprocessing
GET/api/v2/search_engines/{hashid}/_processGet reprocessing task status

Indices

An index is a named collection of items within a search engine. Most stores have a product index; you can also have page, category, or any custom index name.
MethodPathDescription
GET/api/v2/search_engines/{hashid}/indicesList indices
POST/api/v2/search_engines/{hashid}/indicesCreate an index
GET/api/v2/search_engines/{hashid}/indices/{name}Get index details
PATCH/api/v2/search_engines/{hashid}/indices/{name}Update index configuration
DELETE/api/v2/search_engines/{hashid}/indices/{name}Delete an index

Items

Items are the individual records in an index (products, pages, etc.). Use these endpoints for real-time, incremental updates.
MethodPathDescription
GET/api/v2/search_engines/{hashid}/indices/{name}/items/List/scroll items
POST/api/v2/search_engines/{hashid}/indices/{name}/items/Create a single item
GET/api/v2/search_engines/{hashid}/indices/{name}/items/{item_id}Get an item
PATCH/api/v2/search_engines/{hashid}/indices/{name}/items/{item_id}Update an item
DELETE/api/v2/search_engines/{hashid}/indices/{name}/items/{item_id}Delete an item
GET/api/v2/search_engines/{hashid}/indices/{name}/items/_countCount items
POST/api/v2/search_engines/{hashid}/indices/{name}/items/_mgetGet multiple items by ID
POST/api/v2/search_engines/{hashid}/indices/{name}/items/_bulkCreate items in bulk
PATCH/api/v2/search_engines/{hashid}/indices/{name}/items/_bulkUpdate items in bulk
DELETE/api/v2/search_engines/{hashid}/indices/{name}/items/_bulkDelete items in bulk

Bulk operations

Bulk endpoints accept up to 100 items per request. For large catalogues, split into batches:
[
  { "id": "SKU-001", "title": "Running Shoes", "price": 89.99 },
  { "id": "SKU-002", "title": "Trail Runners", "price": 119.99 }
]
Requests with more than 100 items will be rejected with 422 Unprocessable Entity. Always batch your payloads.

Bulk Index Operations

For full catalogue replacement (e.g. nightly sync), use the temporary index workflow. This pattern allows a complete index swap with zero search downtime:
1

Create a temporary index

POST /api/v2/search_engines/{hashid}/indices/{name}/temp/Creates a writable temporary index alongside the live one.
2

Push all items to the temporary index

Use the temp item endpoints (/temp/items/, /temp/items/_bulk) to write your full catalogue. These writes don’t affect the live search index.
3

Replace the live index

POST /api/v2/search_engines/{hashid}/indices/{name}/_replace_by_temp/Atomically swaps the live index with the temporary one. Users continue searching against the old index until the swap completes.
Alternatively, use the reindex workflow for more control:
MethodPathDescription
POST.../{name}/temp/Create temporary index
DELETE.../{name}/temp/Delete temporary index
POST.../{name}/temp/items/Add item to temp index
GET.../{name}/temp/items/{item_id}Get item from temp index
PATCH.../{name}/temp/items/{item_id}Update item in temp index
DELETE.../{name}/temp/items/{item_id}Delete item from temp index
POST.../{name}/temp/items/_bulkCreate items in bulk in temp index
PATCH.../{name}/temp/items/_bulkUpdate items in bulk in temp index
DELETE.../{name}/temp/items/_bulkDelete items in bulk in temp index
POST.../{name}/temp/items/_mgetGet multiple items by ID from temp index
POST.../{name}/_reindex_to_temp/Start reindex from live to temp
GET.../{name}/_reindex_to_temp/Get reindex task status
POST.../{name}/_replace_by_temp/Swap temp index into production

API Limits

LimitValue
Rate limit20 requests/second
Max request body size8 MB
Max items per bulk request100

Item Structure

Items are schema-flexible — you can include any fields your search engine is configured to index. Some fields are commonly expected:
FieldTypeDescription
idstringRequired. Your item’s unique identifier.
titlestringItem title (highly recommended for search quality).
descriptionstringItem description.
urlstringURL to the item page.
image_urlstringURL to the item image.
pricenumberItem price.
df_grouping_idstringGroup variants under a single result.
The fields indexed by your search engine are configured in the Admin Panel under Configuration → Search Engines → [engine]. Only configured fields are searchable and facetable.