openapi: 3.0.2
info:
title: Klaviyo Accounts Client 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: Client
description: client
paths:
/client/review-values-reports:
get:
operationId: get_client_review_values_reports
summary: Get Client Review Values Reports
description: 'Get all reviews values reports in an account.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`'
parameters:
- name: company_id
in: query
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
required: true
schema:
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
type: string
example: PUBLIC_API_KEY
- name: fields[review-values-report]
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:
- results
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):
`product_external_ids`: `any`, `equals`'
schema:
type: string
example: equals(product_external_ids,'example')
- name: group_by
in: query
description: group by value for this report
required: true
schema:
description: group by value for this report
type: string
example: product_id
enum:
- company_id
- product_id
- 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: statistics
in: query
description: list of statistics to calculate for this report
required: true
schema:
description: list of statistics to calculate for this report
type: string
example: average_rating,total_reviews
- name: timeframe
in: query
description: timeframe window for value report
required: true
schema:
description: timeframe window for value report
type: string
example: all_time
enum:
- all_time
- last_30_days
- last_365_days
- last_90_days
- 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/GetReviewValuesReportResponseCollection'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
security: []
tags:
- Client
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes: []
/client/reviews:
get:
operationId: get_client_reviews
summary: Get Client Reviews
description: 'Get all reviews. This endpoint is for client-side environments only, for server-side use, refer to https://developers.klaviyo.com/en/reference/get_reviews
*Rate limits*:
Burst: `10/s`
Steady: `150/m`'
parameters:
- name: company_id
in: query
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
required: true
schema:
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
type: string
example: PUBLIC_API_KEY
- 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
- 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):
`status`: `equals`
`review_type`: `equals`
`rating`: `any`, `equals`, `greater-or-equal`, `less-or-equal`
`id`: `any`, `equals`
`content`: `contains`
`smart_quote`: `has`
`public_reply`: `has`
`verified`: `equals`
`incentivized`: `equals`
`edited`: `equals`
`media`: `has`
`created`: `greater-or-equal`, `less-or-equal`
`updated`: `greater-or-equal`, `less-or-equal`'
schema:
type: string
example: equals(status,'published')
- 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/GetClientReviewResponseDTOCollection'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
security: []
tags:
- Client
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes: []
post:
operationId: create_client_review
summary: Create Client Review
description: 'Create a review with the given ID. This endpoint is for client-side environments only.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`'
parameters:
- name: company_id
in: query
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
required: true
schema:
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
type: string
example: PUBLIC_API_KEY
- name: revision
in: header
description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
required: true
schema:
type: string
default: '2026-04-15'
requestBody:
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/ReviewCreateDTO'
responses:
'202':
description: Success
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
security: []
tags:
- Client
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes: []
/client/geofences:
get:
operationId: get_client_geofences
summary: Get Client Geofences
description: 'Get all geofences in an account.
Returns a paginated list of all geofences for the specified company.
This is the GA API endpoint designed for mobile SDK consumption.
No authentication required.
Returns a maximum of 100 results per page (default 20).
This API supports filtering via header instead of query param. Provide
`X-Klaviyo-API-Filters` header to filter geofences. We don''t use regular
query param filters here because lat and long are sensitive information.
Supported filters:
- `lat` (equals) - Latitude coordinate for distance-based sorting
- `lng` (equals) - Longitude coordinate for distance-based sorting
When both lat and lng are provided, geofences are returned sorted by
distance from the specified coordinates (closest first).
Example filter header:
`X-Klaviyo-API-Filters: and(equals(lat,40.7128),equals(lng,-74.0060))`
*Rate limits*:
Burst: `3/s`
Steady: `60/m`'
parameters:
- name: company_id
in: query
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
required: true
schema:
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
type: string
example: PUBLIC_API_KEY
- name: fields[geofence]
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:
- latitude
- longitude
- radius
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: X-Klaviyo-API-Filters
in: header
description: '
Supported filters:
- `lat` (equals) - Latitude coordinate for distance-based sorting
- `lng` (equals) - Longitude coordinate for distance-based sorting
When both lat and lng are provided, geofences are returned sorted by
distance from the specified coordinates (closest first).
'
required: false
schema:
type: string
example: and(equals(lat,40.7128),equals(lng,-74.0060))
- 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/GetGeofenceResponseCollection'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
security: []
tags:
- Client
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 3/s
steady: 60/m
x-klaviyo-scopes: []
/client/subscriptions:
post:
operationId: create_client_subscription
summary: Create Client Subscription
description: 'Creates a subscription and consent record for email and/or SMS channels based on the provided `email` and `phone_number` attributes, respectively. One of either `email` or `phone_number` must be provided.
This endpoint is specifically designed to be called from publicly-browseable, client-side environments only and requires a [public API key (site ID)](https://www.klaviyo.com/settings/account/api-keys). Never use a private API key with our client-side endpoints.
Do not use this endpoint from server-side applications.
To subscribe profiles from server-side applications, instead use [POST /api/profile-subscription-bulk-create-jobs](https://developers.klaviyo.com/en/reference/subscribe_profiles).
Profiles can be opted into multiple channels: email marketing, SMS marketing, and SMS transactional. You can specify the channel(s) to subscribe the profile to by providing a subscriptions object in the profile attributes.
If you include a subscriptions object, only channels in that object will be subscribed. You can use this to update `email` or `phone` on the profile without subscribing them, for example, by setting the profile property but omitting that channel in the subscriptions object. If a subscriptions object is not provided, subscriptions are defaulted to `MARKETING`.
*Rate limits*:
Burst: `350/s`
Steady: `750/m`
**Scopes:**
`subscriptions:write`'
parameters:
- name: company_id
in: query
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
required: true
schema:
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
type: string
example: PUBLIC_API_KEY
- name: revision
in: header
description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
required: true
schema:
type: string
default: '2026-04-15'
requestBody:
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/OnsiteSubscriptionCreateQuery'
responses:
'202':
description: Success
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
security: []
tags:
- Client
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 350/s
steady: 750/m
x-klaviyo-scopes:
- subscriptions:write
/client/push-tokens:
post:
operationId: create_client_push_token
summary: Create or Update Client Push Token
description: 'Create or update a push token.
This endpoint is specifically designed to be called from our mobile SDKs ([iOS](https://github.com/klaviyo/klaviyo-swift-sdk) and [Android](https://github.com/klaviyo/klaviyo-android-sdk)) and requires a [public API key (site ID)](https://www.klaviyo.com/settings/account/api-keys). Never use a private API key with our client-side endpoints.
You must have push notifications enabled to use this endpoint.
To migrate push tokens from another platform to Klaviyo, please use our server-side [POST /api/push-tokens](https://developers.klaviyo.com/en/reference/create_push_token) endpoint instead.
*Rate limits*:
Burst: `150/s`
Steady: `1400/m`'
parameters:
- name: company_id
in: query
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
required: true
schema:
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
type: string
example: PUBLIC_API_KEY
- name: revision
in: header
description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
required: true
schema:
type: string
default: '2026-04-15'
requestBody:
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PushTokenCreateQuery'
responses:
'202':
description: Success
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
security: []
tags:
- Client
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 150/s
steady: 1400/m
x-klaviyo-scopes: []
/client/push-token-unregister:
post:
operationId: unregister_client_push_token
summary: Unregister Client Push Token
description: 'Unregister a push token.
This endpoint is specifically designed to be called from our mobile SDKs ([iOS](https://github.com/klaviyo/klaviyo-swift-sdk) and [Android](https://github.com/klaviyo/klaviyo-android-sdk)) and requires a [public API key (site ID)](https://www.klaviyo.com/settings/account/api-keys). Never use a private API key with our client-side endpoints.
You must have push notifications enabled to use this endpoint.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`'
parameters:
- name: company_id
in: query
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
required: true
schema:
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
type: string
example: PUBLIC_API_KEY
- name: revision
in: header
description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
required: true
schema:
type: string
default: '2026-04-15'
requestBody:
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PushTokenUnregisterQuery'
responses:
'202':
description: Success
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
security: []
tags:
- Client
x-klaviyo-operation-aliases:
- create_client_push_token_unregister
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes: []
/client/events:
post:
operationId: create_client_event
summary: Create Client Event
description: 'Create a new event to track a profile''s activity.
This endpoint is specifically designed to be called from publicly-browseable, client-side environments only and requires a [public API key (site ID)](https://www.klaviyo.com/settings/account/api-keys). Never use a private API key with our client-side endpoints.
Do not use this endpoint from server-side applications.
To create events from server-side applications, instead use [POST /api/events](https://developers.klaviyo.com/en/reference/create_event).
Note that to update a profile''s existing identifiers (e.g., email), you must use a server-side endpoint authenticated by a private API key. Attempts to do so via client-side endpoints will return a 202, however the identifier field(s) will not be updated.
*Rate limits*:
Burst: `350/s`
Steady: `3500/m`
**Scopes:**
`events:write`'
parameters:
- name: company_id
in: query
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
required: true
schema:
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
type: string
example: PUBLIC_API_KEY
- name: revision
in: header
description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
required: true
schema:
type: string
default: '2026-04-15'
requestBody:
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/EventCreateQueryV2'
responses:
'202':
description: Success
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
security: []
tags:
- Client
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 350/s
steady: 3500/m
x-klaviyo-scopes:
- events:write
/client/profiles:
post:
operationId: create_client_profile
summary: Create or Update Client Profile
description: 'Create or update properties about a profile without tracking an associated event.
This endpoint is specifically designed to be called from publicly-browseable, client-side environments only and requires a [public API key (site ID)](https://www.klaviyo.com/settings/account/api-keys). Never use a private API key with our client-side endpoints.
Do not use this endpoint from server-side applications.
To create or update profiles from server-side applications, instead use [POST /api/profile-import](https://developers.klaviyo.com/en/reference/create_or_update_profile).
Note that to update a profile''s existing identifiers (e.g., email), you must use a server-side endpoint authenticated by a private API key. Attempts to do so via client-side endpoints will return a 202, however the identifier field(s) will not be updated.
*Rate limits*:
Burst: `350/s`
Steady: `3500/m`
**Scopes:**
`profiles:write`'
parameters:
- name: company_id
in: query
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
required: true
schema:
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
type: string
example: PUBLIC_API_KEY
- name: revision
in: header
description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
required: true
schema:
type: string
default: '2026-04-15'
requestBody:
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/OnsiteProfileCreateQuery'
responses:
'202':
description: Success
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
security: []
tags:
- Client
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 350/s
steady: 3500/m
x-klaviyo-scopes:
- profiles:write
/client/event-bulk-create:
post:
operationId: bulk_create_client_events
summary: Bulk Create Client Events
description: 'Create new events to track a profile''s activity.
This endpoint is specifically designed to be called from publicly-browseable, client-side environments only and requires a [public API key (site ID)](https://www.klaviyo.com/settings/account/api-keys). Never use a private API key with our client-side endpoints.
Do not use this endpoint from server-side applications.
To create events from server-side applications, instead use [POST /api/event-bulk-create-jobs](https://developers.klaviyo.com/en/reference/bulk_create_events).
Accepts a maximum of `1000` events per request.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`events:write`'
parameters:
- name: company_id
in: query
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
required: true
schema:
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
type: string
example: PUBLIC_API_KEY
- name: revision
in: header
description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
required: true
schema:
type: string
default: '2026-04-15'
requestBody:
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/EventsBulkCreateQuery'
responses:
'202':
description: Success
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
security: []
tags:
- Client
x-klaviyo-operation-aliases:
- create_client_event_bulk_create
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- events:write
/client/back-in-stock-subscriptions:
post:
operationId: create_client_back_in_stock_subscription
summary: Create Client Back In Stock Subscription
description: 'Subscribe a profile to receive back in stock notifications. Check out [our Back in Stock API guide](https://developers.klaviyo.com/en/docs/how_to_set_up_custom_back_in_stock) for more details.
This endpoint is specifically designed to be called from publicly-browseable, client-side environments only and requires a [public API key (site ID)](https://www.klaviyo.com/settings/account/api-keys). Never use a private API key with our client-side endpoints.
Do not use this endpoint from server-side applications.
To create back in stock subscriptions from server-side applications, instead use [POST /api/back-in-stock-subscriptions](https://developers.klaviyo.com/en/reference/create_back_in_stock_subscription).
*Rate limits*:
Burst: `350/s`
Steady: `3500/m`
**Scopes:**
`catalogs:write`
`profiles:write`'
parameters:
- name: company_id
in: query
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
required: true
schema:
description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
type: string
example: PUBLIC_API_KEY
- name: revision
in: header
description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
required: true
schema:
type: string
default: '2026-04-15'
requestBody:
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/ClientBISSubscriptionCreateQuery'
responses:
'202':
description: Success
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
security: []
tags:
- Client
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 350/s
steady: 3500/m
x-klaviyo-scopes:
- catalogs:write
- profiles:write
components:
schemas:
ReviewValuesReportResponseObjectResource:
type: object
properties:
type:
$ref: '#/components/schemas/ReviewValuesReportEnum'
id:
description: The unique identifier for the reviews values report
type: string
example: 925e385b52fb405715f3616c337cc65c
attributes:
type: object
properties:
results:
description: The list of groupings and their corresponding statistics in the reviews values report
type: array
items:
$ref: '#/components/schemas/ReviewValueReportGrouping'
example:
- groupings:
product_id: id1
statistics:
total_ratings: 459
average_rating: 4.5
- groupings:
product_id: id2
statistics:
total_ratings: 459
average_rating: 2.5
required:
- results
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- type
- id
- attributes
- links
EventProfileCreateQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/ProfileEnum'
id:
description: Primary key that uniquely identifies this profile. Generated by Klaviyo.
type: string
nullable: true
attributes:
type: object
properties:
email:
description: Individual's email address
type: string
example: sarah.mason@klaviyo-demo.com
nullable: true
phone_number:
description: Individual's phone number in E.164 format
type: string
example: '+15005550006'
nullable: true
external_id:
description: A unique identifier used by customers to associate Klaviyo profiles with profiles in an external system, such as a point-of-sale system. Format varies based on the external system.
type: string
nullable: true
anonymous_id:
type: string
nullable: true
_kx:
description: 'Also known as the `exchange_id`, this is an encrypted identifier used for identifying a
profile by Klaviyo''s web tracking.
You can use this field as a filter when retrieving profiles via the Get Profiles endpoint.'
type: string
nullable: true
first_name:
description: Individual's first name
type: string
example: Sarah
nullable: true
last_name:
description: Individual's last name
type: string
example: Mason
nullable: true
organization:
description: Name of the company or organization within the company for whom the individual works
type: string
example: Example Corporation
nullable: true
locale:
description: The locale of the profile, in the IETF BCP 47 language tag format like (ISO 639-1/2)-(ISO 3166 alpha-2)
type: string
example: en-US
nullable: true
title:
description: Individual's job title
type: string
example: Regional Manager
nullable: true
image:
description: URL pointing to the location of a profile image
type: string
example: https://images.pexels.com/photos/3760854/pexels-photo-3760854.jpeg
nullable: true
location:
$ref: '#/components/schemas/ProfileLocation'
nullable: true
properties:
description: An object containing key/value pairs for any custom properties assigned to this profile
type: object
example:
pseudonym: Dr. Octopus
nullable: true
meta:
$ref: '#/components/schemas/OnsiteProfileMeta'
nullable: true
required:
- type
- attributes
EventsBulkCreateQuery:
type: object
properties:
data:
$ref: '#/components/schemas/EventsBulkCreateQueryResourceObject'
required:
- data
ListEnum:
type: string
enum:
- list
GeofenceResponseObjectResource:
type: object
properties:
type:
$ref: '#/components/schemas/GeofenceEnum'
id:
description: Primary key that uniquely identifies this geofence. Generated by the system.
type: string
example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
attributes:
type: object
properties:
latitude:
description: Latitude coordinate of the geofence center point
type: number
example: 40.7128
longitude:
description: Longitude coordinate of the geofence center point
type: number
example: -74.006
radius:
description: Radius in meters from the center point
type: number
example: 100
required:
- latitude
- longitude
- radius
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- type
- id
- attributes
- links
ClientBISSubscriptionCreateQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/BackInStockSubscriptionEnum'
attributes:
type: object
properties:
channels:
description: The channel(s) through which the profile would like to receive the back in stock notification. This can be leveraged within a back in stock flow to notify the subscriber through their preferred channel(s).
type: array
items:
type: string
enum:
- EMAIL
- PUSH
- SMS
- WHATSAPP
description: The different channel types that a profile could subscribe to BIS notifications for
example:
- EMAIL
- SMS
profile:
type: object
example:
data:
type: profile
attributes:
id: 01GDDKASAP8TKDDA2GRZDSVP4H
email: sarah.mason@klaviyo-demo.com
phone_number: '+15005550006'
external_id: 63f64a2b-c6bf-40c7-b81f-bed08162edbe
properties:
data:
$ref: '#/components/schemas/ProfileIdentifierDTOResourceObject'
required:
- data
required:
- channels
- profile
relationships:
type: object
properties:
variant:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/CatalogVariantEnum'
id:
description: 'The catalog variant ID for which the profile is subscribing to back in stock notifications. This ID is made up of the integration type, catalog ID, and and the external ID of the variant like so: `integrationType:::catalogId:::externalId`. If the integration you are using is not set up for multi-catalog storage, the ''catalogId'' will be `$default`. For Shopify `$shopify:::$default:::33001893429341`'
type: string
example: $custom:::$default:::SAMPLE-DATA-ITEM-1-VARIANT-MEDIUM
required:
- type
- id
required:
- variant
required:
- type
- attributes
- relationships
ProfileUpsertQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/ProfileEnum'
id:
description: Primary key that uniquely identifies this profile. Generated by Klaviyo.
type: string
nullable: true
attributes:
type: object
properties:
email:
description: Individual's email address
type: string
example: sarah.mason@klaviyo-demo.com
nullable: true
phone_number:
description: Individual's phone number in E.164 format
type: string
example: '+15005550006'
nullable: true
external_id:
description: A unique identifier used by customers to associate Klaviyo profiles with profiles in an external system, such as a point-of-sale system. Format varies based on the external system.
type: string
nullable: true
_kx:
description: 'Also known as the `exchange_id`, this is an encrypted identifier used for identifying a
profile by Klaviyo''s web tracking.
You can use this field as a filter when retrieving profiles via the Get Profiles endpoint.'
type: string
nullable: true
first_name:
description: Individual's first name
type: string
example: Sarah
nullable: true
last_name:
description: Individual's last name
type: string
example: Mason
nullable: true
organization:
description: Name of the company or organization within the company for whom the individual works
type: string
example: Example Corporation
nullable: true
locale:
description: The locale of the profile, in the IETF BCP 47 language tag format like (ISO 639-1/2)-(ISO 3166 alpha-2)
type: string
example: en-US
nullable: true
title:
description: Individual's job title
type: string
example: Regional Manager
nullable: true
image:
description: URL pointing to the location of a profile image
type: string
example: https://images.pexels.com/photos/3760854/pexels-photo-3760854.jpeg
nullable: true
location:
$ref: '#/components/schemas/ProfileLocation'
nullable: true
properties:
description: An object containing key/value pairs for any custom properties assigned to this profile
type: object
example:
pseudonym: Dr. Octopus
nullable: true
meta:
$ref: '#/components/schemas/ProfileMeta'
nullable: true
required:
- type
- attributes
EventBulkCreateEnum:
type: string
enum:
- event-bulk-create
ProfileEnum:
type: string
enum:
- profile
ClientBISSubscriptionCreateQuery:
type: object
properties:
data:
$ref: '#/components/schemas/ClientBISSubscriptionCreateQueryResourceObject'
required:
- data
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
OnsiteSubscriptionCreateQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/SubscriptionEnum'
attributes:
type: object
properties:
custom_source:
description: A custom method detail or source to store on the consent records for this subscription.
type: string
example: Homepage footer signup form
nullable: true
profile:
type: object
properties:
data:
$ref: '#/components/schemas/ProfileUpsertQueryWithSubscriptionsResourceObject'
required:
- data
required:
- profile
relationships:
type: object
properties:
list:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/ListEnum'
id:
description: The list ID to add the newly subscribed profile to.
type: string
example: Y6nRLr
required:
- type
- id
required:
- list
required:
- type
- attributes
- relationships
ReviewEnum:
type: string
enum:
- review
MetricCreateQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/MetricEnum'
attributes:
type: object
properties:
name:
description: Name of the event. Must be less than 128 characters.
type: string
example: Viewed Product
service:
description: This is for advanced usage. For api requests, this should use the default, which is set to api.
type: string
nullable: true
required:
- name
required:
- type
- attributes
RejectReasonProfanity:
type: object
properties:
reason:
description: rejected due to profanity or inappropriate content
type: string
enum:
- profanity_or_inappropriate
required:
- reason
StatisticsDTO:
type: object
properties:
average_rating:
description: The average rating
type: number
example: 4.5
nullable: true
total_reviews:
description: The total number of reviews
type: integer
example: 100
nullable: true
total_questions:
description: The total number of questions
type: integer
example: 50
nullable: true
total_ratings:
description: The total number of ratings
type: integer
example: 200
nullable: true
total_store_reviews:
description: The total number of store reviews
type: integer
example: 5000
nullable: true
average_store_rating:
description: The average rating of store reviews
type: number
example: 2
nullable: true
ReviewCreateDTO:
type: object
properties:
data:
$ref: '#/components/schemas/ReviewCreateDTOResourceObject'
required:
- data
ObjectLinks:
type: object
properties:
self:
type: string
format: uri
required:
- self
GetReviewValuesReportResponseCollection:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ReviewValuesReportResponseObjectResource'
links:
$ref: '#/components/schemas/CollectionLinks'
required:
- data
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
OnsiteProfileCreateQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/ProfileEnum'
id:
description: Primary key that uniquely identifies this profile. Generated by Klaviyo.
type: string
nullable: true
attributes:
type: object
properties:
email:
description: Individual's email address
type: string
example: sarah.mason@klaviyo-demo.com
nullable: true
phone_number:
description: Individual's phone number in E.164 format
type: string
example: '+15005550006'
nullable: true
external_id:
description: A unique identifier used by customers to associate Klaviyo profiles with profiles in an external system, such as a point-of-sale system. Format varies based on the external system.
type: string
nullable: true
anonymous_id:
type: string
nullable: true
_kx:
description: 'Also known as the `exchange_id`, this is an encrypted identifier used for identifying a
profile by Klaviyo''s web tracking.
You can use this field as a filter when retrieving profiles via the Get Profiles endpoint.'
type: string
nullable: true
first_name:
description: Individual's first name
type: string
example: Sarah
nullable: true
last_name:
description: Individual's last name
type: string
example: Mason
nullable: true
organization:
description: Name of the company or organization within the company for whom the individual works
type: string
example: Example Corporation
nullable: true
locale:
description: The locale of the profile, in the IETF BCP 47 language tag format like (ISO 639-1/2)-(ISO 3166 alpha-2)
type: string
example: en-US
nullable: true
title:
description: Individual's job title
type: string
example: Regional Manager
nullable: true
image:
description: URL pointing to the location of a profile image
type: string
example: https://images.pexels.com/photos/3760854/pexels-photo-3760854.jpeg
nullable: true
location:
$ref: '#/components/schemas/ProfileLocation'
nullable: true
properties:
description: An object containing key/value pairs for any custom properties assigned to this profile
type: object
example:
pseudonym: Dr. Octopus
nullable: true
meta:
$ref: '#/components/schemas/OnsiteProfileMeta'
nullable: true
required:
- type
- attributes
ProfileMetaPatchProperties:
type: object
properties:
append:
description: Append a simple value or values to this property array
type: object
example:
skus: '92538'
nullable: true
unappend:
description: Remove a simple value or values from this property array
type: object
example:
skus: '40571'
nullable: true
unset:
description: Remove a key or keys (and their values) completely from properties
example: skus
nullable: true
oneOf:
- type: string
- type: array
items:
type: string
OnsiteProfileCreateQuery:
type: object
properties:
data:
$ref: '#/components/schemas/OnsiteProfileCreateQueryResourceObject'
required:
- data
PushTokenEnum:
type: string
enum:
- push-token
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
ReviewProductExternalId:
type: object
properties:
external_id:
description: The external ID of the product
type: string
example: '7549950034135'
integration_key:
description: The integration key of the product in lowercase
type: string
example: shopify
enum:
- shopify
- woocommerce
required:
- external_id
- integration_key
GroupingProduct:
type: object
properties:
product_id:
description: The ID of the product
type: string
example: '12345'
required:
- product_id
BaseEventCreateQueryBulkEntryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/EventEnum'
attributes:
type: object
properties:
properties:
description: 'Properties of this event (must not exceed 400 properties). The size of the event payload must not exceed 5 MB,
and each string cannot be larger than 100 KB. For a full list of data limits on event payloads,
see [Limitations](https://developers.klaviyo.com/en/reference/events_api_overview#limitations).
Note any top-level property that is not an object can be
used to create segments. The `$extra` property records any
non-segmentable values that can be referenced later, e.g., HTML templates are
useful on a segment but are not used to create a segment.'
type: object
example:
Brand: Kids Book
ProductID: 1111
ProductName: Winnie the Pooh
time:
description: 'When this event occurred. By default, the time the request was received will be used.
The time is truncated to the second. The time must be after the year 2000 and can only
be up to 1 year in the future.'
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
nullable: true
value:
description: A numeric, monetary value to associate with this event. For example, the dollar amount of a purchase.
type: number
example: 9.99
nullable: true
value_currency:
description: The ISO 4217 currency code of the value associated with the event.
type: string
example: USD
nullable: true
backfill:
description: 'When true, the event is recorded but does NOT trigger flows. Use this when backfilling
historical events so existing flow definitions do not re-fire on events that already
fired in the past.'
type: boolean
default: false
nullable: true
metric:
type: object
properties:
data:
$ref: '#/components/schemas/MetricCreateQueryResourceObject'
required:
- data
unique_id:
description: 'A unique identifier for an event. If a unique_id is repeated for the same profile and metric,
the request will fail and no events will be processed. If this field is not
present, this field will use the time to the second. Using the default, this limits only one
event per profile per second.'
type: string
nullable: true
required:
- properties
- metric
required:
- type
- attributes
ProfileMeta:
type: object
properties:
patch_properties:
description: Specify one or more patch operations to apply to existing property data
example:
append:
skus: '92538'
$ref: '#/components/schemas/ProfileMetaPatchProperties'
nullable: true
patch_identifiers:
description: Specify one or more patch operations to apply to existing identifier data. Currently only `email` is supported, and it is used to add or remove secondary email addresses on a profile.
example:
append:
email:
- example@test.com
- another@example.com
$ref: '#/components/schemas/PatchIdentifiers'
nullable: true
PushTokenEntry:
type: object
properties:
token:
description: A push token from APNS or FCM.
type: string
example: 1234567890abcdef
platform:
description: The platform on which the push token was created. Either "ios" or "android".
type: string
enum:
- android
- ios
vendor:
description: The vendor of the push token. Either "apns" or "fcm".
type: string
example: apns
enum:
- apns
- fcm
enablement_status:
description: The enablement status for the push token.
type: string
example: AUTHORIZED
enum:
- AUTHORIZED
- DENIED
- NOT_DETERMINED
- PROVISIONAL
- UNAUTHORIZED
nullable: true
background:
description: The background state of the push token.
type: string
example: AVAILABLE
enum:
- AVAILABLE
- DENIED
- RESTRICTED
nullable: true
device_metadata:
description: Metadata about the device that created the push token.
$ref: '#/components/schemas/PushTokenDeviceMetadata'
nullable: true
required:
- token
- platform
- vendor
ClientReviewResponseDTOObjectResource:
type: object
properties:
type:
$ref: '#/components/schemas/ReviewEnum'
id:
description: The ID of the review
type: string
example: 925e385b52fb405715f3616c337cc65c
attributes:
type: object
properties:
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
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- type
- id
- attributes
- links
BackInStockSubscriptionEnum:
type: string
enum:
- back-in-stock-subscription
ReviewStatusPublished:
type: object
properties:
value:
description: Published review status
type: string
enum:
- published
required:
- value
RejectReasonPrivateInformation:
type: object
properties:
reason:
description: rejected due to private information
type: string
enum:
- private_information
required:
- reason
SMSSubscriptionParameters:
type: object
properties:
marketing:
description: The parameters to subscribe to marketing on the "SMS" Channel.
$ref: '#/components/schemas/SubscriptionParameters'
nullable: true
transactional:
description: The parameters to subscribe to transactional messaging on the "SMS" Channel.
$ref: '#/components/schemas/SubscriptionParameters'
nullable: true
ReviewValueReportGrouping:
type: object
properties:
groupings:
description: Grouping details, either by product or company
oneOf:
- $ref: '#/components/schemas/GroupingProduct'
- $ref: '#/components/schemas/GroupingCompany'
statistics:
description: Statistics related to the grouping
example:
average_rating: 4.5
total_reviews: 100
total_questions: 50
total_ratings: 200
total_store_reviews: 5000
average_store_rating: 2
$ref: '#/components/schemas/StatisticsDTO'
required:
- groupings
- statistics
GetGeofenceResponseCollection:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/GeofenceResponseObjectResource'
links:
$ref: '#/components/schemas/CollectionLinks'
required:
- data
CatalogVariantEnum:
type: string
enum:
- catalog-variant
PushTokenUnregisterEnum:
type: string
enum:
- push-token-unregister
EventsBulkCreateQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/EventBulkCreateEnum'
attributes:
type: object
properties:
backfill:
description: 'When true, the event is recorded but does NOT trigger flows. Use this when backfilling
historical events so existing flow definitions do not re-fire on events that already
fired in the past.'
type: boolean
default: false
nullable: true
profile:
type: object
properties:
data:
$ref: '#/components/schemas/OnsiteProfileCreateQueryResourceObject'
required:
- data
events:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/BaseEventCreateQueryBulkEntryResourceObject'
required:
- data
required:
- profile
- events
required:
- type
- attributes
SubscriptionEnum:
type: string
enum:
- subscription
ProfileUpsertQueryWithSubscriptionsResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/ProfileEnum'
id:
description: Primary key that uniquely identifies this profile. Generated by Klaviyo.
type: string
nullable: true
attributes:
type: object
properties:
email:
description: Individual's email address
type: string
example: sarah.mason@klaviyo-demo.com
nullable: true
phone_number:
description: Individual's phone number in E.164 format
type: string
example: '+15005550006'
nullable: true
external_id:
description: A unique identifier used by customers to associate Klaviyo profiles with profiles in an external system, such as a point-of-sale system. Format varies based on the external system.
type: string
nullable: true
_kx:
description: 'Also known as the `exchange_id`, this is an encrypted identifier used for identifying a
profile by Klaviyo''s web tracking.
You can use this field as a filter when retrieving profiles via the Get Profiles endpoint.'
type: string
nullable: true
first_name:
description: Individual's first name
type: string
example: Sarah
nullable: true
last_name:
description: Individual's last name
type: string
example: Mason
nullable: true
organization:
description: Name of the company or organization within the company for whom the individual works
type: string
example: Example Corporation
nullable: true
locale:
description: The locale of the profile, in the IETF BCP 47 language tag format like (ISO 639-1/2)-(ISO 3166 alpha-2)
type: string
example: en-US
nullable: true
title:
description: Individual's job title
type: string
example: Regional Manager
nullable: true
image:
description: URL pointing to the location of a profile image
type: string
example: https://images.pexels.com/photos/3760854/pexels-photo-3760854.jpeg
nullable: true
location:
$ref: '#/components/schemas/ProfileLocation'
nullable: true
properties:
description: An object containing key/value pairs for any custom properties assigned to this profile
type: object
example:
pseudonym: Dr. Octopus
nullable: true
meta:
$ref: '#/components/schemas/ProfileMeta'
nullable: true
subscriptions:
$ref: '#/components/schemas/SubscriptionChannels'
nullable: true
required:
- type
- attributes
RejectReasonMisleading:
type: object
properties:
reason:
description: rejected due to false or misleading content
type: string
enum:
- false_or_misleading
required:
- reason
PushSubscriptionParameters:
type: object
properties:
marketing:
description: The parameters to subscribe to marketing on the "Push" channel.
$ref: '#/components/schemas/SubscriptionParameters'
tokens:
description: A list of push tokens to register for this profile.
type: array
items:
$ref: '#/components/schemas/PushTokenEntry'
nullable: true
anonymous_id:
description: An anonymous identifier for push-only profiles with no email/phone.
type: string
nullable: true
required:
- marketing
ReviewValuesReportEnum:
type: string
enum:
- review-values-report
GeofenceEnum:
type: string
enum:
- geofence
OnsiteProfileMeta:
type: object
properties:
patch_properties:
description: Specify one or more patch operations to apply to existing property data
example:
append:
skus: '92538'
$ref: '#/components/schemas/ProfileMetaPatchProperties'
nullable: true
patch_identifiers:
description: Specify one or more patch operations to apply to existing identifier data. Currently only `email` is supported, and it is used to add or remove secondary email addresses on a profile.
example:
append:
email:
- example@test.com
- another@example.com
$ref: '#/components/schemas/PatchIdentifiers'
nullable: true
PatchIdentifiers:
type: object
properties:
append:
type: object
unappend:
type: object
PushTokenCreateQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/PushTokenEnum'
attributes:
type: object
properties:
token:
description: A push token from APNS or FCM.
type: string
example: '1234567890'
platform:
description: The platform on which the push token was created.
type: string
enum:
- android
- ios
enablement_status:
description: This is the enablement status for the individual push token.
type: string
example: AUTHORIZED
default: AUTHORIZED
enum:
- AUTHORIZED
- DENIED
- NOT_DETERMINED
- PROVISIONAL
- UNAUTHORIZED
nullable: true
vendor:
description: The vendor of the push token.
type: string
example: apns
enum:
- apns
- fcm
background:
description: The background state of the push token.
type: string
example: AVAILABLE
default: AVAILABLE
enum:
- AVAILABLE
- DENIED
- RESTRICTED
nullable: true
device_metadata:
description: Metadata about the device that created the push token
$ref: '#/components/schemas/DeviceMetadata'
nullable: true
profile:
description: The profile associated with the push token to create/update
type: object
properties:
data:
$ref: '#/components/schemas/PushProfileUpsertQueryResourceObject'
required:
- data
required:
- token
- platform
- vendor
- profile
required:
- type
- attributes
PushTokenUnregisterQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/PushTokenUnregisterEnum'
attributes:
type: object
properties:
token:
description: A push token from APNS or FCM.
type: string
example: '1234567890'
platform:
description: The platform on which the push token was created.
type: string
enum:
- android
- ios
vendor:
description: The vendor of the push token.
type: string
example: apns
enum:
- apns
- fcm
nullable: true
profile:
description: The profile associated with the push token to create/update
type: object
properties:
data:
$ref: '#/components/schemas/ProfileUpsertQueryResourceObject'
required:
- data
required:
- token
- platform
- profile
required:
- type
- attributes
SubscriptionChannels:
type: object
properties:
email:
description: The subscription parameters to subscribe to on the "EMAIL" Channel.
$ref: '#/components/schemas/EmailSubscriptionParameters'
nullable: true
sms:
description: The subscription parameters to subscribe to on the "SMS" Channel.
$ref: '#/components/schemas/SMSSubscriptionParameters'
nullable: true
whatsapp:
description: The subscription parameters to subscribe to on the "WhatsApp" Channel.
$ref: '#/components/schemas/WhatsAppSubscriptionParameters'
nullable: true
push:
description: The subscription parameters to subscribe to on the "Push" Channel.
$ref: '#/components/schemas/PushSubscriptionParameters'
nullable: true
EventCreateQueryV2:
type: object
properties:
data:
$ref: '#/components/schemas/EventCreateQueryV2ResourceObject'
required:
- data
MetricEnum:
type: string
enum:
- metric
EventEnum:
type: string
enum:
- event
CustomQuestionDTO:
type: object
properties:
id:
description: The ID of the custom question
type: string
example: 9ff0d32e-0edb-4513-a6a5-12814a6cb755
answers:
description: The answers to the custom question
type: array
items:
type: string
example:
- M
- L
required:
- id
- answers
ReviewStatusPending:
type: object
properties:
value:
description: Pending review status
type: string
enum:
- pending
required:
- value
ReviewStatusUnpublished:
type: object
properties:
value:
description: Unpublished review status
type: string
enum:
- unpublished
required:
- value
ReviewCreateDTOResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/ReviewEnum'
attributes:
type: object
properties:
review_type:
description: The type of this review -- either a review or a question
type: string
example: review
enum:
- question
- rating
- review
- store
email:
description: The email of the author of this review
type: string
example: random.123@gmail.com
author:
description: The author of this review
type: string
example: John Doe
content:
description: The content of this review
example: This was an absolutely amazing t-shirt. I loved the color and the fit.
type: string
incentive_type:
description: The incentive type for the review
type: string
enum:
- coupon_or_discount
- employee_review
- free_product
- loyalty_points
- other
- paid_promotion
- sweepstakes_entry
nullable: true
product:
description: The product associated with this review
$ref: '#/components/schemas/ReviewProductExternalId'
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
enum:
- 1
- 2
- 3
- 4
- 5
nullable: true
title:
description: The title of this review
type: string
example: Great product!
nullable: true
custom_questions:
description: Custom question and answers for the review
type: array
items:
$ref: '#/components/schemas/CustomQuestionDTO'
example:
- id: 9ff0d32e-0edb-4513-a6a5-12814a6cb755
answers:
- M
- L
nullable: true
images:
description: The list of images submitted with this review (represented as a list of urls or base-64 encoded data-uri). 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
nullable: true
required:
- review_type
- email
- author
- content
relationships:
type: object
properties:
order:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/OrderEnum'
id:
description: The Order ID related to the review
type: string
example: '42439497119686'
required:
- type
- id
required:
- type
- attributes
PushTokenCreateQuery:
type: object
properties:
data:
$ref: '#/components/schemas/PushTokenCreateQueryResourceObject'
required:
- data
ProfileLocation:
type: object
properties:
address1:
description: First line of street address
type: string
example: 89 E 42nd St
nullable: true
address2:
description: Second line of street address
type: string
example: 1st floor
nullable: true
city:
description: City name
type: string
example: New York
nullable: true
country:
description: Country name
type: string
example: United States
nullable: true
latitude:
description: Latitude coordinate. We recommend providing a precision of four decimal places.
example: '40.7128'
nullable: true
oneOf:
- type: string
- type: number
longitude:
description: Longitude coordinate. We recommend providing a precision of four decimal places.
example: '74.0060'
nullable: true
oneOf:
- type: string
- type: number
region:
description: Region within a country, such as state or province
type: string
example: NY
nullable: true
zip:
description: Zip code
type: string
example: '10017'
nullable: true
timezone:
description: Time zone name. We recommend using time zones from the IANA Time Zone Database.
type: string
example: America/New_York
nullable: true
ip:
description: IP Address
type: string
example: 127.0.0.1
nullable: true
ProfileIdentifierDTOResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/ProfileEnum'
id:
description: Primary key that uniquely identifies this profile. Generated by Klaviyo.
type: string
example: 01GDDKASAP8TKDDA2GRZDSVP4H
nullable: true
attributes:
type: object
properties:
email:
description: Individual's email address
type: string
example: sarah.mason@klaviyo-demo.com
nullable: true
phone_number:
description: Individual's phone number in E.164 format
type: string
example: '+15005550006'
nullable: true
external_id:
description: A unique identifier used by customers to associate Klaviyo profiles with profiles in an external system, such as a point-of-sale system. Format varies based on the external system.
type: string
nullable: true
required:
- type
- attributes
GroupingCompany:
type: object
properties:
company_id:
description: The ID of the company
type: string
example: '67890'
required:
- company_id
PushTokenDeviceMetadata:
type: object
properties:
device_id:
description: Relatively stable ID for the device. Will update on app uninstall and reinstall
type: string
example: '1234567890'
nullable: true
klaviyo_sdk:
description: The name of the SDK used to create the push token.
type: string
example: swift
enum:
- android
- flutter
- flutter_community
- react_native
- swift
nullable: true
sdk_version:
description: The version of the SDK used to create the push token
type: string
example: 1.0.0
nullable: true
device_model:
description: The model of the device
type: string
example: iPhone12,1
nullable: true
os_name:
description: The name of the operating system on the device.
type: string
example: ios
enum:
- android
- ios
- ipados
- macos
- tvos
nullable: true
os_version:
description: The version of the operating system on the device
type: string
example: '14.0'
nullable: true
manufacturer:
description: The manufacturer of the device
type: string
example: Apple
nullable: true
app_name:
description: The name of the app that created the push token
type: string
example: Klaviyo
nullable: true
app_version:
description: The version of the app that created the push token
type: string
example: 1.0.0
nullable: true
app_build:
description: The build of the app that created the push token
type: string
example: '1'
nullable: true
app_id:
description: The ID of the app that created the push token
type: string
example: com.klaviyo.app
nullable: true
environment:
description: The environment in which the push token was created
type: string
example: release
enum:
- debug
- release
nullable: true
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
PushTokenUnregisterQuery:
type: object
properties:
data:
$ref: '#/components/schemas/PushTokenUnregisterQueryResourceObject'
required:
- data
PushProfileUpsertQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/ProfileEnum'
id:
description: Primary key that uniquely identifies this profile. Generated by Klaviyo.
type: string
nullable: true
attributes:
type: object
properties:
phone_number:
description: Individual's phone number in E.164 format
type: string
example: '+15005550006'
nullable: true
external_id:
description: A unique identifier used by customers to associate Klaviyo profiles with profiles in an external system, such as a point-of-sale system. Format varies based on the external system.
type: string
nullable: true
_kx:
description: 'Also known as the `exchange_id`, this is an encrypted identifier used for identifying a
profile by Klaviyo''s web tracking.
You can use this field as a filter when retrieving profiles via the Get Profiles endpoint.'
type: string
nullable: true
first_name:
description: Individual's first name
type: string
example: Sarah
nullable: true
last_name:
description: Individual's last name
type: string
example: Mason
nullable: true
organization:
description: Name of the company or organization within the company for whom the individual works
type: string
example: Example Corporation
nullable: true
locale:
description: The locale of the profile, in the IETF BCP 47 language tag format like (ISO 639-1/2)-(ISO 3166 alpha-2)
type: string
example: en-US
nullable: true
title:
description: Individual's job title
type: string
example: Regional Manager
nullable: true
image:
description: URL pointing to the location of a profile image
type: string
example: https://images.pexels.com/photos/3760854/pexels-photo-3760854.jpeg
nullable: true
location:
$ref: '#/components/schemas/ProfileLocation'
nullable: true
properties:
description: An object containing key/value pairs for any custom properties assigned to this profile
type: object
example:
pseudonym: Dr. Octopus
nullable: true
meta:
$ref: '#/components/schemas/ProfileMeta'
nullable: true
email:
description: Individual's email address
type: string
example: sarah.mason@klaviyo-demo.com
nullable: true
required:
- type
- attributes
DeviceMetadata:
type: object
properties:
device_id:
description: Relatively stable ID for the device. Will update on app uninstall and reinstall
type: string
example: '1234567890'
nullable: true
klaviyo_sdk:
description: The name of the SDK used to create the push token.
type: string
example: swift
enum:
- android
- flutter
- flutter_community
- react_native
- swift
nullable: true
sdk_version:
description: The version of the SDK used to create the push token
type: string
example: 1.0.0
nullable: true
device_model:
description: The model of the device
type: string
example: iPhone12,1
nullable: true
os_name:
description: The name of the operating system on the device.
type: string
example: ios
enum:
- android
- ios
- ipados
- macos
- tvos
nullable: true
os_version:
description: The version of the operating system on the device
type: string
example: '14.0'
nullable: true
manufacturer:
description: The manufacturer of the device
type: string
example: Apple
nullable: true
app_name:
description: The name of the app that created the push token
type: string
example: Klaviyo
nullable: true
app_version:
description: The version of the app that created the push token
type: string
example: 1.0.0
nullable: true
app_build:
description: The build of the app that created the push token
type: string
example: '1'
nullable: true
app_id:
description: The ID of the app that created the push token
type: string
example: com.klaviyo.app
nullable: true
environment:
description: The environment in which the push token was created
type: string
example: release
enum:
- debug
- release
nullable: true
OrderEnum:
type: string
enum:
- order
EventCreateQueryV2ResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/EventEnum'
attributes:
type: object
properties:
properties:
description: 'Properties of this event (must not exceed 400 properties). The size of the event payload must not exceed 5 MB,
and each string cannot be larger than 100 KB. For a full list of data limits on event payloads,
see [Limitations](https://developers.klaviyo.com/en/reference/events_api_overview#limitations).
Note any top-level property that is not an object can be
used to create segments. The `$extra` property records any
non-segmentable values that can be referenced later, e.g., HTML templates are
useful on a segment but are not used to create a segment.'
type: object
example:
Brand: Kids Book
ProductID: 1111
ProductName: Winnie the Pooh
time:
description: 'When this event occurred. By default, the time the request was received will be used.
The time is truncated to the second. The time must be after the year 2000 and can only
be up to 1 year in the future.'
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
nullable: true
value:
description: A numeric, monetary value to associate with this event. For example, the dollar amount of a purchase.
type: number
example: 9.99
nullable: true
value_currency:
description: The ISO 4217 currency code of the value associated with the event.
type: string
example: USD
nullable: true
unique_id:
description: 'A unique identifier for an event. If the unique_id is repeated for the same
profile and metric, only the first processed event will be recorded. If this is not
present, this will use the time to the second. Using the default, this limits only one
event per profile per second.'
type: string
nullable: true
backfill:
description: 'When true, the event is recorded but does NOT trigger flows. Use this when backfilling
historical events so existing flow definitions do not re-fire on events that already
fired in the past.'
type: boolean
default: false
nullable: true
metric:
type: object
properties:
data:
$ref: '#/components/schemas/MetricCreateQueryResourceObject'
required:
- data
profile:
type: object
properties:
data:
$ref: '#/components/schemas/EventProfileCreateQueryResourceObject'
required:
- data
required:
- properties
- metric
- profile
required:
- type
- attributes
OnsiteSubscriptionCreateQuery:
type: object
properties:
data:
$ref: '#/components/schemas/OnsiteSubscriptionCreateQueryResourceObject'
required:
- data
WhatsAppSubscriptionParameters:
type: object
properties:
marketing:
description: The parameters to subscribe to marketing on the "WhatsApp" Channel.
$ref: '#/components/schemas/SubscriptionParameters'
nullable: true
transactional:
description: The parameters to subscribe to transactional messaging on the "WhatsApp" Channel.
$ref: '#/components/schemas/SubscriptionParameters'
nullable: true
EmailSubscriptionParameters:
type: object
properties:
marketing:
description: The parameters to subscribe to on the "EMAIL" Channel. Currently supports "MARKETING".
$ref: '#/components/schemas/SubscriptionParameters'
required:
- marketing
GetClientReviewResponseDTOCollection:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ClientReviewResponseDTOObjectResource'
links:
$ref: '#/components/schemas/CollectionLinks'
required:
- data
SubscriptionParameters:
type: object
properties:
consent:
description: The Consent status to be set as part of the subscribe call. Currently supports "SUBSCRIBED".
type: string
example: SUBSCRIBED
enum:
- SUBSCRIBED
consented_at:
description: The timestamp of when the profile's consent was gathered. This should only be used when syncing over historical consent info to Klaviyo; if the `historical_import` flag is not included, providing any value for this field will raise an error.
type: string
format: date-time
nullable: true
required:
- consent
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
RejectReasonFake:
type: object
properties:
reason:
description: rejected due to fake content
type: string
enum:
- fake
required:
- reason
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