Clerk.io Recommendations API

The Recommendations API from Clerk.io — 25 operation(s) for recommendations.

Operations 25

GET /recommendations/bundle recommendations/bundle #
GET /recommendations/category/new recommendations/category/new #
GET /recommendations/category/popular_subcategories recommendations/category/popular_subcategories #
GET /recommendations/category/trending recommendations/category/trending #
GET /recommendations/complementary recommendations/complementary #
GET /recommendations/currently_watched recommendations/currently_watched #
GET /recommendations/customer/complementary recommendations/customer/complementary #
GET /recommendations/customer/history recommendations/customer/history #
GET /recommendations/customer/substituting recommendations/customer/substituting #
GET /recommendations/keywords recommendations/keywords #
GET /recommendations/most_sold_with recommendations/most_sold_with #
GET /recommendations/new recommendations/new #
GET /recommendations/page/category recommendations/page/category #
GET /recommendations/page/product recommendations/page/product #
GET /recommendations/page/related_categories recommendations/page/related_categories #
GET /recommendations/page/related_products recommendations/page/related_products #
GET /recommendations/page/substituting recommendations/page/substituting #
GET /recommendations/recently_bought recommendations/recently_bought #
GET /recommendations/substituting recommendations/substituting #
GET /recommendations/visitor/complementary recommendations/visitor/complementary #
GET /recommendations/visitor/history recommendations/visitor/history #
GET /recommendations/visitor/substituting recommendations/visitor/substituting #

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/clerk-io-recommendations-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

clerk-io-recommendations-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Clerk.io Recommendations API
  version: '2'
  description: 'Clerk.io e-commerce personalisation REST API. Ingest and manage catalog data (products, categories, pages, orders, order parcels, customers, accessories), run behaviour-ranked search and predictive search-as-you-type, request recommendation logics (popular, trending, new, complementary, substituting, visitor- and customer-personalised, category- and page-scoped), manage merchandising (custom search configurations, synonyms, redirects), drive audiences/campaigns/subscribers for email, log visitor behaviour events, and service GDPR privacy requests.


    All endpoints live under https://api.clerk.io/v2. Authentication uses a dual-key model: the public `key` identifies the store and is safe in browser-side calls; `private_key` is additionally required for write and sensitive operations and MUST only be sent over SSL.'
  contact:
    name: Clerk.io Documentation
    url: https://docs.clerk.io/
  x-provenance:
    method: searched
    harvested: '2026-08-13'
    source: https://docs.clerk.io/reference/ (ReadMe API Designer OpenAPI 3.1.0 fragments per reference page)
    original: openapi/_original/clerk-io-api-settings-openapi-original.yml
    note: Provider-published operation content is verbatim. API Evangelist added the document title/description, tags[] declarations and per-operation tag assignment; see overlays/clerk-io-api-overlay.yaml.
servers:
- url: https://api.clerk.io/v2
security:
- sec0: []
tags:
- name: Recommendations
paths:
  /recommendations/bundle:
    get:
      summary: recommendations/bundle
      description: This endpoint is deprecated and has been replaced by recommendations/complementary
      operationId: recommendations-bundle
      parameters:
      - name: key
        in: query
        description: You store API key.
        required: true
        schema:
          type: string
      - name: product
        in: query
        description: Product ID for the product you want bundled products for.
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Number of results to be returned.
        required: true
        schema:
          type: integer
          format: int32
      - name: visitor
        in: query
        description: '<small style="color: #eea236;">Required for tracking</small><br/>Visitor ID for the given visitor. <br/> If `auto`, an anonymous ID is generated. <br/> See <a href="https://docs.clerk.io/docs/visitor-tracking" target="_blank">API documentation on Visitor Tracking</a> for details.'
        schema:
          type: string
      - name: labels
        in: query
        description: '<small style="color: #eea236;">Required for tracking</small><br/>A list of one or more text labels, used to track the labels performance in Analytics.'
        schema:
          type: array
          items:
            type: string
      - name: attributes
        in: query
        description: Product attributes to be provided in the response. See API documentation on Product Metadata for details.
        schema:
          type: array
          items:
            type: string
      - name: callback
        in: query
        description: JSONP - Wraps the response as a function call with the name of the string.
        schema:
          type: string
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"status\": \"ok\",\n  \"result\": [123, 456, 789, ...]\n}"
                Error:
                  value: "{\n  \"status\": \"error\",\n  \"message\": \"A message explaining the error.\",\n  \"moreInfo\": \"http://help.clerk.io/error/{ERROR_ID}\",\n  \"type\": \"ErrorType\",\n  \"id\": \"{ERROR_ID}\"\n}"
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: error
                  message:
                    type: string
                    example: A message explaining the error.
                  moreInfo:
                    type: string
                    example: http://help.clerk.io/error/{ERROR_ID}
                  type:
                    type: string
                    example: ErrorType
                  id:
                    type: string
                    example: '{ERROR_ID}'
      deprecated: false
      x-readme:
        code-samples:
        - language: curl
          code: curl http://api.clerk.io/v2/recommendations/bundle?key=store_api_key&product=123&limit=30&labels=["Bundled products"]
          name: GET
        - language: curl
          code: "curl -X POST \\\n     -H 'Content-Type: application/json' \\\n     -d '{\"key\": \"store_api_key\",\n          \"product\": 123, \n          \"limit\": 30,\n          \"visitor\": \"unique_visitor_id\",\n          \"exclude\": [42],\n          \"filter\": \"price > 100\",\n          \"labels\": [\"Bundle options\"],\n          \"facets\": [\"categories\", \"brands\"]}' \\\n     http://api.clerk.io/v2/recommendations/bundle"
          name: POST
        samples-languages:
        - curl
      tags:
      - Recommendations
  /recommendations/category/new:
    get:
      summary: recommendations/category/new
      description: The products in a given category (and subcategories) that were most recently added to the store.
      operationId: recommendationscategorynew
      parameters:
      - name: key
        in: query
        description: You store API key.
        required: true
        schema:
          type: string
      - name: category
        in: query
        description: Category ID for the category you want popular products for.
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Number of results to be returned.
        required: true
        schema:
          type: integer
          format: int32
      - name: visitor
        in: query
        description: '<small style="color: #eea236;">Required for tracking</small><br/>Visitor ID for the given visitor. <br/> If `auto`, an anonymous ID is generated. <br/> See <a href="https://docs.clerk.io/docs/visitor-tracking" target="_blank">API documentation on Visitor Tracking</a> for details.'
        schema:
          type: string
      - name: labels
        in: query
        description: '<small style="color: #eea236;">Required for tracking</small><br/>A list of one or more text labels, used to track the labels performance in Analytics.'
        schema:
          type: array
          items:
            type: string
      - name: filter
        in: query
        description: A attribute filter to filter the result. See API documentation on Filters for details.
        schema:
          type: string
      - name: exclude
        in: query
        description: Array of product IDs to be excluded from the result. See API documentation on Filters for details.
        schema:
          type: array
          items:
            type: string
      - name: attributes
        in: query
        description: Product attributes to be provided in the response. See API documentation on Product Metadata for details.
        schema:
          type: array
          items:
            type: string
      - name: callback
        in: query
        description: JSONP - Wraps the response as a function call with the name of the string.
        schema:
          type: string
      - name: debug
        in: query
        description: When `true`, the response will include a JSON dictionary of the various customisations made to the results shown by Synonyms, Customized Search, Merchandising etc.
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"status\": \"ok\",\n  \"result\": [123, 456, 789, ...]\n}"
                Error:
                  value: "{\n  \"status\": \"error\",\n  \"message\": \"A message explaining the error.\",\n  \"moreInfo\": \"http://help.clerk.io/error/{ERROR_ID}\",\n  \"type\": \"ErrorType\",\n  \"id\": \"{ERROR_ID}\"\n}"
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: error
                  message:
                    type: string
                    example: A message explaining the error.
                  moreInfo:
                    type: string
                    example: http://help.clerk.io/error/{ERROR_ID}
                  type:
                    type: string
                    example: ErrorType
                  id:
                    type: string
                    example: '{ERROR_ID}'
      deprecated: false
      x-readme:
        code-samples:
        - language: curl
          code: curl http://api.clerk.io/v2/recommendations/category/new?key=store_api_key&category=123&limit=30&labels=["New products in this category"]
          name: GET
        - language: curl
          code: "curl -X POST \\\n     -H 'Content-Type: application/json' \\\n     -d '{\"key\": \"store_api_key\",\n          \"category\": 123, \n          \"limit\": 30,\n          \"visitor\": \"unique_visitor_id\",\n          \"exclude\": [42],\n          \"filter\": \"price > 100\",\n          \"labels\": [\"Category Popular\"]' \\\n     http://api.clerk.io/v2/recommendations/category/new"
          name: POST
        samples-languages:
        - curl
      tags:
      - Recommendations
  /recommendations/category/popular:
    get:
      summary: recommendations/category/popular
      description: The products in a given category (and subcategories) that are most popular among customers right now.
      operationId: recommendations-category-popular
      parameters:
      - name: key
        in: query
        description: You store API key.
        required: true
        schema:
          type: string
      - name: category
        in: query
        description: Category ID for the category you want popular products for.
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Number of results to be returned.
        required: true
        schema:
          type: integer
          format: int32
      - name: visitor
        in: query
        description: '<small style="color: #eea236;">Required for tracking</small><br/>Visitor ID for the given visitor. <br/> If `auto`, an anonymous ID is generated. <br/> See <a href="https://docs.clerk.io/docs/visitor-tracking" target="_blank">API documentation on Visitor Tracking</a> for details.'
        schema:
          type: string
      - name: labels
        in: query
        description: '<small style="color: #eea236;">Required for tracking</small><br/>A list of one or more text labels, used to track the labels performance in Analytics.'
        schema:
          type: array
          items:
            type: string
      - name: offset
        in: query
        description: Offset into the result. See pagenation docs for a deeper specification on how to use pagenation.
        schema:
          type: integer
          format: int32
          default: 0
      - name: filter
        in: query
        description: A attribute filter to filter the result. See API documentation on Filters for details.
        schema:
          type: string
      - name: exclude
        in: query
        description: Array of product IDs to be excluded from the result. See API documentation on Filters for details.
        schema:
          type: array
          items:
            type: string
      - name: facets
        in: query
        description: List of facets to be returned for the products in the result. See API documentation on Facets for details.
        schema:
          type: array
          items:
            type: string
      - name: orderby
        in: query
        description: Attribute to order the results by.
        schema:
          type: string
      - name: order
        in: query
        description: Should the ordering from `orderby` be ascending (asc) or descending (desc).
        schema:
          type: string
          default: asc
      - name: attributes
        in: query
        description: Product attributes to be provided in the response. See API documentation on Product Metadata for details.
        schema:
          type: array
          items:
            type: string
      - name: callback
        in: query
        description: JSONP - Wraps the response as a function call with the name of the string.
        schema:
          type: string
      - name: debug
        in: query
        description: When `true`, the response will include a JSON dictionary of the various customisations made to the results shown by Synonyms, Customized Search, Merchandising etc.
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"status\": \"ok\",\n  \"result\": [123, 456, 789, ...]\n}"
                Error:
                  value: "{\n  \"status\": \"error\",\n  \"message\": \"A message explaining the error.\",\n  \"moreInfo\": \"http://help.clerk.io/error/{ERROR_ID}\",\n  \"type\": \"ErrorType\",\n  \"id\": \"{ERROR_ID}\"\n}"
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: error
                  message:
                    type: string
                    example: A message explaining the error.
                  moreInfo:
                    type: string
                    example: http://help.clerk.io/error/{ERROR_ID}
                  type:
                    type: string
                    example: ErrorType
                  id:
                    type: string
                    example: '{ERROR_ID}'
      deprecated: false
      x-readme:
        code-samples:
        - language: curl
          code: curl http://api.clerk.io/v2/recommendations/category/popular?key=store_api_key&category=123&limit=30&labels=["Category Popular"]
          name: GET
        - language: curl
          code: "curl -X POST \\\n     -H 'Content-Type: application/json' \\\n     -d '{\"key\": \"store_api_key\",\n          \"category\": 123, \n          \"limit\": 30,\n          \"offset\": 60,\n          \"visitor\": \"unique_visitor_id\",\n          \"exclude\": [42],\n          \"filter\": \"price > 100\",\n          \"labels\": [\"Category Popular\"],\n          \"facets\": [\"categories\", \"brands\"]}' \\\n     http://api.clerk.io/v2/recommendations/category/popular"
          name: POST
        samples-languages:
        - curl
      tags:
      - Recommendations
  /recommendations/category/popular_subcategories:
    get:
      summary: recommendations/category/popular_subcategories
      description: The subcategories in a given category that are most popular among customers right now.
      operationId: recommendationscategorypopular_subcategories
      parameters:
      - name: key
        in: query
        description: You store API key.
        required: true
        schema:
          type: string
      - name: category
        in: query
        description: Category ID for the category you want popular products for.
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Number of results to be returned.
        required: true
        schema:
          type: integer
          format: int32
      - name: visitor
        in: query
        description: '<small style="color: #eea236;">Required for tracking</small><br/>Visitor ID for the given visitor. <br/> If `auto`, an anonymous ID is generated. <br/> See <a href="https://docs.clerk.io/docs/visitor-tracking" target="_blank">API documentation on Visitor Tracking</a> for details.'
        schema:
          type: string
      - name: offset
        in: query
        description: Offset into the result. See pagenation docs for a deeper specification on how to use pagenation.
        schema:
          type: integer
          format: int32
          default: 0
      - name: order
        in: query
        description: Should the subcategories be in descending or ascending order. Default is descending so the most popular is the first result.
        schema:
          type: string
          default: desc
      - name: callback
        in: query
        description: JSONP - Wraps the response as a function call with the name of the string.
        schema:
          type: string
      - name: debug
        in: query
        description: When `true`, the response will include a JSON dictionary of the various customisations made to the results shown by Synonyms, Customized Search, Merchandising etc.
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"status\": \"ok\",\n  \"result\": [{'url':'https://www.yoursite.com/category1','name':'category1','id':123},{'url':'https://www.yoursite.com/category2','name':'category2','id':124},{'url':'https://www.yoursite.com/category3','name':'category3','id':325} ...]\n}"
                Error:
                  value: "{\n  \"status\": \"error\",\n  \"message\": \"A message explaining the error.\",\n  \"moreInfo\": \"http://help.clerk.io/error/{ERROR_ID}\",\n  \"type\": \"ErrorType\",\n  \"id\": \"{ERROR_ID}\"\n}"
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: error
                  message:
                    type: string
                    example: A message explaining the error.
                  moreInfo:
                    type: string
                    example: http://help.clerk.io/error/{ERROR_ID}
                  type:
                    type: string
                    example: ErrorType
                  id:
                    type: string
                    example: '{ERROR_ID}'
      deprecated: false
      x-readme:
        code-samples:
        - language: curl
          code: curl http://api.clerk.io/v2/recommendations/category/popular_subcategories?key=store_api_key&category=123&limit=30
          name: GET
        - language: curl
          code: "curl -X POST \\\n     -H 'Content-Type: application/json' \\\n     -d '{\"key\": \"store_api_key\",\n          \"category\": 123, \n          \"limit\": 30,\n          \"offset\": 60,\n          \"visitor\": \"unique_visitor_id\",\n          \"exclude\": [42],\n          \"filter\": \"price > 100\",\n          \"labels\": [\"Category Popular\"],\n          \"facets\": [\"categories\", \"brands\"]}' \\\n     http://api.clerk.io/v2/recommendations/category/popular"
          name: POST
        samples-languages:
        - curl
      tags:
      - Recommendations
  /recommendations/category/trending:
    get:
      summary: recommendations/category/trending
      description: The products in a given category (and subcategories) that are growing the most in popularity amongst customers right now.
      operationId: recommendationscategorytrending
      parameters:
      - name: key
        in: query
        description: You store API key.
        required: true
        schema:
          type: string
      - name: category
        in: query
        description: Category ID for the category you want popular products for.
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Number of results to be returned.
        required: true
        schema:
          type: integer
          format: int32
      - name: visitor
        in: query
        description: '<small style="color: #eea236;">Required for tracking</small><br/>Visitor ID for the given visitor. <br/> If `auto`, an anonymous ID is generated. <br/> See <a href="https://docs.clerk.io/docs/visitor-tracking" target="_blank">API documentation on Visitor Tracking</a> for details.'
        schema:
          type: string
      - name: labels
        in: query
        description: '<small style="color: #eea236;">Required for tracking</small><br/>A list of one or more text labels, used to track the labels performance in Analytics.'
        schema:
          type: array
          items:
            type: string
      - name: offset
        in: query
        description: Offset into the result. See pagenation docs for a deeper specification on how to use pagenation.
        schema:
          type: integer
          format: int32
          default: 0
      - name: filter
        in: query
        description: A attribute filter to filter the result. See API documentation on Filters for details.
        schema:
          type: string
      - name: exclude
        in: query
        description: Array of product IDs to be excluded from the result. See API documentation on Filters for details.
        schema:
          type: array
          items:
            type: string
      - name: facets
        in: query
        description: List of facets to be returned for the products in the result. See API documentation on Facets for details.
        schema:
          type: array
          items:
            type: string
      - name: attributes
        in: query
        description: Product attributes to be provided in the response. See API documentation on Product Metadata for details.
        schema:
          type: array
          items:
            type: string
      - name: callback
        in: query
        description: JSONP - Wraps the response as a function call with the name of the string.
        schema:
          type: string
      - name: debug
        in: query
        description: When `true`, the response will include a JSON dictionary of the various customisations made to the results shown by Synonyms, Customized Search, Merchandising etc.
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"status\": \"ok\",\n  \"result\": [123, 456, 789, ...]\n}"
                Error:
                  value: "{\n  \"status\": \"error\",\n  \"message\": \"A message explaining the error.\",\n  \"moreInfo\": \"http://help.clerk.io/error/{ERROR_ID}\",\n  \"type\": \"ErrorType\",\n  \"id\": \"{ERROR_ID}\"\n}"
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: error
                  message:
                    type: string
                    example: A message explaining the error.
                  moreInfo:
                    type: string
                    example: http://help.clerk.io/error/{ERROR_ID}
                  type:
                    type: string
                    example: ErrorType
                  id:
                    type: string
                    example: '{ERROR_ID}'
      deprecated: false
      x-readme:
        code-samples:
        - language: curl
          code: curl http://api.clerk.io/v2/recommendations/category/trending?key=store_api_key&category=123&limit=30&labels=["Trending In This Category"]
          name: GET
        - language: curl
          code: "curl -X POST \\\n     -H 'Content-Type: application/json' \\\n     -d '{\"key\": \"store_api_key\",\n          \"category\": 123, \n          \"limit\": 30,\n          \"offset\": 60,\n          \"visitor\": \"unique_visitor_id\",\n          \"exclude\": [42],\n          \"filter\": \"price > 100\",\n          \"labels\": [\"Trending In This Category\"],\n          \"facets\": [\"categories\", \"brands\"]}' \\\n     http://api.clerk.io/v2/recommendations/category/trending"
          name: POST
        samples-languages:
        - curl
      tags:
      - Recommendations
  /recommendations/complementary:
    get:
      summary: recommendations/complementary
      description: The products that customers are most likely to buy with a given product or multiple products.
      operationId: recommendations-complementary
      parameters:
      - name: key
        in: query
        description: You store API key.
        required: true
        schema:
          type: string
      - name: products
        in: query
        description: Product ID(s) for the products you want complementary products for.
        required: true
        schema:
          type: array
          items:
            type: string
      - name: limit
        in: query
        description: Number of results to be returned.
        required: true
        schema:
          type: integer
          format: int32
      - name: visitor
        in: query
        description: '<small style="color: #eea236;">Required for tracking</small><br/>Visitor ID for the given visitor. <br/> If `auto`, an anonymous ID is generated. <br/> See <a href="https://docs.clerk.io/docs/visitor-tracking" target="_blank">API documentation on Visitor Tracking</a> for details.'
        schema:
          type: string
      - name: labels
        in: query
        description: '<small style="color: #eea236;">Required for tracking</small><br/>A list of one or more text labels, used to track the labels performance in Analytics.'
        schema:
          type: array
          items:
            type: string
      - name: filter
        in: query
        description: A attribute filter to filter the result. See API documentation on Filters for details.
        schema:
          type: string
      - name: exclude
        in: query
        description: Array of product IDs to be excluded from the result. See API documentation on Filters for details.
        schema:
          type: array
          items:
            type: string
      - name: attributes
        in: query
        description: Product attributes to be provided in the response. See API documentation on Product Metadata for details.
        schema:
          type: array
          items:
            type: string
      - name: callback
        in: query
        description: JSONP - Wraps the response as a function call with the name of the string.
        schema:
          type: string
      - name: debug
        in: query
        description: When `true`, the response will include a JSON dictionary of the various customisations made to the results shown by Synonyms, Customized Search, Merchandising etc.
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"status\": \"ok\",\n  \"result\": [123, 456, 789, ...]\n}"
                Error:
                  value: "{\n  \"status\": \"error\",\n  \"message\": \"A message explaining the error.\",\n  \"moreInfo\": \"http://help.clerk.io/error/{ERROR_ID}\",\n  \"type\": \"ErrorType\",\n  \"id\": \"{ERROR_ID}\"\n}"
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: error
                  message:
                    type: string
                    example: A message explaining the error.
                  moreInfo:
                    type: string
                    example: http://help.clerk.io/error/{ERROR_ID}
                  type:
                    type: string
                    example: ErrorType
                  id:
                    type: string
                    example: '{ERROR_ID}'
      deprecated: false
      x-readme:
        code-samples:
        - language: curl
          code: curl http://api.clerk.io/v2/recommendations/complementary?key=store_api_key&products=[123,456,789]&limit=30&labels=["Best Cross-Sell Products"]
          name: GET
        - language: curl
          code: "curl -X POST \\\n     -H 'Content-Type: application/json' \\\n     -d '{\"key\": \"store_api_key\",\n          \"products\": [123], \n          \"limit\": 30,\n          \"visitor\": \"unique_visitor_id\",\n          \"exclude\": [42],\n          \"filter\": \"price > 100\",\n          \"labels\": [\"Best Cross-Sell Products\"],\n          \"facets\": [\"categories\", \"brands\"]}' \\\n     https://api.clerk.io/v2/recommendations/complementary"
          name: POST
        samples-languages:
        - curl
      tags:
      - Recommendations
  /recommendations/currently_watched:
    get:
      summary: recommendations/currently_watched
      description: The products other store visitors are currently looking at.
      operationId: recommendationscurrently_watched
      parameters:
      - name: key
        in: query
        description: You store API key.
        required: true
        schema:
          type: string
          default: insert_api_key
      - name: limit
        in: query
        description: Number of results to be returned.
        required: true
        schema:
          type: integer
          format: int32
      - name: visitor
        in: query
        description: '<small style="color: #eea236;">Required for tracking</small><br/>Visitor ID for the given visitor. <br/> If `auto`, an anonymous ID is generated. <br/> See <a href="https://docs.clerk.io/docs/visitor-tracking" target="_blank">API documentation on Visitor Tracking</a> for details.'
        schema:
          type: string
      - name: labels
        in: query
        description: '<small style="color: #eea236;">Required for tracking</small><br/>A list of one or more text labels, used to track the labels performance in Analytics.'
        schema:
          type: array
          items:
            type: string
      - name: exclude
        in: query
        description: Array of product IDs to be excluded from the result. See API documentation on Filters for details.
        schema:
          type: array
          items:
            type: string
      - name: attributes
        in: query
        description: Product attributes to be provided in the response. See API documentation on Product Metadata for details.
        schema:
          type: array
          items:
            type: string
      - name: callback
        in: query
        description: JSONP - Wraps the response as a function call with the name of the string.
        schema:
          type: string
      - name: debug
        in: query
        description: When `true`, the response will include a JSON dictionary of the various customisations made to the results shown by Synonyms, Customized Search, Merchandising etc.
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"status\": \"ok\",\n  \"result\": [123, 456, 789, ...]\n}"
                Error:
                  value: "{\n  \"status\": \"error\",\n  \"message\": \"A message explaining the error.\",\n  \"moreInfo\": \"http://help.clerk.io/error/{ERROR_ID}\",\n  \"type\": \"ErrorType\",\n  \"id\": \"{ERROR_ID}\"\n}"
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: error
                  message:
                    type: string
                    example: A message explaining the error.
                  moreInfo:
                    type: string
                    example: http://help.clerk.io/error/{ERROR_ID}
                  type:
                    type: string
                    example: ErrorType
                  id:
                    type: string
                    example: '{ERROR_ID}'
      deprecated: false
      x-readme:
        code-samples:
        - language: curl
          code: curl http://api.clerk.io/v2/recommendations/currently_watched?key=store_api_key&limit=30&labels=["Customers Are Looking

# --- truncated at 32 KB (110 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/clerk-io/refs/heads/main/openapi/clerk-io-recommendations-api-openapi.yml