---
title: "List reviews"
method: GET
path: "/reviews"
tags: ["Reviews"]
---

# List reviews

`GET /reviews`

Returns a paginated list of customer reviews for a specific product, with optional filtering by star rating and creation date.

## Query parameters

- `after` string, nullable — Returns the elements in the list that come after the specified cursor.
- `before` string, nullable — Returns the elements in the list that come before the specified cursor.
- `first` integer, nullable — Returns the first _n_ elements from the list.
- `last` integer, nullable — Returns the last _n_ elements from the list.
- `product_id` string, required — The unique identifier of the product to list reviews for.
- `min_stars` integer, nullable — The minimum star rating to include in results, from 1 to 5 inclusive.
- `max_stars` integer, nullable — The maximum star rating to include in results, from 1 to 5 inclusive.
- `created_before` string, date-time, nullable — Only return reviews created before this timestamp.
- `created_after` string, date-time, nullable — Only return reviews created after this timestamp.

## Response `200`

A successful response

- object — The connection type for Review.
  - `data` ReviewListItem[], required — A list of nodes.
    - `attachments` object[], required — A list of files and media attached to the review.
      - `content_type` string, nullable, required — Uploaded file MIME type, such as image/jpeg, video/mp4, or audio/mpeg.
      - `filename` string, nullable, required — The original filename of the uploaded attachment, including its file extension.
      - `id` string, required — Represents a unique identifier that is Base64 obfuscated. It is often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"VXNlci0xMA=="`) or integer (such as `4`) input value will be accepted as an ID.
      - `url` string, nullable, required — A pre-optimized URL for rendering this attachment on the client. This should be used for displaying attachments in apps.
    - `created_at` string, date-time, required — The datetime the review was created.
    - `description` string, nullable, required — The body text of the review containing the user's detailed feedback. Returns an empty string if no description was provided.
    - `id` string, required — The unique identifier for the review.
    - `joined_at` string, date-time, nullable, required — The timestamp of when the reviewer first joined the product. Null if unknown.
    - `paid_for_product` boolean, nullable, required — Whether the reviewer paid for the product. Null if the payment status is unknown.
    - `published_at` string, date-time, nullable, required — The timestamp of when the review was published. Null if the review has not been published yet.
    - `stars` integer, required — The star rating given by the reviewer, from 1 to 5.
    - `status` 'pending' | 'published' | 'removed', required — The statuses a review can have
    - `title` string, nullable, required — A short summary title for the review. Null if the reviewer did not provide one.
    - `updated_at` string, date-time, required — The datetime the review was last updated.
    - `user` object, required — The user account of the person who wrote this review.
      - `id` string, required — The unique identifier for the user.
      - `name` string, nullable, required — The user's display name shown on their public profile.
      - `username` string, required — The user's unique username shown on their public profile.
  - `page_info` PageInfo, required — Information about pagination in a connection.
    - `end_cursor` string, nullable, required — When paginating forwards, the cursor to continue.
    - `has_next_page` boolean, required — When paginating forwards, are there more items?
    - `has_previous_page` boolean, required — When paginating backwards, are there more items?
    - `start_cursor` string, nullable, required — When paginating backwards, the cursor to continue.

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `422` — Verification required
- `429` — Too many requests
- `500` — Internal server error

---

[API](https://skmtc.net/whop/apis/whop-api.md) · [All operations](https://skmtc.net/whop/apis/whop-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/whop/whop-api/versions/a8a43db4255f/schema)
