> ## Documentation Index
> Fetch the complete documentation index at: https://developers.appstle.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Submit product review



## OpenAPI

````yaml /loyalty/storefront-api-swagger.json post /loyalty/cp/api/submit-review
openapi: 3.0.1
info:
  description: ''
  title: Storefront APIs
  version: 0.0.1
servers:
  - url: https://loyalty-admin.appstle.com
security: []
tags:
  - description: >-
      Storefront APIs for the signed-in customer to enroll, enable the loyalty
      program, view their loyalty profile, sync metafields, and update profile
      attributes.
    name: Customer Enrollment & Profile
  - description: >-
      Storefront APIs for the signed-in customer to view point transactions,
      claim social-media reward points, and record store visits.
    name: Points & Earn Rules
  - description: >-
      Storefront APIs for the signed-in customer to redeem loyalty points for
      rewards or discount codes.
    name: Redemptions & Discount Codes
  - description: >-
      Storefront APIs for managing the signed-in customer's referral activity:
      generating referral URLs, sending invites, viewing referral history, and
      accepting referral offers.
    name: Referrals
  - description: >-
      Storefront APIs for the signed-in customer to submit product reviews and
      retrieve existing reviews for a product.
    name: Reviews
  - description: >-
      Storefront APIs for retrieving product and collection data, proxied
      through the Shopify Storefront API for loyalty widgets.
    name: Product Catalog
paths:
  /loyalty/cp/api/submit-review:
    post:
      tags:
        - Reviews
      summary: Submit product review
      operationId: submitReview
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductReview'
        required: true
      responses:
        '200':
          content:
            application/json:
              example: Review successfully submitted; it will reflect shortly.
              schema:
                type: string
          description: >-
            Review submitted successfully. Points will be awarded asynchronously
            if eligible.
        '400':
          content:
            application/json:
              schema:
                example:
                  details: Rating must be between 1 and 5
                  error: Invalid request
                type: string
          description: Invalid review data or missing required fields
        '401':
          content:
            application/json:
              schema:
                example:
                  error: Authentication required
                type: string
          description: Customer not authenticated
        '500':
          content:
            application/json:
              schema:
                example:
                  error: Failed to submit review. Please try again.
                type: string
          description: Error processing review submission
components:
  schemas:
    ProductReview:
      description: >-
        Product review submission containing rating, title, body, product
        details, and optional uniqueId for order linking
      properties:
        archived:
          type: boolean
        body:
          type: string
        carousel:
          type: boolean
        createAt:
          format: date-time
          type: string
        customerId:
          format: int64
          type: integer
        id:
          format: int64
          type: integer
        originalReviewBody:
          type: string
        originalReviewTitle:
          type: string
        pinned:
          type: boolean
        productHandle:
          type: string
        productId:
          format: int64
          type: integer
        productImage:
          type: string
        productTitle:
          type: string
        publishedStatus:
          type: boolean
        rating:
          format: int32
          type: integer
        replayBody:
          type: string
        replayDate:
          format: date-time
          type: string
        reviewEditReason:
          type: string
        reviewSource:
          enum:
            - WEB_PAGE
            - API
            - IMPORT
          type: string
        reviewerEmail:
          type: string
        reviewerName:
          type: string
        shop:
          type: string
        title:
          type: string
        uniqueId:
          format: uuid
          type: string
      required:
        - createAt
        - shop
      type: object

````