AI Search — API Reference
Powerful and configurable search, boosted by Synerise AI
56 endpoints across 8 tags.
Search
GET /search/v2/indices/{indexId}/query — Full-text items search
/api-reference/ai-search#tag/Search/operation/SearchFullTextGet
Retrieves items that match a full-text query from a search index or a suggestion index. The results can be filtered and sorted.
API consumers: AI API key (legacy), Web SDK Tracker, Workspace (Business Profile)
API key permission required: ITEMS_SEARCH_SEARCH_READ
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
query | query | string | required | Query text to use in the search |
indexId | path | string | required | ID of the index to be used in the search operation |
clientUUID | query | string | optional | UUID of the profile for which the search is performed |
personalize | query | boolean | optional | If set to false, the search result is not personalized.
|
correlationId | query | string | optional | Correlation ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
searchId | query | string | optional | DEPRECATED - use correlationId instead Search ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
sortByMetric | query | enum<"TransactionsPopularity", "PageVisitsPopularity"> | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the metric by which the data will be sorted. |
sortByGeoPoint | query | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results.
Geo-point ({latitude},{longitude}) for data sorting. Results are sorted by distance from this point. ordering: asc means "closest first".'
|
filterGeoPoints | query | array<string> | optional | The definition of a geographical area to filter by.
Given one geo-point, the results will be limited to a radius around a point. To override the default radius (1000 meters), provide the filterAroundRadius parameter.
Example input: ["34.052235,-118.243685"]
Given two geo-points, the results will be limited to a rectangular area.
Example input: ["50,-100", "25,150"]
Given three or more geo-points, the results will be limited to a polygonal area.
Example input: ["50,0", "40,20", "-20,10"]
|
filterAroundRadius | query | integer | optional | Radius in meters to be used when filtering using geo-location. Can only be used when filtering by a single geo-point. |
filters | query | string | optional | IQL query string. For details, see the Help Center. |
facets | query | array<string> | optional | A list of attributes for which facets will be returned. A single * value matches all facetable attributes.
A single auto value enables automatic facet selection based on the result set — the system picks the most relevant facets using the index's dynamicFacets configuration.
To determine which groups of facets should be returned, use the includeFacets parameter.
|
facetsSize | query | integer | optional | Determines how many items will be used for facets aggregation. |
maxValuesPerFacet | query | integer | optional | Determines how many values will be retrieved per facet. |
caseSensitiveFacetValues | query | boolean | optional | Specifies whether facets aggregation should be case sensitive. |
displayAttributes | query | array<string> | optional | List of ad hoc attributes that will be returned for each found item |
context | query | array<string> | optional | List of context strings for a search query |
includeFacets | query | enum<"all", "filtered", "unfiltered", "none"> | optional | Determines which groups of facets will be returned: both filtered and unfiltered; just filtered; just unfiltered; or no group at at all.
To determine which attributes should be returned as facets in each group, use the facets parameter.
|
facetsOrderBy | query | enum<"coverage", "name"> | optional | Controls the ordering of facets in the response.When facets=auto, the default ordering is by coverage (most relevant facets first).When facets are specified explicitly, the default ordering is by name.When two facets have equal coverage, ties are resolved by name.
|
page | query | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | query | integer | optional | The number of items to return per page |
sortBy | query | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the attribute by which the data will be sorted. |
ordering | query | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | query | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
distinctFilter | query | string | optional | DistinctFilter JSON as an URL-encoded string |
ignoreQueryRules | query | boolean | optional | If set to true, query rules are not applied.
|
excludeQueryRules | query | array<integer> | optional | List of query rules that will not be applied. |
disableQueryClassification | query | boolean | optional | If set to true, query classification is not applied.
|
disableDynamicReranker | query | boolean | optional | If set to true, dynamic reranker is not applied.
|
params | query | array<string> | optional | List of extra params that will be added to the item.search event. They must be in the name:value format. The total size must not exceed 500 bytes when written as a JSON object.
|
Responses
| Status | Description |
|---|---|
200 application/json | Search result |
500 application/json | Service not available |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices/%7BindexId%7D/query?query=SOME_STRING_VALUE&clientUUID=SOME_STRING_VALUE&personalize=SOME_BOOLEAN_VALUE&correlationId=SOME_STRING_VALUE&searchId=SOME_STRING_VALUE&sortByMetric=SOME_STRING_VALUE&sortByGeoPoint=34.052235%2C-118.243685&filterGeoPoints=34.052235%2C-118.243685&filterGeoPoints=15.0%2C65.0&filterAroundRadius=5000&filters=SOME_STRING_VALUE&facets=SOME_ARRAY_VALUE&facetsSize=SOME_INTEGER_VALUE&maxValuesPerFacet=SOME_INTEGER_VALUE&caseSensitiveFacetValues=SOME_BOOLEAN_VALUE&displayAttributes=title&displayAttributes=price&context=mobile&context=listing&includeFacets=SOME_STRING_VALUE&facetsOrderBy=SOME_STRING_VALUE&page=4&limit=10&sortBy=SOME_STRING_VALUE&ordering=SOME_STRING_VALUE&includeMeta=SOME_BOOLEAN_VALUE&distinctFilter=%7B%22attribute%22%3A%20%22color%22%2C%20%22maxNumItems%22%3A%203%7D&ignoreQueryRules=SOME_BOOLEAN_VALUE&excludeQueryRules=2&excludeQueryRules=5&disableQueryClassification=SOME_BOOLEAN_VALUE&disableDynamicReranker=SOME_BOOLEAN_VALUE¶ms=source%3Amobile' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
POST /search/v2/indices/{indexId}/query — Full-text items search
/api-reference/ai-search#tag/Search/operation/SearchFullTextPost
Retrieves items that match a full-text query from a search index or a suggestion index. The results can be filtered and sorted.
API consumers: AI API key (legacy), Web SDK Tracker, Workspace (Business Profile)
API key permission required: ITEMS_SEARCH_SEARCH_READ
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index to be used in the search operation |
Request body (required)
application/json · items-search-FullTextSearchRequest
Request for performing full-text search
| Field | Type | Required | Description |
|---|---|---|---|
query | string | required | Query text to use in the search |
page | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | integer | optional | The number of items to return per page |
sortBy | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the attribute by which the data will be sorted. |
ordering | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
clientUUID | string | optional | UUID of the profile for which the search is performed |
personalize | boolean | optional | If set to false, the search result is not personalized.
|
correlationId | string | optional | Correlation ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
searchId | string | optional | DEPRECATED - use correlationId instead Search ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
sortByMetric | enum<"TransactionsPopularity", "PageVisitsPopularity"> | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the metric by which the data will be sorted. |
sortByGeoPoints | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results.
Geo-point ({latitude},{longitude}) for data sorting. Results are sorted by distance from this point. ordering: asc means "closest first".'
|
filterGeoPoints | array<string> | optional | The definition of a geographical area to filter by.
Given one geo-point, the results will be limited to a radius around a point. To override the default radius (1000 meters), provide the filterAroundRadius parameter.
Example input: ["34.052235,-118.243685"]
Given two geo-points, the results will be limited to a rectangular area.
Example input: ["50,-100", "25,150"]
Given three or more geo-points, the results will be limited to a polygonal area.
Example input: ["50,0", "40,20", "-20,10"]
|
filterAroundRadius | integer | optional | Radius in meters to be used when filtering using geo-location. Can only be used when filtering by a single geo-point. |
filters | string | optional | IQL query string. For details, see the Help Center. |
facets | array<string> | optional | A list of attributes for which facets will be returned.
A single * value matches all facetable attributes.
A single auto value enables automatic facet selection based on the result set — the system picks the most relevant facets using the index's dynamicFacets configuration.
To determine which groups of facets should be returned, use the includeFacets parameter.
|
customFilteredFacets | object | optional | A key-value map that takes attributes as keys and IQL query strings as values. For each key a facet is returned that includes only the items filtered by the provided IQL query string. |
facetsSize | integer | optional | Determines how many items will be used for facets aggregation. |
maxValuesPerFacet | integer | optional | Determines how many values will be retrieved per facet. |
caseSensitiveFacetValues | boolean | optional | Specifies whether facets aggregation should be case sensitive. |
includeFacets | enum<"all", "filtered", "unfiltered", "none"> | optional | Determines which groups of facets will be returned: both filtered and unfiltered; just filtered; just unfiltered; or no group at at all.
To determine which attributes should be returned as facets in each group, use the facets and customFilteredFacets parameters.
|
facetsOrderBy | enum<"coverage", "name"> | optional | Controls the ordering of facets in the response.When facets=auto, the default ordering is by coverage (most relevant facets first).When facets are specified explicitly, the default ordering is by name.When two facets have equal coverage, ties are resolved by name.
|
context | array<string> | optional | List of context strings for a search query |
displayAttributes | array<string> | optional | List of ad hoc attributes that will be returned for each found item |
distinctFilter | object | optional | Distinct filters regulate how many items with the same value of a particular attribute can be returned. |
ignoreQueryRules | boolean | optional | If set to true, query rules are not applied.
|
excludeQueryRules | array<integer> | optional | List of query rules that will not be applied. |
params | object | optional | Extra parameters that will be added to the item.search event. The total size must not exceed 500 bytes.
|
disableQueryClassification | boolean | optional | If set to true, query classification is not applied.
|
disableDynamicReranker | boolean | optional | If set to true, q dynamic reranker is not applied.
|
Responses
| Status | Description |
|---|---|
200 application/json | Search result |
500 application/json | Service not available |
Example request (cURL)
curl --request POST \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/query \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"query":"string","page":0,"limit":10,"sortBy":"string","ordering":"desc","includeMeta":true,"clientUUID":"string","personalize":true,"correlationId":"string","searchId":"string","sortByMetric":"TransactionsPopularity","sortByGeoPoints":"34.052235,-118.243685","filterGeoPoints":["34.052235,-118.243685","15.0,65.0"],"filterAroundRadius":2000,"filters":"string","facets":["string"],"customFilteredFacets":{"brand":"price > 100","price":"brand == foo"},"facetsSize":2000,"maxValuesPerFacet":50,"caseSensitiveFacetValues":false,"includeFacets":"all","facetsOrderBy":"coverage","context":["mobile","listing"],"displayAttributes":["title","price"],"distinctFilter":{"attribute":"string","maxNumItems":1,"levelRangeModifier":0},"ignoreQueryRules":false,"excludeQueryRules":[2,5],"params":{"source":"mobile"},"disableQueryClassification":false,"disableDynamicReranker":false}'
GET /search/v2/indices/{indexId}/query/explain — Explained full-text items search
/api-reference/ai-search#tag/Search/operation/SearchFullTextGetWithExplanation
Retrieves items that match a full-text query from a search index or a suggestion index. The results can be filtered and sorted. The response contains an explanation of the factors that influenced the result.
API consumers: AI API key (legacy), Web SDK Tracker, Workspace (Business Profile)
API key permission required: ITEMS_SEARCH_SEARCH_READ
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
query | query | string | required | Query text to use in the search |
indexId | path | string | required | ID of the index to be used in the search operation |
clientUUID | query | string | optional | UUID of the profile for which the search is performed |
personalize | query | boolean | optional | If set to false, the search result is not personalized.
|
correlationId | query | string | optional | Correlation ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
searchId | query | string | optional | DEPRECATED - use correlationId instead Search ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
sortByMetric | query | enum<"TransactionsPopularity", "PageVisitsPopularity"> | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the metric by which the data will be sorted. |
sortByGeoPoint | query | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results.
Geo-point ({latitude},{longitude}) for data sorting. Results are sorted by distance from this point. ordering: asc means "closest first".'
|
filterGeoPoints | query | array<string> | optional | The definition of a geographical area to filter by.
Given one geo-point, the results will be limited to a radius around a point. To override the default radius (1000 meters), provide the filterAroundRadius parameter.
Example input: ["34.052235,-118.243685"]
Given two geo-points, the results will be limited to a rectangular area.
Example input: ["50,-100", "25,150"]
Given three or more geo-points, the results will be limited to a polygonal area.
Example input: ["50,0", "40,20", "-20,10"]
|
filterAroundRadius | query | integer | optional | Radius in meters to be used when filtering using geo-location. Can only be used when filtering by a single geo-point. |
filters | query | string | optional | IQL query string. For details, see the Help Center. |
facets | query | array<string> | optional | A list of attributes for which facets will be returned. A single * value matches all facetable attributes.
A single auto value enables automatic facet selection based on the result set — the system picks the most relevant facets using the index's dynamicFacets configuration.
To determine which groups of facets should be returned, use the includeFacets parameter.
|
facetsSize | query | integer | optional | Determines how many items will be used for facets aggregation. |
maxValuesPerFacet | query | integer | optional | Determines how many values will be retrieved per facet. |
caseSensitiveFacetValues | query | boolean | optional | Specifies whether facets aggregation should be case sensitive. |
displayAttributes | query | array<string> | optional | List of ad hoc attributes that will be returned for each found item |
context | query | array<string> | optional | List of context strings for a search query |
includeFacets | query | enum<"all", "filtered", "unfiltered", "none"> | optional | Determines which groups of facets will be returned: both filtered and unfiltered; just filtered; just unfiltered; or no group at at all.
To determine which attributes should be returned as facets in each group, use the facets parameter.
|
facetsOrderBy | query | enum<"coverage", "name"> | optional | Controls the ordering of facets in the response.When facets=auto, the default ordering is by coverage (most relevant facets first).When facets are specified explicitly, the default ordering is by name.When two facets have equal coverage, ties are resolved by name.
|
page | query | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | query | integer | optional | The number of items to return per page |
sortBy | query | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the attribute by which the data will be sorted. |
ordering | query | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | query | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
distinctFilter | query | string | optional | DistinctFilter JSON as an URL-encoded string |
ignoreQueryRules | query | boolean | optional | If set to true, query rules are not applied.
|
disableQueryClassification | query | boolean | optional | If set to true, query classification is not applied.
|
disableDynamicReranker | query | boolean | optional | If set to true, dynamic reranker is not applied.
|
excludeQueryRules | query | array<integer> | optional | List of query rules that will not be applied. |
crossWorkspaceModeEnabled | query | boolean | optional | If set, overrides the cross-workspace mode from the index configuration. When true, cross-workspace personalization is enabled. When false, it is disabled.
|
params | query | array<string> | optional | List of extra params that will be added to the item.search event. They must be in the name:value format. The total size must not exceed 500 bytes when written as a JSON object.
|
Responses
| Status | Description |
|---|---|
200 application/json | Search result |
500 application/json | Service not available |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices/%7BindexId%7D/query/explain?query=SOME_STRING_VALUE&clientUUID=SOME_STRING_VALUE&personalize=SOME_BOOLEAN_VALUE&correlationId=SOME_STRING_VALUE&searchId=SOME_STRING_VALUE&sortByMetric=SOME_STRING_VALUE&sortByGeoPoint=34.052235%2C-118.243685&filterGeoPoints=34.052235%2C-118.243685&filterGeoPoints=15.0%2C65.0&filterAroundRadius=5000&filters=SOME_STRING_VALUE&facets=SOME_ARRAY_VALUE&facetsSize=SOME_INTEGER_VALUE&maxValuesPerFacet=SOME_INTEGER_VALUE&caseSensitiveFacetValues=SOME_BOOLEAN_VALUE&displayAttributes=title&displayAttributes=price&context=mobile&context=listing&includeFacets=SOME_STRING_VALUE&facetsOrderBy=SOME_STRING_VALUE&page=4&limit=10&sortBy=SOME_STRING_VALUE&ordering=SOME_STRING_VALUE&includeMeta=SOME_BOOLEAN_VALUE&distinctFilter=%7B%22attribute%22%3A%20%22color%22%2C%20%22maxNumItems%22%3A%203%7D&ignoreQueryRules=SOME_BOOLEAN_VALUE&disableQueryClassification=SOME_BOOLEAN_VALUE&disableDynamicReranker=SOME_BOOLEAN_VALUE&excludeQueryRules=2&excludeQueryRules=5&crossWorkspaceModeEnabled=SOME_BOOLEAN_VALUE¶ms=source%3Amobile' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
POST /search/v2/indices/{indexId}/query/explain — Explained full-text items search
/api-reference/ai-search#tag/Search/operation/SearchFullTextPostWithExplanation
Retrieves items that match a full-text query from a search index or a suggestion index. The results can be filtered and sorted. The response contains an explanation of the factors that influenced the result.
API consumers: AI API key (legacy), Web SDK Tracker, Workspace (Business Profile)
API key permission required: ITEMS_SEARCH_SEARCH_READ
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index to be used in the search operation |
Request body (required)
application/json · object
Request for performing full-text search with explanation
| Field | Type | Required | Description |
|---|---|---|---|
query | string | required | Query text to use in the search |
page | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | integer | optional | The number of items to return per page |
sortBy | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the attribute by which the data will be sorted. |
ordering | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
clientUUID | string | optional | UUID of the profile for which the search is performed |
personalize | boolean | optional | If set to false, the search result is not personalized.
|
correlationId | string | optional | Correlation ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
searchId | string | optional | DEPRECATED - use correlationId instead Search ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
sortByMetric | enum<"TransactionsPopularity", "PageVisitsPopularity"> | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the metric by which the data will be sorted. |
sortByGeoPoints | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results.
Geo-point ({latitude},{longitude}) for data sorting. Results are sorted by distance from this point. ordering: asc means "closest first".'
|
filterGeoPoints | array<string> | optional | The definition of a geographical area to filter by.
Given one geo-point, the results will be limited to a radius around a point. To override the default radius (1000 meters), provide the filterAroundRadius parameter.
Example input: ["34.052235,-118.243685"]
Given two geo-points, the results will be limited to a rectangular area.
Example input: ["50,-100", "25,150"]
Given three or more geo-points, the results will be limited to a polygonal area.
Example input: ["50,0", "40,20", "-20,10"]
|
filterAroundRadius | integer | optional | Radius in meters to be used when filtering using geo-location. Can only be used when filtering by a single geo-point. |
filters | string | optional | IQL query string. For details, see the Help Center. |
facets | array<string> | optional | A list of attributes for which facets will be returned.
A single * value matches all facetable attributes.
A single auto value enables automatic facet selection based on the result set — the system picks the most relevant facets using the index's dynamicFacets configuration.
To determine which groups of facets should be returned, use the includeFacets parameter.
|
customFilteredFacets | object | optional | A key-value map that takes attributes as keys and IQL query strings as values. For each key a facet is returned that includes only the items filtered by the provided IQL query string. |
facetsSize | integer | optional | Determines how many items will be used for facets aggregation. |
maxValuesPerFacet | integer | optional | Determines how many values will be retrieved per facet. |
caseSensitiveFacetValues | boolean | optional | Specifies whether facets aggregation should be case sensitive. |
includeFacets | enum<"all", "filtered", "unfiltered", "none"> | optional | Determines which groups of facets will be returned: both filtered and unfiltered; just filtered; just unfiltered; or no group at at all.
To determine which attributes should be returned as facets in each group, use the facets and customFilteredFacets parameters.
|
facetsOrderBy | enum<"coverage", "name"> | optional | Controls the ordering of facets in the response.When facets=auto, the default ordering is by coverage (most relevant facets first).When facets are specified explicitly, the default ordering is by name.When two facets have equal coverage, ties are resolved by name.
|
context | array<string> | optional | List of context strings for a search query |
displayAttributes | array<string> | optional | List of ad hoc attributes that will be returned for each found item |
distinctFilter | object | optional | Distinct filters regulate how many items with the same value of a particular attribute can be returned. |
ignoreQueryRules | boolean | optional | If set to true, query rules are not applied.
|
excludeQueryRules | array<integer> | optional | List of query rules that will not be applied. |
params | object | optional | Extra parameters that will be added to the item.search event. The total size must not exceed 500 bytes.
|
disableQueryClassification | boolean | optional | If set to true, query classification is not applied.
|
disableDynamicReranker | boolean | optional | If set to true, q dynamic reranker is not applied.
|
crossWorkspaceMode | object | optional | Cross-workspace personalization mode. When provided, overrides the index configuration setting. |
Responses
| Status | Description |
|---|---|
200 application/json | Search result |
500 application/json | Service not available |
Example request (cURL)
curl --request POST \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/query/explain \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"query":"string","page":0,"limit":10,"sortBy":"string","ordering":"desc","includeMeta":true,"clientUUID":"string","personalize":true,"correlationId":"string","searchId":"string","sortByMetric":"TransactionsPopularity","sortByGeoPoints":"34.052235,-118.243685","filterGeoPoints":["34.052235,-118.243685","15.0,65.0"],"filterAroundRadius":2000,"filters":"string","facets":["string"],"customFilteredFacets":{"brand":"price > 100","price":"brand == foo"},"facetsSize":2000,"maxValuesPerFacet":50,"caseSensitiveFacetValues":false,"includeFacets":"all","facetsOrderBy":"coverage","context":["mobile","listing"],"displayAttributes":["title","price"],"distinctFilter":{"attribute":"string","maxNumItems":1,"levelRangeModifier":0},"ignoreQueryRules":false,"excludeQueryRules":[2,5],"params":{"source":"mobile"},"disableQueryClassification":false,"disableDynamicReranker":false,"crossWorkspaceMode":{"enabled":true}}'
GET /search/v2/indices/{indexId}/autocomplete — Autocomplete items search
/api-reference/ai-search#tag/Search/operation/SearchAutocompleteGet
Retrieves items that match a query from a search index or a suggestion index. The results can be filtered and sorted. The results of this search type are not cached.
API consumers: AI API key (legacy), Web SDK Tracker, Workspace (Business Profile)
API key permission required: ITEMS_SEARCH_SEARCH_READ
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
query | query | string | required | Query text to use in the search |
indexId | path | string | required | ID of the index to be used in the search operation |
clientUUID | query | string | optional | UUID of the profile for which the search is performed |
personalize | query | boolean | optional | If set to false, the search result is not personalized.
|
sortByMetric | query | enum<"TransactionsPopularity", "PageVisitsPopularity"> | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the metric by which the data will be sorted. |
sortByGeoPoint | query | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results.
Geo-point ({latitude},{longitude}) for data sorting. Results are sorted by distance from this point. ordering: asc means "closest first".'
|
filterGeoPoints | query | array<string> | optional | The definition of a geographical area to filter by.
Given one geo-point, the results will be limited to a radius around a point. To override the default radius (1000 meters), provide the filterAroundRadius parameter.
Example input: ["34.052235,-118.243685"]
Given two geo-points, the results will be limited to a rectangular area.
Example input: ["50,-100", "25,150"]
Given three or more geo-points, the results will be limited to a polygonal area.
Example input: ["50,0", "40,20", "-20,10"]
|
filterAroundRadius | query | integer | optional | Radius in meters to be used when filtering using geo-location. Can only be used when filtering by a single geo-point. |
filters | query | string | optional | IQL query string. For details, see the Help Center. |
facets | query | array<string> | optional | A list of attributes for which facets will be returned. A single * value matches all facetable attributes.
A single auto value enables automatic facet selection based on the result set — the system picks the most relevant facets using the index's dynamicFacets configuration.
To determine which groups of facets should be returned, use the includeFacets parameter.
|
facetsSize | query | integer | optional | Determines how many items will be used for facets aggregation. |
maxValuesPerFacet | query | integer | optional | Determines how many values will be retrieved per facet. |
caseSensitiveFacetValues | query | boolean | optional | Specifies whether facets aggregation should be case sensitive. |
displayAttributes | query | array<string> | optional | List of ad hoc attributes that will be returned for each found item |
context | query | array<string> | optional | List of context strings for a search query |
includeFacets | query | enum<"all", "filtered", "unfiltered", "none"> | optional | Determines which groups of facets will be returned: both filtered and unfiltered; just filtered; just unfiltered; or no group at at all.
To determine which attributes should be returned as facets in each group, use the facets parameter.
|
facetsOrderBy | query | enum<"coverage", "name"> | optional | Controls the ordering of facets in the response.When facets=auto, the default ordering is by coverage (most relevant facets first).When facets are specified explicitly, the default ordering is by name.When two facets have equal coverage, ties are resolved by name.
|
page | query | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | query | integer | optional | The number of items to return per page |
sortBy | query | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the attribute by which the data will be sorted. |
ordering | query | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | query | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
distinctFilter | query | string | optional | DistinctFilter JSON as an URL-encoded string |
ignoreQueryRules | query | boolean | optional | If set to true, query rules are not applied.
|
excludeQueryRules | query | array<integer> | optional | List of query rules that will not be applied. |
params | query | array<string> | optional | List of extra params that will be added to the item.search event. They must be in the name:value format. The total size must not exceed 500 bytes when written as a JSON object.
|
disableQueryClassification | query | boolean | optional | If set to true, query classification is not applied.
|
disableDynamicReranker | query | boolean | optional | If set to true, dynamic reranker is not applied.
|
Responses
| Status | Description |
|---|---|
200 application/json | Search result |
500 application/json | Service not available |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices/%7BindexId%7D/autocomplete?query=SOME_STRING_VALUE&clientUUID=SOME_STRING_VALUE&personalize=SOME_BOOLEAN_VALUE&sortByMetric=SOME_STRING_VALUE&sortByGeoPoint=34.052235%2C-118.243685&filterGeoPoints=34.052235%2C-118.243685&filterGeoPoints=15.0%2C65.0&filterAroundRadius=5000&filters=SOME_STRING_VALUE&facets=SOME_ARRAY_VALUE&facetsSize=SOME_INTEGER_VALUE&maxValuesPerFacet=SOME_INTEGER_VALUE&caseSensitiveFacetValues=SOME_BOOLEAN_VALUE&displayAttributes=title&displayAttributes=price&context=mobile&context=listing&includeFacets=SOME_STRING_VALUE&facetsOrderBy=SOME_STRING_VALUE&page=4&limit=10&sortBy=SOME_STRING_VALUE&ordering=SOME_STRING_VALUE&includeMeta=SOME_BOOLEAN_VALUE&distinctFilter=%7B%22attribute%22%3A%20%22color%22%2C%20%22maxNumItems%22%3A%203%7D&ignoreQueryRules=SOME_BOOLEAN_VALUE&excludeQueryRules=2&excludeQueryRules=5¶ms=source%3Amobile&disableQueryClassification=SOME_BOOLEAN_VALUE&disableDynamicReranker=SOME_BOOLEAN_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
POST /search/v2/indices/{indexId}/autocomplete — Autocomplete items search
/api-reference/ai-search#tag/Search/operation/SearchAutocompletePost
Retrieves items that match a query from a search index or a suggestion index. The results can be filtered and sorted. The results of this search type are not cached.
API consumers: AI API key (legacy), Web SDK Tracker, Workspace (Business Profile)
API key permission required: ITEMS_SEARCH_SEARCH_READ
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index to be used in the search operation |
Request body (required)
application/json · items-search-AutocompleteRequest
Request for performing an autocomplete search
| Field | Type | Required | Description |
|---|---|---|---|
query | string | required | Query text to use in the search |
page | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | integer | optional | The number of items to return per page |
sortBy | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the attribute by which the data will be sorted. |
ordering | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
clientUUID | string | optional | UUID of the profile for which the search is performed |
sortByMetric | enum<"TransactionsPopularity", "PageVisitsPopularity"> | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the metric by which the data will be sorted. |
sortByGeoPoints | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results.
Geo-point ({latitude},{longitude}) for data sorting. Results are sorted by distance from this point. ordering: asc means "closest first".'
|
filterGeoPoints | array<string> | optional | The definition of a geographical area to filter by.
Given one geo-point, the results will be limited to a radius around a point. To override the default radius (1000 meters), provide the filterAroundRadius parameter.
Example input: ["34.052235,-118.243685"]
Given two geo-points, the results will be limited to a rectangular area.
Example input: ["50,-100", "25,150"]
Given three or more geo-points, the results will be limited to a polygonal area.
Example input: ["50,0", "40,20", "-20,10"]
|
filterAroundRadius | integer | optional | Radius in meters to be used when filtering using geo-location. Can only be used when filtering by a single geo-point. |
filters | string | optional | IQL query string. For details, see the Help Center. |
facets | array<string> | optional | A list of attributes for which facets will be returned.
A single * value matches all facetable attributes.
A single auto value enables automatic facet selection based on the result set — the system picks the most relevant facets using the index's dynamicFacets configuration.
To determine which groups of facets should be returned, use the includeFacets parameter.
|
customFilteredFacets | object | optional | A key-value map that takes attributes as keys and IQL query strings as values. For each key a facet is returned that includes only the items filtered by the provided IQL query string. |
facetsSize | integer | optional | Determines how many items will be used for facets aggregation. |
maxValuesPerFacet | integer | optional | Determines how many values will be retrieved per facet. |
caseSensitiveFacetValues | boolean | optional | Specifies whether facets aggregation should be case sensitive. |
includeFacets | enum<"all", "filtered", "unfiltered", "none"> | optional | Determines which groups of facets will be returned: both filtered and unfiltered; just filtered; just unfiltered; or no group at at all.
To determine which attributes should be returned as facets in each group, use the facets and customFilteredFacets parameters.
|
facetsOrderBy | enum<"coverage", "name"> | optional | Controls the ordering of facets in the response.When facets=auto, the default ordering is by coverage (most relevant facets first).When facets are specified explicitly, the default ordering is by name.When two facets have equal coverage, ties are resolved by name.
|
context | array<string> | optional | List of context strings for a search query |
displayAttributes | array<string> | optional | List of ad hoc attributes that will be returned for each found item |
distinctFilter | object | optional | Distinct filters regulate how many items with the same value of a particular attribute can be returned. |
ignoreQueryRules | boolean | optional | If set to true, query rules are not applied.
|
excludeQueryRules | array<integer> | optional | List of query rules that will not be applied. |
params | object | optional | Extra parameters that will be added to the item.search event. The total size must not exceed 500 bytes.
|
disableQueryClassification | boolean | optional | If set to true, query classification is not applied.
|
disableDynamicReranker | boolean | optional | If set to true, q dynamic reranker is not applied.
|
Responses
| Status | Description |
|---|---|
200 application/json | Search result |
500 application/json | Service not available |
Example request (cURL)
curl --request POST \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/autocomplete \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"query":"string","page":0,"limit":10,"sortBy":"string","ordering":"desc","includeMeta":true,"clientUUID":"string","sortByMetric":"TransactionsPopularity","sortByGeoPoints":"34.052235,-118.243685","filterGeoPoints":["34.052235,-118.243685","15.0,65.0"],"filterAroundRadius":2000,"filters":"string","facets":["string"],"customFilteredFacets":{"brand":"price > 100","price":"brand == foo"},"facetsSize":2000,"maxValuesPerFacet":50,"caseSensitiveFacetValues":false,"includeFacets":"all","facetsOrderBy":"coverage","context":["mobile","listing"],"displayAttributes":["title","price"],"distinctFilter":{"attribute":"string","maxNumItems":1,"levelRangeModifier":0},"ignoreQueryRules":false,"excludeQueryRules":[2,5],"params":{"source":"mobile"},"disableQueryClassification":false,"disableDynamicReranker":false}'
GET /search/v2/indices/{indexId}/autocomplete/explain — Explained autocomplete items search
/api-reference/ai-search#tag/Search/operation/SearchAutocompleteGetWithExplanation
Retrieves items that match a query from a search index or a suggestion index. The results can be filtered and sorted. The results of this search type are not cached. The response contains an explanation of the factors that influenced the result.
API consumers: AI API key (legacy), Web SDK Tracker, Workspace (Business Profile)
API key permission required: ITEMS_SEARCH_SEARCH_READ
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
query | query | string | required | Query text to use in the search |
indexId | path | string | required | ID of the index to be used in the search operation |
clientUUID | query | string | optional | UUID of the profile for which the search is performed |
personalize | query | boolean | optional | If set to false, the search result is not personalized.
|
sortByMetric | query | enum<"TransactionsPopularity", "PageVisitsPopularity"> | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the metric by which the data will be sorted. |
sortByGeoPoint | query | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results.
Geo-point ({latitude},{longitude}) for data sorting. Results are sorted by distance from this point. ordering: asc means "closest first".'
|
filterGeoPoints | query | array<string> | optional | The definition of a geographical area to filter by.
Given one geo-point, the results will be limited to a radius around a point. To override the default radius (1000 meters), provide the filterAroundRadius parameter.
Example input: ["34.052235,-118.243685"]
Given two geo-points, the results will be limited to a rectangular area.
Example input: ["50,-100", "25,150"]
Given three or more geo-points, the results will be limited to a polygonal area.
Example input: ["50,0", "40,20", "-20,10"]
|
filterAroundRadius | query | integer | optional | Radius in meters to be used when filtering using geo-location. Can only be used when filtering by a single geo-point. |
filters | query | string | optional | IQL query string. For details, see the Help Center. |
facets | query | array<string> | optional | A list of attributes for which facets will be returned. A single * value matches all facetable attributes.
A single auto value enables automatic facet selection based on the result set — the system picks the most relevant facets using the index's dynamicFacets configuration.
To determine which groups of facets should be returned, use the includeFacets parameter.
|
facetsSize | query | integer | optional | Determines how many items will be used for facets aggregation. |
maxValuesPerFacet | query | integer | optional | Determines how many values will be retrieved per facet. |
caseSensitiveFacetValues | query | boolean | optional | Specifies whether facets aggregation should be case sensitive. |
displayAttributes | query | array<string> | optional | List of ad hoc attributes that will be returned for each found item |
context | query | array<string> | optional | List of context strings for a search query |
includeFacets | query | enum<"all", "filtered", "unfiltered", "none"> | optional | Determines which groups of facets will be returned: both filtered and unfiltered; just filtered; just unfiltered; or no group at at all.
To determine which attributes should be returned as facets in each group, use the facets parameter.
|
facetsOrderBy | query | enum<"coverage", "name"> | optional | Controls the ordering of facets in the response.When facets=auto, the default ordering is by coverage (most relevant facets first).When facets are specified explicitly, the default ordering is by name.When two facets have equal coverage, ties are resolved by name.
|
page | query | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | query | integer | optional | The number of items to return per page |
sortBy | query | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the attribute by which the data will be sorted. |
ordering | query | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | query | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
distinctFilter | query | string | optional | DistinctFilter JSON as an URL-encoded string |
ignoreQueryRules | query | boolean | optional | If set to true, query rules are not applied.
|
excludeQueryRules | query | array<integer> | optional | List of query rules that will not be applied. |
crossWorkspaceModeEnabled | query | boolean | optional | If set, overrides the cross-workspace mode from the index configuration. When true, cross-workspace personalization is enabled. When false, it is disabled.
|
params | query | array<string> | optional | List of extra params that will be added to the item.search event. They must be in the name:value format. The total size must not exceed 500 bytes when written as a JSON object.
|
disableQueryClassification | query | boolean | optional | If set to true, query classification is not applied.
|
disableDynamicReranker | query | boolean | optional | If set to true, dynamic reranker is not applied.
|
Responses
| Status | Description |
|---|---|
200 application/json | Search result |
500 application/json | Service not available |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices/%7BindexId%7D/autocomplete/explain?query=SOME_STRING_VALUE&clientUUID=SOME_STRING_VALUE&personalize=SOME_BOOLEAN_VALUE&sortByMetric=SOME_STRING_VALUE&sortByGeoPoint=34.052235%2C-118.243685&filterGeoPoints=34.052235%2C-118.243685&filterGeoPoints=15.0%2C65.0&filterAroundRadius=5000&filters=SOME_STRING_VALUE&facets=SOME_ARRAY_VALUE&facetsSize=SOME_INTEGER_VALUE&maxValuesPerFacet=SOME_INTEGER_VALUE&caseSensitiveFacetValues=SOME_BOOLEAN_VALUE&displayAttributes=title&displayAttributes=price&context=mobile&context=listing&includeFacets=SOME_STRING_VALUE&facetsOrderBy=SOME_STRING_VALUE&page=4&limit=10&sortBy=SOME_STRING_VALUE&ordering=SOME_STRING_VALUE&includeMeta=SOME_BOOLEAN_VALUE&distinctFilter=%7B%22attribute%22%3A%20%22color%22%2C%20%22maxNumItems%22%3A%203%7D&ignoreQueryRules=SOME_BOOLEAN_VALUE&excludeQueryRules=2&excludeQueryRules=5&crossWorkspaceModeEnabled=SOME_BOOLEAN_VALUE¶ms=source%3Amobile&disableQueryClassification=SOME_BOOLEAN_VALUE&disableDynamicReranker=SOME_BOOLEAN_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
POST /search/v2/indices/{indexId}/autocomplete/explain — Explained autocomplete items search
/api-reference/ai-search#tag/Search/operation/SearchAutocompletePostWithExplanation
Retrieves items that match a query from a search index or a suggestion index. The results can be filtered and sorted. The results of this search type are not cached. The response contains an explanation of the factors that influenced the result.
API consumers: AI API key (legacy), Web SDK Tracker, Workspace (Business Profile)
API key permission required: ITEMS_SEARCH_SEARCH_READ
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index to be used in the search operation |
Request body (required)
application/json · object
Request for performing an autocomplete search with explanation
| Field | Type | Required | Description |
|---|---|---|---|
query | string | required | Query text to use in the search |
page | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | integer | optional | The number of items to return per page |
sortBy | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the attribute by which the data will be sorted. |
ordering | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
clientUUID | string | optional | UUID of the profile for which the search is performed |
sortByMetric | enum<"TransactionsPopularity", "PageVisitsPopularity"> | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the metric by which the data will be sorted. |
sortByGeoPoints | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results.
Geo-point ({latitude},{longitude}) for data sorting. Results are sorted by distance from this point. ordering: asc means "closest first".'
|
filterGeoPoints | array<string> | optional | The definition of a geographical area to filter by.
Given one geo-point, the results will be limited to a radius around a point. To override the default radius (1000 meters), provide the filterAroundRadius parameter.
Example input: ["34.052235,-118.243685"]
Given two geo-points, the results will be limited to a rectangular area.
Example input: ["50,-100", "25,150"]
Given three or more geo-points, the results will be limited to a polygonal area.
Example input: ["50,0", "40,20", "-20,10"]
|
filterAroundRadius | integer | optional | Radius in meters to be used when filtering using geo-location. Can only be used when filtering by a single geo-point. |
filters | string | optional | IQL query string. For details, see the Help Center. |
facets | array<string> | optional | A list of attributes for which facets will be returned.
A single * value matches all facetable attributes.
A single auto value enables automatic facet selection based on the result set — the system picks the most relevant facets using the index's dynamicFacets configuration.
To determine which groups of facets should be returned, use the includeFacets parameter.
|
customFilteredFacets | object | optional | A key-value map that takes attributes as keys and IQL query strings as values. For each key a facet is returned that includes only the items filtered by the provided IQL query string. |
facetsSize | integer | optional | Determines how many items will be used for facets aggregation. |
maxValuesPerFacet | integer | optional | Determines how many values will be retrieved per facet. |
caseSensitiveFacetValues | boolean | optional | Specifies whether facets aggregation should be case sensitive. |
includeFacets | enum<"all", "filtered", "unfiltered", "none"> | optional | Determines which groups of facets will be returned: both filtered and unfiltered; just filtered; just unfiltered; or no group at at all.
To determine which attributes should be returned as facets in each group, use the facets and customFilteredFacets parameters.
|
facetsOrderBy | enum<"coverage", "name"> | optional | Controls the ordering of facets in the response.When facets=auto, the default ordering is by coverage (most relevant facets first).When facets are specified explicitly, the default ordering is by name.When two facets have equal coverage, ties are resolved by name.
|
context | array<string> | optional | List of context strings for a search query |
displayAttributes | array<string> | optional | List of ad hoc attributes that will be returned for each found item |
distinctFilter | object | optional | Distinct filters regulate how many items with the same value of a particular attribute can be returned. |
ignoreQueryRules | boolean | optional | If set to true, query rules are not applied.
|
excludeQueryRules | array<integer> | optional | List of query rules that will not be applied. |
params | object | optional | Extra parameters that will be added to the item.search event. The total size must not exceed 500 bytes.
|
disableQueryClassification | boolean | optional | If set to true, query classification is not applied.
|
disableDynamicReranker | boolean | optional | If set to true, q dynamic reranker is not applied.
|
crossWorkspaceMode | object | optional | Cross-workspace personalization mode. When provided, overrides the index configuration setting. |
Responses
| Status | Description |
|---|---|
200 application/json | Search result |
500 application/json | Service not available |
Example request (cURL)
curl --request POST \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/autocomplete/explain \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"query":"string","page":0,"limit":10,"sortBy":"string","ordering":"desc","includeMeta":true,"clientUUID":"string","sortByMetric":"TransactionsPopularity","sortByGeoPoints":"34.052235,-118.243685","filterGeoPoints":["34.052235,-118.243685","15.0,65.0"],"filterAroundRadius":2000,"filters":"string","facets":["string"],"customFilteredFacets":{"brand":"price > 100","price":"brand == foo"},"facetsSize":2000,"maxValuesPerFacet":50,"caseSensitiveFacetValues":false,"includeFacets":"all","facetsOrderBy":"coverage","context":["mobile","listing"],"displayAttributes":["title","price"],"distinctFilter":{"attribute":"string","maxNumItems":1,"levelRangeModifier":0},"ignoreQueryRules":false,"excludeQueryRules":[2,5],"params":{"source":"mobile"},"disableQueryClassification":false,"disableDynamicReranker":false,"crossWorkspaceMode":{"enabled":true}}'
GET /search/v2/indices/{indexId}/explain-match — Searchable attributes match
/api-reference/ai-search#tag/Search/operation/searchableAttributesMatch
Enter a query and an item ID to check if a token (a word or a synonym which replaced it) matches a value or part of a value from the item's searchable attributes.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: ITEMS_SEARCH_SEARCH_READ
User role permission required: assets_search: read
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index to be used in the search operation |
query | query | string | required | Query text to use in the search |
itemId | query | string | required | Item ID |
Responses
| Status | Description |
|---|---|
200 application/json | Searchable attributes match result |
500 application/json | Service not available |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices/%7BindexId%7D/explain-match?query=SOME_STRING_VALUE&itemId=SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
GET /search/v2/indices/{indexId}/deleted-searches — Get deleted searches
/api-reference/ai-search#tag/Search/operation/GetDeletedSearches
Retrieve the searches deleted from a profile's history.
API consumers: AI API key (legacy), Workspace (Business Profile), Web SDK Tracker
API key permission required: ITEMS_SEARCH_RECENT_SEARCH_READ
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index that the query relates to |
clientUUID | query | string | required | UUID of the profile for which the query is performed |
Responses
| Status | Description |
|---|---|
200 application/json | Deleted searches returned |
400 application/json | Check error message for more details |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices/4add1a1fa877c1651906bb22c9dfd37a1618852272/deleted-searches?clientUUID=e0097757-d1e2-44ac-ba3c-d97979a354c1' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
POST /search/v2/indices/{indexId}/deleted-searches — Soft-delete a recent search
/api-reference/ai-search#tag/Search/operation/PostDeletedSearch
Delete a recent search from the history accessible to a profile. The search remains in the database and you can retrieve it by using this endpoint.
API consumers: AI API key (legacy), Workspace (Business Profile), Web SDK Tracker
API key permission required: ITEMS_SEARCH_RECENT_SEARCH_CREATE
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index that the query relates to |
clientUUID | query | string | required | UUID of the profile for which the query is performed |
Request body (required)
application/json · items-search-recent-DeletedSearch
Request for deleting search query
| Field | Type | Required | Description |
|---|---|---|---|
query | string | optional | Deleted search query. Required if match field is set to query.
|
match | string | optional | Tells how to match this deleted search on recent searches.
query: matches only recent searches with provided query
all: matches all recent searches
|
timestamp | string | optional | Time when the search was deleted. If not present current time is taken. |
Responses
| Status | Description |
|---|---|
204 | Soft-delete successful |
400 application/json | Check error message for more details |
Example request (cURL)
curl --request POST \
--url 'https://api.synerise.com/search/v2/indices/4add1a1fa877c1651906bb22c9dfd37a1618852272/deleted-searches?clientUUID=e0097757-d1e2-44ac-ba3c-d97979a354c1' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"query":"string","match":"query","timestamp":"2019-08-24T14:15:22Z"}'
GET /search/v2/indices/{indexId}/recent-searches — Get recent searches
/api-reference/ai-search#tag/Search/operation/GetRecentSearches
Get a profile's recent searches from a particular index.
API consumers: AI API key (legacy), Workspace (Business Profile), Web SDK Tracker
API key permission required: ITEMS_SEARCH_RECENT_SEARCH_READ
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index that the query relates to |
clientUUID | query | string | required | UUID of the profile for which the query is performed |
windowSize | query | integer | optional | Maximum number of recent searches to be returned. NOTE: The provided query parameter has priority over the configuration provided in this endpoint. If the parameter is not provided, the default value does not override the configuration. |
timeUnit | query | enum<"YEARS", "MONTHS", "WEEKS", "DAYS", …> | optional | The time unit. Used in conjunction with timeValue.NOTE: The provided query parameter has priority over the configuration provided in this endpoint. If the parameter is not provided, the default value does not override the configuration.
|
timeValue | query | integer | optional | The amount of time units. Used in conjunction with timeUnit.NOTE: The provided query parameter has priority over the configuration provided in this endpoint. If the parameter is not provided, the default value does not override the configuration.
|
Responses
| Status | Description |
|---|---|
200 application/json | Recent searches returned |
400 application/json | Check error message for more details |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices/4add1a1fa877c1651906bb22c9dfd37a1618852272/recent-searches?clientUUID=e0097757-d1e2-44ac-ba3c-d97979a354c1&windowSize=SOME_INTEGER_VALUE&timeUnit=SOME_STRING_VALUE&timeValue=SOME_INTEGER_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
Visual Search
GET /search/v2/indices/{indexId}/visual — Visual items search
/api-reference/ai-search#tag/Visual-Search/operation/SearchVisualGet
Retrieves items that match an image. The results can be filtered and sorted.
API consumers: AI API key (legacy), Web SDK Tracker, Workspace (Business Profile)
API key permission required: ITEMS_SEARCH_SEARCH_READ
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
url | query | string | required | URL of the image to be used in the visual search |
indexId | path | string | required | ID of the index to be used in the search operation |
clientUUID | query | string | optional | UUID of the profile for which the search is performed |
personalize | query | boolean | optional | If set to false, the search result is not personalized.
|
correlationId | query | string | optional | Correlation ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
searchId | query | string | optional | DEPRECATED - use correlationId instead Search ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
sortByMetric | query | enum<"TransactionsPopularity", "PageVisitsPopularity"> | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the metric by which the data will be sorted. |
sortByGeoPoint | query | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results.
Geo-point ({latitude},{longitude}) for data sorting. Results are sorted by distance from this point. ordering: asc means "closest first".'
|
filterGeoPoints | query | array<string> | optional | The definition of a geographical area to filter by.
Given one geo-point, the results will be limited to a radius around a point. To override the default radius (1000 meters), provide the filterAroundRadius parameter.
Example input: ["34.052235,-118.243685"]
Given two geo-points, the results will be limited to a rectangular area.
Example input: ["50,-100", "25,150"]
Given three or more geo-points, the results will be limited to a polygonal area.
Example input: ["50,0", "40,20", "-20,10"]
|
filterAroundRadius | query | integer | optional | Radius in meters to be used when filtering using geo-location. Can only be used when filtering by a single geo-point. |
filterAnchor | query | string | optional | Anchor ({width},{height}) by which the visual results data will be filtered.
{width},{height} correspond to normalized image coordinates, i.e. they are in range [0,1].
Anchor (0,0) corresponds to the top-left pixel of an image.
|
filters | query | string | optional | IQL query string. For details, see the Help Center. |
facets | query | array<string> | optional | A list of attributes for which facets will be returned. A single * value matches all facetable attributes.
A single auto value enables automatic facet selection based on the result set — the system picks the most relevant facets using the index's dynamicFacets configuration.
To determine which groups of facets should be returned, use the includeFacets parameter.
|
facetsSize | query | integer | optional | Determines how many items will be used for facets aggregation. |
maxValuesPerFacet | query | integer | optional | Determines how many values will be retrieved per facet. |
caseSensitiveFacetValues | query | boolean | optional | Specifies whether facets aggregation should be case sensitive. |
displayAttributes | query | array<string> | optional | List of ad hoc attributes that will be returned for each found item |
context | query | array<string> | optional | List of context strings for a search query |
includeFacets | query | enum<"all", "filtered", "unfiltered", "none"> | optional | Determines which groups of facets will be returned: both filtered and unfiltered; just filtered; just unfiltered; or no group at at all.
To determine which attributes should be returned as facets in each group, use the facets parameter.
|
facetsOrderBy | query | enum<"coverage", "name"> | optional | Controls the ordering of facets in the response.When facets=auto, the default ordering is by coverage (most relevant facets first).When facets are specified explicitly, the default ordering is by name.When two facets have equal coverage, ties are resolved by name.
|
page | query | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | query | integer | optional | The number of items to return per page |
sortBy | query | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the attribute by which the data will be sorted. |
ordering | query | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | query | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
ignoreQueryRules | query | boolean | optional | If set to true, query rules are not applied.
|
excludeQueryRules | query | array<integer> | optional | List of query rules that will not be applied. |
params | query | array<string> | optional | List of extra params that will be added to the item.search event. They must be in the name:value format. The total size must not exceed 500 bytes when written as a JSON object.
|
Responses
| Status | Description |
|---|---|
200 application/json | Search response |
500 application/json | Service not available |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices/%7BindexId%7D/visual?url=SOME_STRING_VALUE&clientUUID=SOME_STRING_VALUE&personalize=SOME_BOOLEAN_VALUE&correlationId=SOME_STRING_VALUE&searchId=SOME_STRING_VALUE&sortByMetric=SOME_STRING_VALUE&sortByGeoPoint=34.052235%2C-118.243685&filterGeoPoints=34.052235%2C-118.243685&filterGeoPoints=15.0%2C65.0&filterAroundRadius=5000&filterAnchor=0.2%2C0.8&filters=SOME_STRING_VALUE&facets=SOME_ARRAY_VALUE&facetsSize=SOME_INTEGER_VALUE&maxValuesPerFacet=SOME_INTEGER_VALUE&caseSensitiveFacetValues=SOME_BOOLEAN_VALUE&displayAttributes=title&displayAttributes=price&context=mobile&context=listing&includeFacets=SOME_STRING_VALUE&facetsOrderBy=SOME_STRING_VALUE&page=4&limit=10&sortBy=SOME_STRING_VALUE&ordering=SOME_STRING_VALUE&includeMeta=SOME_BOOLEAN_VALUE&ignoreQueryRules=SOME_BOOLEAN_VALUE&excludeQueryRules=2&excludeQueryRules=5¶ms=source%3Amobile' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
POST /search/v2/indices/{indexId}/visual — Visual items search
/api-reference/ai-search#tag/Visual-Search/operation/SearchVisualPost
Retrieves items that match an image. The results can be filtered and sorted.
API consumers: AI API key (legacy), Web SDK Tracker, Workspace (Business Profile)
API key permission required: ITEMS_SEARCH_SEARCH_READ
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index to be used in the search operation |
Request body (required)
application/json · items-search-VisualSearchRequest
Request for performing visual search
| Field | Type | Required | Description |
|---|---|---|---|
url | string | required | URL of the image to be used in the visual search |
page | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | integer | optional | The number of items to return per page |
sortBy | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the attribute by which the data will be sorted. |
ordering | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
clientUUID | string | optional | UUID of the profile for which the search is performed |
personalize | boolean | optional | If set to false, the search result is not personalized.
|
correlationId | string | optional | Correlation ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
searchId | string | optional | DEPRECATED - use correlationId instead Search ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
sortByMetric | enum<"TransactionsPopularity", "PageVisitsPopularity"> | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the metric by which the data will be sorted. |
sortByGeoPoints | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results.
Geo-point ({latitude},{longitude}) for data sorting. Results are sorted by distance from this point. ordering: asc means "closest first".'
|
filterGeoPoints | array<string> | optional | The definition of a geographical area to filter by.
Given one geo-point, the results will be limited to a radius around a point. To override the default radius (1000 meters), provide the filterAroundRadius parameter.
Example input: ["34.052235,-118.243685"]
Given two geo-points, the results will be limited to a rectangular area.
Example input: ["50,-100", "25,150"]
Given three or more geo-points, the results will be limited to a polygonal area.
Example input: ["50,0", "40,20", "-20,10"]
|
filterAroundRadius | integer | optional | Radius in meters to be used when filtering using geo-location. Can only be used when filtering by a single geo-point. |
filterAnchor | string | optional | Anchor ({width},{height}) by which the visual results data will be filtered.
{width},{height} correspond to normalized image coordinates, i.e. they are in range [0,1].
Anchor (0,0) corresponds to the top-left pixel of an image.
|
filters | string | optional | IQL query string. For details, see the Help Center. |
facets | array<string> | optional | A list of attributes for which facets will be returned.
A single * value matches all facetable attributes.
A single auto value enables automatic facet selection based on the result set — the system picks the most relevant facets using the index's dynamicFacets configuration.
To determine which groups of facets should be returned, use the includeFacets parameter.
|
customFilteredFacets | object | optional | A key-value map that takes attributes as keys and IQL query strings as values. For each key a facet is returned that includes only the items filtered by the provided IQL query string. |
facetsSize | integer | optional | Determines how many items will be used for facets aggregation. |
maxValuesPerFacet | integer | optional | Determines how many values will be retrieved per facet. |
caseSensitiveFacetValues | boolean | optional | Specifies whether facets aggregation should be case sensitive. |
includeFacets | enum<"all", "filtered", "unfiltered", "none"> | optional | Determines which groups of facets will be returned: both filtered and unfiltered; just filtered; just unfiltered; or no group at at all.
To determine which attributes should be returned as facets in each group, use the facets and customFilteredFacets parameters.
|
facetsOrderBy | enum<"coverage", "name"> | optional | Controls the ordering of facets in the response.When facets=auto, the default ordering is by coverage (most relevant facets first).When facets are specified explicitly, the default ordering is by name.When two facets have equal coverage, ties are resolved by name.
|
context | array<string> | optional | List of context strings for a search query |
displayAttributes | array<string> | optional | List of ad hoc attributes that will be returned for each found item |
ignoreQueryRules | boolean | optional | If set to true, query rules are not applied.
|
excludeQueryRules | array<integer> | optional | List of query rules that will not be applied. |
params | object | optional | Extra parameters that will be added to the item.search event. The total size must not exceed 500 bytes.
|
Responses
| Status | Description |
|---|---|
200 application/json | Search response |
500 application/json | Service not available |
Example request (cURL)
curl --request POST \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/visual \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"url":"string","page":0,"limit":10,"sortBy":"string","ordering":"desc","includeMeta":true,"clientUUID":"string","personalize":true,"correlationId":"string","searchId":"string","sortByMetric":"TransactionsPopularity","sortByGeoPoints":"34.052235,-118.243685","filterGeoPoints":["34.052235,-118.243685","15.0,65.0"],"filterAroundRadius":2000,"filterAnchor":"0.2,0.8","filters":"string","facets":["string"],"customFilteredFacets":{"brand":"price > 100","price":"brand == foo"},"facetsSize":2000,"maxValuesPerFacet":50,"caseSensitiveFacetValues":false,"includeFacets":"all","facetsOrderBy":"coverage","context":["mobile","listing"],"displayAttributes":["title","price"],"ignoreQueryRules":false,"excludeQueryRules":[2,5],"params":{"source":"mobile"}}'
GET /search/v2/indices/{indexId}/visual/explain — Explained visual items search
/api-reference/ai-search#tag/Visual-Search/operation/SearchVisualGetWithExplanation
Retrieves items that match an image. The results can be filtered and sorted. The response contains an explanation of the factors that influenced the result.
API consumers: AI API key (legacy), Web SDK Tracker, Workspace (Business Profile)
API key permission required: ITEMS_SEARCH_SEARCH_READ
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
url | query | string | required | URL of the image to be used in the visual search |
indexId | path | string | required | ID of the index to be used in the search operation |
clientUUID | query | string | optional | UUID of the profile for which the search is performed |
personalize | query | boolean | optional | If set to false, the search result is not personalized.
|
correlationId | query | string | optional | Correlation ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
searchId | query | string | optional | DEPRECATED - use correlationId instead Search ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
sortByMetric | query | enum<"TransactionsPopularity", "PageVisitsPopularity"> | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the metric by which the data will be sorted. |
sortByGeoPoint | query | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results.
Geo-point ({latitude},{longitude}) for data sorting. Results are sorted by distance from this point. ordering: asc means "closest first".'
|
filterGeoPoints | query | array<string> | optional | The definition of a geographical area to filter by.
Given one geo-point, the results will be limited to a radius around a point. To override the default radius (1000 meters), provide the filterAroundRadius parameter.
Example input: ["34.052235,-118.243685"]
Given two geo-points, the results will be limited to a rectangular area.
Example input: ["50,-100", "25,150"]
Given three or more geo-points, the results will be limited to a polygonal area.
Example input: ["50,0", "40,20", "-20,10"]
|
filterAroundRadius | query | integer | optional | Radius in meters to be used when filtering using geo-location. Can only be used when filtering by a single geo-point. |
filterAnchor | query | string | optional | Anchor ({width},{height}) by which the visual results data will be filtered.
{width},{height} correspond to normalized image coordinates, i.e. they are in range [0,1].
Anchor (0,0) corresponds to the top-left pixel of an image.
|
filters | query | string | optional | IQL query string. For details, see the Help Center. |
facets | query | array<string> | optional | A list of attributes for which facets will be returned. A single * value matches all facetable attributes.
A single auto value enables automatic facet selection based on the result set — the system picks the most relevant facets using the index's dynamicFacets configuration.
To determine which groups of facets should be returned, use the includeFacets parameter.
|
facetsSize | query | integer | optional | Determines how many items will be used for facets aggregation. |
maxValuesPerFacet | query | integer | optional | Determines how many values will be retrieved per facet. |
caseSensitiveFacetValues | query | boolean | optional | Specifies whether facets aggregation should be case sensitive. |
displayAttributes | query | array<string> | optional | List of ad hoc attributes that will be returned for each found item |
context | query | array<string> | optional | List of context strings for a search query |
includeFacets | query | enum<"all", "filtered", "unfiltered", "none"> | optional | Determines which groups of facets will be returned: both filtered and unfiltered; just filtered; just unfiltered; or no group at at all.
To determine which attributes should be returned as facets in each group, use the facets parameter.
|
facetsOrderBy | query | enum<"coverage", "name"> | optional | Controls the ordering of facets in the response.When facets=auto, the default ordering is by coverage (most relevant facets first).When facets are specified explicitly, the default ordering is by name.When two facets have equal coverage, ties are resolved by name.
|
page | query | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | query | integer | optional | The number of items to return per page |
sortBy | query | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the attribute by which the data will be sorted. |
ordering | query | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | query | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
ignoreQueryRules | query | boolean | optional | If set to true, query rules are not applied.
|
excludeQueryRules | query | array<integer> | optional | List of query rules that will not be applied. |
crossWorkspaceModeEnabled | query | boolean | optional | If set, overrides the cross-workspace mode from the index configuration. When true, cross-workspace personalization is enabled. When false, it is disabled.
|
params | query | array<string> | optional | List of extra params that will be added to the item.search event. They must be in the name:value format. The total size must not exceed 500 bytes when written as a JSON object.
|
Responses
| Status | Description |
|---|---|
200 application/json | Search response |
500 application/json | Service not available |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices/%7BindexId%7D/visual/explain?url=SOME_STRING_VALUE&clientUUID=SOME_STRING_VALUE&personalize=SOME_BOOLEAN_VALUE&correlationId=SOME_STRING_VALUE&searchId=SOME_STRING_VALUE&sortByMetric=SOME_STRING_VALUE&sortByGeoPoint=34.052235%2C-118.243685&filterGeoPoints=34.052235%2C-118.243685&filterGeoPoints=15.0%2C65.0&filterAroundRadius=5000&filterAnchor=0.2%2C0.8&filters=SOME_STRING_VALUE&facets=SOME_ARRAY_VALUE&facetsSize=SOME_INTEGER_VALUE&maxValuesPerFacet=SOME_INTEGER_VALUE&caseSensitiveFacetValues=SOME_BOOLEAN_VALUE&displayAttributes=title&displayAttributes=price&context=mobile&context=listing&includeFacets=SOME_STRING_VALUE&facetsOrderBy=SOME_STRING_VALUE&page=4&limit=10&sortBy=SOME_STRING_VALUE&ordering=SOME_STRING_VALUE&includeMeta=SOME_BOOLEAN_VALUE&ignoreQueryRules=SOME_BOOLEAN_VALUE&excludeQueryRules=2&excludeQueryRules=5&crossWorkspaceModeEnabled=SOME_BOOLEAN_VALUE¶ms=source%3Amobile' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
POST /search/v2/indices/{indexId}/visual/explain — Explained visual items search
/api-reference/ai-search#tag/Visual-Search/operation/SearchVisualPostWithExplanation
Retrieves items that match an image. The results can be filtered and sorted. The response contains an explanation of the factors that influenced the result.
API consumers: AI API key (legacy), Web SDK Tracker, Workspace (Business Profile)
API key permission required: ITEMS_SEARCH_SEARCH_READ
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index to be used in the search operation |
Request body (required)
application/json · object
Request for performing visual search with explanation
| Field | Type | Required | Description |
|---|---|---|---|
url | string | required | URL of the image to be used in the visual search |
page | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | integer | optional | The number of items to return per page |
sortBy | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the attribute by which the data will be sorted. |
ordering | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
clientUUID | string | optional | UUID of the profile for which the search is performed |
personalize | boolean | optional | If set to false, the search result is not personalized.
|
correlationId | string | optional | Correlation ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
searchId | string | optional | DEPRECATED - use correlationId instead Search ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
sortByMetric | enum<"TransactionsPopularity", "PageVisitsPopularity"> | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the metric by which the data will be sorted. |
sortByGeoPoints | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results.
Geo-point ({latitude},{longitude}) for data sorting. Results are sorted by distance from this point. ordering: asc means "closest first".'
|
filterGeoPoints | array<string> | optional | The definition of a geographical area to filter by.
Given one geo-point, the results will be limited to a radius around a point. To override the default radius (1000 meters), provide the filterAroundRadius parameter.
Example input: ["34.052235,-118.243685"]
Given two geo-points, the results will be limited to a rectangular area.
Example input: ["50,-100", "25,150"]
Given three or more geo-points, the results will be limited to a polygonal area.
Example input: ["50,0", "40,20", "-20,10"]
|
filterAroundRadius | integer | optional | Radius in meters to be used when filtering using geo-location. Can only be used when filtering by a single geo-point. |
filterAnchor | string | optional | Anchor ({width},{height}) by which the visual results data will be filtered.
{width},{height} correspond to normalized image coordinates, i.e. they are in range [0,1].
Anchor (0,0) corresponds to the top-left pixel of an image.
|
filters | string | optional | IQL query string. For details, see the Help Center. |
facets | array<string> | optional | A list of attributes for which facets will be returned.
A single * value matches all facetable attributes.
A single auto value enables automatic facet selection based on the result set — the system picks the most relevant facets using the index's dynamicFacets configuration.
To determine which groups of facets should be returned, use the includeFacets parameter.
|
customFilteredFacets | object | optional | A key-value map that takes attributes as keys and IQL query strings as values. For each key a facet is returned that includes only the items filtered by the provided IQL query string. |
facetsSize | integer | optional | Determines how many items will be used for facets aggregation. |
maxValuesPerFacet | integer | optional | Determines how many values will be retrieved per facet. |
caseSensitiveFacetValues | boolean | optional | Specifies whether facets aggregation should be case sensitive. |
includeFacets | enum<"all", "filtered", "unfiltered", "none"> | optional | Determines which groups of facets will be returned: both filtered and unfiltered; just filtered; just unfiltered; or no group at at all.
To determine which attributes should be returned as facets in each group, use the facets and customFilteredFacets parameters.
|
facetsOrderBy | enum<"coverage", "name"> | optional | Controls the ordering of facets in the response.When facets=auto, the default ordering is by coverage (most relevant facets first).When facets are specified explicitly, the default ordering is by name.When two facets have equal coverage, ties are resolved by name.
|
context | array<string> | optional | List of context strings for a search query |
displayAttributes | array<string> | optional | List of ad hoc attributes that will be returned for each found item |
ignoreQueryRules | boolean | optional | If set to true, query rules are not applied.
|
excludeQueryRules | array<integer> | optional | List of query rules that will not be applied. |
params | object | optional | Extra parameters that will be added to the item.search event. The total size must not exceed 500 bytes.
|
crossWorkspaceMode | object | optional | Cross-workspace personalization mode. When provided, overrides the index configuration setting. |
Responses
| Status | Description |
|---|---|
200 application/json | Search response |
500 application/json | Service not available |
Example request (cURL)
curl --request POST \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/visual/explain \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"url":"string","page":0,"limit":10,"sortBy":"string","ordering":"desc","includeMeta":true,"clientUUID":"string","personalize":true,"correlationId":"string","searchId":"string","sortByMetric":"TransactionsPopularity","sortByGeoPoints":"34.052235,-118.243685","filterGeoPoints":["34.052235,-118.243685","15.0,65.0"],"filterAroundRadius":2000,"filterAnchor":"0.2,0.8","filters":"string","facets":["string"],"customFilteredFacets":{"brand":"price > 100","price":"brand == foo"},"facetsSize":2000,"maxValuesPerFacet":50,"caseSensitiveFacetValues":false,"includeFacets":"all","facetsOrderBy":"coverage","context":["mobile","listing"],"displayAttributes":["title","price"],"ignoreQueryRules":false,"excludeQueryRules":[2,5],"params":{"source":"mobile"},"crossWorkspaceMode":{"enabled":true}}'
Listing
GET /search/v2/indices/{indexId}/list — Items listing
/api-reference/ai-search#tag/Listing/operation/ListingGet
Retrieves item listing, which is a search without a query. The results can be filtered and sorted.
API consumers: AI API key (legacy), Web SDK Tracker, Workspace (Business Profile)
API key permission required: ITEMS_SEARCH_SEARCH_READ
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index to be used in the search operation |
clientUUID | query | string | optional | UUID of the profile for which the search is performed |
personalize | query | boolean | optional | If set to false, the search result is not personalized.
|
correlationId | query | string | optional | Correlation ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
searchId | query | string | optional | DEPRECATED - use correlationId instead Search ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
sortByMetric | query | enum<"TransactionsPopularity", "PageVisitsPopularity"> | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the metric by which the data will be sorted. |
sortByGeoPoint | query | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results.
Geo-point ({latitude},{longitude}) for data sorting. Results are sorted by distance from this point. ordering: asc means "closest first".'
|
filterGeoPoints | query | array<string> | optional | The definition of a geographical area to filter by.
Given one geo-point, the results will be limited to a radius around a point. To override the default radius (1000 meters), provide the filterAroundRadius parameter.
Example input: ["34.052235,-118.243685"]
Given two geo-points, the results will be limited to a rectangular area.
Example input: ["50,-100", "25,150"]
Given three or more geo-points, the results will be limited to a polygonal area.
Example input: ["50,0", "40,20", "-20,10"]
|
filterAroundRadius | query | integer | optional | Radius in meters to be used when filtering using geo-location. Can only be used when filtering by a single geo-point. |
filters | query | string | optional | IQL query string. For details, see the Help Center. |
facets | query | array<string> | optional | A list of attributes for which facets will be returned. A single * value matches all facetable attributes.
A single auto value enables automatic facet selection based on the result set — the system picks the most relevant facets using the index's dynamicFacets configuration.
To determine which groups of facets should be returned, use the includeFacets parameter.
|
facetsSize | query | integer | optional | Determines how many items will be used for facets aggregation. |
maxValuesPerFacet | query | integer | optional | Determines how many values will be retrieved per facet. |
caseSensitiveFacetValues | query | boolean | optional | Specifies whether facets aggregation should be case sensitive. |
displayAttributes | query | array<string> | optional | List of ad hoc attributes that will be returned for each found item |
context | query | array<string> | optional | List of context strings for a search query |
includeFacets | query | enum<"all", "filtered", "unfiltered", "none"> | optional | Determines which groups of facets will be returned: both filtered and unfiltered; just filtered; just unfiltered; or no group at at all.
To determine which attributes should be returned as facets in each group, use the facets parameter.
|
facetsOrderBy | query | enum<"coverage", "name"> | optional | Controls the ordering of facets in the response.When facets=auto, the default ordering is by coverage (most relevant facets first).When facets are specified explicitly, the default ordering is by name.When two facets have equal coverage, ties are resolved by name.
|
page | query | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | query | integer | optional | The number of items to return per page |
sortBy | query | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the attribute by which the data will be sorted. |
ordering | query | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | query | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
distinctFilter | query | string | optional | DistinctFilter JSON as an URL-encoded string |
ignoreQueryRules | query | boolean | optional | If set to true, query rules are not applied.
|
excludeQueryRules | query | array<integer> | optional | List of query rules that will not be applied. |
params | query | array<string> | optional | List of extra params that will be added to the item.search event. They must be in the name:value format. The total size must not exceed 500 bytes when written as a JSON object.
|
Responses
| Status | Description |
|---|---|
200 application/json | Listing result |
500 application/json | Service not available |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices/%7BindexId%7D/list?clientUUID=SOME_STRING_VALUE&personalize=SOME_BOOLEAN_VALUE&correlationId=SOME_STRING_VALUE&searchId=SOME_STRING_VALUE&sortByMetric=SOME_STRING_VALUE&sortByGeoPoint=34.052235%2C-118.243685&filterGeoPoints=34.052235%2C-118.243685&filterGeoPoints=15.0%2C65.0&filterAroundRadius=5000&filters=SOME_STRING_VALUE&facets=SOME_ARRAY_VALUE&facetsSize=SOME_INTEGER_VALUE&maxValuesPerFacet=SOME_INTEGER_VALUE&caseSensitiveFacetValues=SOME_BOOLEAN_VALUE&displayAttributes=title&displayAttributes=price&context=mobile&context=listing&includeFacets=SOME_STRING_VALUE&facetsOrderBy=SOME_STRING_VALUE&page=4&limit=10&sortBy=SOME_STRING_VALUE&ordering=SOME_STRING_VALUE&includeMeta=SOME_BOOLEAN_VALUE&distinctFilter=%7B%22attribute%22%3A%20%22color%22%2C%20%22maxNumItems%22%3A%203%7D&ignoreQueryRules=SOME_BOOLEAN_VALUE&excludeQueryRules=2&excludeQueryRules=5¶ms=source%3Amobile' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
POST /search/v2/indices/{indexId}/list — Items listing
/api-reference/ai-search#tag/Listing/operation/ListingPost
Retrieves item listing, which is a search without a query. The results can be filtered and sorted.
API consumers: AI API key (legacy), Web SDK Tracker, Workspace (Business Profile)
API key permission required: ITEMS_SEARCH_SEARCH_READ
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index to be used in the search operation |
Request body (required)
application/json · items-search-ListingRequest
Request for item listing
| Field | Type | Required | Description |
|---|---|---|---|
page | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | integer | optional | The number of items to return per page |
sortBy | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the attribute by which the data will be sorted. |
ordering | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
clientUUID | string | optional | UUID of the profile for which the search is performed |
personalize | boolean | optional | If set to false, the search result is not personalized.
|
correlationId | string | optional | Correlation ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
searchId | string | optional | DEPRECATED - use correlationId instead Search ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
sortByMetric | enum<"TransactionsPopularity", "PageVisitsPopularity"> | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the metric by which the data will be sorted. |
sortByGeoPoints | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results.
Geo-point ({latitude},{longitude}) for data sorting. Results are sorted by distance from this point. ordering: asc means "closest first".'
|
filterGeoPoints | array<string> | optional | The definition of a geographical area to filter by.
Given one geo-point, the results will be limited to a radius around a point. To override the default radius (1000 meters), provide the filterAroundRadius parameter.
Example input: ["34.052235,-118.243685"]
Given two geo-points, the results will be limited to a rectangular area.
Example input: ["50,-100", "25,150"]
Given three or more geo-points, the results will be limited to a polygonal area.
Example input: ["50,0", "40,20", "-20,10"]
|
filterAroundRadius | integer | optional | Radius in meters to be used when filtering using geo-location. Can only be used when filtering by a single geo-point. |
filters | string | optional | IQL query string. For details, see the Help Center. |
facets | array<string> | optional | A list of attributes for which facets will be returned.
A single * value matches all facetable attributes.
A single auto value enables automatic facet selection based on the result set — the system picks the most relevant facets using the index's dynamicFacets configuration.
To determine which groups of facets should be returned, use the includeFacets parameter.
|
customFilteredFacets | object | optional | A key-value map that takes attributes as keys and IQL query strings as values. For each key a facet is returned that includes only the items filtered by the provided IQL query string. |
facetsSize | integer | optional | Determines how many items will be used for facets aggregation. |
maxValuesPerFacet | integer | optional | Determines how many values will be retrieved per facet. |
caseSensitiveFacetValues | boolean | optional | Specifies whether facets aggregation should be case sensitive. |
includeFacets | enum<"all", "filtered", "unfiltered", "none"> | optional | Determines which groups of facets will be returned: both filtered and unfiltered; just filtered; just unfiltered; or no group at at all.
To determine which attributes should be returned as facets in each group, use the facets and customFilteredFacets parameters.
|
facetsOrderBy | enum<"coverage", "name"> | optional | Controls the ordering of facets in the response.When facets=auto, the default ordering is by coverage (most relevant facets first).When facets are specified explicitly, the default ordering is by name.When two facets have equal coverage, ties are resolved by name.
|
context | array<string> | optional | List of context strings for a search query |
displayAttributes | array<string> | optional | List of ad hoc attributes that will be returned for each found item |
distinctFilter | object | optional | Distinct filters regulate how many items with the same value of a particular attribute can be returned. |
ignoreQueryRules | boolean | optional | If set to true, query rules are not applied.
|
excludeQueryRules | array<integer> | optional | List of query rules that will not be applied. |
params | object | optional | Extra parameters that will be added to the item.search event. The total size must not exceed 500 bytes.
|
Responses
| Status | Description |
|---|---|
200 application/json | Listing result |
500 application/json | Service not available |
Example request (cURL)
curl --request POST \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/list \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"page":0,"limit":10,"sortBy":"string","ordering":"desc","includeMeta":true,"clientUUID":"string","personalize":true,"correlationId":"string","searchId":"string","sortByMetric":"TransactionsPopularity","sortByGeoPoints":"34.052235,-118.243685","filterGeoPoints":["34.052235,-118.243685","15.0,65.0"],"filterAroundRadius":2000,"filters":"string","facets":["string"],"customFilteredFacets":{"brand":"price > 100","price":"brand == foo"},"facetsSize":2000,"maxValuesPerFacet":50,"caseSensitiveFacetValues":false,"includeFacets":"all","facetsOrderBy":"coverage","context":["mobile","listing"],"displayAttributes":["title","price"],"distinctFilter":{"attribute":"string","maxNumItems":1,"levelRangeModifier":0},"ignoreQueryRules":false,"excludeQueryRules":[2,5],"params":{"source":"mobile"}}'
GET /search/v2/indices/{indexId}/list/explain — Explained items listing
/api-reference/ai-search#tag/Listing/operation/ListingGetWithExplanation
Retrieves item listing, which is a search without a query. The results can be filtered and sorted. The response contains an explanation of the factors that influenced the result.
API consumers: AI API key (legacy), Web SDK Tracker, Workspace (Business Profile)
API key permission required: ITEMS_SEARCH_SEARCH_READ
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index to be used in the search operation |
clientUUID | query | string | optional | UUID of the profile for which the search is performed |
personalize | query | boolean | optional | If set to false, the search result is not personalized.
|
correlationId | query | string | optional | Correlation ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
searchId | query | string | optional | DEPRECATED - use correlationId instead Search ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
sortByMetric | query | enum<"TransactionsPopularity", "PageVisitsPopularity"> | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the metric by which the data will be sorted. |
sortByGeoPoint | query | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results.
Geo-point ({latitude},{longitude}) for data sorting. Results are sorted by distance from this point. ordering: asc means "closest first".'
|
filterGeoPoints | query | array<string> | optional | The definition of a geographical area to filter by.
Given one geo-point, the results will be limited to a radius around a point. To override the default radius (1000 meters), provide the filterAroundRadius parameter.
Example input: ["34.052235,-118.243685"]
Given two geo-points, the results will be limited to a rectangular area.
Example input: ["50,-100", "25,150"]
Given three or more geo-points, the results will be limited to a polygonal area.
Example input: ["50,0", "40,20", "-20,10"]
|
filterAroundRadius | query | integer | optional | Radius in meters to be used when filtering using geo-location. Can only be used when filtering by a single geo-point. |
filters | query | string | optional | IQL query string. For details, see the Help Center. |
facets | query | array<string> | optional | A list of attributes for which facets will be returned. A single * value matches all facetable attributes.
A single auto value enables automatic facet selection based on the result set — the system picks the most relevant facets using the index's dynamicFacets configuration.
To determine which groups of facets should be returned, use the includeFacets parameter.
|
facetsSize | query | integer | optional | Determines how many items will be used for facets aggregation. |
maxValuesPerFacet | query | integer | optional | Determines how many values will be retrieved per facet. |
caseSensitiveFacetValues | query | boolean | optional | Specifies whether facets aggregation should be case sensitive. |
displayAttributes | query | array<string> | optional | List of ad hoc attributes that will be returned for each found item |
context | query | array<string> | optional | List of context strings for a search query |
includeFacets | query | enum<"all", "filtered", "unfiltered", "none"> | optional | Determines which groups of facets will be returned: both filtered and unfiltered; just filtered; just unfiltered; or no group at at all.
To determine which attributes should be returned as facets in each group, use the facets parameter.
|
facetsOrderBy | query | enum<"coverage", "name"> | optional | Controls the ordering of facets in the response.When facets=auto, the default ordering is by coverage (most relevant facets first).When facets are specified explicitly, the default ordering is by name.When two facets have equal coverage, ties are resolved by name.
|
page | query | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | query | integer | optional | The number of items to return per page |
sortBy | query | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the attribute by which the data will be sorted. |
ordering | query | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | query | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
distinctFilter | query | string | optional | DistinctFilter JSON as an URL-encoded string |
ignoreQueryRules | query | boolean | optional | If set to true, query rules are not applied.
|
excludeQueryRules | query | array<integer> | optional | List of query rules that will not be applied. |
crossWorkspaceModeEnabled | query | boolean | optional | If set, overrides the cross-workspace mode from the index configuration. When true, cross-workspace personalization is enabled. When false, it is disabled.
|
params | query | array<string> | optional | List of extra params that will be added to the item.search event. They must be in the name:value format. The total size must not exceed 500 bytes when written as a JSON object.
|
Responses
| Status | Description |
|---|---|
200 application/json | Listing result |
500 application/json | Service not available |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices/%7BindexId%7D/list/explain?clientUUID=SOME_STRING_VALUE&personalize=SOME_BOOLEAN_VALUE&correlationId=SOME_STRING_VALUE&searchId=SOME_STRING_VALUE&sortByMetric=SOME_STRING_VALUE&sortByGeoPoint=34.052235%2C-118.243685&filterGeoPoints=34.052235%2C-118.243685&filterGeoPoints=15.0%2C65.0&filterAroundRadius=5000&filters=SOME_STRING_VALUE&facets=SOME_ARRAY_VALUE&facetsSize=SOME_INTEGER_VALUE&maxValuesPerFacet=SOME_INTEGER_VALUE&caseSensitiveFacetValues=SOME_BOOLEAN_VALUE&displayAttributes=title&displayAttributes=price&context=mobile&context=listing&includeFacets=SOME_STRING_VALUE&facetsOrderBy=SOME_STRING_VALUE&page=4&limit=10&sortBy=SOME_STRING_VALUE&ordering=SOME_STRING_VALUE&includeMeta=SOME_BOOLEAN_VALUE&distinctFilter=%7B%22attribute%22%3A%20%22color%22%2C%20%22maxNumItems%22%3A%203%7D&ignoreQueryRules=SOME_BOOLEAN_VALUE&excludeQueryRules=2&excludeQueryRules=5&crossWorkspaceModeEnabled=SOME_BOOLEAN_VALUE¶ms=source%3Amobile' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
POST /search/v2/indices/{indexId}/list/explain — Explained items listing
/api-reference/ai-search#tag/Listing/operation/ListingPostWithExplanation
Retrieves item listing, which is a search without a query. The results can be filtered and sorted. The response contains an explanation of the factors that influenced the result.
API consumers: AI API key (legacy), Web SDK Tracker, Workspace (Business Profile)
API key permission required: ITEMS_SEARCH_SEARCH_READ
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index to be used in the search operation |
Request body (required)
application/json · object
Request for item listing with explanation
| Field | Type | Required | Description |
|---|---|---|---|
page | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | integer | optional | The number of items to return per page |
sortBy | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the attribute by which the data will be sorted. |
ordering | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
clientUUID | string | optional | UUID of the profile for which the search is performed |
personalize | boolean | optional | If set to false, the search result is not personalized.
|
correlationId | string | optional | Correlation ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
searchId | string | optional | DEPRECATED - use correlationId instead Search ID for pagination. If a search with the ID was performed recently (last 10 minutes), the cached results will be used. Do not send this if sortBy/filters/sorting order, etc. have changed - the cached results may have different order or may match different filters. |
sortByMetric | enum<"TransactionsPopularity", "PageVisitsPopularity"> | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results. Name of the metric by which the data will be sorted. |
sortByGeoPoints | string | optional | IMPORTANT: Sorting disables boosting, elastic filters, and promoting search results.
Geo-point ({latitude},{longitude}) for data sorting. Results are sorted by distance from this point. ordering: asc means "closest first".'
|
filterGeoPoints | array<string> | optional | The definition of a geographical area to filter by.
Given one geo-point, the results will be limited to a radius around a point. To override the default radius (1000 meters), provide the filterAroundRadius parameter.
Example input: ["34.052235,-118.243685"]
Given two geo-points, the results will be limited to a rectangular area.
Example input: ["50,-100", "25,150"]
Given three or more geo-points, the results will be limited to a polygonal area.
Example input: ["50,0", "40,20", "-20,10"]
|
filterAroundRadius | integer | optional | Radius in meters to be used when filtering using geo-location. Can only be used when filtering by a single geo-point. |
filters | string | optional | IQL query string. For details, see the Help Center. |
facets | array<string> | optional | A list of attributes for which facets will be returned.
A single * value matches all facetable attributes.
A single auto value enables automatic facet selection based on the result set — the system picks the most relevant facets using the index's dynamicFacets configuration.
To determine which groups of facets should be returned, use the includeFacets parameter.
|
customFilteredFacets | object | optional | A key-value map that takes attributes as keys and IQL query strings as values. For each key a facet is returned that includes only the items filtered by the provided IQL query string. |
facetsSize | integer | optional | Determines how many items will be used for facets aggregation. |
maxValuesPerFacet | integer | optional | Determines how many values will be retrieved per facet. |
caseSensitiveFacetValues | boolean | optional | Specifies whether facets aggregation should be case sensitive. |
includeFacets | enum<"all", "filtered", "unfiltered", "none"> | optional | Determines which groups of facets will be returned: both filtered and unfiltered; just filtered; just unfiltered; or no group at at all.
To determine which attributes should be returned as facets in each group, use the facets and customFilteredFacets parameters.
|
facetsOrderBy | enum<"coverage", "name"> | optional | Controls the ordering of facets in the response.When facets=auto, the default ordering is by coverage (most relevant facets first).When facets are specified explicitly, the default ordering is by name.When two facets have equal coverage, ties are resolved by name.
|
context | array<string> | optional | List of context strings for a search query |
displayAttributes | array<string> | optional | List of ad hoc attributes that will be returned for each found item |
distinctFilter | object | optional | Distinct filters regulate how many items with the same value of a particular attribute can be returned. |
ignoreQueryRules | boolean | optional | If set to true, query rules are not applied.
|
excludeQueryRules | array<integer> | optional | List of query rules that will not be applied. |
params | object | optional | Extra parameters that will be added to the item.search event. The total size must not exceed 500 bytes.
|
crossWorkspaceMode | object | optional | Cross-workspace personalization mode. When provided, overrides the index configuration setting. |
Responses
| Status | Description |
|---|---|
200 application/json | Listing result |
500 application/json | Service not available |
Example request (cURL)
curl --request POST \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/list/explain \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"page":0,"limit":10,"sortBy":"string","ordering":"desc","includeMeta":true,"clientUUID":"string","personalize":true,"correlationId":"string","searchId":"string","sortByMetric":"TransactionsPopularity","sortByGeoPoints":"34.052235,-118.243685","filterGeoPoints":["34.052235,-118.243685","15.0,65.0"],"filterAroundRadius":2000,"filters":"string","facets":["string"],"customFilteredFacets":{"brand":"price > 100","price":"brand == foo"},"facetsSize":2000,"maxValuesPerFacet":50,"caseSensitiveFacetValues":false,"includeFacets":"all","facetsOrderBy":"coverage","context":["mobile","listing"],"displayAttributes":["title","price"],"distinctFilter":{"attribute":"string","maxNumItems":1,"levelRangeModifier":0},"ignoreQueryRules":false,"excludeQueryRules":[2,5],"params":{"source":"mobile"},"crossWorkspaceMode":{"enabled":true}}'
Synonyms
GET /search/v2/indices/{indexId}/synonyms — Get synonyms
/api-reference/ai-search#tag/Synonyms/operation/GetSynonymsV2
Retrieve a list of synonyms.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: SYNONYMS_SEARCH_READ
User role permission required: assets_search: read
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | Index identifier |
page | query | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | query | integer | optional | The number of items to return per page |
sortBy | query | string | optional | Name of the attribute by which the data will be sorted and ordered by. Supported values: indexId, updatedAt, createdAt, confidence. Defaults to updatedAt.
|
ordering | query | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | query | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
source | query | enum<"User", "Agent", "Import"> | optional | Filter synonyms by source |
state | query | enum<"New", "Accepted", "Pending", "Rejected"> | optional | Filter synonyms by state |
type | query | enum<"oneway", "synonyms"> | optional | Filter synonyms by type |
search | query | string | optional | Search synonyms by word or synonym phrase (case-insensitive partial match) |
confidence | query | number | optional | Filter synonyms with confidence greater than or equal to this value |
Responses
| Status | Description |
|---|---|
200 application/json | List of synonyms returned |
500 application/json | Some error occurred |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices/%7BindexId%7D/synonyms?page=4&limit=100&sortBy=confidence%3Aasc&ordering=SOME_STRING_VALUE&includeMeta=SOME_BOOLEAN_VALUE&source=SOME_STRING_VALUE&state=SOME_STRING_VALUE&type=SOME_STRING_VALUE&search=SOME_STRING_VALUE&confidence=SOME_NUMBER_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
POST /search/v2/indices/{indexId}/synonyms — Create synonym
/api-reference/ai-search#tag/Synonyms/operation/PostSynonymV2
Creates a new synonym.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: SYNONYMS_SEARCH_CREATE
User role permission required: assets_search: create
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | Index identifier |
Request body (required)
application/json · object
Request for creating new synonym
| Field | Type | Required | Description |
|---|---|---|---|
type | enum<"oneway", "synonyms"> | optional | Type of the synonym.
oneway: when the word is searched, the results show the results as if the synonyms were searched. Searching for the synonyms does NOT return results for the word or the other synonyms.
synonyms: the word column is empty, all phrases in synonym return results for every other phrase in the list.
|
word | string | optional | The phrase that the synonym relates to. If type: synonyms, do not send this value.
|
synonyms | array<string> | required | A list of synonyms |
confidence | number | optional | Confidence score of the synonym (0.0 to 1.0) |
reason | string | optional | Reason or explanation for the synonym suggestion |
source | enum<"User", "Agent", "Import"> | optional | Origin of the synonym |
state | enum<"New", "Accepted", "Pending", "Rejected"> | optional | Current state of the synonym |
Responses
| Status | Description |
|---|---|
200 application/json | Id of created synonym returned |
500 application/json | Some error occurred |
Example request (cURL)
curl --request POST \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/synonyms \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"type":"oneway","word":"string","synonyms":["string"],"confidence":1,"reason":"string","source":"User","state":"New"}'
POST /search/v2/indices/{indexId}/synonyms/batch — Batch insert synonyms
/api-reference/ai-search#tag/Synonyms/operation/BatchSynonyms
Insert multiple synonyms into an index at once.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: SYNONYMS_SEARCH_CREATE
User role permission required: assets_search: create
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
source | query | optional | Source to assign to imported synonyms | |
indexId | path | string | required | Index identifier |
Request body (required)
text/csv · object
The CSV has three columns:
word: the phrase to replace with a synonymsynonyms: the synonyms of the word (if more than one, the list is comma-separated and enclosed with"")type: the relation type:oneway: when the word is searched, the results show the results as if the synonyms were searched. Searching for the synonyms does NOT return results for the word or the other synonyms.synonyms: thewordcolumn is empty, all phrases insynonymreturn results for every other phrase in the list.
| Field | Type | Required | Description |
|---|---|---|---|
word | string | optional | The phrase that the synonym relates to. If type: synonyms, do not send this value.
|
synonyms | array<string> | optional | A list of synonyms |
type | enum<"oneway", "synonyms"> | optional | Type of the synonym.
oneway: when the word is searched, the results show the results as if the synonyms were searched. Searching for the synonyms does NOT return results for the word or the other synonyms.
synonyms: the word column is empty, all phrases in synonym return results for every other phrase in the list.
|
Responses
| Status | Description |
|---|---|
200 application/json | Summary of batch insertion |
500 application/json | Some error occurred |
Example request (cURL)
curl -X POST 'https://api.synerise.com/search/v2/indices/{indexId}/synonyms/batch' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
-H 'Content-Type: application/json'
POST /search/v2/indices/{indexId}/synonyms/replace-all — Replace all synonyms
/api-reference/ai-search#tag/Synonyms/operation/ReplaceAllSynonyms
Deletes all existing synonyms from an index and then inserts multiple new synonyms at once.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: SYNONYMS_SEARCH_UPDATE
User role permission required: assets_search: update
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | Index identifier |
source | query | optional | Source to assign to imported synonyms |
Request body (required)
text/csv · object
The CSV has three columns:
word: the phrase to replace with a synonymsynonyms: the synonyms of the word (if more than one, the list is comma-separated and enclosed with"")type: the relation type:oneway: when the word is searched, the results show the results as if the synonyms were searched. Searching for the synonyms does NOT return results for the word or the other synonyms.synonyms: thewordcolumn is empty, all phrases insynonymreturn results for every other phrase in the list.
| Field | Type | Required | Description |
|---|---|---|---|
word | string | optional | The phrase that the synonym relates to. If type: synonyms, do not send this value.
|
synonyms | array<string> | optional | A list of synonyms |
type | enum<"oneway", "synonyms"> | optional | Type of the synonym.
oneway: when the word is searched, the results show the results as if the synonyms were searched. Searching for the synonyms does NOT return results for the word or the other synonyms.
synonyms: the word column is empty, all phrases in synonym return results for every other phrase in the list.
|
Responses
| Status | Description |
|---|---|
204 | All synonyms replaced |
500 application/json | Some error occurred |
Example request (cURL)
curl -X POST 'https://api.synerise.com/search/v2/indices/{indexId}/synonyms/replace-all' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
-H 'Content-Type: application/json'
GET /search/v2/indices/{indexId}/synonyms/{synonymId} — Get synonym
/api-reference/ai-search#tag/Synonyms/operation/GetSynonymV2
Retrieves a synonym.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: SYNONYMS_SEARCH_READ
User role permission required: assets_search: read
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
synonymId | path | integer | required | Synonym identifier |
indexId | path | string | required | Index identifier |
Responses
| Status | Description |
|---|---|
200 application/json | Synonym returned. |
500 application/json | Some error occurred |
Example request (cURL)
curl --request GET \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/synonyms/%7BsynonymId%7D \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
PUT /search/v2/indices/{indexId}/synonyms/{synonymId} — Update synonym
/api-reference/ai-search#tag/Synonyms/operation/PutSynonym
Updates a synonym identified by id.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: SYNONYMS_SEARCH_UPDATE
User role permission required: assets_search: update
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
synonymId | path | integer | required | Synonym identifier |
indexId | path | string | required | Index identifier |
Request body (required)
application/json · object
Request for creating new synonym
| Field | Type | Required | Description |
|---|---|---|---|
type | enum<"oneway", "synonyms"> | optional | Type of the synonym.
oneway: when the word is searched, the results show the results as if the synonyms were searched. Searching for the synonyms does NOT return results for the word or the other synonyms.
synonyms: the word column is empty, all phrases in synonym return results for every other phrase in the list.
|
word | string | optional | The phrase that the synonym relates to. If type: synonyms, do not send this value.
|
synonyms | array<string> | required | A list of synonyms |
confidence | number | optional | Confidence score of the synonym (0.0 to 1.0) |
reason | string | optional | Reason or explanation for the synonym suggestion |
source | enum<"User", "Agent", "Import"> | optional | Origin of the synonym |
state | enum<"New", "Accepted", "Pending", "Rejected"> | optional | Current state of the synonym |
Responses
| Status | Description |
|---|---|
200 application/json | Updated synonym returned. |
500 application/json | Some error occurred |
Example request (cURL)
curl --request PUT \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/synonyms/%7BsynonymId%7D \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"type":"oneway","word":"string","synonyms":["string"],"confidence":1,"reason":"string","source":"User","state":"New"}'
DELETE /search/v2/indices/{indexId}/synonyms/{synonymId} — Delete synonym
/api-reference/ai-search#tag/Synonyms/operation/DeleteSynonymV2
Deletes a synonym with given id.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: SYNONYMS_SEARCH_DELETE
User role permission required: assets_search: delete
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
synonymId | path | integer | required | Synonym identifier |
indexId | path | string | required | Index identifier |
Responses
| Status | Description |
|---|---|
204 | Synonym deleted |
500 application/json | Some error occurred |
Example request (cURL)
curl --request DELETE \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/synonyms/%7BsynonymId%7D \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
Search Configuration
GET /search/v2/indices/{indexId}/attributes/filterable/values — Get values of filterable attributes
/api-reference/ai-search#tag/Search-Configuration/operation/getFilterableAttributesValues
Retrieve values of filterable attributes.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: ITEMS_SEARCH_SEARCH_READ
User role permission required: assets_search: read
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index to be used in the search operation |
attribute | query | array<string> | required | List of attributes for which values will be fetched |
Responses
| Status | Description |
|---|---|
200 application/json | Values returned |
500 application/json | Service not available |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices/%7BindexId%7D/attributes/filterable/values?attribute=SOME_ARRAY_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
GET /search/v2/indices — Get configurations of all indices
/api-reference/ai-search#tag/Search-Configuration/operation/getIndicesConfigsV2
Retrieve the configurations of all indices.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: ITEMS_SEARCH_CONFIG_SEARCH_READ
User role permission required: assets_search: read
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | query | integer | optional | The number of items to return per page |
sortBy | query | string | optional | Name of the attribute by which the data will be sorted |
ordering | query | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | query | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
name | query | string | optional | Deprecated parameter. If query is provided, this parameter is ignored.
If an index has an id equal to the value of this parameter, only that index will be retrieved. Otherwise, all indices containing this value in their name will be retrieved.
|
query | query | string | optional | If an index has an id equal to the value of this parameter, only that index will be retrieved. Otherwise, all indices containing this value in their name will be retrieved. This parameter replaces the deprecated name parameter.
|
excludeAbTests | query | boolean | optional | Only indices not involved in currently running AB tests will be retrieved. |
directoryId | query | string | optional | Requested directoryId of the rule. |
type | query | enum<"Keyword", "Hybrid", "Semantic"> | optional | Requested type of the rule. |
Responses
| Status | Description |
|---|---|
200 application/json | Configurations returned |
500 application/json | Service not available |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices?page=4&limit=100&sortBy=SOME_STRING_VALUE&ordering=SOME_STRING_VALUE&includeMeta=SOME_BOOLEAN_VALUE&name=SOME_STRING_VALUE&query=SOME_STRING_VALUE&excludeAbTests=SOME_BOOLEAN_VALUE&directoryId=SOME_STRING_VALUE&type=SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
POST /search/v2/indices — Post index configuration
/api-reference/ai-search#tag/Search-Configuration/operation/postIndexConfigV2
Creates a new configuration of a single index.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: ITEMS_SEARCH_CONFIG_SEARCH_CREATE
User role permission required: assets_search: create
Request body (required)
application/json · object
Request for posting search configuration
| Field | Type | Required | Description |
|---|---|---|---|
indexName | string | required | Human-friendly name of the index |
description | string | optional | Description of the index |
itemsCatalogId | string | required | ID of the item catalog from which the index will be created |
language | string | required | Search language as ISO 639-1 code |
enabled | boolean | required | When true, the index is enabled and can be queried.
|
ignoreUnavailableItems | boolean | optional | When true, unavailable items are not indexed, which makes the search run faster.
|
scoring | object | optional | Item scoring settings that affect the presentation order of the results.
0 means the lowest importance of a parameter, 1 is the highest importance.
|
suggestions | object | optional | Controls manner in which suggestions are generated |
tokenizer | optional | Used for tokenizing full text into individual words | |
analyzers | object | optional | Controls analyzer settings. |
attributesWithoutPrefixSearch | array<string> | optional | Searchable attributes which will not be used in a prefix search |
attributesWithoutTypoTolerance | array<string> | optional | Searchable attributes for which typo tolerance is off |
valuesWithoutTypoTolerance | array<string> | optional | Attributes values for which typo tolerance is off |
typoToleranceOnNumericValues | boolean | optional | When true, typo tolerance is active on numbers
|
searchableAttributes | object | required | The attributes that are taken into account as full text search terms |
displayableAttributes | array<string> | optional | Attributes shown in the search results |
facetableAttributes | object | optional | Attributes for which facets are returned in the search response. By default, all facetable attributes are also filterable and sortable. |
filterableAttributes | object | optional | Attributes for which filters can be used |
sortableAttributes | object | optional | Attributes using which search results can be sorted |
distinctFilterAttributes | object | optional | Attributes for which distinct can be used |
recentSearches | object | optional | Recent searches configuration |
reranking | object | optional | Reranking configuration |
geoSearch | object | optional | Geo search configuration |
queryRules | object | optional | Configuration for custom behavior of query rules at the index level. |
Responses
| Status | Description |
|---|---|
200 application/json | Returned created configuration |
500 application/json | Service not available |
Example request (cURL)
curl --request POST \
--url https://api.synerise.com/search/v2/indices \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"indexName":"string","description":"string","itemsCatalogId":"string","language":"string","enabled":true,"ignoreUnavailableItems":true,"scoring":{"pageVisitsPopularity":0,"transactionsPopularity":0,"personalized":0,"tieBreaker":0,"matching":{"type":"MinimumMatching","value":1},"fallbackMatching":{"type":"MinimumMatching","value":1},"similarity":{"type":"BM25","k1":1.2,"b":0.75},"crossWorkspaceMode":{"enabled":true}},"suggestions":{"smoothingModel":"Popularity","gramSize":3,"maxErrors":2,"minWordLength":4,"useAlways":false},"tokenizer":{"type":"Whitespace"},"analyzers":{"autocomplete":"Ngram"},"attributesWithoutPrefixSearch":["brand","color","promotion.type"],"attributesWithoutTypoTolerance":["itemId","link"],"valuesWithoutTypoTolerance":["Nike","blue","74997"],"typoToleranceOnNumericValues":true,"searchableAttributes":{"fullText":["brand","color","promotion.type"],"fullTextBoosted":["brand","color","promotion.type"],"fullTextStronglyBoosted":["brand","color","promotion.type"]},"displayableAttributes":["brand","color","promotion.type"],"facetableAttributes":{"range":["age","customScore.value","salePrice.value"],"text":["brand","color","promotion.type"],"datetime":["created","attributes.modifiedAt"]},"filterableAttributes":{"range":["age","customScore.value","salePrice.value"],"text":["brand","color","promotion.type"],"datetime":["created","attributes.modifiedAt"]},"sortableAttributes":{"range":["age","customScore.value","salePrice.value"],"text":["brand","color","promotion.type"],"datetime":["created","attributes.modifiedAt"]},"distinctFilterAttributes":{"range":["age","customScore.value","salePrice.value"],"text":["brand","color","promotion.type"],"datetime":["created","attributes.modifiedAt"]},"recentSearches":{"windowSize":100,"timeSpan":{"type":"DAYS","value":30}},"reranking":{"dynamicReranker":{"enabled":true,"filter":"string","numberOfItems":1,"minNumberOfEvents":0},"queryClassification":{"enabled":true,"actions":[{"action":"staticFilter","minReliabilityLevel":"certain"}],"excludedPhrases":["string"],"excludedCategories":["string"]}},"geoSearch":{"geoSearchableAttribute":"string"},"queryRules":{"consequencesJoinOperators":{"standardFilters":"AND","elasticFilters":"AND"}}}'
GET /search/v2/indices/{indexId}/config — Get index configuration
/api-reference/ai-search#tag/Search-Configuration/operation/getIndexConfigV2
Retrieve the configuration of a single index.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: ITEMS_SEARCH_CONFIG_SEARCH_READ
User role permission required: assets_search: read
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index |
Responses
| Status | Description |
|---|---|
200 application/json | Configuration returned |
500 application/json | Service not available |
Example request (cURL)
curl --request GET \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/config \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
PUT /search/v2/indices/{indexId}/config — Update index configuration
/api-reference/ai-search#tag/Search-Configuration/operation/updateIndexConfigV2
Update the configuration of a single index.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: ITEMS_SEARCH_CONFIG_SEARCH_UPDATE
User role permission required: assets_search: update
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index |
Request body (required)
application/json · object
Request for posting search configuration
| Field | Type | Required | Description |
|---|---|---|---|
indexName | string | required | Human-friendly name of the index |
description | string | optional | Description of the index |
itemsCatalogId | string | required | ID of the item catalog from which the index will be created |
language | string | required | Search language as ISO 639-1 code |
enabled | boolean | required | When true, the index is enabled and can be queried.
|
ignoreUnavailableItems | boolean | optional | When true, unavailable items are not indexed, which makes the search run faster.
|
scoring | object | optional | Item scoring settings that affect the presentation order of the results.
0 means the lowest importance of a parameter, 1 is the highest importance.
|
suggestions | object | optional | Controls manner in which suggestions are generated |
tokenizer | optional | Used for tokenizing full text into individual words | |
analyzers | object | optional | Controls analyzer settings. |
attributesWithoutPrefixSearch | array<string> | optional | Searchable attributes which will not be used in a prefix search |
attributesWithoutTypoTolerance | array<string> | optional | Searchable attributes for which typo tolerance is off |
valuesWithoutTypoTolerance | array<string> | optional | Attributes values for which typo tolerance is off |
typoToleranceOnNumericValues | boolean | optional | When true, typo tolerance is active on numbers
|
searchableAttributes | object | required | The attributes that are taken into account as full text search terms |
displayableAttributes | array<string> | optional | Attributes shown in the search results |
facetableAttributes | object | optional | Attributes for which facets are returned in the search response. By default, all facetable attributes are also filterable and sortable. |
filterableAttributes | object | optional | Attributes for which filters can be used |
sortableAttributes | object | optional | Attributes using which search results can be sorted |
distinctFilterAttributes | object | optional | Attributes for which distinct can be used |
recentSearches | object | optional | Recent searches configuration |
reranking | object | optional | Reranking configuration |
geoSearch | object | optional | Geo search configuration |
queryRules | object | optional | Configuration for custom behavior of query rules at the index level. |
Responses
| Status | Description |
|---|---|
200 application/json | Returned updated configuration |
500 application/json | Service not available |
Example request (cURL)
curl --request PUT \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/config \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"indexName":"string","description":"string","itemsCatalogId":"string","language":"string","enabled":true,"ignoreUnavailableItems":true,"scoring":{"pageVisitsPopularity":0,"transactionsPopularity":0,"personalized":0,"tieBreaker":0,"matching":{"type":"MinimumMatching","value":1},"fallbackMatching":{"type":"MinimumMatching","value":1},"similarity":{"type":"BM25","k1":1.2,"b":0.75},"crossWorkspaceMode":{"enabled":true}},"suggestions":{"smoothingModel":"Popularity","gramSize":3,"maxErrors":2,"minWordLength":4,"useAlways":false},"tokenizer":{"type":"Whitespace"},"analyzers":{"autocomplete":"Ngram"},"attributesWithoutPrefixSearch":["brand","color","promotion.type"],"attributesWithoutTypoTolerance":["itemId","link"],"valuesWithoutTypoTolerance":["Nike","blue","74997"],"typoToleranceOnNumericValues":true,"searchableAttributes":{"fullText":["brand","color","promotion.type"],"fullTextBoosted":["brand","color","promotion.type"],"fullTextStronglyBoosted":["brand","color","promotion.type"]},"displayableAttributes":["brand","color","promotion.type"],"facetableAttributes":{"range":["age","customScore.value","salePrice.value"],"text":["brand","color","promotion.type"],"datetime":["created","attributes.modifiedAt"]},"filterableAttributes":{"range":["age","customScore.value","salePrice.value"],"text":["brand","color","promotion.type"],"datetime":["created","attributes.modifiedAt"]},"sortableAttributes":{"range":["age","customScore.value","salePrice.value"],"text":["brand","color","promotion.type"],"datetime":["created","attributes.modifiedAt"]},"distinctFilterAttributes":{"range":["age","customScore.value","salePrice.value"],"text":["brand","color","promotion.type"],"datetime":["created","attributes.modifiedAt"]},"recentSearches":{"windowSize":100,"timeSpan":{"type":"DAYS","value":30}},"reranking":{"dynamicReranker":{"enabled":true,"filter":"string","numberOfItems":1,"minNumberOfEvents":0},"queryClassification":{"enabled":true,"actions":[{"action":"staticFilter","minReliabilityLevel":"certain"}],"excludedPhrases":["string"],"excludedCategories":["string"]}},"geoSearch":{"geoSearchableAttribute":"string"},"queryRules":{"consequencesJoinOperators":{"standardFilters":"AND","elasticFilters":"AND"}}}'
DELETE /search/v2/indices/{indexId}/config — Delete index configuration
/api-reference/ai-search#tag/Search-Configuration/operation/deleteIndexConfigV2
Delete the configuration of a single index.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: ITEMS_SEARCH_CONFIG_SEARCH_DELETE
User role permission required: assets_search: delete
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index |
Responses
| Status | Description |
|---|---|
204 | Configuration deleted |
500 application/json | Service not available |
Example request (cURL)
curl --request DELETE \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/config \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
GET /search/v2/indices/{indexId}/state — Get index state
/api-reference/ai-search#tag/Search-Configuration/operation/getIndexStateV2
Retrieve the state of a single index.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: ITEMS_SEARCH_CONFIG_SEARCH_READ
User role permission required: assets_search: read
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index |
Responses
| Status | Description |
|---|---|
200 application/json | State returned |
500 application/json | Service not available |
Example request (cURL)
curl --request GET \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/state \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
GET /search/v2/supported-languages — Get supported languages
/api-reference/ai-search#tag/Search-Configuration/operation/getSupportedLanguagesV2
Retrieve supported languages.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: ITEMS_SEARCH_CONFIG_SEARCH_READ
User role permission required: assets_search: read
Responses
| Status | Description |
|---|---|
200 application/json | Supported search languages as ISO 639-1 codes |
500 application/json | Service not available |
Example request (cURL)
curl --request GET \
--url https://api.synerise.com/search/v2/supported-languages \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
GET /search/v2/indices/{indexId}/duplicate — Duplicate index
/api-reference/ai-search#tag/Search-Configuration/operation/duplicateIndexV2Get
duplicate index.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: ITEMS_SEARCH_CONFIG_SEARCH_CREATE
User role permission required: assets_search: create
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index |
Responses
| Status | Description |
|---|---|
200 application/json | Returned newly created duplicate index |
500 application/json | Service not available |
Example request (cURL)
curl --request GET \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/duplicate \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
Suggestions Configuration
GET /search/v2/suggestion-indices — Get suggestion indices
/api-reference/ai-search#tag/Suggestions-Configuration/operation/GetSuggestionsIndices
Retrieve a list of all suggestion index configurations in the workspace.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: ITEMS_SEARCH_CONFIG_SEARCH_READ
User role permission required: assets_search: read
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | query | integer | optional | The number of items to return per page |
sortBy | query | string | optional | Name of the attribute by which the data will be sorted |
ordering | query | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | query | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
name | query | string | optional | Deprecated parameter. If query is provided, this parameter is ignored.
If an index has an id equal to the value of this parameter, only that index will be retrieved. Otherwise, all indices containing this value in their name will be retrieved.
|
query | query | string | optional | If an index has an id equal to the value of this parameter, only that index will be retrieved. Otherwise, all indices containing this value in their name will be retrieved. This parameter replaces the deprecated name parameter.
|
Responses
| Status | Description |
|---|---|
200 application/json | List of suggestion index configurations |
500 application/json | An error occurred |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/suggestion-indices?page=4&limit=100&sortBy=SOME_STRING_VALUE&ordering=SOME_STRING_VALUE&includeMeta=SOME_BOOLEAN_VALUE&name=SOME_STRING_VALUE&query=SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
POST /search/v2/suggestion-indices — Create suggestion index
/api-reference/ai-search#tag/Suggestions-Configuration/operation/PostSuggestionIndexConfig
Create a suggestion index configuration.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: ITEMS_SEARCH_CONFIG_SEARCH_CREATE
User role permission required: assets_search: create
Request body
application/json · object
| Field | Type | Required | Description |
|---|---|---|---|
indexName | string | required | Name of the suggestion index |
description | string | optional | Description of the suggestion index |
author | integer | optional | ID of the user who created the suggestion index |
enabled | boolean | required | When true, index is enabled and can be queried.
|
sources | object | required | Sources for the suggestions |
denylist | array<object> | optional | Suggestions that will be ignored and not shown |
Responses
| Status | Description |
|---|---|
200 application/json | Suggestion index config created |
500 application/json | An error occurred |
Example request (cURL)
curl --request POST \
--url https://api.synerise.com/search/v2/suggestion-indices \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"indexName":"string","description":"string","author":0,"enabled":true,"sources":{"indices":[{"indexId":"string","minPopularity":5,"minHits":1,"minLetters":2,"daysInterval":30,"validate":false}],"external":[{"query":"string","count":0}],"generate":[{"itemsCatalogId":"string","attributes":["string"]}]},"denylist":[{"pattern":"string","matchingType":"Phrase"}]}'
GET /search/v2/suggestion-indices/{indexId}/config — Get suggestion index
/api-reference/ai-search#tag/Suggestions-Configuration/operation/GetSuggestionsIndex
Retrieve a suggestion index configuration.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: ITEMS_SEARCH_CONFIG_SEARCH_READ
User role permission required: assets_search: read
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index |
Responses
| Status | Description |
|---|---|
200 application/json | Suggestion index configuration |
500 application/json | An error occurred |
Example request (cURL)
curl --request GET \
--url https://api.synerise.com/search/v2/suggestion-indices/%7BindexId%7D/config \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
PUT /search/v2/suggestion-indices/{indexId}/config — Create/replace suggestion index
/api-reference/ai-search#tag/Suggestions-Configuration/operation/PutSuggestionIndexConfig
Create a suggestion index configuration or replace an existing one, given the index ID.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: ITEMS_SEARCH_CONFIG_SEARCH_UPDATE
User role permission required: assets_search: update
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index |
Request body
application/json · object
| Field | Type | Required | Description |
|---|---|---|---|
indexName | string | required | Name of the suggestion index |
description | string | optional | Description of the suggestion index |
author | integer | optional | ID of the user who created the suggestion index |
enabled | boolean | required | When true, index is enabled and can be queried.
|
sources | object | required | Sources for the suggestions |
denylist | array<object> | optional | Suggestions that will be ignored and not shown |
Responses
| Status | Description |
|---|---|
200 application/json | Suggestion index config created or replaced successfully |
500 application/json | An error occurred |
Example request (cURL)
curl --request PUT \
--url https://api.synerise.com/search/v2/suggestion-indices/%7BindexId%7D/config \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"indexName":"string","description":"string","author":0,"enabled":true,"sources":{"indices":[{"indexId":"string","minPopularity":5,"minHits":1,"minLetters":2,"daysInterval":30,"validate":false}],"external":[{"query":"string","count":0}],"generate":[{"itemsCatalogId":"string","attributes":["string"]}]},"denylist":[{"pattern":"string","matchingType":"Phrase"}]}'
DELETE /search/v2/suggestion-indices/{indexId}/config — Delete suggestion index
/api-reference/ai-search#tag/Suggestions-Configuration/operation/DeleteSuggestionIndexConfig
Delete a suggestion index configuration.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: ITEMS_SEARCH_CONFIG_SEARCH_DELETE
User role permission required: assets_search: delete
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index |
Responses
| Status | Description |
|---|---|
204 | Suggestion index config deleted |
500 application/json | An error occurred |
Example request (cURL)
curl --request DELETE \
--url https://api.synerise.com/search/v2/suggestion-indices/%7BindexId%7D/config \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
GET /search/v2/suggestion-indices/{indexId}/state — Get suggestion index state
/api-reference/ai-search#tag/Suggestions-Configuration/operation/GetSuggestionsIndexState
Retrieve the state of a single suggestion index.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: ITEMS_SEARCH_CONFIG_SEARCH_READ
User role permission required: assets_search: read
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index |
Responses
| Status | Description |
|---|---|
200 application/json | Suggestion index state |
500 application/json | An error occurred |
Example request (cURL)
curl --request GET \
--url https://api.synerise.com/search/v2/suggestion-indices/%7BindexId%7D/state \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
Query Rules
GET /search/v2/indices/{indexId}/rules — Get rules
/api-reference/ai-search#tag/Query-Rules/operation/GetRulesV2
Retrieves a list of rules.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: QUERY_RULES_SEARCH_READ
User role permission required: assets_search: read
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index |
status | query | enum<"finished", "draft", "paused", "scheduled", …> | optional | Only rules with this status will be retrieved. |
name | query | string | optional | Only rules containing this name will be retrieved. |
page | query | integer | optional | Page number to return for pagination. The first page has the index 1.
|
limit | query | integer | optional | The number of items to return per page |
sortBy | query | string | optional | Name of the attribute by which the data will be sorted |
ordering | query | enum<"desc", "asc"> | optional | Sorting order |
includeMeta | query | boolean | optional | When true, pagination metadata is included in the response body.
When false, the data is included in the response headers:
Link: links to neighbors, first, and last pages in pagination.
X-Pagination-Total-Count: total number of items on all pages
X-Pagination-Total-Pages: total number of pages
X-Pagination-Page: current page
X-Pagination-Limit: maximum number of items on a page
X-Pagination-Sorted-By: parameter that the items were sorted by
X-Pagination-Ordering: sorting direction
|
directoryId | query | string | optional | Requested directoryId of the rule. |
search | query | string | optional | Requested part of the name or the id of the rule. |
consequenceType | query | array<enum<"hide", "promote", "standardFilter", "elasticFilter", …>> | optional | Only rules producing at least one of the given consequence types will be retrieved. May be repeated. |
Responses
| Status | Description |
|---|---|
200 application/json | List of rules |
500 application/json | An error occurred |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices/%7BindexId%7D/rules?status=SOME_STRING_VALUE&name=SOME_STRING_VALUE&page=4&limit=100&sortBy=SOME_STRING_VALUE&ordering=SOME_STRING_VALUE&includeMeta=SOME_BOOLEAN_VALUE&directoryId=SOME_STRING_VALUE&search=SOME_STRING_VALUE&consequenceType=SOME_ARRAY_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
POST /search/v2/indices/{indexId}/rules — Create rule
/api-reference/ai-search#tag/Query-Rules/operation/PostRuleV2
Creates a new rule.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: QUERY_RULES_SEARCH_CREATE
User role permission required: assets_search: create
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index |
Request body (required)
application/json · object
Request for posting a new rule or updating an existing one
| Field | Type | Required | Description |
|---|---|---|---|
name | string | optional | Name of the rule |
author | integer | optional | The user who created the rule |
activeFrom | string | optional | Time when the rules becomes active, in YYYY-MM-DD HH-MM-SS format |
activeTo | string | optional | Time when the rule becomes inactive, in YYYY-MM-DD HH-MM-SS format |
timezone | string | optional | Timezone in UTC[+/-]X format, for example UTC+4, UTC+0, UTC-3
|
data | object | optional | This object contains the details of what the rule does |
Responses
| Status | Description |
|---|---|
200 application/json | ID of the new rule |
500 application/json | An error occurred |
Example request (cURL)
curl --request POST \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/rules \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"name":"string","author":0,"activeFrom":"string","activeTo":"string","timezone":"string","data":{"audience":{"segmentationIds":["34ab56cd-789be-22ee-11ab-123456789abc","12xy34z5-456b-33cc-7o52-987654321ece"]},"conditions":{"patterns":["phone","notebook","mouse {color} {brand}"],"matchingType":"is","contexts":["listing","web","mobile"],"filters":{"textFilters":{"color":{"values":["green","red"],"matchingType":"InUserFilters"}},"rangeFilters":{"price":{"ranges":[{"rightEnd":{"value":20,"inclusive":true}}],"matchingType":"Exact"}},"datetimeFilters":{"created":{"ranges":[{"rightEnd":{"value":"2024-01-01","inclusive":true}}],"matchingType":"Exact"}}}},"queryConsequences":[{"type":"removeWord","word":"string","replacement":"string"}],"postQueryConsequences":{"hideHits":["string"],"promoteHits":[{"id":"string","position":0}],"promoteHitsPositionStrategy":{"type":"custom"},"standardFilters":{"textFilters":[{"attribute":"brand","mode":"include","values":["A-Brand","B-Brand","{brand}"]}],"rangeFilters":[{"attribute":"price","operator":"gt","value":"{price}"}],"datetimeFilters":[{"attribute":"created","operator":"gt","value":"{created}"}]},"elasticFilters":{"textFilters":[{"attribute":"brand","mode":"include","values":["A-Brand","B-Brand","{brand}"]}],"rangeFilters":[{"attribute":"price","operator":"gt","value":"{price}"}],"datetimeFilters":[{"attribute":"created","operator":"gt","value":"{created}"}]},"boostFilters":[{"weight":-100,"filters":{"textFilters":[{"attribute":"brand","mode":"include","values":["A-Brand","B-Brand","{brand}"]}],"rangeFilters":[{"attribute":"price","operator":"gt","value":"{price}"}],"datetimeFilters":[{"attribute":"created","operator":"gt","value":"{created}"}]}}],"topHitsFilters":[{"hitsNumber":1,"filters":{"textFilters":[{"attribute":"brand","mode":"include","values":["A-Brand","B-Brand","{brand}"]}],"rangeFilters":[{"attribute":"price","operator":"gt","value":"{price}"}],"datetimeFilters":[{"attribute":"created","operator":"gt","value":"{created}"}]}}],"distinctFilter":{"attribute":"string","maxNumItems":0,"categoryLevelModifier":0},"sortBy":{"attribute":"string","ordering":"desc"},"customData":"{\"customLandingPage\": \"https://synerise.com/\"}","returnNoData":false,"pinFacets":[{"attribute":"size","position":1},{"attribute":"width","position":2},{"attribute":"gift_wrap"}],"hideFacets":["material","fabric","sleeve_length"]}}}'
GET /search/v2/indices/{indexId}/rules/{ruleId} — Get rule
/api-reference/ai-search#tag/Query-Rules/operation/GetRuleV2
Retrieves a rule.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: QUERY_RULES_SEARCH_CREATE
User role permission required: assets_search: create
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index |
ruleId | path | integer | required | Rule identifier |
Responses
| Status | Description |
|---|---|
200 application/json | Query rule returned |
500 application/json | An error occurred |
Example request (cURL)
curl --request GET \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/rules/%7BruleId%7D \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
PUT /search/v2/indices/{indexId}/rules/{ruleId} — Update query rule
/api-reference/ai-search#tag/Query-Rules/operation/PutRuleV2
Updates a rule identified by id.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: QUERY_RULES_SEARCH_UPDATE
User role permission required: assets_search: update
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index |
ruleId | path | integer | required | Rule identifier |
Request body (required)
application/json · object
Request for posting a new rule or updating an existing one
| Field | Type | Required | Description |
|---|---|---|---|
name | string | optional | Name of the rule |
author | integer | optional | The user who created the rule |
activeFrom | string | optional | Time when the rules becomes active, in YYYY-MM-DD HH-MM-SS format |
activeTo | string | optional | Time when the rule becomes inactive, in YYYY-MM-DD HH-MM-SS format |
timezone | string | optional | Timezone in UTC[+/-]X format, for example UTC+4, UTC+0, UTC-3
|
data | object | optional | This object contains the details of what the rule does |
Responses
| Status | Description |
|---|---|
200 application/json | Query rule updated |
500 application/json | An error occurred |
Example request (cURL)
curl --request PUT \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/rules/%7BruleId%7D \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"name":"string","author":0,"activeFrom":"string","activeTo":"string","timezone":"string","data":{"audience":{"segmentationIds":["34ab56cd-789be-22ee-11ab-123456789abc","12xy34z5-456b-33cc-7o52-987654321ece"]},"conditions":{"patterns":["phone","notebook","mouse {color} {brand}"],"matchingType":"is","contexts":["listing","web","mobile"],"filters":{"textFilters":{"color":{"values":["green","red"],"matchingType":"InUserFilters"}},"rangeFilters":{"price":{"ranges":[{"rightEnd":{"value":20,"inclusive":true}}],"matchingType":"Exact"}},"datetimeFilters":{"created":{"ranges":[{"rightEnd":{"value":"2024-01-01","inclusive":true}}],"matchingType":"Exact"}}}},"queryConsequences":[{"type":"removeWord","word":"string","replacement":"string"}],"postQueryConsequences":{"hideHits":["string"],"promoteHits":[{"id":"string","position":0}],"promoteHitsPositionStrategy":{"type":"custom"},"standardFilters":{"textFilters":[{"attribute":"brand","mode":"include","values":["A-Brand","B-Brand","{brand}"]}],"rangeFilters":[{"attribute":"price","operator":"gt","value":"{price}"}],"datetimeFilters":[{"attribute":"created","operator":"gt","value":"{created}"}]},"elasticFilters":{"textFilters":[{"attribute":"brand","mode":"include","values":["A-Brand","B-Brand","{brand}"]}],"rangeFilters":[{"attribute":"price","operator":"gt","value":"{price}"}],"datetimeFilters":[{"attribute":"created","operator":"gt","value":"{created}"}]},"boostFilters":[{"weight":-100,"filters":{"textFilters":[{"attribute":"brand","mode":"include","values":["A-Brand","B-Brand","{brand}"]}],"rangeFilters":[{"attribute":"price","operator":"gt","value":"{price}"}],"datetimeFilters":[{"attribute":"created","operator":"gt","value":"{created}"}]}}],"topHitsFilters":[{"hitsNumber":1,"filters":{"textFilters":[{"attribute":"brand","mode":"include","values":["A-Brand","B-Brand","{brand}"]}],"rangeFilters":[{"attribute":"price","operator":"gt","value":"{price}"}],"datetimeFilters":[{"attribute":"created","operator":"gt","value":"{created}"}]}}],"distinctFilter":{"attribute":"string","maxNumItems":0,"categoryLevelModifier":0},"sortBy":{"attribute":"string","ordering":"desc"},"customData":"{\"customLandingPage\": \"https://synerise.com/\"}","returnNoData":false,"pinFacets":[{"attribute":"size","position":1},{"attribute":"width","position":2},{"attribute":"gift_wrap"}],"hideFacets":["material","fabric","sleeve_length"]}}}'
DELETE /search/v2/indices/{indexId}/rules/{ruleId} — Delete rule
/api-reference/ai-search#tag/Query-Rules/operation/DeleteRuleV2
Deletes a rule identified by id.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: QUERY_RULES_SEARCH_DELETE
User role permission required: assets_search: delete
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index |
ruleId | path | integer | required | Rule identifier |
Responses
| Status | Description |
|---|---|
204 | Query rule deleted |
500 application/json | An error occurred |
Example request (cURL)
curl --request DELETE \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/rules/%7BruleId%7D \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
POST /search/v2/indices/{indexId}/rules/{ruleId}/activate — Activate rule
/api-reference/ai-search#tag/Query-Rules/operation/ActivateRuleV2
Activates a rule identified by id.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: QUERY_RULES_SEARCH_UPDATE
User role permission required: assets_search: update
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index |
ruleId | path | integer | required | Rule identifier |
Responses
| Status | Description |
|---|---|
204 | Query rule activated |
500 application/json | An error occurred |
Example request (cURL)
curl --request POST \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/rules/%7BruleId%7D/activate \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
POST /search/v2/indices/{indexId}/rules/{ruleId}/pause — Pause rule
/api-reference/ai-search#tag/Query-Rules/operation/PauseRuleV2
Pauses a rule identified by id.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: QUERY_RULES_SEARCH_UPDATE
User role permission required: assets_search: update
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index |
ruleId | path | integer | required | Rule identifier |
Responses
| Status | Description |
|---|---|
204 | Query rule paused |
500 application/json | An error occurred |
Example request (cURL)
curl --request POST \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/rules/%7BruleId%7D/pause \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
POST /search/v2/indices/{indexId}/rules/{ruleId}/draft — Draft rule
/api-reference/ai-search#tag/Query-Rules/operation/DraftRuleV2
Marks a rule as draft.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: QUERY_RULES_SEARCH_UPDATE
User role permission required: assets_search: update
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index |
ruleId | path | integer | required | Rule identifier |
Responses
| Status | Description |
|---|---|
204 | Query rule marked as draft |
500 application/json | An error occurred |
Example request (cURL)
curl --request POST \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/rules/%7BruleId%7D/draft \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
POST /search/v2/indices/{indexId}/rules/{ruleId}/finish — Finish rule
/api-reference/ai-search#tag/Query-Rules/operation/FinishRuleV2
Marks a rule as finished. The rule becomes inactive and can never be activated again.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: QUERY_RULES_SEARCH_UPDATE
User role permission required: assets_search: update
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index |
ruleId | path | integer | required | Rule identifier |
Responses
| Status | Description |
|---|---|
204 | Query rule marked as finished |
500 application/json | An error occurred |
Example request (cURL)
curl --request POST \
--url https://api.synerise.com/search/v2/indices/%7BindexId%7D/rules/%7BruleId%7D/finish \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
Search Stats
GET /search/v2/indices/{indexId}/stats/queries/summary — Get queries stats summary
/api-reference/ai-search#tag/Search-Stats/operation/GetQueriesSummary
Retrieves the statistics of all queries or a single query defined in the request.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: AI_STATS_READ
User role permission required: assets_search: read
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index for which the stats are requested |
dateFrom | query | string | optional | Upper bound of the interval for which the statistics will be retrieved.Must be provided with to, otherwise the filter is treated as unspecified.If not specified, the interval is last 7 days.
|
dateTo | query | string | optional | Lower bound of the interval for which the statistics will be retrieved. If not specified, the interval is last 7 days. |
query | query | string | optional | Query for which stats will be returned. If not provided, the results are returned for the most popular queries. |
searchType | query | enum<"fullTextSearch", "autocomplete", "listing", "visual", …> | optional | Search type for which stats will be retrieved. |
groupBy | query | enum<"date"> | optional | Attribute for which retrieved stats will be grouped. |
Responses
| Status | Description |
|---|---|
200 application/json | Statistics returned |
500 application/json | Service error |
4xx application/json | Incorrect request |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices/4add1a1fa877c1651906bb22c9dfd37a1618852272/stats/queries/summary?dateFrom=SOME_STRING_VALUE&dateTo=SOME_STRING_VALUE&query=SOME_STRING_VALUE&searchType=SOME_STRING_VALUE&groupBy=SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
GET /search/v2/indices/{indexId}/stats/queries/top — Get top query statistics
/api-reference/ai-search#tag/Search-Stats/operation/GetQueriesTop
Retrieves the 1000 most popular queries.
IMPORTANT: Don't use this endpoint for displaying most popular queries to end users when they're searching. Instead, use search/v2/indices/{indexId}/list, where indexId is a suggestion index.
API consumers: Workspace (Business Profile), Synerise User, AI API key (legacy)
API key permission required: AI_STATS_READ
User role permission required: assets_search: read
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index for which the stats are requested |
dateFrom | query | string | optional | Upper bound of the interval for which the statistics will be retrieved.Must be provided with to, otherwise the filter is treated as unspecified.If not specified, the interval is last 7 days.
|
dateTo | query | string | optional | Lower bound of the interval for which the statistics will be retrieved. If not specified, the interval is last 7 days. |
query | query | string | optional | Query for which stats will be returned. If not provided, the results are returned for the most popular queries. |
searchType | query | enum<"fullTextSearch", "autocomplete", "listing", "visual", …> | optional | Search type for which stats will be retrieved. |
queryFilter | query | enum<"queries", "queriesWithNoResults", "queriesWithUsedSuggestions"> | optional | Queries for which stats will be retrieved. |
groupBy | query | enum<"date"> | optional | Attribute for which retrieved stats will be grouped. |
withFilters | query | enum<true, false> | optional | Switch to display search statistics with enabled filters or without filters. |
SortBy | query | enum<"count", "clicks", "conversions", "clickThroughRate", …> | optional | Field by which results should be sorted. |
ordering | query | enum<"asc", "desc"> | optional | Sort order direction. |
Responses
| Status | Description |
|---|---|
200 application/json | Statistics returned |
500 application/json | Service error |
4xx application/json | Incorrect request |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices/4add1a1fa877c1651906bb22c9dfd37a1618852272/stats/queries/top?dateFrom=SOME_STRING_VALUE&dateTo=SOME_STRING_VALUE&query=SOME_STRING_VALUE&searchType=SOME_STRING_VALUE&queryFilter=SOME_STRING_VALUE&groupBy=SOME_STRING_VALUE&withFilters=SOME_STRING_VALUE&SortBy=SOME_STRING_VALUE&ordering=SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
GET /search/v2/indices/{indexId}/stats/filters/summary — Get filters stats
/api-reference/ai-search#tag/Search-Stats/operation/GetFiltersSummary
Retrieves the statistics of filters used in searches.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: AI_STATS_READ
User role permission required: assets_search: read
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index for which the stats are requested |
filterName | query | string | optional | Name of the filterable attribute. If present top values of this filter are returned. |
dateFrom | query | string | optional | Upper bound of the interval for which the statistics will be retrieved.Must be provided with to, otherwise the filter is treated as unspecified.If not specified, the interval is last 7 days.
|
dateTo | query | string | optional | Lower bound of the interval for which the statistics will be retrieved. If not specified, the interval is last 7 days. |
groupBy | query | enum<"date"> | optional | Attribute for which retrieved stats will be grouped. |
ordering | query | enum<"asc", "desc"> | optional | Sort order direction. |
Responses
| Status | Description |
|---|---|
200 application/json | Statistics returned |
500 application/json | Service error |
4xx application/json | Incorrect request |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices/4add1a1fa877c1651906bb22c9dfd37a1618852272/stats/filters/summary?filterName=brand&dateFrom=SOME_STRING_VALUE&dateTo=SOME_STRING_VALUE&groupBy=SOME_STRING_VALUE&ordering=SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
GET /search/v2/indices/{indexId}/stats/rules/summary — Get rules stats
/api-reference/ai-search#tag/Search-Stats/operation/GetRulesSummary
Retrieves the statistics of applied rules.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: AI_STATS_READ
User role permission required: assets_search: read
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | path | string | required | ID of the index for which the stats are requested |
dateFrom | query | string | optional | Upper bound of the interval for which the statistics will be retrieved.Must be provided with to, otherwise the filter is treated as unspecified.If not specified, the interval is last 7 days.
|
dateTo | query | string | optional | Lower bound of the interval for which the statistics will be retrieved. If not specified, the interval is last 7 days. |
groupBy | query | enum<"date"> | optional | Attribute for which retrieved stats will be grouped. |
Responses
| Status | Description |
|---|---|
200 application/json | Statistics returned |
500 application/json | Service error |
4xx application/json | Incorrect request |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices/4add1a1fa877c1651906bb22c9dfd37a1618852272/stats/rules/summary?dateFrom=SOME_STRING_VALUE&dateTo=SOME_STRING_VALUE&groupBy=SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
GET /search/v2/indices/stats/queries/summary — Get queries summary for multiple indices
/api-reference/ai-search#tag/Search-Stats/operation/GetQueriesSummaryMultipleIndices
Retrieves the statistics of all queries or a single query defined in the request for multiple indices.
API consumers: Workspace (Business Profile), Synerise User
API key permission required: AI_STATS_READ
User role permission required: assets_search: read
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
indexId | query | array<string> | required | List of indices ids for which the stats are requested. |
dateFrom | query | string | optional | Upper bound of the interval for which the statistics will be retrieved.Must be provided with to, otherwise the filter is treated as unspecified.If not specified, the interval is last 7 days.
|
dateTo | query | string | optional | Lower bound of the interval for which the statistics will be retrieved. If not specified, the interval is last 7 days. |
query | query | string | optional | Query for which stats will be returned. If not provided, the results are returned for the most popular queries. |
searchType | query | enum<"fullTextSearch", "autocomplete", "listing", "visual", …> | optional | Search type for which stats will be retrieved. |
groupBy | query | enum<"date"> | optional | Attribute for which retrieved stats will be grouped. |
Responses
| Status | Description |
|---|---|
200 application/json | Statistics returned |
500 application/json | Service error |
4xx application/json | Incorrect request |
Example request (cURL)
curl --request GET \
--url 'https://api.synerise.com/search/v2/indices/stats/queries/summary?indexId=SOME_ARRAY_VALUE&dateFrom=SOME_STRING_VALUE&dateTo=SOME_STRING_VALUE&query=SOME_STRING_VALUE&searchType=SOME_STRING_VALUE&groupBy=SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'