openapi: 3.0.2
info:
title: Klaviyo Accounts Reviews API
version: '2026-04-15'
description: The Klaviyo REST API. Please visit https://developers.klaviyo.com for more details.
contact:
name: Klaviyo Developer Experience Team
email: developers@klaviyo.com
url: https://developers.klaviyo.com
termsOfService: https://www.klaviyo.com/legal/api-terms
license:
name: License
url: https://www.klaviyo.com/legal
servers:
- url: https://a.klaviyo.com
description: Production
security:
- Klaviyo-API-Key: []
tags:
- name: Reviews
description: reviews
paths:
/api/reviews:
get:
operationId: get_reviews
summary: Get Reviews
description: 'Get all reviews.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`reviews:read`'
parameters:
- name: fields[event]
in: query
description: For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#sparse-fieldsets
required: false
schema:
type: array
items:
type: string
enum:
- datetime
- event_properties
- timestamp
- uuid
explode: false
- name: fields[review]
in: query
description: For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#sparse-fieldsets
required: false
schema:
type: array
items:
type: string
enum:
- author
- content
- created
- email
- images
- product
- product.external_id
- product.image_url
- product.name
- product.url
- public_reply
- public_reply.author
- public_reply.content
- public_reply.updated
- rating
- review_type
- smart_quote
- status
- status.rejection_reason
- status.rejection_reason.reason
- status.rejection_reason.status_explanation
- status.value
- title
- updated
- verified
explode: false
- name: filter
in: query
description: 'For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#filtering
Allowed field(s)/operator(s):
`created`: `greater-or-equal`, `less-or-equal`
`rating`: `any`, `equals`, `greater-or-equal`, `less-or-equal`
`id`: `any`, `equals`
`item.id`: `any`, `equals`
`content`: `contains`
`status`: `equals`
`review_type`: `equals`
`verified`: `equals`'
schema:
type: string
example: less-or-equal(created,2022-11-08T00:00:00+00:00)
- name: include
in: query
description: For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#relationships
schema:
type: array
items:
type: string
enum:
- events
explode: false
- name: page[cursor]
in: query
description: For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#pagination
required: false
schema:
type: string
- name: page[size]
in: query
description: 'Default: 20. Min: 1. Max: 100.'
required: false
schema:
type: integer
default: 20
maximum: 100
minimum: 1
- name: sort
in: query
description: For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#sorting
schema:
type: string
enum:
- created
- -created
- rating
- -rating
- updated
- -updated
- name: revision
in: header
description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
required: true
schema:
type: string
default: '2026-04-15'
responses:
'200':
description: Success
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/GetReviewResponseDTOCollectionCompoundDocument'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Reviews
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- reviews:read
/api/reviews/{id}:
get:
operationId: get_review
summary: Get Review
description: 'Get the review with the given ID.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`reviews:read`'
parameters:
- name: id
in: path
description: The ID of the review
required: true
schema:
description: The ID of the review
type: string
example: '2134228'
- name: fields[event]
in: query
description: For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#sparse-fieldsets
required: false
schema:
type: array
items:
type: string
enum:
- datetime
- event_properties
- timestamp
- uuid
explode: false
- name: fields[review]
in: query
description: For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#sparse-fieldsets
required: false
schema:
type: array
items:
type: string
enum:
- author
- content
- created
- email
- images
- product
- product.external_id
- product.image_url
- product.name
- product.url
- public_reply
- public_reply.author
- public_reply.content
- public_reply.updated
- rating
- review_type
- smart_quote
- status
- status.rejection_reason
- status.rejection_reason.reason
- status.rejection_reason.status_explanation
- status.value
- title
- updated
- verified
explode: false
- name: include
in: query
description: For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#relationships
schema:
type: array
items:
type: string
enum:
- events
explode: false
- name: revision
in: header
description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
required: true
schema:
type: string
default: '2026-04-15'
responses:
'200':
description: Success
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/GetReviewResponseDTOCompoundDocument'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Reviews
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- reviews:read
patch:
operationId: update_review
summary: Update Review
description: 'Update a review.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`reviews:write`'
parameters:
- name: id
in: path
description: The id of the review (review ID).
required: true
schema:
description: The id of the review (review ID).
type: string
- name: revision
in: header
description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
required: true
schema:
type: string
default: '2026-04-15'
requestBody:
description: DTO for updating reviews
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/ReviewPatchQuery'
responses:
'200':
description: Success
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PatchReviewResponseDTO'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Reviews
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- reviews:write
components:
schemas:
ReviewPublicReply:
type: object
properties:
content:
description: The content of the public reply
example: Thanks for the review!
type: string
author:
description: The author of the public reply
type: string
example: Company X
updated:
description: The datetime when this public reply was updated
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
required:
- content
- author
- updated
GetReviewResponseDTOCollectionCompoundDocument:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ReviewResponseDTOObjectResource'
links:
$ref: '#/components/schemas/CollectionLinks'
included:
type: array
items:
$ref: '#/components/schemas/EventResponseObjectResource'
required:
- data
CatalogItemEnum:
type: string
enum:
- catalog-item
ReviewPatchQuery:
type: object
properties:
data:
$ref: '#/components/schemas/ReviewPatchQueryResourceObject'
required:
- data
EventResponseObjectResource:
type: object
properties:
type:
$ref: '#/components/schemas/EventEnum'
id:
description: The Event ID
type: string
attributes:
type: object
properties:
timestamp:
description: Event timestamp in seconds
type: integer
nullable: true
event_properties:
description: Event properties, can include identifiers and extra properties
type: object
nullable: true
datetime:
description: Event timestamp in ISO8601 format (YYYY-MM-DDTHH:MM:SS+hh:mm)
type: string
format: date-time
example: '2022-11-08T01:23:45+00:00'
nullable: true
uuid:
description: A unique identifier for the event, this can be used as a cursor in pagination
type: string
nullable: true
relationships:
type: object
properties:
profile:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/ProfileEnum'
id:
description: Profile ID of the associated profile, if available
type: string
required:
- type
- id
links:
$ref: '#/components/schemas/RelationshipLinks'
metric:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/MetricEnum'
id:
description: The Metric ID
type: string
required:
- type
- id
links:
$ref: '#/components/schemas/RelationshipLinks'
attributions:
type: object
properties:
data:
type: array
items:
type: object
required:
- type
- id
properties:
type:
$ref: '#/components/schemas/AttributionEnum'
id:
description: Attributions for this event
type: string
links:
$ref: '#/components/schemas/RelationshipLinks'
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- type
- id
- attributes
- links
RejectReasonMisleading:
type: object
properties:
reason:
description: rejected due to false or misleading content
type: string
enum:
- false_or_misleading
required:
- reason
ReviewPatchQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/ReviewEnum'
id:
description: The id of the review (review ID).
type: string
attributes:
type: object
properties:
status:
description: The updated status intended for the review with this ID
nullable: true
oneOf:
- $ref: '#/components/schemas/ReviewStatusRejected'
- $ref: '#/components/schemas/ReviewStatusFeatured'
- $ref: '#/components/schemas/ReviewStatusPublished'
- $ref: '#/components/schemas/ReviewStatusUnpublished'
- $ref: '#/components/schemas/ReviewStatusPending'
required:
- type
- id
- attributes
AttributionEnum:
type: string
enum:
- attribution
ProfileEnum:
type: string
enum:
- profile
RejectReasonOther:
type: object
properties:
reason:
description: reject reason is other
type: string
enum:
- other
status_explanation:
description: If review reject reason is other, we can provide further explanation
type: string
example: This review is just really poorly detailed and there is another with the same content
nullable: true
required:
- reason
ReviewStatusRejected:
type: object
properties:
value:
description: Rejected review status
type: string
enum:
- rejected
rejection_reason:
description: The updated status intended for the review with this ID
oneOf:
- $ref: '#/components/schemas/RejectReasonOther'
- $ref: '#/components/schemas/RejectReasonFake'
- $ref: '#/components/schemas/RejectReasonMisleading'
- $ref: '#/components/schemas/RejectReasonPrivateInformation'
- $ref: '#/components/schemas/RejectReasonProfanity'
- $ref: '#/components/schemas/RejectReasonUnrelated'
required:
- value
- rejection_reason
ReviewEnum:
type: string
enum:
- review
RejectReasonProfanity:
type: object
properties:
reason:
description: rejected due to profanity or inappropriate content
type: string
enum:
- profanity_or_inappropriate
required:
- reason
MetricEnum:
type: string
enum:
- metric
EventEnum:
type: string
enum:
- event
ReviewStatusPublished:
type: object
properties:
value:
description: Published review status
type: string
enum:
- published
required:
- value
PatchReviewResponseDTO:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/ReviewEnum'
id:
description: The ID of the review
type: string
example: 925e385b52fb405715f3616c337cc65c
attributes:
type: object
properties:
email:
description: The email of the author of this review
type: string
example: john@doe.com
nullable: true
status:
description: The status of this review
nullable: true
oneOf:
- $ref: '#/components/schemas/ReviewStatusRejected'
- $ref: '#/components/schemas/ReviewStatusFeatured'
- $ref: '#/components/schemas/ReviewStatusPublished'
- $ref: '#/components/schemas/ReviewStatusUnpublished'
- $ref: '#/components/schemas/ReviewStatusPending'
verified:
description: The verification status of this review (aka whether or not we have confirmation that the customer bought the product)
type: boolean
example: true
review_type:
description: The type of this review — either a review, question, or rating
type: string
example: review
enum:
- question
- rating
- review
- store
created:
description: The datetime when this review was created
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
updated:
description: The datetime when this review was updated
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
images:
description: The list of images submitted with this review (represented as a list of urls). If there are no images, this field will be an empty list.
type: array
items:
type: string
example:
- https://example.com/image1.jpg
- https://example.com/image2.jpg
product:
description: The product associated with this review
$ref: '#/components/schemas/ReviewProductDTO'
nullable: true
rating:
description: The rating of this review on a scale from 1-5. If the review type is "question", this field will be null.
type: integer
example: 2
nullable: true
author:
description: The author of this review
type: string
example: John D
nullable: true
content:
description: The content of this review
example: Great product! I love the smell. I will be buying again.
nullable: true
type: string
title:
description: The title of this review
type: string
example: Smells great, would recommend
nullable: true
smart_quote:
description: A quote from this review that summarizes the content
type: string
example: I love the smell
nullable: true
public_reply:
description: The public reply to this review (if one exists)
$ref: '#/components/schemas/ReviewPublicReply'
nullable: true
required:
- verified
- review_type
- created
- updated
- images
relationships:
type: object
properties:
events:
type: object
properties:
data:
type: array
items:
type: object
required:
- type
- id
properties:
type:
$ref: '#/components/schemas/EventEnum'
id:
description: Related Events
type: string
links:
$ref: '#/components/schemas/RelationshipLinks'
item:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/CatalogItemEnum'
id:
description: Related Catalog Item
type: string
required:
- type
- id
links:
$ref: '#/components/schemas/RelationshipLinks'
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- type
- id
- attributes
- links
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
ReviewStatusPending:
type: object
properties:
value:
description: Pending review status
type: string
enum:
- pending
required:
- value
ObjectLinks:
type: object
properties:
self:
type: string
format: uri
required:
- self
ReviewProductDTO:
type: object
properties:
url:
description: The URL of the product
type: string
example: https://example.com/product/123
name:
description: The name of the product
type: string
image_url:
description: The URL of the product image
type: string
example: https://example.com/image.jpg
nullable: true
external_id:
description: The external ID of the product
type: string
example: '123456789'
nullable: true
required:
- url
- name
RejectReasonUnrelated:
type: object
properties:
reason:
description: rejected due to unrelated content
type: string
enum:
- unrelated
required:
- reason
CollectionLinks:
type: object
properties:
self:
type: string
format: uri
first:
type: string
format: uri
last:
type: string
format: uri
prev:
type: string
format: uri
next:
type: string
format: uri
required:
- self
ReviewStatusFeatured:
type: object
properties:
value:
description: Featured review status
type: string
enum:
- featured
required:
- value
ReviewStatusUnpublished:
type: object
properties:
value:
description: Unpublished review status
type: string
enum:
- unpublished
required:
- value
RejectReasonFake:
type: object
properties:
reason:
description: rejected due to fake content
type: string
enum:
- fake
required:
- reason
GetReviewResponseDTOCompoundDocument:
type: object
properties:
data:
$ref: '#/components/schemas/ReviewResponseDTOObjectResource'
included:
type: array
items:
$ref: '#/components/schemas/EventResponseObjectResource'
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
RejectReasonPrivateInformation:
type: object
properties:
reason:
description: rejected due to private information
type: string
enum:
- private_information
required:
- reason
ReviewResponseDTOObjectResource:
type: object
properties:
type:
$ref: '#/components/schemas/ReviewEnum'
id:
description: The ID of the review
type: string
example: 925e385b52fb405715f3616c337cc65c
attributes:
type: object
properties:
email:
description: The email of the author of this review
type: string
example: john@doe.com
nullable: true
status:
description: The status of this review
nullable: true
oneOf:
- $ref: '#/components/schemas/ReviewStatusRejected'
- $ref: '#/components/schemas/ReviewStatusFeatured'
- $ref: '#/components/schemas/ReviewStatusPublished'
- $ref: '#/components/schemas/ReviewStatusUnpublished'
- $ref: '#/components/schemas/ReviewStatusPending'
verified:
description: The verification status of this review (aka whether or not we have confirmation that the customer bought the product)
type: boolean
example: true
review_type:
description: The type of this review — either a review, question, or rating
type: string
example: review
enum:
- question
- rating
- review
- store
created:
description: The datetime when this review was created
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
updated:
description: The datetime when this review was updated
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
images:
description: The list of images submitted with this review (represented as a list of urls). If there are no images, this field will be an empty list.
type: array
items:
type: string
example:
- https://example.com/image1.jpg
- https://example.com/image2.jpg
product:
description: The product associated with this review
$ref: '#/components/schemas/ReviewProductDTO'
nullable: true
rating:
description: The rating of this review on a scale from 1-5. If the review type is "question", this field will be null.
type: integer
example: 2
nullable: true
author:
description: The author of this review
type: string
example: John D
nullable: true
content:
description: The content of this review
example: Great product! I love the smell. I will be buying again.
nullable: true
type: string
title:
description: The title of this review
type: string
example: Smells great, would recommend
nullable: true
smart_quote:
description: A quote from this review that summarizes the content
type: string
example: I love the smell
nullable: true
public_reply:
description: The public reply to this review (if one exists)
$ref: '#/components/schemas/ReviewPublicReply'
nullable: true
required:
- verified
- review_type
- created
- updated
- images
relationships:
type: object
properties:
events:
type: object
properties:
data:
type: array
items:
type: object
required:
- type
- id
properties:
type:
$ref: '#/components/schemas/EventEnum'
id:
description: Related Events
type: string
links:
$ref: '#/components/schemas/RelationshipLinks'
item:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/CatalogItemEnum'
id:
description: Related Catalog Item
type: string
required:
- type
- id
links:
$ref: '#/components/schemas/RelationshipLinks'
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- type
- id
- attributes
- links
RelationshipLinks:
type: object
properties:
self:
type: string
format: uri
related:
type: string
format: uri
required:
- self
- related
responses:
ClientError:
description: Client Error
content:
application/vnd.api+json:
schema:
type: object
properties:
errors:
type: array
items:
type: object
required:
- id
- code
- title
- detail
properties:
id:
type: string
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
type: string
parameter:
type: string
required:
- errors
ServerError:
description: Server Error
content:
application/vnd.api+json:
schema:
type: object
properties:
errors:
type: array
items:
type: object
required:
- id
- code
- title
- detail
properties:
id:
type: string
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
type: string
parameter:
type: string
required:
- errors
securitySchemes:
Klaviyo-API-Key:
type: apiKey
in: header
name: Authorization
description: Private key authentication for /api/ endpoints is performed by setting the `Authorization` header to `Klaviyo-API-Key your-private-api-key`
For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#authentication
x-default: Klaviyo-API-Key your-private-api-key
x-readme:
explorer-enabled: false
proxy-enabled: true
samples-enabled: true