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

# Get product review summary

> Returns the rating breakdown, answer summaries, and media previews for a product.



## OpenAPI

````yaml /openapi/widget-api.json get /v1/product-reviews/summaries/{product_id}
openapi: 3.0.3
info:
  title: Cevoid Widget API
  version: 1.0.0
servers:
  - url: https://api.widget.cevoid.com
    description: Production
  - url: http://localhost:3007
    description: Development
security: []
paths:
  /v1/product-reviews/summaries/{product_id}:
    get:
      tags:
        - Reviews
      summary: Get product review summary
      description: >-
        Returns the rating breakdown, answer summaries, and media previews for a
        product.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 200
            example: rev_abc123
            description: Opaque Cevoid identifier.
          required: true
          description: Opaque Cevoid identifier.
          name: product_id
          in: path
        - schema:
            type: string
            minLength: 1
            maxLength: 200
            example: mar_abc123
            description: >-
              Presentation market. Defaults to the workspace default; does not
              filter collection origin.
          required: false
          description: >-
            Presentation market. Defaults to the workspace default; does not
            filter collection origin.
          name: market
          in: query
        - schema:
            type: string
            enum:
              - localization
            example: localization
            description: >-
              Include original prompts and labels for the returned question
              definitions. Does not include originals for AI summary text or
              preview media.
          required: false
          description: >-
            Include original prompts and labels for the returned question
            definitions. Does not include originals for AI summary text or
            preview media.
          name: include
          in: query
      responses:
        '200':
          description: Successful response
          headers:
            Cevoid-Processing-Ms:
              description: End-to-end request processing time in milliseconds
              schema:
                type: string
                example: '12'
            Cevoid-Request-Id:
              description: Request identifier for support and tracing
              schema:
                type: string
                example: req_abc123
            RateLimit-Limit:
              description: Current rate limit bucket size
              schema:
                type: string
                example: '100'
            RateLimit-Remaining:
              description: Remaining requests in the current rate limit window
              schema:
                type: string
                example: '99'
            RateLimit-Reset:
              description: Seconds until the next request token is available
              schema:
                type: integer
                example: 1
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/StorefrontReviewSummary'
                  included:
                    type: object
                    properties:
                      localization:
                        type: object
                        properties:
                          questions:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                  minLength: 1
                                  maxLength: 200
                                  example: rev_abc123
                                  description: >-
                                    Public ID matching the returned entity or
                                    nested item.
                                has_translations:
                                  type: boolean
                                  example: true
                                  description: >-
                                    True when the returned translatable content
                                    differs from its source representation. Does
                                    not mean every field was translated.
                                original:
                                  type: object
                                  nullable: true
                                  properties:
                                    prompt:
                                      type: string
                                      example: How does it fit?
                                    options:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          value:
                                            type: string
                                            example: blue
                                          label:
                                            type: string
                                            example: Blue
                                        required:
                                          - value
                                          - label
                                      description: >-
                                        Current selection options. Labels are
                                        localized; values remain stable
                                        selection keys.
                                    scale:
                                      type: object
                                      properties:
                                        start_label:
                                          type: string
                                          example: Too small
                                        end_label:
                                          type: string
                                          example: Too large
                                        center_label:
                                          type: string
                                          example: Just right
                                        step_labels:
                                          type: array
                                          items:
                                            type: string
                                            example: Just right
                                      required:
                                        - start_label
                                        - end_label
                                  required:
                                    - prompt
                                  description: >-
                                    Complete source projection of translatable
                                    fields, with the same visibility and masking
                                    rules. Null when no returned content
                                    differs. Not edit history.
                              required:
                                - id
                                - has_translations
                                - original
                    required:
                      - localization
                required:
                  - data
                example:
                  data:
                    rating_count: 2
                    text_review_count: 2
                    average_rating: 4.5
                    rating_distribution:
                      '1': 0
                      '2': 0
                      '3': 0
                      '4': 1
                      '5': 1
                    verified_purchase_count: 0
                    reviews_with_media_count: 0
                    media_count: 0
                    languages:
                      - language: en
                        rating_count: 2
                    question_summaries: []
                    media_preview: []
                    ai_summary:
                      text: >-
                        Reviewers describe a positive overall experience, with
                        ratings of four and five stars.
                      language: en
                      generated_at: '2026-09-01T10:00:00.000Z'
                      review_count: 2
        '400':
          description: Bad request
          headers:
            Cevoid-Processing-Ms:
              description: End-to-end request processing time in milliseconds
              schema:
                type: string
                example: '12'
            Cevoid-Request-Id:
              description: Request identifier for support and tracing
              schema:
                type: string
                example: req_abc123
            RateLimit-Limit:
              description: Current rate limit bucket size
              schema:
                type: string
                example: '100'
            RateLimit-Remaining:
              description: Remaining requests in the current rate limit window
              schema:
                type: string
                example: '99'
            RateLimit-Reset:
              description: Seconds until the next request token is available
              schema:
                type: integer
                example: 1
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
          headers:
            Cevoid-Processing-Ms:
              description: End-to-end request processing time in milliseconds
              schema:
                type: string
                example: '12'
            Cevoid-Request-Id:
              description: Request identifier for support and tracing
              schema:
                type: string
                example: req_abc123
            RateLimit-Limit:
              description: Current rate limit bucket size
              schema:
                type: string
                example: '100'
            RateLimit-Remaining:
              description: Remaining requests in the current rate limit window
              schema:
                type: string
                example: '99'
            RateLimit-Reset:
              description: Seconds until the next request token is available
              schema:
                type: integer
                example: 1
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Forbidden
          headers:
            Cevoid-Processing-Ms:
              description: End-to-end request processing time in milliseconds
              schema:
                type: string
                example: '12'
            Cevoid-Request-Id:
              description: Request identifier for support and tracing
              schema:
                type: string
                example: req_abc123
            RateLimit-Limit:
              description: Current rate limit bucket size
              schema:
                type: string
                example: '100'
            RateLimit-Remaining:
              description: Remaining requests in the current rate limit window
              schema:
                type: string
                example: '99'
            RateLimit-Reset:
              description: Seconds until the next request token is available
              schema:
                type: integer
                example: 1
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Not found
          headers:
            Cevoid-Processing-Ms:
              description: End-to-end request processing time in milliseconds
              schema:
                type: string
                example: '12'
            Cevoid-Request-Id:
              description: Request identifier for support and tracing
              schema:
                type: string
                example: req_abc123
            RateLimit-Limit:
              description: Current rate limit bucket size
              schema:
                type: string
                example: '100'
            RateLimit-Remaining:
              description: Remaining requests in the current rate limit window
              schema:
                type: string
                example: '99'
            RateLimit-Reset:
              description: Seconds until the next request token is available
              schema:
                type: integer
                example: 1
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '409':
          description: Conflict
          headers:
            Cevoid-Processing-Ms:
              description: End-to-end request processing time in milliseconds
              schema:
                type: string
                example: '12'
            Cevoid-Request-Id:
              description: Request identifier for support and tracing
              schema:
                type: string
                example: req_abc123
            RateLimit-Limit:
              description: Current rate limit bucket size
              schema:
                type: string
                example: '100'
            RateLimit-Remaining:
              description: Remaining requests in the current rate limit window
              schema:
                type: string
                example: '99'
            RateLimit-Reset:
              description: Seconds until the next request token is available
              schema:
                type: integer
                example: 1
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '422':
          description: Validation error
          headers:
            Cevoid-Processing-Ms:
              description: End-to-end request processing time in milliseconds
              schema:
                type: string
                example: '12'
            Cevoid-Request-Id:
              description: Request identifier for support and tracing
              schema:
                type: string
                example: req_abc123
            RateLimit-Limit:
              description: Current rate limit bucket size
              schema:
                type: string
                example: '100'
            RateLimit-Remaining:
              description: Remaining requests in the current rate limit window
              schema:
                type: string
                example: '99'
            RateLimit-Reset:
              description: Seconds until the next request token is available
              schema:
                type: integer
                example: 1
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '429':
          description: Too many requests
          headers:
            Cevoid-Processing-Ms:
              description: End-to-end request processing time in milliseconds
              schema:
                type: string
                example: '12'
            Cevoid-Request-Id:
              description: Request identifier for support and tracing
              schema:
                type: string
                example: req_abc123
            RateLimit-Limit:
              description: Current rate limit bucket size
              schema:
                type: string
                example: '100'
            RateLimit-Remaining:
              description: Remaining requests in the current rate limit window
              schema:
                type: string
                example: '99'
            RateLimit-Reset:
              description: Seconds until the next request token is available
              schema:
                type: integer
                example: 1
            Retry-After:
              description: Seconds to wait before retrying the request
              schema:
                type: integer
                example: 1
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Internal server error
          headers:
            Cevoid-Processing-Ms:
              description: End-to-end request processing time in milliseconds
              schema:
                type: string
                example: '12'
            Cevoid-Request-Id:
              description: Request identifier for support and tracing
              schema:
                type: string
                example: req_abc123
            RateLimit-Limit:
              description: Current rate limit bucket size
              schema:
                type: string
                example: '100'
            RateLimit-Remaining:
              description: Remaining requests in the current rate limit window
              schema:
                type: string
                example: '99'
            RateLimit-Reset:
              description: Seconds until the next request token is available
              schema:
                type: integer
                example: 1
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
      security:
        - BearerAuth: []
components:
  schemas:
    StorefrontReviewSummary:
      allOf:
        - $ref: '#/components/schemas/DisplayReviewSummary'
        - type: object
          properties:
            rich_snippet:
              type: object
              properties:
                json_ld:
                  type: object
                  properties:
                    '@context':
                      type: string
                      enum:
                        - https://schema.org
                      description: Schema.org vocabulary URL.
                      example: https://schema.org
                    '@type':
                      type: string
                      enum:
                        - Product
                      description: Schema.org entity type.
                      example: Product
                    '@id':
                      type: string
                      format: uri
                      description: Canonical product entity identifier.
                      example: >-
                        https://shop.example.com/products/linen-shirt#cevoid-product
                    url:
                      type: string
                      format: uri
                      description: Canonical product page URL.
                      example: https://shop.example.com/products/linen-shirt
                    name:
                      type: string
                      description: Market-specific product title.
                      example: Linen Shirt
                    image:
                      type: string
                      format: uri
                      description: Market-specific primary product image URL.
                      example: https://cdn.cevoid.com/products/linen-shirt.jpg
                    brand:
                      type: object
                      properties:
                        '@type':
                          type: string
                          enum:
                            - Brand
                          example: Brand
                        name:
                          type: string
                          example: Example Apparel
                      required:
                        - '@type'
                        - name
                      description: Product brand when available.
                    sku:
                      type: string
                      description: Product SKU when available.
                      example: LINEN-SHIRT-NATURAL-M
                    gtin:
                      type: string
                      description: Global Trade Item Number when available.
                      example: '07350012345678'
                    mpn:
                      type: string
                      description: Manufacturer Part Number when available.
                      example: LS-NAT-M
                    aggregateRating:
                      type: object
                      properties:
                        '@type':
                          type: string
                          enum:
                            - AggregateRating
                          example: AggregateRating
                        ratingValue:
                          type: number
                          minimum: 0
                          exclusiveMinimum: true
                          description: Published average rating.
                          example: 4.8
                        ratingCount:
                          type: integer
                          minimum: 0
                          exclusiveMinimum: true
                          description: Published rating count.
                          example: 24
                        bestRating:
                          type: number
                          enum:
                            - 5
                          description: Highest possible rating.
                          example: 5
                        worstRating:
                          type: number
                          enum:
                            - 1
                          description: Lowest possible rating.
                          example: 1
                      required:
                        - '@type'
                        - ratingValue
                        - ratingCount
                        - bestRating
                        - worstRating
                  required:
                    - '@context'
                    - '@type'
                    - '@id'
                    - url
                    - name
                    - aggregateRating
                computed_at:
                  type: string
                  format: date-time
                  example: '2026-09-01T10:00:00.000Z'
              required:
                - json_ld
                - computed_at
      example:
        rating_count: 2
        text_review_count: 2
        average_rating: 4.5
        rating_distribution:
          '1': 0
          '2': 0
          '3': 0
          '4': 1
          '5': 1
        verified_purchase_count: 0
        reviews_with_media_count: 0
        media_count: 0
        languages:
          - language: en
            rating_count: 2
        question_summaries: []
        media_preview: []
        ai_summary:
          text: >-
            Reviewers describe a positive overall experience, with ratings of
            four and five stars.
          language: en
          generated_at: '2026-09-01T10:00:00.000Z'
          review_count: 2
    ApiErrorResponse:
      type: object
      properties:
        additional_data:
          type: object
          additionalProperties:
            nullable: true
          description: Optional machine-readable error details.
        status:
          type: integer
          description: HTTP status code.
          example: 404
        code:
          type: string
          description: Stable machine-readable error code.
          example: not_found
        message:
          type: string
          description: Human-readable error description.
          example: Resource not found
        request_id:
          type: string
          description: Request identifier for support and tracing.
          example: req_abc123
      required:
        - status
        - code
        - message
    DisplayReviewSummary:
      allOf:
        - $ref: '#/components/schemas/ReviewSummary'
        - type: object
          properties:
            question_summaries:
              type: array
              items:
                type: object
                properties:
                  question_id:
                    type: string
                    minLength: 1
                    maxLength: 200
                    example: rvq_abc123
                    description: Opaque Cevoid identifier.
                  answer_count:
                    type: integer
                    minimum: 0
                    example: 2
                    description: >-
                      Public responses counted for this question. Summaries
                      require at least two responses.
                  average:
                    type: number
                    example: 4.5
                  distribution:
                    type: array
                    items:
                      type: object
                      properties:
                        value:
                          anyOf:
                            - type: string
                              example: blue
                            - type: number
                              example: 4
                        count:
                          type: integer
                          minimum: 0
                          example: 1
                      required:
                        - value
                        - count
                  yes_count:
                    type: integer
                    minimum: 0
                    example: 2
                  no_count:
                    type: integer
                    minimum: 0
                    example: 0
                  type:
                    type: string
                    enum:
                      - PRODUCT_ATTRIBUTE
                      - COMPANY_ATTRIBUTE
                      - PROFILE_PROPERTY
                    example: PRODUCT_ATTRIBUTE
                  prompt:
                    type: string
                    example: How does it fit?
                  format:
                    type: string
                    enum:
                      - SCALE
                      - CENTERED_RANGE
                      - SINGLE_SELECT
                      - MULTI_SELECT
                      - WOULD_RECOMMEND
                      - NUMERIC
                    example: SCALE
                  scale:
                    type: object
                    properties:
                      steps:
                        type: number
                        example: 5
                      start_label:
                        type: string
                        example: Too small
                      end_label:
                        type: string
                        example: Too large
                      center_label:
                        type: string
                        example: Just right
                      step_labels:
                        type: array
                        items:
                          type: string
                          example: Just right
                    required:
                      - steps
                      - start_label
                      - end_label
                    description: >-
                      Current scale size and labels, localized for the selected
                      market. Not a submission-time snapshot.
                  options:
                    type: array
                    items:
                      type: object
                      properties:
                        value:
                          type: string
                          example: blue
                        label:
                          type: string
                          example: Blue
                      required:
                        - value
                        - label
                    description: >-
                      Current selection options. Labels are localized; values
                      remain stable selection keys.
                  numeric:
                    type: object
                    properties:
                      unit:
                        type: string
                        example: cm
                required:
                  - question_id
                  - answer_count
                  - type
                  - prompt
                  - format
      example:
        rating_count: 2
        text_review_count: 2
        average_rating: 4.5
        rating_distribution:
          '1': 0
          '2': 0
          '3': 0
          '4': 1
          '5': 1
        verified_purchase_count: 0
        reviews_with_media_count: 0
        media_count: 0
        languages:
          - language: en
            rating_count: 2
        question_summaries: []
        media_preview: []
        ai_summary:
          text: >-
            Reviewers describe a positive overall experience, with ratings of
            four and five stars.
          language: en
          generated_at: '2026-09-01T10:00:00.000Z'
          review_count: 2
    ReviewSummary:
      type: object
      properties:
        product_id:
          type: string
          minLength: 1
          maxLength: 200
          example: prd_abc123
          description: Opaque Cevoid identifier.
        rating_count:
          type: integer
          minimum: 0
          example: 2
          description: >-
            Number of published, visible ratings, including reviews without
            text. Independent of review-list filters and presentation market.
        text_review_count:
          type: integer
          minimum: 0
          example: 2
          description: Public reviews with a non-blank title or body.
        average_rating:
          type: number
          nullable: true
          example: 4.5
          description: Arithmetic mean of all public ratings; null when empty.
        rating_distribution:
          type: object
          properties:
            '1':
              type: number
              example: 0
            '2':
              type: number
              example: 0
            '3':
              type: number
              example: 0
            '4':
              type: number
              example: 1
            '5':
              type: number
              example: 1
          required:
            - '1'
            - '2'
            - '3'
            - '4'
            - '5'
        verified_purchase_count:
          type: integer
          minimum: 0
          example: 1
          description: Public reviews with a verified purchase.
        reviews_with_media_count:
          type: integer
          minimum: 0
          example: 1
          description: Public reviews with at least one displayable image or video.
        media_count:
          type: integer
          minimum: 0
          example: 1
          description: >-
            Displayable images and videos across all public reviews, not only
            the preview.
        languages:
          type: array
          items:
            type: object
            properties:
              language:
                type: string
                example: en
              rating_count:
                type: number
                example: 2
            required:
              - language
              - rating_count
        question_summaries:
          type: array
          items:
            type: object
            properties:
              question_id:
                type: string
                minLength: 1
                maxLength: 200
                example: rvq_abc123
                description: Opaque Cevoid identifier.
              answer_count:
                type: integer
                minimum: 0
                example: 2
                description: >-
                  Public responses counted for this question. Summaries require
                  at least two responses.
              average:
                type: number
                example: 4.5
              distribution:
                type: array
                items:
                  type: object
                  properties:
                    value:
                      anyOf:
                        - type: string
                          example: blue
                        - type: number
                          example: 4
                    count:
                      type: integer
                      minimum: 0
                      example: 1
                  required:
                    - value
                    - count
              yes_count:
                type: integer
                minimum: 0
                example: 2
              no_count:
                type: integer
                minimum: 0
                example: 0
            required:
              - question_id
              - answer_count
          maxItems: 20
          description: >-
            At most 20 attribute questions, ordered by response count and stable
            question identity. Profile properties are excluded.
        media_preview:
          type: array
          items:
            type: object
            properties:
              review_id:
                type: string
                minLength: 1
                maxLength: 200
                example: rev_abc123
                description: Opaque Cevoid identifier.
              media:
                type: object
                properties:
                  type:
                    type: string
                    enum:
                      - IMAGE
                      - VIDEO
                    example: IMAGE
                    description: Whether the item is an image or a video.
                  url:
                    type: string
                    example: https://example.com/reviews/123
                    description: Delivery URL for the full asset.
                  thumbnail_url:
                    type: string
                    example: https://example.com/reviews/123
                    description: Delivery URL for the thumbnail.
                  aspect_ratio:
                    type: number
                    example: 1.5
                    description: Width divided by height.
                  aspect_ratio_type:
                    type: string
                    enum:
                      - LANDSCAPE
                      - PORTRAIT
                      - SQUARE
                    example: LANDSCAPE
                    description: Coarse orientation bucket.
                  video_length:
                    type: number
                    example: 12
                    description: Video duration in seconds.
                  id:
                    type: string
                    example: rmed_abc123
                    description: Stable opaque asset identity shared by detail and preview.
                  alt:
                    type: string
                    example: Blue shirt worn outdoors
                    description: >-
                      Available image alternative text, localized with source
                      fallback.
                  thumbnail_alt:
                    type: string
                    example: Blue shirt video preview
                    description: Available video poster alternative text.
                  video_description:
                    type: string
                    example: A shopper shows the fit of a blue shirt.
                    description: Available description of video imagery.
                  video_captions:
                    type: string
                    example: |-
                      WEBVTT

                      00:00.000 --> 00:01.000
                      The fit is comfortable.
                    description: >-
                      Available WebVTT captions with cue timing, localized with
                      source fallback.
                required:
                  - type
                  - url
                  - thumbnail_url
                  - aspect_ratio
                  - aspect_ratio_type
                  - id
            required:
              - review_id
              - media
          maxItems: 4
        ai_summary:
          type: object
          properties:
            text:
              type: string
              example: Shoppers praise the comfortable fit.
            language:
              type: string
              example: en
            generated_at:
              type: string
              format: date-time
              example: '2026-09-01T10:00:00.000Z'
            review_count:
              type: number
              example: 2
          required:
            - text
            - language
            - generated_at
            - review_count
      required:
        - rating_count
        - text_review_count
        - average_rating
        - rating_distribution
        - verified_purchase_count
        - reviews_with_media_count
        - media_count
        - languages
        - question_summaries
        - media_preview
      example:
        rating_count: 2
        text_review_count: 2
        average_rating: 4.5
        rating_distribution:
          '1': 0
          '2': 0
          '3': 0
          '4': 1
          '5': 1
        verified_purchase_count: 0
        reviews_with_media_count: 0
        media_count: 0
        languages:
          - language: en
            rating_count: 2
        question_summaries: []
        media_preview: []
        ai_summary:
          text: >-
            Reviewers describe a positive overall experience, with ratings of
            four and five stars.
          language: en
          generated_at: '2026-09-01T10:00:00.000Z'
          review_count: 2
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Cevoid publishable key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.