# Comparison chart: v1/v2 to new endpoints

Learn about the differences between our v1/v2 APIs and our new APIs.

> 📘 We've updated our API versioning and deprecation policy
>
> Review our <a href="https://developers.klaviyo.com/en/docs/api_versioning_and_deprecation_policy" target="_blank">updated API versioning and deprecation policy</a> to learn about our date-versioned APIs, non-breaking and breaking changes, our API lifecycle, and more to effectively manage your API usage.

With Klaviyo’s new APIs, we’ve added improvements to our API functionality, new endpoints, and new features to some of our existing endpoints.

## Comparison chart: v1/v2 and corresponding new API endpoints

This table covers improved functionality for endpoints in Klaviyo’s new APIs that have corresponding endpoints in our v1/v2 APIs. New endpoints that have no corresponding older version are listed in a separate table below. Note that some v1/v2 endpoints correspond to multiple new endpoints for different uses.

[block:parameters]
{
  "data": {
    "h-0": "v1/v2 endpoint",
    "h-1": "Supported features",
    "h-2": "New endpoint",
    "h-3": "Supported features",
    "0-0": "GET  \n/api/v1/metrics",
    "0-1": "<ul><li>Get all metrics in an account  \n<li>Returns 50 to 100 results per page  \n<li>Returns a page based on a specified integer</ul>",
    "0-2": "[GET  \n/api/metrics](https://developers.klaviyo.com/en/reference/get_metrics)",
    "0-3": "<ul><li>Get all metrics in an account  \n<li>Request specific fields with sparse fieldsets  \n<li>Filter requests by specific fields, including `integration.category` and `integration.name`  \n<li>Returns a maximum of 200 events per page, which can be paginated with cursor-based pagination</ul>",
    "1-0": "GET  \n/api/v1/metrics/timeline",
    "1-1": "<ul><li>Returns a batched timeline of all events in your account  \n<li>Number of events to return in a batch: default = 50, max = 100  \n<li>Sort order for timeline either descending or ascending</ul>",
    "1-2": "[GET  \n/api/events](https://developers.klaviyo.com/en/reference/get_events)",
    "1-3": "<ul><li>Get all events in an account  \n<li>Requests can be sorted by the following fields: `datetime`, `timestamp`  \n<li>Use filters to narrow your results to specific metrics  \n<li>Request specific fields using sparse fieldsets  \n<li>Include parameters can be provided to get the following related resource data: `metrics`, `profiles`  \n<li>Returns a maximum of 200 events per page, which can be paginated with cursor-based pagination</ul>",
    "2-0": "GET  \napi/v1/metric/{metric_id}/  \ntimeline",
    "2-1": "<ul><li>Returns a batched timeline for one specific metric  \n<li>Number of events to return in a batch, max = 100  \n<li>Sort order for timeline either descending or ascending</ul>",
    "2-2": "[GET  \n/api/events  \n?filter=equals  \n(metric_id,”{metric_id}”)](https://developers.klaviyo.com/en/reference/get_events)",
    "2-3": "<ul><li>Get all events for a single metric  \n<li>Requests can be sorted by the following fields:  \n`datetime`, `timestamp`  \n<li>Use filters to narrow your results to specific metrics  \n<li>Request specific fields using sparse fieldsets  \n<li>Include parameters can be provided to get the following related resource data: `metrics`, `profiles`  \n<li>Returns a maximum of 200 events per page, which can be paginated with cursor-based pagination<ul>",
    "3-0": "GET  \n/api/v1/metric/{metric_id}/  \nexport",
    "3-1": "<ul><li>Exports event data from Klaviyo, optionally filtering and segmenting on available event properties.  \n<li>Note that the only comparison operator currently supported is = </ul>",
    "3-2": "See our new [Reporting API](https://developers.klaviyo.com/en/reference/query_campaign_values) to query campaign and flow data.",
    "3-3": "<ul>  \n<li>Request campaign and flow performance data that matches the data shown in Klaviyo.  \n<li>Query passed in JSON request body  \n<li>Return the overall value of statistics for a given campaign or flow.  \n<li>Request data by statistic, timeframe, interval, and metric ID.  \n<li>Filter the query by send channel and/or campaign ID.  \n</ul>",
    "4-0": "POST  \n/api/track",
    "4-1": "<ul><li>Create a new event to track a profile’s activity  \n<li>Can accept payloads up to approximately 1 MB</ul>",
    "4-2": "[POST  \n/client/events](https://developers.klaviyo.com/en/reference/create_client_event)",
    "4-3": "<ul><li>Create a new event to track a profile’s activity, designed to be called from publicly-browseable, client-side environments only  \n<li>To create events from server-based applications, please use POST /api/events  \n<li>Accepts plain `application/json`, rather than `application/x-www-form-urlencoded` payloads, like the old endpoints</ul>",
    "5-0": "POST  \n/api/track",
    "5-1": "<ul><li>Create a new event to track a profile’s activity  \n<li>Can accept payloads up to approximately 1 MB</ul>",
    "5-2": "[POST  \n/api/events](https://developers.klaviyo.com/en/reference/create_event)",
    "5-3": "<ul><li>Create a new event, designed to be called from a server-based application  \n<li>To create events called from a publicly-browsable, client-side environment, please use POST /client/events</ul>",
    "6-0": "POST  \n/api/identify",
    "6-1": "<ul><li>Track and update properties about an individual without tracking an associated event</ul>",
    "6-2": "[POST  \n/client/profiles](https://developers.klaviyo.com/en/reference/create_client_profile)",
    "6-3": "<ul><li>Create and update properties about a profile without tracking an associated event, designed to be called from publicly-browseable, client-side environments  \n<li>To create profiles from server-based applications, please use POST /api/profiles  \n<li>Accepts plain `application/json`, rather than `application/x-www-form-urlencoded` payloads, like the old endpoints</ul>",
    "7-0": "POST  \n/api/identify",
    "7-1": "<ul><li>Track and update properties about an individual without tracking an associated event</ul>",
    "7-2": "[POST  \n/api/profiles](https://developers.klaviyo.com/en/reference/create_profile)",
    "7-3": "<ul><li>Create and update profiles, designed to be called from a server-based application  \n<li>To create profiles called from publicly-browseable, client-side environments, use POST /client/profiles</ul>",
    "8-0": "POST  \n/api/identify",
    "8-1": "<ul><li>Track and update properties about an individual without tracking an associated event</ul>",
    "8-2": "[PATCH  \n/api/profiles/{id}/](https://developers.klaviyo.com/en/reference/update_profile)",
    "8-3": "<ul><li>Update a profile with the given profile ID<li>Profile fields can be nulled out by passing `null` into the associated profile field</ul>",
    "9-0": "POST  \n/api/identify",
    "9-1": "<ul><li>Track and update properties about an individual without tracking an associated event </ul>",
    "9-2": "[POST  \n/api/profile-import/{id}/](https://developers.klaviyo.com/en/reference/create_or_update_profile)",
    "9-3": "<ul><li>Given a set of profile attributes and optionally an ID, create or update a profile </ul>",
    "10-0": "POST  \n/ajax/subscriptions",
    "10-1": "<ul><li>This endpoint was never publicly documented</ul>",
    "10-2": "[POST  \n/client/subscriptions](https://developers.klaviyo.com/en/reference/create_client_subscription)",
    "10-3": "<ul><li>Create a new subscription for the given list ID and channel: Email is`email`, SMS is `phone_number`  \n<li>Designed to be called from publicly-browseable, client-side environments  \n<li>To create subscriptions from server-based applications,  use POST /api/profile-subscription-bulk-create-jobs</ul>",
    "11-0": "POST  \n/ajax/subscriptions",
    "11-1": "<ul><li>This endpoint was never publicly documented</ul>",
    "11-2": "[POST  \n/api/  \nprofile-subscription-  \nbulk-create-jobs](https://developers.klaviyo.com/en/reference/subscribe_profiles)",
    "11-3": "<ul><li>Subscribe one or more profiles to email marketing, SMS marketing, or both  \n<li>Designed to be called from server-based applications  \n<li>To create subscriptions from publicly-browseable, client-side environments, use POST /client/subscriptions</ul>",
    "12-0": "POST  \n/api/v1/people/exclusions",
    "12-1": "<ul><li>Marks a person as excluded from all email <li>This works the same way as manually excluding someone via the excluded people page  \n<li>Someone who is excluded will no longer receive any campaigns or flow emails</ul>",
    "12-2": "[POST  \n/api/  \nprofile-suppression-  \nbulk-create-jobs/](https://developers.klaviyo.com/en/reference/suppress_profiles)",
    "12-3": "<ul><li>Suppress one or more profiles  \n<li>This works the same way as manually excluding someone via the excluded people page  \n<li>Suppressed profiles will not receive email marketing  \n<li>Not supported for SMS marketing</ul>",
    "13-0": "GET  \n/api/v1/people/exclusions",
    "13-1": "<ul><li>Gets global exclusions and unsubscribes. </ul>",
    "13-2": "[GET  \n/api/profiles  \n?filter=greater-or-equal(subscriptions.  \nemail.marketing.  \nsuppression.timestamp,YYYY-MM-DD)](https://developers.klaviyo.com/en/reference/get_profiles)",
    "13-3": "<ul><li>Get all profiles that have been excluded within a specified timeframe.<li>Filter profiles by suppression fields.</ul>",
    "14-0": "GET  \n/api/v1/people/exclusions",
    "14-1": "<ul><li>Gets global exclusions and unsubscribes. </ul>",
    "14-2": "[GET  \n/api/profiles  \n?filter=equals(subscriptions.  \nemail.marketing.  \nsuppression.reason,\"UNSUBSCRIBE\")](https://developers.klaviyo.com/en/reference/get_profiles)",
    "14-3": "<ul><li>Get all profiles that have unsubscribed from email marketing.<li>Filter profiles by suppression fields.</ul>",
    "15-0": "GET  \n/api/v2/list/{list_id}/  \nexclusions/all",
    "15-1": "<ul><li>Gets all of the emails and phone numbers that have been excluded from a list along with the exclusion reasons and exclusion time.</ul>",
    "15-2": "[GET  \n/api/profiles  \n?additional-fields  \n\\[profile\\]=  \nsubscriptions&filter=  \nequals(subscriptions.  \nemail.marketing.  \nlist_suppressions.  \nlist_id,\"LIST_ID\")](ref:get_profiles)",
    "15-3": "<ul><li>Get all profiles that have been excluded from a list. <li>Filter profiles by suppression fields.</ul>",
    "16-0": "GET  \n/api/v2/people/search",
    "16-1": "<ul><li>Get a profile's Klaviyo ID given exactly one corresponding identifier, e.g., email</ul>",
    "16-2": "[GET  \n/api/profiles  \n?filter=equals  \n(email,\"EMAIL\")](https://developers.klaviyo.com/en/reference/get_profiles)",
    "16-3": "<ul><li>Get all profiles in an account <li>[Sort](https://developers.klaviyo.com/en/docs/sorting_) profiles by `id`, `created`, `updated`, `email`<li>[Filter](https://developers.klaviyo.com/en/docs/filtering_) profiles by `email`, `phone_number`, etc.</ul>",
    "17-0": "POST  \n/api/v2/people/exchange",
    "17-1": "<ul><li>Klaviyo's web tracking uses an encrypted identifier. However, there are many use cases that require developers to have access to a given profile's email or phone number  \n<li>In such cases, developers can use this operation to exchange an encrypted identifier for a profile ID, which they can then use to retrieve the full profile data (by making a subsequent request to the get-profiles operation)",
    "17-2": "[GET  \n/api/profiles  \n?filter=equals  \n(\\_kx,\"{kx_token}\")](https://developers.klaviyo.com/en/reference/get_profiles)",
    "17-3": "<ul><li>Get all profiles in an account  \n<li>Profiles can be sorted by the following fields in ascending and descending order: id, created, email  \n<li>Use filters to narrow your results  \n<li>Request specific fields using sparse fieldsets  \n<li>Use filtering by the Klaviyo \\_kx identifier",
    "18-0": "PUT  \n/api/v1/person/{person_id}",
    "18-1": "<ul><li>Add or update one or more attributes for a Person, based on the Klaviyo Person ID. If a property already exists, it will be updated. If a property is not set for that record, it will be created  \n<li>For creating or updating a profile in v1/v2, you should be using the Identify API instead  \n<li>The best use case for this endpoint is changing a profile's email address or other primary identifier after a profile already exists in Klaviyo</ul>",
    "18-2": "[POST  \n/api/profiles/](https://developers.klaviyo.com/en/reference/create_profile)",
    "18-3": "<ul><li>Create and update profiles, designed to be called from a server-based application  \n<li>To create profiles called from publicly-browseable, client-side environments, use POST /client/profiles</ul>",
    "19-0": "PUT  \n/api/v1/person/{person_id}",
    "19-1": "<ul><li>Add or update one or more attributes for a Person, based on the Klaviyo Person ID. If a property already exists, it will be updated. If a property is not set for that record, it will be created  \n<li>For creating or updating a profile in v1/v2, you should be using the Identify API instead  \n<li>The best use case for this endpoint is changing a profile's email address or other primary identifier after a profile already exists in Klaviyo</ul>",
    "19-2": "[PATCH  \n/api/profiles/{id}/](https://developers.klaviyo.com/en/reference/update_profile)",
    "19-3": "<ul><li>Update a profile with the given profile ID<li>Profile fields can be nulled out by passing `null` into the associated profile field</ul>",
    "20-0": "GET  \n/api/v1/person/{person_id}",
    "20-1": "<ul><li>Retrieves all the data attributes for a person, based on the Klaviyo Person ID</ul>",
    "20-2": "[GET  \n/api/profiles/{id}/](https://developers.klaviyo.com/en/reference/get_profile)",
    "20-3": "<ul><li>Get a profile with the given profile ID  \n<li>Request specific fields using sparse fieldsets  \n<li>Include parameters can be provided to get the following related resource data: `lists`, memberships, `segments` memberships</ul>",
    "21-0": "GET  \n/api/v1/person/{person_id}/  \nmetric/{metric_id}/timeline",
    "21-1": "<ul><li>Returns a person's batched timeline for one specific event type.</ul>",
    "21-2": "[GET  \n/api/events  \n?filter=equals  \n(profile_id,PROFILE_ID),  \nequals  \n(metric_id,METRIC_ID)](https://developers.klaviyo.com/en/reference/get_events)",
    "21-3": "<ul><li>Filter events using `profile_id` and `metric_id` to retrieve events for a specific metric for a given profile.</ul>",
    "22-0": "GET  \n/api/v1/person/{person_id}/  \nmetrics/timeline",
    "22-1": "<ul><li>Returns a batched timeline of all events for a person.</ul>",
    "22-2": "[GET  \n/api/events?filter=  \nequals(profile_id,  \nPROFILE_ID)](https://developers.klaviyo.com/en/reference/get_events)",
    "22-3": "<ul><li>Filter events using `profile_id` to retrieve all the events for a given profile for all metrics.</ul>",
    "23-0": "GET  \n/api/v2/group/  \n{list_or_segment_id}/  \nmembers/all",
    "23-1": "<ul><li>Gets all of the emails, phone numbers, and push tokens for profiles in a given list or segment</ul>",
    "23-2": "[GET  \n/api/lists  \n/{list_id}/profiles/](https://developers.klaviyo.com/en/reference/get_list_profiles)",
    "23-3": "<ul><li>Get all profiles within a list with the given list ID  \n<li>Retrieves full profile information for each list member (not just emails, phone numbers, and push tokens)  \n<li>Use filters to narrow your results  \n<li>Returns a maximum of 10 results per page, which can be paginated with cursor-based pagination</ul>",
    "24-0": "GET  \n/api/v2/group/  \n{list_or_segment_id}/  \nmembers/all",
    "24-1": "<ul><li>Gets all of the emails, phone numbers, and push tokens for profiles in a given list or segment</ul>",
    "24-2": "[GET  \n/api/segments  \n/{segment_id}/profiles/](https://developers.klaviyo.com/en/reference/get_segment_profiles)",
    "24-3": "<ul><li>Get all profiles within a segment with the given segment ID  \n<li>Retrieves full profile information for each segment member (not just emails, phone numbers, and push tokens)  \n<li>Filter to request a subset of all profiles. Profiles can be filtered by `email`, `phone_number`, and `push_token` fields  \n<li>Returns a maximum of 10 results per page, which can be paginated with cursor-based pagination</ul>",
    "25-0": "POST  \n/api/v2/list/{list_id}/  \nsubscribe",
    "25-1": "<ul><li>Subscribe profiles to a list  \n<li>Profiles will be single or double opted into the specified list in accordance with that list’s settings. Note: If you have double opt-in enabled (default behavior), users will not be added to the list until they opt in, and so the API will respond with an empty list</ul>",
    "25-2": "[POST  \n/api/  \nprofile-subscription-  \nbulk-create-jobs/](https://developers.klaviyo.com/en/reference/subscribe_profiles)",
    "25-3": "<ul><li>Subscribe one or more profiles to email marketing, SMS marketing, or both<li>Profiles will be single or double opted into the specified list in accordance with that list’s settings. Note: If you have double opt-in enabled (default behavior), users will not be added to the list until they opt in, and so the API will respond with an empty list</ul>",
    "26-0": "DELETE  \n/api/v2/list/{list_id}/  \nsubscribe",
    "26-1": "<ul><li>Unsubscribe and remove profiles from a list</ul>",
    "26-2": "[POST  \n/api/  \nprofile-subscription-  \nbulk-delete-jobs/](https://developers.klaviyo.com/en/reference/unsubscribe_profiles)",
    "26-3": "<ul><li>Unsubscribe one or more profiles from email marketing, SMS marketing, or both</ul>",
    "27-0": "POST  \n/api/v2/lists",
    "27-1": "<ul><li>Create a new list</ul>",
    "27-2": "[POST  \n/api/lists/](https://developers.klaviyo.com/en/reference/create_list)",
    "27-3": "<ul><li>Create a new list</ul>",
    "28-0": "GET  \n/api/v2/lists",
    "28-1": "<ul><li>Return a listing of all the lists in an account</ul>",
    "28-2": "[GET  \n/api/lists/](https://developers.klaviyo.com/en/reference/get_lists)",
    "28-3": "<ul><li>Get all lists in an account  \n<li>Use filters to narrow your results  \n<li>Request specific fields using sparse fieldsets  \n<li>Returns a maximum of 10 results per page, which can be paginated with cursor-based pagination</ul>",
    "29-0": "GET  \n/api/v2/list/{list_id}",
    "29-1": "<ul><li>Return information about a list</ul>",
    "29-2": "[GET  \n/api/lists/{id}/](https://developers.klaviyo.com/en/reference/get_list)",
    "29-3": "<ul><li>Get a list with the given list ID</ul>",
    "30-0": "PUT  \n/api/v2/list/{list_id}",
    "30-1": "<ul><li>Update a list's name</ul>",
    "30-2": "[PATCH  \n/api/lists/{id}/](https://developers.klaviyo.com/en/reference/update_list)",
    "30-3": "<ul><li>Update the name of a list with the given list ID</ul>",
    "31-0": "POST  \n/api/v2/list/{list_id}/  \nmembers",
    "31-1": "<ul><li>Add profiles to a list with the given list ID</ul>",
    "31-2": "[POST  \n/api/profile-bulk-import-jobs/](https://developers.klaviyo.com/en/reference/spawn_bulk_profile_import_job)",
    "31-3": "<ul><li>Add profiles to a list with the given list ID</ul><ul><li>Note: for adding one profile or a few profiles at a time, create the profile with [Create or Update Profile](https://developers.klaviyo.com/en/reference/create_or_update_profile), then use [Add Profile to List](https://developers.klaviyo.com/en/reference/create_list_relationships). </ul>",
    "32-0": "DELETE  \n/api/v2/list/{list_id}/  \nmembers",
    "32-1": "<ul><li>Remove profiles from a list with the given list ID</ul>",
    "32-2": "[DELETE  \n/api/lists/{id}  \n/relationships/  \n{related_resource}/](https://developers.klaviyo.com/en/reference/delete_list_relationships)",
    "32-3": "<ul><li>Remove a profile from a list with the given list ID</ul>",
    "33-0": "DELETE  \n/api/v2/list/{list_id}",
    "33-1": "<ul><li>Delete a list with the given list ID  \n<li>This is a destructive operation and cannot be undone  \n<li>It will also remove flow triggers associated with the list</ul>",
    "33-2": "[DELETE  \n/api/lists/{id}/](https://developers.klaviyo.com/en/reference/delete_list)",
    "33-3": "<ul><li>Delete a list with the given list ID</ul>",
    "34-0": "GET  \n/api/v1/email-templates",
    "34-1": "<ul><li>Return a list of all the email templates you've created  \n<li>The templates are returned in sorted order by name</ul>",
    "34-2": "[GET  \n/api/templates](https://developers.klaviyo.com/en/reference/get_templates)",
    "34-3": "<ul><li>Get all templates in an account  \n<li>Filter to request a subset of all templates. Templates can be sorted by the following fields, in ascending and descending order: `id`, `name`, `created`, `updated`  \n<li>Request specific fields using sparse fieldsets  \n<li>Returns a maximum of 20 results per page. Results can be paginated with cursor-based pagination</ul>",
    "35-0": "POST  \n/api/v1/email-templates",
    "35-1": "<ul><li>Create a new custom HTML email template</ul>",
    "35-2": "[POST  \n/api/templates](https://developers.klaviyo.com/en/reference/create_template)",
    "35-3": "<ul><li>Create a new custom HTML email template  \n<li>Request specific fields using sparse fieldsets</ul>",
    "36-0": "PUT  \n/api/v1/email-  \ntemplate/{template_id}",
    "36-1": "<ul><li>Update a template with the given template ID  \n<li>Only updates imported HTML templates; does not update drag and drop templates</ul>",
    "36-2": "[PATCH  \n/api/templates/{id}/](https://developers.klaviyo.com/en/reference/update_template)",
    "36-3": "<ul><li>Update a template with the given template ID  \n<li>Request specific fields using sparse fieldsets  \n<li>Only updates imported HTML templates; does not update drag and drop templates</ul>",
    "37-0": "DELETE  \n/api/v1/email-template/  \n{template_id}",
    "37-1": "<ul><li>Delete a template with the given template ID</ul>",
    "37-2": "[DELETE  \n/api/templates/{id}/](https://developers.klaviyo.com/en/reference/delete_template)",
    "37-3": "<ul><li>Deletes a template with the given template ID</ul>",
    "38-0": "POST  \n/api/v1/email-template/  \n{template_id}/clone",
    "38-1": "<ul><li>Create a clone of a template with the given template ID </ul>",
    "38-2": "[POST  \n/api/template-clone/](https://developers.klaviyo.com/en/reference/create_template_clone)",
    "38-3": "<ul><li>Create a clone of a template with the given template ID  \n<li>Request specific fields using sparse fieldsets</ul>",
    "39-0": "POST  \n/api/v1/email-template/  \n{template_id}/render",
    "39-1": "<ul><li>Render the specified template with the provided data and return HTML and text versions of the email  \n<li>This endpoint does not yet support our new template editor</ul>",
    "39-2": "[POST  \n/api/template-render/](https://developers.klaviyo.com/en/reference/create_template_render)",
    "39-3": "<ul><li>Render a template with the given template ID and context attribute  \n<li>Returns the HTML and plain text versions of the email template  \n<li>Request specific fields using sparse fieldsets</ul>",
    "40-0": "POST  \n/api/v2/data-privacy/  \ndeletion-request",
    "40-1": "<ul><li>Request a deletion for the profiles corresponding to an email address, phone number, or person identifier (profile ID)  \n<li>Note that only one identifier (email, phone_number, or person_id) can be specified</ul>",
    "40-2": "[POST  \n/api/data-privacy-deletion-jobs/](https://developers.klaviyo.com/en/reference/request_profile_deletion)",
    "40-3": "<ul><li>Request a deletion for the profiles corresponding to one of the following identifiers: email, phone_number, or profile_id. If multiple identifiers are provided, we will return an error</ul>",
    "41-0": "GET  \n/api/v1/campaigns",
    "41-1": "<ul><li>Get all campaigns in an account  \n<li>Returns 0 to 100 results per page  \n<li>Offset pagination  \n<li>Results are sorted by descending `created_at` timestamp</ul>",
    "41-2": "[GET  \n/api/campaigns/](https://developers.klaviyo.com/en/reference/get_campaigns)",
    "41-3": "<ul><li>Get all campaigns in an account.  \n<li>Cursor-based pagination.  \n<li>Ability to specify sort order.  \n<li>Ability to filter by various attributes.</ul>",
    "42-0": "POST  \n/api/v1/campaigns",
    "42-1": "<ul><li>Create a new campaign in draft mode.</ul>",
    "42-2": "[POST  \n/api/campaigns/](https://developers.klaviyo.com/en/reference/create_campaign)",
    "42-3": "<ul><li>Creates a new campaign in draft mode.  \n<li>More granular send and tracking options.</ul>",
    "43-0": "GET  \n/api/v1/campaign/  \n{campaign_id}",
    "43-1": "<ul><li>Get details for a specific campaign.</ul>",
    "43-2": "[GET  \n/api/campaigns/{id}/](https://developers.klaviyo.com/en/reference/get_campaign)",
    "43-3": "<ul><li>Get details for a specific campaign.</ul>",
    "44-0": "PUT  \n/api/v1/campaign/  \n{campaign_id}",
    "44-1": "<ul><li>Update details of a campaign.  \n<li>You can update a campaign's name, subject, from email address, from name, template or list.</ul>",
    "44-2": "[PATCH  \n/api/campaigns/{id}/](https://developers.klaviyo.com/en/reference/update_campaign)",
    "44-3": "<ul><li>Update details of a campaign.  \n<li>Ability to configure more granular send and tracking options.</ul>",
    "45-0": "POST  \n/api/v1/campaign/  \n{campaign_id}/send",
    "45-1": "<ul><li>Queues a campaign for immediate delivery.</ul>",
    "45-2": "[POST  \n/api/campaign-send-  \njobs/](https://developers.klaviyo.com/en/reference/create_campaign_send_job)",
    "45-3": "<ul><li>Trigger a campaign to send asynchronously.</ul>",
    "46-0": "POST  \n/api/v1/campaign/  \n{campaign_id}/schedule",
    "46-1": "<ul><li>Schedules a campaign for a time in the future.</ul>",
    "46-2": "[POST  \n/api/campaigns/](https://developers.klaviyo.com/en/reference/create_campaign)",
    "46-3": "<ul><li>Creates a campaign given a set of parameters, then returns it.</ul>",
    "47-0": "POST  \n/api/v1/campaign/  \n{campaign_id}/cancel",
    "47-1": "<ul><li>Cancels a campaign send.  \n<li>Marks a campaign as canceled.</ul>",
    "47-2": "[PATCH  \n/api/campaign-send-  \njobs/{id}/](https://developers.klaviyo.com/en/reference/update_campaign_send_job)",
    "47-3": "<ul><li>Permanently cancel the campaign, setting the status to CANCELED or revert the campaign, setting the status back to DRAFT.</ul>",
    "48-0": "POST  \n/api/v1/campaign/  \n{campaign_id}/clone",
    "48-1": "<ul><li>Creates a copy of a campaign.  \n<li>The new campaign starts as a draft.</ul>",
    "48-2": "[POST  \n/api/campaign-clone/](https://developers.klaviyo.com/en/reference/create_campaign_clone)",
    "48-3": "<ul><li>Clones an existing campaign, returning a new campaign based on the original with a new ID and name.</ul>",
    "49-0": "GET  \n/api/v1/campaign/  \n{campaign_id}/recipients",
    "49-1": "<ul><li>Returns summary information about email recipients for the campaign specified that includes each recipient’s email, customer ID, and status.</ul>",
    "49-2": "[GET  \n /api/campaigns/](https://developers.klaviyo.com/en/reference/get_campaigns)  \n[GET  \n/api/segments/  \n{segment_id}/profiles/](https://developers.klaviyo.com/en/reference/get_segment_profiles)  \n[GET  \n/api/lists/  \n{list_id}/profiles/](https://developers.klaviyo.com/en/reference/get_list_profiles)",
    "49-3": "<ul><li>Returns some or all campaigns based on /v2 endpoint filters (`GET /api/campaigns`).</ul>",
    "50-0": "GET  \n/api/v1/campaign/  \n{campaign_id}  \nGET  \n/api/v1/email-templates/",
    "50-1": "<ul><li>Gets a campaign's info including its template id.  \n<li>Returns a list of all email templates which can be searched by template id. </ul>",
    "50-2": "[GET  \n/api/campaigns/{id}/  \ncampaign-messages/  \n?include=template](https://developers.klaviyo.com/en/reference/get_campaign)",
    "50-3": "<ul><li>Returns the messages for a given  \ncampaign including each  \nmessage's template details.</ul>"
  },
  "cols": 4,
  "rows": 51,
  "align": [
    "left",
    "left",
    "left",
    "left"
  ]
}
[/block]

## New endpoints without corresponding v1/v2 endpoints

[block:parameters]
{
  "data": {
    "h-0": "New endpoint",
    "h-1": "Supported features",
    "0-0": "[Catalogs (all endpoints)](https://developers.klaviyo.com/en/reference/get_catalog_items)",
    "0-1": "<ul><li>See API reference for details</ul>",
    "1-0": "[Coupons (all endpoints)](https://developers.klaviyo.com/en/reference/coupons)",
    "1-1": "<ul><li>See API reference for details</ul>",
    "2-0": "[Flows (all endpoints)](https://developers.klaviyo.com/en/reference/get_flows)",
    "2-1": "<ul><li>See API reference for details</ul>",
    "3-0": "[Images (all endpoints)](https://developers.klaviyo.com/en/reference/images)",
    "3-1": "<ul><li>See API reference for details</ul>",
    "4-0": "[Reporting (all endpoints)](query_campaign_values)",
    "4-1": "<ul><li>See API reference for details</ul>",
    "5-0": "[Tags (all endpoints)](https://developers.klaviyo.com/en/reference/get_tags)",
    "5-1": "<ul><li>See API reference for details</ul>",
    "6-0": "[GET /api/segments](https://developers.klaviyo.com/en/reference/get_segments)",
    "6-1": "<ul><li>Get all segments in an account <li>Filter to request a subset of all segments <li>Segments can be filtered by `name`, `created`, and `updated` fields <li>Returns a maximum of 10 results per page, which can be paginated with cursor-based pagination</ul>",
    "7-0": "[GET /api/segments/{id}/](https://developers.klaviyo.com/en/reference/get_segment)",
    "7-1": "<ul><li>Get a segment with the given segment ID</ul>",
    "8-0": "[PATCH /api/segments/{id}/](https://developers.klaviyo.com/en/reference/update_segment)",
    "8-1": "<ul><li>Update the name of a segment with the given segment ID</ul>",
    "9-0": "[GET /api/segments/{id}/relationships/{related_resource}/](https://developers.klaviyo.com/en/reference/get_segment_relationships_profiles)",
    "9-1": "<ul><li>Get all profile membership relationships for the given segment ID <li>Returns a maximum of 10 results per page, which can be paginated with cursor-based pagination</ul>",
    "10-0": "[GET /api/lists/{id}/relationships/{related_resource}/](https://developers.klaviyo.com/en/reference/get_list_relationships_profiles)",
    "10-1": "<ul><li>Get profile membership relationships for a list with the given list ID <li>Returns a maximum of 10 results per page, which can be paginated with cursor-based pagination</ul>",
    "11-0": "[GET /api/profiles/{id}/relationships/{related_resource}/](https://developers.klaviyo.com/en/reference/get_profile_relationships_lists)",
    "11-1": "<ul><li>Get list membership or segment membership relationships for a profile with the given profile ID</ul>",
    "12-0": "[GET /api/profiles/](https://developers.klaviyo.com/en/reference/get_profiles)",
    "12-1": "<ul><li>Get all profiles in an account <li>Profiles can be sorted by the following fields, in ascending and descending order: `id`, `created`, `email` <li>Use filters to narrow your results. Request specific fields using sparse fieldsets <li>Returns a minimum of 20 and a maximum of 100 profiles per page using the `page[size]` query parameter, which can be paginated with cursor-based pagination</ul>",
    "13-0": "[GET /api/profiles/{profile_id}/lists/](https://developers.klaviyo.com/en/reference/get_profile_lists)",
    "13-1": "<ul><li>Get list memberships for a profile with the given profile ID</ul>",
    "14-0": "[GET /api/profiles/{profile_id}/segments/](https://developers.klaviyo.com/en/reference/get_profile_segments)",
    "14-1": "<ul><li>Get segment memberships for a profile with the given profile ID</ul>",
    "15-0": "[POST /api/profile-suppression-bulk-delete-jobs/](https://developers.klaviyo.com/en/reference/unsuppress_profiles)",
    "15-1": "<ul><li>Unsuppress one or more profiles <li>Only manually suppressed profiles will be unsuppressed and able to receive email marketing <li>Not supported for SMS marketing",
    "16-0": "[GET api/metrics/{id}/](https://developers.klaviyo.com/en/reference/get_metric)",
    "16-1": "<ul><li>Get a metric with the given metric ID <li>Request specific fields using sparse fieldsets</ul>",
    "17-0": "[GET /api/events/{id}/](https://developers.klaviyo.com/en/reference/get_event)",
    "17-1": "<ul><li>Get an event with the given event ID <li>Request specific fields using sparse fieldsets <li>Include parameters can be provided to get the following related resource data: `metrics`, `profiles`</ul>",
    "18-0": "[GET /api/events/{id}/metrics/](https://developers.klaviyo.com/en/reference/get_event_metric)",
    "18-1": "<ul><li>Get the metric for an event with the given event ID <li>Request specific fields using sparse fieldsets</ul>",
    "19-0": "[GET /api/events/{id}/profile/](https://developers.klaviyo.com/en/reference/get_event_profile)",
    "19-1": "<ul><li>Get the profile associated with an event with the given event ID</ul>",
    "20-0": "[GET /api/events/{id}/relationships/{related_resource}/](https://developers.klaviyo.com/en/reference/get_event_relationships_metric)",
    "20-1": "<ul><li>Get metrics or profile relationships for an event with the given event ID</ul>",
    "21-0": "[GET /api/templates/{id}/](https://developers.klaviyo.com/en/reference/get_template)",
    "21-1": "<ul><li>Get a template with the given template ID Request specific fields using sparse fieldsets</ul>",
    "22-0": "[DELETE /api/campaigns/{id}/](https://developers.klaviyo.com/en/reference/delete_campaign)",
    "22-1": "<ul><li>Delete a campaign with the given campaign ID.</ul>",
    "23-0": "[GET /api/campaign-messages/{id}/](https://developers.klaviyo.com/en/reference/get_campaign_message)",
    "23-1": "<ul><li>Returns a specific message based on a required id.</ul>",
    "24-0": "[PATCH /api/campaign-messages/{id}/](https://developers.klaviyo.com/en/reference/update_campaign_message)",
    "24-1": "<ul><li>Update a campaign message.</ul>",
    "25-0": "[GET /campaigns/{campaign_id}/tags/](https://developers.klaviyo.com/en/reference/get_campaign_tags)",
    "25-1": "<ul><li>Return all tags that belong to the given campaign.</ul>",
    "26-0": "[GET /api/campaign-send-jobs/{id}/](https://developers.klaviyo.com/en/reference/get_campaign_send_job)",
    "26-1": "<ul><li>Get a campaign send job.</ul>",
    "27-0": "[GET /api/campaign-recipient-estimation-jobs/{id}/](https://developers.klaviyo.com/en/reference/get_campaign_recipient_estimation_job)",
    "27-1": "<ul><li>Retrieve the status of a recipient estimation job triggered with the `Create Campaign Recipient Estimation Job` endpoint.</ul>",
    "28-0": "[GET /api/campaign-recipient-estimations/{id}/](https://developers.klaviyo.com/en/reference/get_campaign_recipient_estimation)",
    "28-1": "<ul><li>Get the estimated recipient count for a campaign with the provided campaign ID. You can refresh this count by using the `Create Campaign Recipient Estimation Job` endpoint.</ul>",
    "29-0": "[POST /api/campaign-message-assign-template/](https://developers.klaviyo.com/en/reference/create_campaign_message_assign_template)",
    "29-1": "<ul><li>Creates a non-reusable version of the template and assigns it to the message.</ul>",
    "30-0": "[POST /api/campaign-recipient-estimation-jobs/](https://developers.klaviyo.com/en/reference/create_campaign_recipient_estimation_job)",
    "30-1": "<ul><li>Trigger an asynchronous job to update the estimated number of recipients for the given campaign ID. Use the `Get Campaign Recipient Estimation Job` endpoint to retrieve the status of this estimation job. Use the `Get Campaign Recipient Estimation` endpoint to retrieve the estimated recipient count for a given campaign.</ul>",
    "31-0": "[GET /api/campaigns/{id}/relationships/{related_resource}/](https://developers.klaviyo.com/en/reference/get_campaign_relationships_tags)",
    "31-1": "<ul><li>If the `related_resource` is `tags`, returns the IDs of all tags associated with the given campaign.</ul>",
    "32-0": "[POST /api/push-tokens/](https://developers.klaviyo.com/en/reference/create_push_token)",
    "32-1": "<ul><li>Creates or updates a push token.</ul>"
  },
  "cols": 2,
  "rows": 33,
  "align": [
    "left",
    "left"
  ]
}
[/block]