v1/v2 legacy APIs are scheduled to retire on June 30, 2024.
Users of Klaviyo's v1/v2 APIs have until June 30, 2024 to migrate to our new APIs. At this time, our v1/v2 APIs will officially be retired. To learn more about Klaviyo’s API lifecycle, check out our updated API versioning and deprecation policy.
With Klaviyo’s new APIs, we’ve added improvements to our API functionality, new endpoints, and new features to some of our existing endpoints.
If you’re a developer who is newer to our APIs and want a step-by-step overview of how to get set up with Klaviyo, please check out our Get started with Klaviyo guide.
Consult the following docs for important information about our new APIs:
If you are currently using our v1/v2 APIs and are looking for equivalent endpoints in our new APIs, we have created a comparison chart that you can use to find the new endpoint. If you want to learn how to migrate to our new endpoints via use cases, read on below to learn best practices.
Depending on what you're doing with Klaviyo’s APIs, the best migration may not be a drop-in endpoint replacement. Our new APIs offer many new features that make drop-in replacements the non-optimal solution.
For example, if you are currently using a workflow that queries events and then queries the user for each event on our v1/v2 APIs, that previously required chaining several API calls. With our new APIs, this can be done much more efficiently. Below, we'll cover a set of core use cases to help you identify the new workflows that are appropriate replacements for our v1/v2 APIs.
Querying events is now accomplished through the Events API. The Events API request is designed for returning the raw data for events that meet the conditions of the request parameters.
Previously, querying event aggregates was accomplished through directly querying events and doing arithmetic operations on your end. We have improved this experience by adding new functionality to our Query Metric Aggregates endpoint. The Query Metric Aggregates API request is designed for aggregating data for events over a specified interval, e.g. to get the number of unique email clicks last month, the total purchase revenue for all Placed Order events in the last week, etc.
Creating and updating profiles is now accomplished through two distinct endpoints, which aligns with REST best practices for a more consistent experience. Previously, profiles were created and updated via the Identify API; this has been improved to distinct operations, which can help avoid accidentally overwriting profile properties. Now, to create a profile, utilize the Profiles API. To update a profile, utilize the Update Profile PATCH endpoint. We also have client-side endpoints to assist with this use case (see below).
Adding and removing subscriptions is now accomplished through two new endpoints. To subscribe a profile, use the Subscribe Profiles endpoint. If the list in the subscribe request has double opt-in enabled, the profile will receive a message requiring their confirmation before they are subscribed. To unsubscribe a profile, use the Unsubscribe Profiles endpoint. Both of these endpoints allow up to 100 profiles per API request. To add a profile to a list without changing the profile’s subscription status, you can use the Add Profile to List relationship endpoint.
Suppressing and unsuppressing profiles is now accomplished through two new endpoints that follow similar patterns to subscriptions, but without an accompanying list. To suppress a profile, use the Suppress Profiles endpoint. To unsuppress a profile, the Unsuppress Profiles endpoint. A profile that was suppressed due to a hard bounced email will not be unsuppressed. A hard bounce results from an invalid email (either domain or email address is invalid).
Querying profiles can now be accomplished through our new Get Profiles endpoint. This endpoint allows filter operations for profiles that match the criteria, and responses for profiles that match for several fields, including
created. This improves our old Get Profile endpoint by allowing querying of multiple profiles at once, with a maximum response of 100 profiles per request.
Deleting profiles can be accomplished by using our Request Profile Deletion endpoint. You can delete profiles based on
profile_id. All profiles that match the provided identifier will be deleted. This endpoint is useful for GDPR and CCPA deletion requests.
Campaign creation and updating is very similar to our v1/v2 APIs. Management of campaign actions has been improved through our jobs management tooling. Sending campaigns is now accomplished through our Create Campaign Send Job endpoint. You can retrieve and manage the status of the created campaign send jobs through our Get Campaign Send Job endpoint and our Update Campaign Send Job endpoint. You can delete a campaign using the Delete Campaign endpoint.
Template creation and updating is very similar to our v1/v2 APIs with some quality-of-life improvements. Instead of formerly requiring a singular html resource, Create Template now breaks out parameters inside the data object for
text (plaintext version of email template) and the option to specify
return_fields to help limit the response. Another improvement is our new Get Template endpoint to retrieve singular template resources. To test templates, you can create a metric-triggered flow and trigger an event for the metric to send the template.
Querying the lists and segments for profiles has gotten major upgrades in our new APIs. Previously, we did not have a straightforward way to ask “what are all the lists or segments a profile is in?”. We’ve added endpoints for Get Profile Lists and Get Profile Segments to return list and segment memberships for profiles.
Adding a profile to a list is similar to our v1/v2 functionality. Our new endpoint Add Profile to List is more explicit in adding a related resource in the form of a profile to a list. This endpoint can also be used to add a tag to the list, as another supported type of related resource.
Client-side functionality not using klaviyo.js, such as tracking profiles, subscriptions, and events can be accomplished through our new endpoints. For tracking events, use Create Client Event. For client-side subscriptions, use Create Client Subscription. For client-side profile creation and updating, use our Create or Update Client Profile endpoint.
If you have a use case that is not provided here, please join Klaviyo's Developer Group and provide your use case to learn from our team.
We also recommend experimenting with our new APIs using our Postman collection.
Updated about 1 month ago