Changelog
Review new and breaking changes to Klaviyo's APIs.
v1 / v2 legacy APIs are scheduled to retire on June 30, 2024.
Welcome to the Klaviyo API Changelog! Review new and breaking changes to Klaviyo's APIs. Select a revision header from the table of contents on the right to review changes for a specific revision. To view API reference and guides for a specific revision header, select it from the version dropdown in the upper left menu.
Help shape the roadmap for Klaviyo’s developer experience!
Do you have feedback regarding Klaviyo’s API docs and guides? Our sample code or SDKs? Our developer forum or blog? If so, Klaviyo is looking for your thoughts to help us prioritize areas of focus when it comes to our developer experience.
This survey is hosted by an external party, Qualtrics, so the link above does not lead to our website. Your responses are subject to Klaviyo’s Privacy Policy and the following legal terms and services.
Revision 2023-08-15
(GA)
2023-08-15
(GA)New Endpoints
Flow Message Templates
- You can now retrieve the templates associated with flow messages using Get Flow Message Template or Get Flow Message Relationships Template. You’re also able to include the template HTML for a flow message using
GET /api/flow-messages/FLOW_MESSAGE_ID?include=template
.
Create or Update Push Tokens
- We have added an endpoint to create push tokens, Create or Update Push Token. This endpoint can be used to migrate profiles and their push tokens from another platform to Klaviyo. If you’re looking to register push tokens from users’ devices, please use our mobile SDKs.
Revision 2023-08-15.pre
(Beta)
2023-08-15.pre
(Beta)Endpoints in beta are subject to change and should not be used in production. To learn more see our API versioning and deprecation policy.
If you have feedback about these endpoints, please reach out in our developer community or fill out this form to provide feedback.
New Endpoints
Coupon APIs
- We have added support for creating coupons and coupon codes for use in messaging via our APIs. Check out the Coupons API guide for more information.
Revision 2023-07-15
(GA)
2023-07-15
(GA)New endpoints
Back in stock APIs
- We have added support for subscribing to back in stock in our latest API revision. Not only can you subscribe profiles to back in stock notifications for email, but also you can subscribe profiles to back in stock for SMS. To learn more, check out our guide to setting up back in stock.
Campaign APIs: SMS support + relationships support
- Get Campaigns and Create Campaign: CRUD support for SMS campaigns is now available. You can also now retrieve all messages for a campaign to easily view performance data on campaigns where you’re running A/B tests. To support this functionality, we introduced a relationship between campaigns and campaign messages, and campaign messages and templates.
Bulk Create Client Events API
- Bulk Create Client Events: It is now easier and more performant to track activity for a profile from client-side contexts, such as the browser. Send events in a batch for a single profile, saving data and battery for your end-users’ devices.
Push Token Registration APIs
- Create or Update Client Push Token and Unregister Client Push Token: Register and unregister push tokens. If you have a native iOS or Android app, we highly recommend that you use our mobile SDKs directly (Swift SDK, Android SDK).
Improved Endpoints
- Update Profile now supports appending, unappending, and unsetting profile properties in the
meta.patch_properties
section of the request payload usingappend
unappend
andunset
keys.
Breaking changes
Relationship standardizationWe are making a number of changes across endpoints to standardize how we handle relationships in our APIs and ensure consistently typed objects across endpoints. For example, you can create a profile in our APIs in the same shape, whether you’re calling the profiles endpoint or the events endpoint to do so. For more information about how to handle relationships with this revision, check out our relationships migration guide.
The changes include:
Updating 1:1 relationships to use singular tense and an object (instead of plural and an array)
- Example:
GET https://a.klaviyo.com/api/flow-actions/1/?include=flows
(now "flow")Moving related object IDs from the attributes payload to relationships
- Example:
POST https://a.klaviyo.com/api/tags/
Specifying a relationship between two Klaviyo objects to allow for improved consistency and greater interoperability across endpoints
- Example:
POST https://a.klaviyo.com/api/events/
. You can now create/update a profile for an event in the same way you would when using the Profiles API directly.These changes improve the connectivity and consistency across our API surface and make it much easier to accomplish tasks that involve relationships across resources. Previous to this revision, getting the template content for a campaign required 3 API calls. After this release, you can do it in just one:
GET /api/campaigns/:id/campaign-messages/?include=template
.
Removedcompany_id
from Get Template(s)We removed the
company_id
from the response for Get Template and Get Templates. If you need to obtain the company ID / public API key for an account, please use the Accounts API.
Update 2023-07-20
- Added
reply_to_email
,cc_email
, andbcc_email
field options in the following places:- The Create Campaign endpoint
- The Update Campaign Message endpoint
- Any campaign message response
Revision 2023-06-15
(GA)
2023-06-15
(GA)New endpoints
Accounts: Use our new Accounts API endpoints to retrieve account-specific data (contact information, timezone, currency, Public API key, etc.) or test if a private API key belongs to the correct account prior to performing subsequent actions with the API.
Get List and Segment member count
- Get List and Get Segment now support returning the count of members in the response by including
?additional-fields[segment]=profile_count
or?additional-fields[list]=profile_count
in the request parameters.
Rate limit increases
- Get List Profiles, Get Segment Profiles, and Get Profiles were increased to the L rate limit tier.
Framework Improvements
- Implemented Query Param Rate Limits
To access the new accounts scope, you’ll need to generate a new Private API Key
Get Account and Get Accounts require a new private API key scope (Account Read), so you will need to generate a new private API key that includes the scope in order to use the endpoint. You will need to generate a new private API key even for previously created Full Access scoped keys if the scope was not available when you generated that key.
Revision 2023-02-22
(GA)
2023-02-22
(GA)New endpoints
- Campaigns: Use our new Campaigns API endpoints to programmatically create, update, delete, and send email campaigns. See the API reference documentation for more info. We plan to introduce SMS support in the future.
Breaking changes
- Updated Flows endpoints to use cursor-based pagination. This change brings flows pagination to parity with our other API endpoints. You can learn more about cursor-based pagination in our API Overview.
- Profile fields can now be nulled out by passing
null
into a profile field via the Update Profile endpoint.
Update 2023-06-06
- The steady rate limit for Create Client Subscription has increased to
700/m
.
Update 2023-05-30
- Get Profiles now support filtering by a
datetime
range. You can filter adatetime
range by using thegreater-than
andless-than
filters in combination, similar to this example:https://a.klaviyo.com/api/profiles/?filter=less-than(updated,2023-04-26T00:00:00Z),greater-than(updated,2023-04-19T00:00:00Z)
.
Update 2023-04-06
- The Get Profile and Get Profiles endpoints now allow you to request predictive analytics such as customer lifetime value (CLV), along with other profile information. You can request these new fields by appending
?additional-fields[profile]=predictive_analytics
to the request URL. - Each
relationship
endpoint has been split to make a specific endpoint URL for each unique related resource field. Note, this is only a documentation change. For example, theGet Profile Relationships
endpoint is now split into Get Profile Relationships Lists and Get Profile Relationships Segments endpoints in the documentation. The URLs for these endpoints remain unchanged.
Update 2023-03-28
- You can now
filter
events using theprofile_id
field in Get Events. This allows you to retrieve all the events for a given profile for all metrics or retrieve events for a specific metric if paired with themetric_id
filter.
Update 2023-03-07
- The Get Profile and Get Profiles endpoints now include each profile’s email and SMS subscription information, including:
- Their current consent status.
- When and how they subscribed or unsubscribed.
- Their global and list-specific suppressions (email only).
- You can now
filter
andsort
profiles using theupdated
field in Get Profiles.
Revision 2023-01-24
(GA)
2023-01-24
(GA)New endpoints
- Tags: Use our new Tags API endpoints to create, read, update, and delete tags on various Klaviyo objects such as campaigns, flows, lists and segments. See the API reference documentation for more info.
- Data Privacy - Request Profile Deletion: Use our new Data Privacy - Request Profile Deletion API endpoint to delete profiles with a provided identifier (i.e.
profile_id
,email
,phone_number
). See the API reference documentation for more info.
Breaking changes
- Changed url path for Create Template Render from
https://a.klaviyo.com/api/templates/{id}/render/
tohttps://a.klaviyo.com/api/template-render/
- Changed url path for Create Template Clone from
https://a.klaviyo.com/api/templates/{id}/clone/
tohttps://a.klaviyo.com/api/template-clone/
Update 2023-02-14
- The
price
field can now be optionally supplied in the payload for Create Catalog Item and Update Catalog Item endpoints. This field can be used to set the price on the catalog item.
Update 2023-02-07
-
A
channels
object can now be optionally supplied in the payload for the Subscribe Profiles endpoint. Whenchannels
is provided, only the specified channels and message types will be subscribed. Ifchannels
is not provided, we will subscribe all channels for which identifiers (i.e.phone_number
oremail
) are provided. -
The
profile_id
field can now be optionally supplied in the payload for the Subscribe Profiles endpoint. This will be the id of the profile to subscribe.
Revision 2022-10-17
(GA)
2022-10-17
(GA)- Welcome to our new API changelog! This log will be kept up-to-date on the latest changes, bug fixes, and breaking changes to Klaviyo's APIs. Please note that this changelog only includes changes to new APIs released after 10/19/2022.
- For further information about revisions and breaking changes, please review the API versioning & deprecation policy.
- Kickstart your migration to Klaviyo's new APIs with the API comparison chart, a detailed overview of what's changed from the v1/v2 endpoints to the new endpoints.
Update 2023-01-20
- The
list_id
attribute for the Unsubscribe Profiles endpoint is now an optional attribute instead of a required.
Update 2023-01-11
- The Create Profile and Update Profile endpoints now accept a phone number as an identifier even if SMS is not set up in the associated Klaviyo account. A successful call requires one other profile identifier attribute (
email
,external_id
, oranonymous_id
), in addition to a phone number.
Update 2022-12-19
- The reference documentation and OpenAPI Spec (OAS) for the Create Template Render and Create Template Clone endpoints have been updated to reflect the correct required fields. This update resolves a minor bug in our documentation where a required field needed to call the endpoints successfully was missing. No changes have been made to these endpoints.
Update 2022-11-02
Breaking change
- Removed the
updated
filter parameter from the Get Profiles endpoint. This filter parameter was not intended for GA release and is not officially supported.- This change takes effect immediately due to site reliability concerns. Please refer to the breaking change policy for more information.
Updated over 1 year ago