Algolia Recommend API

Returns related-products, frequently-bought-together, trending and look-alike recommendations trained from Insights events and catalog data, plus the Recommend rules that override them.

Operations 11

GET /{path} Send requests to the Algolia REST API #
POST /{path} Send requests to the Algolia REST API #
PUT /{path} Send requests to the Algolia REST API #
DELETE /{path} Send requests to the Algolia REST API #
POST /1/indexes/*/recommendations Retrieve recommendations #
GET /1/indexes/{indexName}/{model}/recommend/rules/{objectID} Retrieve a rule #
DELETE /1/indexes/{indexName}/{model}/recommend/rules/{objectID} Delete a rule #
GET /1/indexes/{indexName}/{model}/task/{taskID} Check task status #
POST /1/indexes/{indexName}/{model}/recommend/rules/search Search for rules #
POST /1/indexes/{indexName}/{model}/recommend/rules/batch Create or update a batch of Recommend Rules #
GET /setClientApiKey Switch the API key used to authenticate requests #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/algolia-recommend-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

algolia-recommend-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Recommend API
  summary: The Recommend API lets you retrieve recommendations from one of Algolia's AI recommendation models that you previously trained on your data
  description: "## Client libraries\n\nUse Algolia's API clients and libraries to reliably integrate Algolia's APIs with your apps.\nThe official API clients are covered by Algolia's [Service Level Agreement](https://www.algolia.com/policies/sla).\n\nFor more information, see [Algolia's ecosystem](https://www.algolia.com/doc/libraries).\n\n## Base URLs\n\nBase URLs for the Recommend API:\n\n- `https://{APPLICATION_ID}.algolia.net`\n- `https://{APPLICATION_ID}-dsn.algolia.net`.\n  If your subscription includes a [Distributed Search Network](https://dashboard.algolia.com/infra),\n  this ensures that requests are sent to servers closest to users.\n\nBoth URLs provide high availability by distributing requests with load balancing.\n\n**All requests must use HTTPS.**\n\n## Retry strategy\n\nTo guarantee a high availability, implement a retry strategy for all API requests using the URLs of your servers as fallbacks:\n\n- `https://{APPLICATION_ID}-1.algolianet.com`\n- `https://{APPLICATION_ID}-2.algolianet.com`\n- `https://{APPLICATION_ID}-3.algolianet.com`\n\nThese URLs use a different DNS provider than the primary URLs.\nRandomize this list to ensure an even load across the three servers.\n\nAll Algolia API clients implement this retry strategy.\n\n## Authentication\n\nAdd these headers to authenticate requests:\n\n- `x-algolia-application-id`. Your Algolia application ID.\n- `x-algolia-api-key`. An API key with the necessary permissions to make the request.\n  The required access control list (ACL) to make a request is listed in each endpoint's reference.\n\nYou can find your application ID and API key in the [Algolia dashboard](https://dashboard.algolia.com/account/api-keys).\n\n## Request format\n\nRequest bodies must be JSON objects.\n\n## Response status and errors\n\nThe Recommend API returns JSON responses.\nSince JSON doesn't guarantee any specific ordering, don't rely on the order of attributes in the API response.\n\nSuccessful responses return `2xx` statuses. Client errors return `4xx` statuses. Server errors return `5xx` statuses.\nError responses have a `message` property with more information.\n\n## Version\n\nThe current version of the Recommend API is version 1, indicated by the `/1/` in each endpoint's URL.\n"
  version: 1.0.0
servers:
- url: https://{appId}.algolia.net
  variables:
    appId:
      default: ALGOLIA_APPLICATION_ID
- url: https://{appId}-1.algolianet.com
  variables:
    appId:
      default: ALGOLIA_APPLICATION_ID
- url: https://{appId}-2.algolianet.com
  variables:
    appId:
      default: ALGOLIA_APPLICATION_ID
- url: https://{appId}-3.algolianet.com
  variables:
    appId:
      default: ALGOLIA_APPLICATION_ID
- url: https://{appId}-dsn.algolia.net
  variables:
    appId:
      default: ALGOLIA_APPLICATION_ID
security:
- appId: []
  apiKey: []
tags:
- name: recommend
paths:
  /{path}:
    get:
      operationId: customGet
      summary: Send requests to the Algolia REST API
      description: This method lets you send requests to the Algolia REST API.
      parameters:
      - $ref: '#/components/parameters/PathInPath'
      - $ref: '#/components/parameters/Parameters'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
      tags:
      - recommend
    post:
      operationId: customPost
      requestBody:
        description: Parameters to send with the custom request.
        content:
          application/json:
            schema:
              type: object
      summary: Send requests to the Algolia REST API
      description: This method lets you send requests to the Algolia REST API.
      parameters:
      - $ref: '#/components/parameters/PathInPath'
      - $ref: '#/components/parameters/Parameters'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
      tags:
      - recommend
    put:
      operationId: customPut
      requestBody:
        description: Parameters to send with the custom request.
        content:
          application/json:
            schema:
              type: object
      summary: Send requests to the Algolia REST API
      description: This method lets you send requests to the Algolia REST API.
      parameters:
      - $ref: '#/components/parameters/PathInPath'
      - $ref: '#/components/parameters/Parameters'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
      tags:
      - recommend
    delete:
      operationId: customDelete
      summary: Send requests to the Algolia REST API
      description: This method lets you send requests to the Algolia REST API.
      parameters:
      - $ref: '#/components/parameters/PathInPath'
      - $ref: '#/components/parameters/Parameters'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
      tags:
      - recommend
  /1/indexes/*/recommendations:
    post:
      tags:
      - recommend
      operationId: getRecommendations
      x-use-read-transporter: true
      x-cacheable: true
      x-acl:
      - search
      x-legacy-signature-recommend: true
      summary: Retrieve recommendations
      description: 'Retrieves recommendations from selected AI models.

        '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              title: getRecommendationsParams
              description: Recommend request body.
              type: object
              additionalProperties: false
              properties:
                requests:
                  type: array
                  description: Recommendation request with parameters depending on the requested model.
                  items:
                    $ref: '#/components/schemas/recommendationsRequest'
              required:
              - requests
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: getRecommendationsResponse
                type: object
                additionalProperties: false
                properties:
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/recommendationsResults'
                required:
                - results
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
  /1/indexes/{indexName}/{model}/recommend/rules/{objectID}:
    get:
      tags:
      - recommend
      operationId: getRecommendRule
      x-acl:
      - settings
      summary: Retrieve a rule
      description: Retrieves a Recommend rule that you previously created in the Algolia dashboard.
      parameters:
      - $ref: '#/components/parameters/IndexName'
      - $ref: '#/components/parameters/Models'
      - $ref: '#/components/parameters/ObjectID'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecommendRule'
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
    delete:
      tags:
      - recommend
      operationId: deleteRecommendRule
      x-acl:
      - editSettings
      summary: Delete a rule
      description: Deletes a Recommend rule from a recommendation scenario.
      parameters:
      - $ref: '#/components/parameters/IndexName'
      - $ref: '#/components/parameters/Models'
      - $ref: '#/components/parameters/ObjectID'
      responses:
        '200':
          $ref: '#/components/responses/DeletedAt'
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
  /1/indexes/{indexName}/{model}/task/{taskID}:
    get:
      tags:
      - recommend
      operationId: getRecommendStatus
      x-acl:
      - editSettings
      summary: Check task status
      description: 'Checks the status of a given task.


        Deleting a Recommend rule is asynchronous.

        When you delete a rule, a task is created on a queue and completed depending on the load on the server.

        The API response includes a task ID that you can use to check the status.

        '
      parameters:
      - $ref: '#/components/parameters/IndexName'
      - $ref: '#/components/parameters/Models'
      - name: taskID
        in: path
        description: Unique task identifier.
        required: true
        schema:
          $ref: '#/components/schemas/taskID'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: getRecommendTaskResponse
                type: object
                additionalProperties: false
                properties:
                  status:
                    $ref: '#/components/schemas/taskStatus'
                required:
                - status
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
  /1/indexes/{indexName}/{model}/recommend/rules/search:
    post:
      tags:
      - recommend
      operationId: searchRecommendRules
      x-use-read-transporter: true
      x-cacheable: true
      x-acl:
      - settings
      summary: Search for rules
      description: 'Searches for Recommend rules.


        Use an empty query to list all rules for this recommendation scenario.

        '
      parameters:
      - $ref: '#/components/parameters/IndexName'
      - $ref: '#/components/parameters/Models'
      requestBody:
        content:
          application/json:
            schema:
              title: searchRecommendRulesParams
              type: object
              description: Recommend rules parameters.
              additionalProperties: false
              properties:
                query:
                  $ref: '#/components/schemas/parameters_query'
                context:
                  type: string
                  description: Only search for rules with matching context.
                  example: mobile
                page:
                  $ref: '#/components/schemas/parameters_page'
                hitsPerPage:
                  $ref: '#/components/schemas/parameters_hitsPerPage'
                enabled:
                  type: boolean
                  description: 'Whether to only show rules where the value of their `enabled` property matches this parameter.

                    If absent, show all rules, regardless of their `enabled` property.

                    '
                filters:
                  type: string
                  description: Filter expression. This only searches for rules matching the filter expression.
                  example: objectID:rr-123456
                facets:
                  type: array
                  description: Include facets and facet values in the response. Use `['*']` to include all facets.
                  example:
                  - '*'
                  items:
                    type: string
                    description: Facet name for rule objects or `*` as wildcard character.
                    example: condition.context
                maxValuesPerFacet:
                  type: integer
                  description: Maximum number of values to return for each facet.
                  minimum: 1
                  maximum: 1000
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: searchRecommendRulesResponse
                type: object
                additionalProperties: false
                required:
                - hits
                - nbHits
                - page
                - nbPages
                properties:
                  hits:
                    type: array
                    description: Recommend rules that match the search criteria.
                    items:
                      $ref: '#/components/schemas/RecommendRule'
                  nbHits:
                    $ref: '#/components/schemas/nbHits'
                  page:
                    $ref: '#/components/schemas/page'
                  nbPages:
                    $ref: '#/components/schemas/nbPages'
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
  /1/indexes/{indexName}/{model}/recommend/rules/batch:
    post:
      tags:
      - recommend
      operationId: batchRecommendRules
      x-acl:
      - editSettings
      summary: Create or update a batch of Recommend Rules
      description: 'Create or update a batch of Recommend Rules


        Each Recommend Rule is created or updated, depending on whether a Recommend Rule with the same `objectID` already exists.

        You may also specify `true` for `clearExistingRules`, in which case the batch will atomically replace all the existing Recommend Rules.


        Recommend Rules are similar to Search Rules, except that the conditions and consequences apply to a [source item](/doc/guides/algolia-recommend/overview/#recommend-models) instead of a query. The main differences are the following:

        - Conditions `pattern` and `anchoring` are unavailable.

        - Condition `filters` triggers if the source item matches the specified filters.

        - Condition `filters` accepts numeric filters.

        - Consequence `params` only covers filtering parameters.

        - Consequence `automaticFacetFilters` doesn''t require a facet value placeholder (it tries to match the data source item''s attributes instead).

        '
      parameters:
      - $ref: '#/components/parameters/IndexName'
      - $ref: '#/components/parameters/Models'
      requestBody:
        content:
          application/json:
            schema:
              title: rules
              type: array
              description: Recommend rules.
              items:
                $ref: '#/components/schemas/RecommendRule'
      responses:
        '200':
          $ref: '#/components/responses/RecommendUpdatedAt'
        '400':
          $ref: '#/components/responses/BadRequest'
  /setClientApiKey:
    get:
      x-helper: true
      x-asynchronous-helper: false
      x-acl: []
      tags:
      - recommend
      operationId: setClientApiKey
      summary: Switch the API key used to authenticate requests
      description: 'Switch the API key used to authenticate requests.

        '
      parameters:
      - in: query
        name: apiKey
        description: API key to use for subsequent requests.
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No content.
components:
  schemas:
    filters:
      type: string
      description: "Filter expression to only include items that match the filter criteria in the response.\n\nYou can use these filter expressions:\n\n- **Numeric filters.** `<facet> <op> <number>`, where `<op>` is one of `<`, `<=`, `=`, `!=`, `>`, `>=`.\n- **Ranges.** `<facet>:<lower> TO <upper>`, where `<lower>` and `<upper>` are the lower and upper limits of the range (inclusive).\n- **Facet filters.** `<facet>:<value>`, where `<facet>` is a facet attribute (case-sensitive) and `<value>` a facet value.\n- **Tag filters.** `_tags:<value>` or just `<value>` (case-sensitive).\n- **Boolean filters.** `<facet>: true | false`.\n\nYou can combine filters with `AND`, `OR`, and `NOT` operators with the following restrictions:\n\n- You can only combine filters of the same type with `OR`.\n  **Not supported:** `facet:value OR num > 3`.\n- You can't use `NOT` with combinations of filters.\n  **Not supported:** `NOT(facet:value OR facet:value)`\n- You can't combine conjunctions (`AND`) with `OR`.\n  **Not supported:** `facet:value OR (facet:value AND facet:value)`\n\nUse quotes if the facet attribute name or facet value contains spaces, keywords (`OR`, `AND`, `NOT`), or quotes.\nIf a facet attribute is an array, the filter matches if it matches at least one element of the array.\n\nFor more information, see [Filters](https://www.algolia.com/doc/guides/managing-results/refine-results/filtering).\n"
      example: (category:Book OR category:Ebook) AND _tags:published
      x-categories:
      - Filtering
    facetOrdering:
      description: Order of facet names and facet values in your UI.
      type: object
      additionalProperties: false
      properties:
        facets:
          $ref: '#/components/schemas/IndexSettings_facets'
        values:
          $ref: '#/components/schemas/values'
    HideConsequenceObject:
      type: object
      description: Object ID of the recommendation you want to exclude.
      properties:
        objectID:
          $ref: '#/components/schemas/objectID'
    aroundLatLngViaIP:
      type: boolean
      description: Whether to obtain the coordinates from the request's IP address.
      default: false
      x-categories:
      - Geo-Search
    lookingSimilarModel:
      type: string
      description: 'Looking similar model.


        This model recommends items that look similar to the item with the ID `objectID` based on image attributes in your index.

        '
      enum:
      - looking-similar
    relatedProducts:
      type: object
      properties:
        model:
          $ref: '#/components/schemas/relatedModel'
        objectID:
          $ref: '#/components/schemas/objectID'
        fallbackParameters:
          $ref: '#/components/schemas/fallbackParams'
      required:
      - model
      - objectID
    widgets:
      description: Widgets returned from any rules that are applied to the current search.
      type: object
      additionalProperties: false
      properties:
        banners:
          $ref: '#/components/schemas/banners'
    maxValuesPerFacet:
      type: integer
      description: Maximum number of facet values to return for each facet.
      default: 100
      maximum: 1000
      x-categories:
      - Faceting
    rankingInfo:
      type: object
      description: Object with detailed information about the record's ranking.
      additionalProperties: false
      properties:
        filters:
          type: integer
          minimum: 0
          description: Whether a filter matched the query.
        firstMatchedWord:
          type: integer
          minimum: 0
          description: Position of the first matched word in the best matching attribute of the record.
        geoDistance:
          type: integer
          minimum: 0
          description: Distance between the geo location in the search query and the best matching geo location in the record, divided by the geo precision (in meters).
        geoPrecision:
          type: integer
          minimum: 1
          description: Precision used when computing the geo distance, in meters.
        matchedGeoLocation:
          $ref: '#/components/schemas/matchedGeoLocation'
        personalization:
          $ref: '#/components/schemas/personalization'
        nbExactWords:
          type: integer
          minimum: 0
          description: Number of exactly matched words.
        nbTypos:
          type: integer
          minimum: 0
          description: Number of typos encountered when matching the record.
        promoted:
          type: boolean
          description: Whether the record was promoted by a rule.
        proximityDistance:
          type: integer
          minimum: 0
          description: Number of words between multiple matches in the query plus 1. For single word queries, `proximityDistance` is 0.
        userScore:
          type: integer
          description: Overall ranking of the record, expressed as a single integer. This attribute is internal.
        words:
          type: integer
          minimum: 1
          description: Number of matched words.
        promotedByReRanking:
          type: boolean
          description: Whether the record is re-ranked.
      required:
      - nbTypos
      - firstMatchedWord
      - geoDistance
      - nbExactWords
      - userScore
    reRankingApplyFilter:
      description: 'Restrict [Dynamic Re-Ranking](https://www.algolia.com/doc/guides/algolia-ai/re-ranking) to records that match these filters.

        '
      oneOf:
      - type: array
        items:
          $ref: '#/components/schemas/reRankingApplyFilter'
      - type: string
        x-categories:
        - Filtering
    searchParamsQuery:
      type: object
      additionalProperties: false
      properties:
        query:
          $ref: '#/components/schemas/query'
    analytics:
      type: boolean
      description: Whether this search will be included in Analytics.
      default: true
      x-categories:
      - Analytics
    IndexSettings_advancedSyntaxFeatures:
      type: array
      items:
        $ref: '#/components/schemas/advancedSyntaxFeatures'
      description: "Advanced search syntax features you want to support\n- `exactPhrase`.\n  Phrases in quotes must match exactly.\n  For example, `sparkly blue \"iPhone case\"` only returns records with the exact string \"iPhone case\"\n- `excludeWords`.\n  Query words prefixed with a `-` must not occur in a record.\n  For example, `search -engine` matches records that contain \"search\" but not \"engine\"\nThis setting only has an effect if `advancedSyntax` is true.\n"
      default:
      - exactPhrase
      - excludeWords
      x-categories:
      - Query strategy
    highlightedValue:
      type: string
      description: Highlighted attribute value, including HTML tags.
      example: <em>George</em> <em>Clo</em>oney
    trendingFacetsQuery:
      title: Trending facet values
      allOf:
      - $ref: '#/components/schemas/trendingFacets'
    optionalFilters:
      description: 'Filters to promote or demote records in the search results.


        Optional filters work like facet filters, but they don''t exclude records from the search results.

        Records that match the optional filter rank before records that don''t match.

        If you''re using a negative filter `facet:-value`, matching records rank after records that don''t match.


        - Optional filters are applied _after_ sort-by attributes.

        - Optional filters are applied _before_ custom ranking attributes (in the default [ranking](https://www.algolia.com/doc/guides/managing-results/relevance-overview/in-depth/ranking-criteria)).

        - Optional filters don''t work with numeric attributes.

        - On virtual replicas, optional filters are applied _after_ the replica''s [relevant sort](https://www.algolia.com/doc/guides/managing-results/refine-results/sorting/in-depth/relevant-sort).

        '
      example:
      - category:Book
      - author:John Doe
      oneOf:
      - type: array
        items:
          $ref: '#/components/schemas/optionalFilters'
      - type: string
      x-categories:
      - Filtering
    AutoFacetFilter:
      type: object
      description: Facet attribute. Only recommendations with the same value (or only recommendations with a different value) as the original viewed item are included.
      properties:
        facet:
          type: string
          description: Facet attribute.
        negative:
          type: boolean
          description: 'Whether the filter is negative.

            If true, recommendations must not have the same value for the `facet` attribute.

            If false, recommendations must have the same value for the `facet` attribute.

            '
    aroundRadius:
      description: 'Maximum radius for a search around a central location.


        This parameter works in combination with the `aroundLatLng` and `aroundLatLngViaIP` parameters.

        By default, the search radius is determined automatically from the density of hits around the central location.

        The search radius is small if there are many hits close to the central coordinates.

        '
      oneOf:
      - type: integer
        minimum: 1
        description: Maximum search radius around a central location in meters.
      - $ref: '#/components/schemas/aroundRadiusAll'
      x-categories:
      - Geo-Search
    parameters_page:
      type: integer
      minimum: 0
      description: 'Requested page of the API response.


        Algolia uses `page` and `hitsPerPage` to control how search results are displayed ([paginated](https://www.algolia.com/doc/guides/building-search-ui/ui-and-ux-patterns/pagination/js)).


        - `hitsPerPage`: sets the number of search results (_hits_) displayed per page.

        - `page`: specifies the page number of the search results you want to retrieve. Page numbering starts at 0, so the first page is `page=0`, the second is `page=1`, and so on.


        For example, to display 10 results per page starting from the third page, set `hitsPerPage` to 10 and `page` to 2.

        '
    ignorePlurals:
      description: 'Treat singular, plurals, and other forms of declensions as equivalent.

        Only use this feature for the languages used in your index.

        '
      example:
      - ca
      - es
      oneOf:
      - type: array
        description: 'ISO code for languages for which this feature should be active.

          This overrides languages you set with `queryLanguages`.

          '
        items:
          $ref: '#/components/schemas/supportedLanguage'
      - $ref: '#/components/schemas/booleanString'
      - type: boolean
        description: 'If true, `ignorePlurals` is active for all languages included in `queryLanguages`, or for all supported languages, if `queryLanguges` is empty.

          If false, singulars, plurals, and other declensions won''t be considered equivalent.

          '
        default: false
      x-categories:
      - Languages
    baseRecommendIndexSettings:
      type: object
      additionalProperties: false
      properties:
        attributesToRetrieve:
          $ref: '#/components/schemas/attributesToRetrieve'
        relevancyStrictness:
          $ref: '#/components/schemas/relevancyStrictness'
        attributesToHighlight:
          $ref: '#/components/schemas/attributesToHighlight'
        attributesToSnippet:
          $ref: '#/components/schemas/attributesToSnippet'
        highlightPreTag:
          $ref: '#/components/schemas/highlightPreTag'
        highlightPostTag:
          $ref: '#/components/schemas/highlightPostTag'
        snippetEllipsisText:
          $ref: '#/components/schemas/snippetEllipsisText'
        restrictHighlightAndSnippetArrays:
          $ref: '#/components/schemas/restrictHighlightAndSnippetArrays'
        minWordSizefor1Typo:
          $ref: '#/components/schemas/minWordSizefor1Typo'
        minWordSizefor2Typos:
          $ref: '#/components/schemas/minWordSizefor2Typos'
        typoTolerance:
          $ref: '#/components/schemas/typoTolerance'
        allowTyposOnNumericTokens:
          $ref: '#/components/schemas/allowTyposOnNumericTokens'
        disableTypoToleranceOnAttributes:
          $ref: '#/components/schemas/disableTypoToleranceOnAttributes'
        ignorePlurals:
          $ref: '#/components/schemas/ignorePlurals'
        removeStopWords:
          $ref: '#/components/schemas/removeStopWords'
        queryLanguages:
          $ref: '#/components/schemas/queryLanguages'
        decompoundQuery:
          $ref: '#/components/schemas/decompoundQuery'
        enablePersonalization:
          $ref: '#/components/schemas/enablePersonalization'
        queryType:
          $ref: '#/components/schemas/queryType'
        removeWordsIfNoResults:
          $ref: '#/components/schemas/removeWordsIfNoResults'
        advancedSyntax:
          $ref: '#/components/schemas/advancedSyntax'
        optionalWords:
          $ref: '#/components/schemas/optionalWords'
        disableExactOnAttributes:
          $ref: '#/components/schemas/disableExactOnAttributes'
        exactOnSingleWordQuery:
          $ref: '#/components/schemas/exactOnSingleWordQuery'
        alternativesAsExact:
          $ref: '#/components/schemas/IndexSettings_alternativesAsExact'
        advancedSyntaxFeatures:
          $ref: '#/components/schemas/IndexSettings_advancedSyntaxFeatures'
        distinct:
          $ref: '#/components/schemas/distinct'
        replaceSynonymsInHighlight:
          $ref: '#/components/schemas/replaceSynonymsInHighlight'
        minProximity:
          $ref: '#/components/schemas/minProximity'
        responseFields:
          $ref: '#/components/schemas/responseFields'
        maxValuesPerFacet:
          $ref: '#/components/schemas/maxValuesPerFacet'
        sortFacetValuesBy:
          $ref: '#/components/schemas/sortFacetValuesBy'
        attributeCriteriaComputedByMinProximity:
          $ref: '#/components/schemas/attributeCriteriaComputedByMinProximity'
        renderingContent:
          $ref: '#/components/schemas/renderingContent'
        enableReRanking:
          $ref: '#/components/schemas/enableReRanking'
        reRankingApplyFilter:
          oneOf:
          - $ref: '#/components/schemas/reRankingApplyFilter'
          - type: 'null'
    replaceSynonymsInHighlight:
      type: boolean
      description: 'Whether to replace a highlighted word with the matched synonym

        By default, the original words are highlighted even if a synonym matches.

        For example, with `home` as a synonym for `house` and a search for `home`,

        records matching either "home" or "house" are included in the search results,

        and either "home" or "house" are highlighted

        With `replaceSynonymsInHighlight` set to `true`, a search for `home` still matches the same records,

        but all occurrences of "house" are replaced by "home" in the highlighted response.

        '
      default: false
      x-categories:
      - Highlighting and Snippeting
    restrictHighlightAndSnippetArrays:
      type: boolean
      description: 'Whether to restrict highlighting and snippeting to items that at least partially matched the search query.

        By default, all items are highlighted and snippeted.

        '
      default: false
      x-categories:
      - Highlighting and Snippeting
    trendingItemsQuery:
  

# --- truncated at 32 KB (118 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/algolia/refs/heads/main/openapi/algolia-recommend-api-openapi.yml