REVIEWS.io Product Reviews API

Retrieve product reviews by SKU or MPN with rich filtering, create new product reviews, and add to the helpful-vote count of an individual product review.

OpenAPI Specification

reviews-io-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: REVIEWS.io API
  description: >-
    REST API for the REVIEWS.io product and company reviews / user-generated
    content platform. Queue review invitations, retrieve product and company
    reviews, fetch ratings and statistics, manage questions, and subscribe to
    review-submitted webhooks. Requests are authenticated with a `store` (public
    store key) and `apikey` (private API key), available in the REVIEWS.io
    dashboard under Integrations -> API.
  termsOfService: https://www.reviews.io/terms
  contact:
    name: REVIEWS.io Support
    url: https://support.reviews.io
  version: '1.0'
servers:
  - url: https://api.reviews.io
    description: REVIEWS.io production API
security:
  - storeKey: []
    apiKey: []
tags:
  - name: Invitations
    description: Queue, list, and edit product and company review invitations.
  - name: Product Reviews
    description: Retrieve, create, and vote on product reviews.
  - name: Company Reviews
    description: Retrieve company (merchant) reviews.
  - name: Ratings
    description: Aggregate product ratings and review statistics.
  - name: Questions
    description: Create and retrieve customer questions.
  - name: Webhooks
    description: Manage review-submitted webhook subscriptions.
paths:
  /invitation:
    post:
      operationId: queueProductInvitation
      tags:
        - Invitations
      summary: Queue a product (and/or company) review invitation
      description: >-
        Queues a review invitation for a customer following a purchase. Supply
        the customer name and email, the order reference, and an optional list
        of products so REVIEWS.io can request product and/or company reviews.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvitationRequest'
      responses:
        '200':
          description: Invitation queued
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvitationResponse'
  /product/invitation:
    post:
      operationId: queueProductInvitationOnly
      tags:
        - Invitations
      summary: Queue a product review invitation
      description: >-
        Queues a product-review invitation for a customer and the supplied
        products. (Deprecated in favor of POST /invitation, which applies Flow
        rules to queue both product and company invitations in one request.)
      parameters:
        - $ref: '#/components/parameters/store'
        - $ref: '#/components/parameters/apikey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvitationRequest'
      responses:
        '200':
          description: Invitation queued
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvitationResponse'
    get:
      operationId: listProductInvitations
      tags:
        - Invitations
      summary: List product invitations
      description: Retrieves a paginated list of queued product review invitations.
      parameters:
        - $ref: '#/components/parameters/store'
        - $ref: '#/components/parameters/apikey'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
      responses:
        '200':
          description: A list of invitations
          content:
            application/json:
              schema:
                type: object
  /merchant/invitation:
    post:
      operationId: queueCompanyInvitation
      tags:
        - Invitations
      summary: Queue a company review invitation
      description: >-
        Queues a company (merchant) review invitation for a customer.
        (Deprecated in favor of POST /invitation.)
      parameters:
        - $ref: '#/components/parameters/store'
        - $ref: '#/components/parameters/apikey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvitationRequest'
      responses:
        '200':
          description: Invitation queued
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvitationResponse'
    get:
      operationId: listCompanyInvitations
      tags:
        - Invitations
      summary: List company invitations
      description: Retrieves a paginated list of queued company review invitations.
      parameters:
        - $ref: '#/components/parameters/store'
        - $ref: '#/components/parameters/apikey'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
      responses:
        '200':
          description: A list of invitations
          content:
            application/json:
              schema:
                type: object
  /merchant/reviews:
    get:
      operationId: retrieveCompanyReviews
      tags:
        - Company Reviews
      summary: Retrieve company reviews
      description: >-
        Returns company (merchant) reviews for the supplied store, including
        rating, review body, author, and timestamps, with pagination.
      parameters:
        - $ref: '#/components/parameters/store'
        - $ref: '#/components/parameters/apikey'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
        - name: min_date
          in: query
          schema:
            type: string
          description: Filter reviews created on or after this date.
        - name: max_date
          in: query
          schema:
            type: string
          description: Filter reviews created on or before this date.
      responses:
        '200':
          description: Company reviews
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyReviewsResponse'
  /product/review:
    get:
      operationId: retrieveProductReviews
      tags:
        - Product Reviews
      summary: Retrieve product reviews
      description: >-
        Returns product reviews filtered by SKU or MPN with options for
        photos, verified-only, comments-only, minimum rating, and date ranges.
      parameters:
        - $ref: '#/components/parameters/store'
        - $ref: '#/components/parameters/apikey'
        - name: sku
          in: query
          schema:
            type: string
          description: One or more product SKUs separated by semicolons.
        - name: mpn
          in: query
          schema:
            type: string
          description: One or more product MPNs separated by semicolons.
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
        - name: photos
          in: query
          schema:
            type: boolean
          description: Only return reviews that include photos.
        - name: verified_only
          in: query
          schema:
            type: boolean
          description: Only return verified reviews.
        - name: comments_only
          in: query
          schema:
            type: boolean
          description: Only return reviews that include a comment.
        - name: minRating
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 5
          description: Minimum star rating to include.
        - name: min_date
          in: query
          schema:
            type: string
          description: Filter reviews created on or after this date.
        - name: max_date
          in: query
          schema:
            type: string
          description: Filter reviews created on or before this date.
      responses:
        '200':
          description: Product reviews
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductReviewsResponse'
  /product/review/new:
    post:
      operationId: createProductReview
      tags:
        - Product Reviews
      summary: Create a new product review
      description: Creates a new product review for the supplied SKU.
      parameters:
        - $ref: '#/components/parameters/store'
        - $ref: '#/components/parameters/apikey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProductReviewRequest'
      responses:
        '200':
          description: Product review created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductReview'
  /product/vote:
    get:
      operationId: voteProductReview
      tags:
        - Product Reviews
      summary: Add to the vote count of a product review
      description: Increments the helpful-vote count of a single product review.
      parameters:
        - $ref: '#/components/parameters/store'
        - name: product_review_id
          in: query
          required: true
          schema:
            type: integer
          description: The identifier of the product review to vote on.
      responses:
        '200':
          description: Vote recorded
          content:
            application/json:
              schema:
                type: object
  /product/rating-batch:
    get:
      operationId: retrieveProductRatings
      tags:
        - Ratings
      summary: Retrieve product ratings
      description: >-
        Returns review counts and aggregate ratings for a list of products
        identified by SKU.
      parameters:
        - $ref: '#/components/parameters/store'
        - $ref: '#/components/parameters/apikey'
        - name: sku
          in: query
          schema:
            type: string
          description: One or more product SKUs separated by semicolons.
      responses:
        '200':
          description: Product ratings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductRatingsResponse'
  /stats/all:
    get:
      operationId: retrieveReviewStatistics
      tags:
        - Ratings
      summary: Retrieve basic review statistics
      description: >-
        Returns basic review statistics (average rating and total review count)
        across product, company, and third-party reviews, used to build
        star-rating and badge widgets.
      parameters:
        - $ref: '#/components/parameters/store'
        - $ref: '#/components/parameters/apikey'
      responses:
        '200':
          description: Review statistics
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReviewStatisticsResponse'
  /questions/store:
    post:
      operationId: createQuestion
      tags:
        - Questions
      summary: Create a new question
      description: Creates a new customer question against a product or store.
      parameters:
        - $ref: '#/components/parameters/store'
        - $ref: '#/components/parameters/apikey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateQuestionRequest'
      responses:
        '200':
          description: Question created
          content:
            application/json:
              schema:
                type: object
  /reviews:
    get:
      operationId: retrieveReviewsAndQuestions
      tags:
        - Questions
      summary: Retrieve reviews and questions
      description: >-
        Returns a combined feed of reviews and questions for the store. Use
        `type` to select store_review, product_review, store_third_party_review,
        or questions.
      parameters:
        - $ref: '#/components/parameters/store'
        - $ref: '#/components/parameters/apikey'
        - name: type
          in: query
          schema:
            type: string
            enum:
              - store_review
              - product_review
              - store_third_party_review
              - questions
          description: The category of records to return.
        - name: sku
          in: query
          schema:
            type: string
          description: Filter by one or more product SKUs.
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
      responses:
        '200':
          description: Reviews and questions
          content:
            application/json:
              schema:
                type: object
  /ugc:
    get:
      operationId: retrieveUserGeneratedContent
      tags:
        - Ratings
      summary: Retrieve user-generated content
      description: >-
        Returns user-generated content (photo and video reviews and related
        media) for the store, used to power UGC and shoppable galleries.
      parameters:
        - $ref: '#/components/parameters/store'
        - $ref: '#/components/parameters/apikey'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
      responses:
        '200':
          description: User-generated content
          content:
            application/json:
              schema:
                type: object
  /webhook/add:
    post:
      operationId: addWebhook
      tags:
        - Webhooks
      summary: Add a review submitted webhook
      description: >-
        Subscribes a target URL to review-submitted events. The `type` selects
        the notification (company or product review, positive or negative,
        create or update variants).
      parameters:
        - $ref: '#/components/parameters/store'
        - $ref: '#/components/parameters/apikey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookRequest'
      responses:
        '200':
          description: Webhook created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook'
  /webhook/list:
    get:
      operationId: listWebhooks
      tags:
        - Webhooks
      summary: List all webhooks
      description: Returns all webhook subscriptions configured for the store.
      parameters:
        - $ref: '#/components/parameters/store'
        - $ref: '#/components/parameters/apikey'
      responses:
        '200':
          description: Configured webhooks
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Webhook'
components:
  securitySchemes:
    storeKey:
      type: apiKey
      in: header
      name: store
      description: Your REVIEWS.io public store key.
    apiKey:
      type: apiKey
      in: header
      name: apikey
      description: Your REVIEWS.io private API key.
  parameters:
    store:
      name: store
      in: query
      required: true
      schema:
        type: string
      description: Your REVIEWS.io public store key.
    apikey:
      name: apikey
      in: query
      required: false
      schema:
        type: string
      description: Your REVIEWS.io private API key (required for write and private data).
    page:
      name: page
      in: query
      schema:
        type: integer
      description: Results page number.
    perPage:
      name: per_page
      in: query
      schema:
        type: integer
      description: Number of items per page.
  schemas:
    InvitationRequest:
      type: object
      required:
        - name
        - email
        - order_id
      properties:
        name:
          type: string
          description: Customer name.
        email:
          type: string
          format: email
          description: Customer email address.
        order_id:
          type: string
          description: Your order reference for the purchase.
        template_id:
          type: string
          description: Optional invitation template identifier.
        date_send:
          type: string
          description: Optional scheduled send date for the invitation.
        products:
          type: array
          description: Products to request product reviews for.
          items:
            $ref: '#/components/schemas/InvitationProduct'
    InvitationProduct:
      type: object
      properties:
        sku:
          type: string
          description: Product SKU.
        name:
          type: string
          description: Product name.
        image:
          type: string
          description: Product image URL.
        mpn:
          type: string
          description: Product MPN.
    InvitationResponse:
      type: object
      properties:
        message:
          type: string
        status:
          type: string
    CompanyReviewsResponse:
      type: object
      properties:
        store:
          type: string
        word:
          type: string
        rating:
          type: number
        count:
          type: integer
        reviews:
          type: object
          properties:
            total:
              type: integer
            per_page:
              type: integer
            current_page:
              type: integer
            data:
              type: array
              items:
                $ref: '#/components/schemas/CompanyReview'
    CompanyReview:
      type: object
      properties:
        store_review_id:
          type: integer
        rating:
          type: integer
        review:
          type: string
        date_created:
          type: string
        reviewer:
          type: object
          properties:
            first_name:
              type: string
            last_name:
              type: string
            verified_buyer:
              type: string
    ProductReviewsResponse:
      type: object
      properties:
        store:
          type: string
        word:
          type: string
        reviews:
          type: object
          properties:
            total:
              type: integer
            per_page:
              type: integer
            current_page:
              type: integer
            data:
              type: array
              items:
                $ref: '#/components/schemas/ProductReview'
    ProductReview:
      type: object
      properties:
        store_review_id:
          type: integer
        product:
          type: object
          properties:
            sku:
              type: string
            name:
              type: string
            mpn:
              type: string
        rating:
          type: integer
        title:
          type: string
        review:
          type: string
        date_created:
          type: string
        reviewer:
          type: object
          properties:
            first_name:
              type: string
            last_name:
              type: string
            verified_buyer:
              type: string
    CreateProductReviewRequest:
      type: object
      required:
        - sku
        - name
        - email
        - rating
        - review
      properties:
        sku:
          type: string
          description: Product SKU the review applies to.
        name:
          type: string
          description: Reviewer name.
        email:
          type: string
          format: email
          description: Reviewer email.
        rating:
          type: integer
          minimum: 1
          maximum: 5
          description: Star rating from 1 to 5.
        review:
          type: string
          description: Review body text.
        order_id:
          type: string
          description: Associated order reference.
        tags:
          type: string
          description: Comma-separated tags to apply to the review.
        address:
          type: string
          description: Reviewer address.
        ip_address:
          type: string
          description: Reviewer IP address.
        images:
          type: array
          description: Review images.
          items:
            type: string
        ratings:
          type: object
          description: Sub-ratings keyed by attribute.
        attribute:
          type: object
          description: Reviewer metadata attributes.
    ProductRatingsResponse:
      type: object
      properties:
        store:
          type: string
        products:
          type: array
          items:
            type: object
            properties:
              sku:
                type: string
              average_rating:
                type: number
              num_ratings:
                type: integer
    ReviewStatisticsResponse:
      type: object
      properties:
        store:
          type: string
        average_rating:
          type: number
        total_reviews:
          type: integer
        rating_breakdown:
          type: object
          additionalProperties:
            type: integer
    CreateQuestionRequest:
      type: object
      required:
        - question
      properties:
        sku:
          type: string
          description: Product SKU the question relates to.
        question:
          type: string
          description: The question text.
        name:
          type: string
          description: Asker name.
        email:
          type: string
          format: email
          description: Asker email.
    WebhookRequest:
      type: object
      required:
        - type
        - url
      properties:
        type:
          type: string
          description: The review event type to subscribe to.
          enum:
            - company_review
            - company_review_positive
            - company_review_negative
            - product_review
            - product_review_positive
            - product_review_negative
            - company_review_updated
            - product_review_updated
        url:
          type: string
          format: uri
          description: The target URL that will receive the webhook POST.
        includes:
          type: string
          description: Allow additional data to be returned in the webhook payload.
    Webhook:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
        url:
          type: string
        includes:
          type: string