Get Campaign Report
Returns metrics data for campaigns with the given filters and within the given timeframe. Can return performance data such as opens, clicks, and conversions, etc. This tool will also give you information about each campaign in the report, such as: audience names and IDs for the campaign (included audiences are audiences sent the campaign, excluded audiences are audiences not sent the campaign), campaign name, send time, send channel, and campaign ID.
Get Flow Report
Returns metrics data for flows with the given filters and within the given timeframe. Can return performance data such as opens, clicks, and conversions, etc. This tool will also give you information about each flow in the report, such as: flow name, trigger type, and flow ID.
Get Account Details
Get the details of the account. You can view and edit your account details flow in the Klaviyo UI at https://www.klaviyo.com/settings/account
Get Campaigns
Returns some or all campaigns based on filters. You can view and edit a campaign in the Klaviyo UI at https://www.klaviyo.com/campaign/{CAMPAIGN_ID}/wizard. Do not use this for queries related to the status of campaigns, reporting on campaigns, or campaign performance data. For those use cases, use the get_campaign_report tool.
A channel filter is required to list campaigns. Please provide either:
?filter=equals(messages.channel,'email') to list email campaigns, or
?filter=equals(messages.channel,'sms') to list SMS campaigns.
?filter=equals(messages.channel,'mobile_push') to list mobile push campaigns.
Get Campaign
Returns a specific campaign based on a required id. You can view and edit a campaign in the Klaviyo UI at https://www.klaviyo.com/campaign/{CAMPAIGN_ID}/wizard
Create Campaign
Creates a new draft campaign. For email campaigns, this can be used with the create_email_template tool for template creation and then assign_template_to_campaign_message to assign the template to the email campaign. You can view and edit a campaign in the Klaviyo UI at https://www.klaviyo.com/campaign/{CAMPAIGN_ID}/wizard
Assign Template To Campaign Message
Assigns an email template to a campaign message. This should be used after creating a template with the create_email_template tool and creating an email campaign.
Get Flows
Returns some or all flows based on filters. You can view and edit a flow in the Klaviyo UI at https://www.klaviyo.com/flow/{FLOW_ID}/edit. Do not use this for queries related to the status of flows, reporting on flows, or flow performance data. For those use cases, use the get_flow_report tool.
Get Flow
Returns a flow by ID. You can view and edit a flow in the Klaviyo UI at https://www.klaviyo.com/flow/{FLOW_ID}/edit.
Get Lists
Get all lists in an account. To filter by tag, do not use the 'filters' parameter. Instead, call this and look for the 'tags' property in the response. You can view and edit a list in the Klaviyo UI at https://www.klaviyo.com/lists/{LIST_ID}
Get List
Get a list with the given list ID. You can view and edit a list in the Klaviyo UI at https://www.klaviyo.com/lists/{LIST_ID}
Get Events
Get individual event records for a given filter such as a profile ID or metric ID. For aggregated data, prefer get_campaign_report or get_flow_report (performance metrics) or query_metric_aggregates (counts, sums, unique profiles). Only use this tool to inspect specific events or when the other tools don't support the dimension you need — in that case, only a small sample of events can be processed in context, so clearly tell the user the results are based on a limited sample.
Get Catalog Items
Get all catalog items in an account. (Also known as products)
Get Email Template
Get an email template with the given data. Returns attributes including the html or amp. You can view and edit a template in the Klaviyo UI at https://www.klaviyo.com/email-editor/{TEMPLATE_ID}/edit.
Create Email Template
Create a new HTML email template (CODE or USER_DRAGGABLE editor type). For drag-and-drop (SYSTEM_DRAGGABLE) templates, use create_dnd_email_template instead. Returns the ID of the template. You can view and edit a template in the Klaviyo UI at https://www.klaviyo.com/email-editor/{TEMPLATE_ID}/edit.
The HTML should include <html> and <body> tags. To include an image, first upload the image using the upload_image_from_url tool, then use the returned image URL. Always include an unsubscribe link by inserting the template string "{% unsubscribe 'Unsubscribe' %}" (the label is customisable).
Editor types:
- CODE: plain HTML-only templates with no editable surfaces.
- USER_DRAGGABLE: hybrid templates that are mostly hand-written HTML with explicit editable regions. Use this when the user asks for an editable/hybrid template.
For USER_DRAGGABLE, mark editable regions in the HTML:
<td align="center" data-klaviyo-region="true" data-klaviyo-region-width-pixels="600"></td>
Inside a region you can drop editable blocks:
<div class="klaviyo-block klaviyo-text-block">Hello world!</div>
<div class="klaviyo-block klaviyo-image-block"></div>
<div data-klaviyo-universal-block="block_id"> </div>
List Email Templates
List email templates in the account with optional filtering and sorting. Returns template metadata (id, name, editor_type, html, created, updated). Drag-and-drop (SYSTEM_DRAGGABLE) templates only include their structured definition when additional_fields_template includes "definition". For a single template, prefer get_email_template.
Get Profiles
Get all profiles in an account. You can view and edit a profile in the Klaviyo UI at https://www.klaviyo.com/profile/{PROFILE_ID}
Get Profile
Get details of the profile with the given profile ID. Includes additional information about their subscriptions. You can view and edit a profile in the Klaviyo UI at https://www.klaviyo.com/profile/{PROFILE_ID}
Create Profile
Create a new profile. Must include either email, phone_number, or external_id. You can view and edit a profile in the Klaviyo UI at https://www.klaviyo.com/profile/{PROFILE_ID}
Update Profile
Update the profile with the given profile ID. You can view and edit a profile in the Klaviyo UI at https://www.klaviyo.com/profile/{PROFILE_ID}
Subscribe Profile To Marketing
Subscribe profiles to marketing for one or more channels. If a profile doesn't already exist, it will be created. Provide email and/or phone_number on each profile, and set the corresponding channel (email/sms) under attributes.subscriptions.{channel}.marketing.consent = "SUBSCRIBED". Optionally include a list relationship to also add the profile to that list.
This action requires explicit user confirmation. Call the tool normally first; it will fail with instructions for obtaining the user's approval and retrying.
Unsubscribe Profile From Marketing
Unsubscribe profiles from marketing for one or more channels. Provide email and/or phone_number on each profile, and set the corresponding channel (email/sms) under attributes.subscriptions.{channel}.marketing.consent = "UNSUBSCRIBED". Optionally include a list relationship to scope the unsubscription to that list.
This action requires explicit user confirmation. Call the tool normally first; it will fail with instructions for obtaining the user's approval and retrying.
Get Segments
Get all segments in an account. To filter by tag, do not use the 'filters' parameter. Instead, call this and look for the 'tags' property in the response. You can view and edit a segment in the Klaviyo UI at https://www.klaviyo.com/lists/{SEGMENT_ID}
Get Segment
Get a segment with the given segment ID. You can view and edit a segment in the Klaviyo UI at https://www.klaviyo.com/lists/{SEGMENT_ID}
Get Metrics
Get all metrics in an account. You can view and edit a metric in the Klaviyo UI at https://www.klaviyo.com/metric/{METRIC_ID}/{METRIC_NAME}
Get Metric
Get a metric with the given metric ID. You can view and edit a metric in the Klaviyo UI at https://www.klaviyo.com/metric/{METRIC_ID}/{METRIC_NAME}
Query Metric Aggregates
Query and aggregate event data for a specific metric, with optional grouping by dimensions such as flows, campaigns, messages, etc.
IMPORTANT: This endpoint returns data based on EVENT TIME (when events occurred), NOT send date. For campaign/flow performance data that matches the Klaviyo UI (which uses send date), use get_campaign_report or get_flow_report instead. Only use this tool when:
- You need to aggregate raw event data by dimensions not supported by the Reporting API, but supported by this endpoint
- You need time-series data broken down by hour/day/week/month
- The Reporting API tools (get_campaign_report, get_flow_report) don't fulfill your specific requirements
- You need to query custom metrics or non-standard aggregations
Results from this endpoint are not directly comparable to get_campaign_report or get_flow_report due to different time semantics and uniqueness definitions (not attribution — both use the same attribution framework). If cross-referencing, clearly caveat this to the user.
Examples of appropriate use cases:
- Sum of revenue by flow over a time period (use sum_value measurement with $attributed_flow grouping)
- Count of events per day/week/month for trend analysis
- Unique profile counts grouped by campaign or message
- Custom metric aggregations not available in standard reports
Upload Image From Url
Upload an image from a URL or data URI.
Get Reviews
Get all reviews.
Get Review
Get the review with the given ID.
Get Bulk Import Profiles Job
Get a bulk profile import job with the given job ID.
Get Bulk Suppress Profiles Job
Get the bulk suppress profiles job with the given job ID.
Get Bulk Unsuppress Profiles Job
Get the bulk unsuppress profiles job with the given job ID.
Get Push Token
Return a specific push token based on its ID.
Get Event
Get an event with the given event ID.
Get Campaign Send Job
Get a campaign send job
Get Campaign Recipient Estimation Job
Retrieve the status of a recipient estimation job triggered
with the `Create Campaign Recipient Estimation Job` endpoint.
Get Campaign Recipient Estimation
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.
Get Flow Message
Get a flow message from a flow with the given flow message ID.
Get Universal Content
Get the universal content with the given ID.
Get Image
Get the image with the given image ID.
Get Custom Metric
Get a custom metric with the given custom metric ID.
Get Mapped Metric
Get the mapped metric with the given ID.
Get Catalog Item
Get a specific catalog item with the given item ID.
Get Catalog Variant
Get a catalog item variant with the given variant ID.
Get Catalog Category
Get a catalog category with the given category ID.
Get Bulk Create Catalog Items Job
Get a catalog item bulk create job with the given job ID.
An `include` parameter can be provided to get the following related resource data: `items`.
Get Bulk Update Catalog Items Job
Get a catalog item bulk update job with the given job ID.
An `include` parameter can be provided to get the following related resource data: `items`.
Get Bulk Delete Catalog Items Job
Get a catalog item bulk delete job with the given job ID.
Get Bulk Create Variants Job
Get a catalog variant bulk create job with the given job ID.
An `include` parameter can be provided to get the following related resource data: `variants`.
Get Bulk Update Variants Job
Get a catalog variate bulk update job with the given job ID.
An `include` parameter can be provided to get the following related resource data: `variants`.
Get Bulk Delete Variants Job
Get a catalog variant bulk delete job with the given job ID.
Get Form
Get the form with the given ID.
Get Coupon
Get a specific coupon with the given coupon ID.
Get Bulk Create Coupon Codes Job
Get a coupon code bulk create job with the given job ID.
Get Tag Group
Retrieve the tag group with the given tag group ID.
Get Webhook
Get the webhook with the given ID.
Get Webhook Topics
Get all webhook topics in a Klaviyo account.
Get Webhook Topic
Get the webhook topic with the given ID.
Get Bulk Import Profiles Jobs
Get all bulk profile import jobs.
Returns a maximum of 100 jobs per request.
Get Bulk Suppress Profiles Jobs
Get the status of all bulk profile suppression jobs.
Get Bulk Unsuppress Profiles Jobs
Get all bulk unsuppress profiles jobs.
Get Push Tokens
Return push tokens associated with company.
Get Flows Triggered By List
Get all flows where the given list ID is being used as the trigger.
Get Flows Triggered By Segment
Get all flows where the given segment ID is being used as the trigger.
Get Campaign Message
Returns a specific message based on a required id.
Refresh Campaign Recipient Estimation
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.
Get Flow Action
Get a flow action from a flow with the given flow action ID.
Get All Universal Content
Get all universal content in an account.
Get Images
Get all images in an account.
Get Metric Property
Get a metric property with the given metric property ID.
Get Custom Metrics
Get all custom metrics in an account.
Get Mapped Metrics
Get all mapped metrics in an account.
Get Flows Triggered By Metric
Get all flows where the given metric is being used as the trigger.
Get Catalog Variants
Get all variants in an account.
Variants can be sorted by the following fields, in ascending and descending order:
`created`
Currently, the only supported integration type is `$custom`, and the only supported catalog type is `$default`.
Returns a maximum of 100 variants per request.
Get Catalog Categories
Get all catalog categories in an account.
Catalog categories can be sorted by the following fields, in ascending and descending order:
`created`
Currently, the only supported integration type is `$custom`, and the only supported catalog type is `$default`.
Returns a maximum of 100 categories per request.
Get Bulk Create Catalog Items Jobs
Get all catalog item bulk create jobs.
Returns a maximum of 100 jobs per request.
Get Bulk Update Catalog Items Jobs
Get all catalog item bulk update jobs.
Returns a maximum of 100 jobs per request.
Get Bulk Delete Catalog Items Jobs
Get all catalog item bulk delete jobs.
Returns a maximum of 100 jobs per request.
Get Bulk Create Variants Jobs
Get all catalog variant bulk create jobs.
Returns a maximum of 100 jobs per request.
Get Bulk Update Variants Jobs
Get all catalog variant bulk update jobs.
Returns a maximum of 100 jobs per request.
Get Bulk Delete Variants Jobs
Get all catalog variant bulk delete jobs.
Returns a maximum of 100 jobs per request.
Get Forms
Get all forms in an account.
Get Form Version
Get the form version with the given ID.
Get Coupons
Get all coupons in an account.
To learn more, see our Coupons API guide.
Get Coupon Codes
Gets a list of coupon codes associated with a coupon/coupons or a profile/profiles.
A coupon/coupons or a profile/profiles must be provided as required filter params.
Get Coupon Code
Returns a Coupon Code specified by the given identifier.
Get Bulk Create Coupon Code Jobs
Get all coupon code bulk create jobs.
Returns a maximum of 100 jobs per request.
Query Form Values
Returns the requested form analytics values data.
Query Form Series
Returns the requested form analytics series data.
Query Segment Values
Returns the requested segment analytics values data.
Query Segment Series
Returns the requested segment analytics series data.
Get Tags
List all tags in an account.
Tags can be filtered by `name`, and sorted by `name` or `id` in ascending or descending order.
Returns a maximum of 50 tags per request, which can be paginated with
cursor-based pagination.
Get Tag
Retrieve the tag with the given tag ID.
Get Tag Groups
List all tag groups in an account. Every account has one default tag group.
Tag groups can be filtered by `name`, `exclusive`, and `default`, and sorted by `name` or `id` in ascending or descending order.
Returns a maximum of 25 tag groups per request, which can be paginated with
cursor-based pagination.
Get Webhooks
Get all webhooks in an account.
Create Dnd Email Template
Create a new drag-and-drop (DND, ``editor_type='SYSTEM_DRAGGABLE'``) email template with a structured ``definition``. Unlike HTML templates created with create_email_template, DND templates use a structured definition describing sections, rows, columns, and blocks (text, image, button, etc.) — there is no raw HTML body. The definition fully describes the template layout and content. You can view and edit the template in the Klaviyo UI at https://www.klaviyo.com/email-template-editor/{TEMPLATE_ID}.
Update Dnd Email Template
Update an existing drag-and-drop (DND) email template. Provide any combination of name, definition, or text to update. The definition fully replaces the existing one — partial updates to individual sections/blocks are not supported. To update a DND template, first retrieve it with get_email_template, modify the definition, then pass the full definition here.
Update Email Template
Update an existing HTML email template (CODE or USER_DRAGGABLE editor type). For drag-and-drop (SYSTEM_DRAGGABLE) templates, use update_dnd_email_template instead — passing html to a DND template will return a 400. Provide any combination of name, html, or text to update; only provided fields change. The template's editor type cannot be changed.
Clone Email Template
Create a clone of an existing email template. Returns the new template with a copy of the source template's content (HTML, text, AMP, and DND definition). Cloning counts toward the 1,000-templates-per-account limit. Optionally pass a name to override the cloned template's name.
Render Email Template
Render an email template with a provided context. Returns the HTML, plaintext, and AMP versions of the template with template tags evaluated. Does not modify the template or send any email. Templates are rendered with contexts in a similar manner to Django templates; nested variables can be referenced via dot notation. Variables without corresponding context values are treated as FALSE. Rate-limited to 3/s burst and 60/m steady — significantly stricter than other template endpoints.
Delete Email Template
Delete an email template by ID. Will fail with a 409 Conflict if the template is currently attached to a campaign or flow message — detach the message or delete the campaign/flow first. This action cannot be undone.
Get Translations
BETA. List all translation collections in the account. Each translation links a Klaviyo resource (campaign variation, flow message, template, template universal content) to its localization settings. Supports filtering on channel, resource_type, and related_resource_id, e.g. equals(channel,"email") or equals(resource_type,"campaign-variation").
Get Translation
BETA. Get a translation collection by ID. Returns localization settings (source/target locales, channel, fallback). To also get the translation values (source text and translations per locale for each translatable field), pass ``additional_fields_translation=["values"]``. To include a related resource, pass ``include`` with one of: ``campaign-variation``, ``flow-message``, ``template``, ``template-universal-content``.
Create Translation
BETA. Create a new translation collection for a Klaviyo resource. Exactly one relationship must be provided in the body. Valid channel + relationship combinations: email → campaign-variation, flow-message, template, template-universal-content; sms → campaign-variation, flow-message; mobile_push → campaign-variation, flow-message; whatsapp → template only.
Update Translation
BETA. Update a translation's settings and/or import translation values. All attributes are optional — only provided fields are updated. To import values, first call get_translation with ``additional_fields_translation=["values"]``, then provide the values array with updated translations. Each value has a composite ``id`` (e.g. ``scheduled_message::abc::subject``) and a ``translations`` map of locale codes to translated text (e.g. ``{'fr': 'Bonjour'}``).
Delete Translation
BETA. Delete a translation collection by ID. Removes all localization settings and translation values for the resource.
Create Campaign Clone
Clones an existing campaign, returning a new campaign based on the original with a new ID and name.
Update Campaign
Update a campaign with the given campaign ID.
Delete Campaign
Delete a campaign with the given campaign ID.
Update Campaign Message
Update a campaign message
Update Image For Campaign Message
Update the image associated with a campaign message. Provide the ID of an existing image — e.g. one uploaded with upload_image_from_url.
Send Campaign
Trigger a campaign to send asynchronously. Creates a campaign send job that sends the campaign to its configured audience. Once recipients start receiving messages the send cannot be undone; a send in progress can be stopped with cancel_campaign_send. Track progress with get_campaign_send_job.
This action requires explicit user confirmation. Call the tool normally first; it will fail with instructions for obtaining the user's approval and retrying.
Cancel Campaign Send
Cancel or revert the send of a currently sending or scheduled campaign. action='cancel' permanently cancels the campaign, setting its status to CANCELED; action='revert' stops the send job and returns the campaign to DRAFT.
This action requires explicit user confirmation. Call the tool normally first; it will fail with instructions for obtaining the user's approval and retrying.
Create Event
Create a new event to track a profile's activity.
Note that this endpoint allows you to create a new profile or update an existing profile's properties.
At a minimum, profile and metric objects should include at least one profile identifier (e.g., `id`, `email`, or `phone_number`) and the metric `name`, respectively.
Successful response indicates that the event was validated and submitted for processing, but does not guarantee that processing is complete.
Create Or Update Profile
Given a set of profile attributes and optionally an ID, create or update a profile.
Returns 201 if a new profile was created, 200 if an existing profile was updated.
Use the `additional-fields` parameter to include subscriptions and predictive analytics data in your response.
Note that setting a field to `null` will clear out the field, whereas not including a field in your request will leave it unchanged.
The maximum allowed payload size is 100KB.
Create Push Token
Create or update a push token.
This endpoint can be used to migrate push tokens from another platform to Klaviyo. Please use our mobile SDKs ([iOS](https://github.com/klaviyo/klaviyo-swift-sdk) and [Android](https://github.com/klaviyo/klaviyo-android-sdk)) to create push tokens from users' devices.
The maximum allowed payload size is 100KB.
Delete Push Token
Delete a specific push token based on its ID.
Create List
Create a new list.
Update List
Update the name of a list with the given list ID.
Create Segment
Create a segment.
Update Segment
Update a segment with the given segment ID.
Create Universal Content
Create universal content. Currently supported block types are: `button`, `drop_shadow`, `horizontal_rule`, `html`, `image`, `spacer`, and `text`.
Update Universal Content
Update universal content. The `definition` field can only be updated on the following block types at this time: `button`, `drop_shadow`, `horizontal_rule`, `html`, `image`, `spacer`, and `text`.
Delete Universal Content
Delete the universal content with the given ID.
Update Image
Update the image with the given image ID.
Create Custom Metric
Create a new custom metric.
Custom metric objects must include a `name` and `definition`.
Update Custom Metric
Update a custom metric with the given custom metric ID.
Delete Custom Metric
Delete a custom metric with the given custom metric ID.
Update Mapped Metric
Update the mapped metric with the given ID.
Create Catalog Item
Create a new catalog item.
Update Catalog Item
Update a catalog item with the given item ID.
Add Categories To Catalog Item
Create a new catalog category relationship for the given item ID.
Remove Categories From Catalog Item
Delete catalog category relationships for the given item ID.
Update Categories For Catalog Item
Update catalog category relationships for the given item ID.
Create Catalog Variant
Create a new variant for a related catalog item.
Update Catalog Variant
Update a catalog item variant with the given variant ID.
Delete Catalog Variant
Delete a catalog item variant with the given variant ID.
Create Catalog Category
Create a new catalog category.
Update Catalog Category
Update a catalog category with the given category ID.
Delete Catalog Category
Delete a catalog category using the given category ID.
Add Items To Catalog Category
Create a new item relationship for the given category ID.
Remove Items From Catalog Category
Delete item relationships for the given category ID.
Update Items For Catalog Category
Update item relationships for the given category ID.
Create Coupon
Creates a new coupon.
Update Coupon
*Rate limits*:<br>Burst: `3/s`<br>Steady: `60/m`
Create Coupon Code
Synchronously creates a coupon code for the given coupon.
Update Coupon Code
Updates a coupon code specified by the given identifier synchronously. We allow updating the 'status' and
'expires_at' of coupon codes.
Delete Coupon Code
Deletes a coupon code specified by the given identifier synchronously. If a profile has been assigned to the
coupon code, an exception will be raised
Create Tag
Create a tag. An account cannot have more than **500** unique tags.
A tag belongs to a single tag group. If `relationships.tag-group.data.id` is not specified,
the tag is added to the account's default tag group.
Update Tag
Update the tag with the given tag ID.
Only a tag's `name` can be changed. A tag cannot be moved from one tag group to another.
Delete Tag
Delete the tag with the given tag ID. Any associations between the tag and other resources will also be removed.
Create Tag Group
Create a tag group. An account cannot have more than **50** unique tag groups.
If `exclusive` is not specified `true` or `false`, the tag group defaults to non-exclusive.
If a tag group is non-exclusive, any given related resource (campaign, flow, etc.)
can be linked to multiple tags from that tag group.
If a tag group is exclusive, any given related resource can only be linked to one tag from that tag group.
Update Tag Group
Update the tag group with the given tag group ID.
Only a tag group's `name` can be changed. A tag group's `exclusive` or `default` value cannot be changed.
Delete Tag Group
Delete the tag group with the given tag group ID.
Any tags inside that tag group, and any associations between those tags and other resources, will also be removed. The default tag group cannot be deleted.
Delete Webhook
Delete a webhook with the given ID.
Update Review
Update a review.
Create Form
Create a new form.