API ReferenceapiaiPOST /v1/recommendations/products

POST /v1/recommendations/products

Service: ai · operationId: (none)

Get personalized product recommendations

Returns a ranked list of 5-10 product/peptide recommendations using hybrid scoring (collaborative + content signals). Cached per-user for 1 hour.

Required scopes

(no scope declared — review service config)

Request body

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "minLength": 1
    },
    "brand_id": {
      "type": "string",
      "minLength": 1
    },
    "goals": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": []
    },
    "active_protocols": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": []
    },
    "biomarkers": {
      "type": "object",
      "additionalProperties": {
        "type": "number"
      }
    },
    "purchase_history_product_ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": []
    },
    "seen_product_ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": []
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 10
    }
  },
  "required": [
    "user_id",
    "brand_id"
  ]
}

Responses

200 Ranked product recommendations

{
  "type": "object",
  "properties": {
    "recommendations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "product_id": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "slug": {
            "type": "string",
            "minLength": 1
          },
          "reason": {
            "type": "string",
            "minLength": 1,
            "description": "Human-readable reason chip, e.g. 'because you started Wolverine'"
          },
          "score": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "default": []
          }
        },
        "required": [
          "product_id",
          "name",
          "slug",
          "reason",
          "score"
        ]
      }
    },
    "cached": {
      "type": "boolean"
    },
    "strategy": {
      "type": "string",
      "enum": [
        "personalized",
        "cold_start"
      ]
    }
  },
  "required": [
    "recommendations",
    "cached",
    "strategy"
  ]
}

400 Invalid input

{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    },
    "message": {
      "type": "string"
    }
  },
  "required": [
    "error",
    "message"
  ]
}

500 Internal error

{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    },
    "message": {
      "type": "string"
    }
  },
  "required": [
    "error",
    "message"
  ]
}

Example

curl -X POST https://ai.platform.loop.health/v1/recommendations/products \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ ... }'