openapi: 3.0.2 info: title: Klaviyo Accounts Events 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: Events description: events paths: /api/events: get: operationId: get_events summary: Get Events description: 'Get all events in an account Requests can be sorted by the following fields: `datetime`, `timestamp` [Custom metrics](https://developers.klaviyo.com/en/reference/custom_metrics_api_overview) are not supported in the `metric_id` filter. Returns a maximum of 200 events per page.

*Rate limits*:
Burst: `350/s`
Steady: `3500/m` **Scopes:** `events:read`' parameters: - name: fields[event] 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: - datetime - event_properties - timestamp - uuid explode: false - name: fields[metric] 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: - created - integration - name - updated explode: false - name: fields[profile] 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: - created - email - external_id - first_name - image - last_event_date - last_name - locale - location - location.address1 - location.address2 - location.city - location.country - location.ip - location.latitude - location.longitude - location.region - location.timezone - location.zip - organization - phone_number - properties - title - updated 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):
`metric_id`: `equals`
`profile_id`: `equals`
`profile`: `has`
`datetime`: `greater-or-equal`, `greater-than`, `less-or-equal`, `less-than`
`timestamp`: `greater-or-equal`, `greater-than`, `less-or-equal`, `less-than`' schema: type: string example: equals(metric_id,'example') - name: include in: query description: For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#relationships schema: type: array items: type: string enum: - attributions - metric - profile 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: 200. Min: 1. Max: 1000.' required: false schema: type: integer default: 200 maximum: 1000 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: - datetime - -datetime - timestamp - -timestamp - 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/GetEventResponseCollectionCompoundDocument' 4XX: $ref: '#/components/responses/ClientError' 5XX: $ref: '#/components/responses/ServerError' tags: - Events x-klaviyo-pre-release: None x-klaviyo-ratelimit: burst: 350/s steady: 3500/m x-klaviyo-scopes: - events:read post: operationId: create_event summary: Create Event description: '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.

*Rate limits*:
Burst: `350/s`
Steady: `3500/m` **Scopes:** `events:write`' parameters: - 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' tags: - Events x-klaviyo-pre-release: None x-klaviyo-ratelimit: burst: 350/s steady: 3500/m x-klaviyo-scopes: - events:write /api/events/{id}: get: operationId: get_event summary: Get Event description: 'Get an event with the given event ID.

*Rate limits*:
Burst: `10/s`
Steady: `150/m` **Scopes:** `events:read`' parameters: - name: id in: path description: ID of the event required: true schema: description: ID of the event type: string - name: fields[event] 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: - datetime - event_properties - timestamp - uuid explode: false - name: fields[metric] 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: - created - integration - name - updated explode: false - name: fields[profile] 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: - created - email - external_id - first_name - image - last_event_date - last_name - locale - location - location.address1 - location.address2 - location.city - location.country - location.ip - location.latitude - location.longitude - location.region - location.timezone - location.zip - organization - phone_number - properties - title - updated explode: false - name: include in: query description: For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#relationships schema: type: array items: type: string enum: - attributions - metric - profile explode: false - 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/GetEventResponseCompoundDocument' 4XX: $ref: '#/components/responses/ClientError' 5XX: $ref: '#/components/responses/ServerError' tags: - Events x-klaviyo-pre-release: None x-klaviyo-ratelimit: burst: 10/s steady: 150/m x-klaviyo-scopes: - events:read /api/event-bulk-create-jobs: post: operationId: bulk_create_events summary: Bulk Create Events description: 'Create a batch of events for one or more profiles. Note that this endpoint allows you to create new profiles or update existing profile 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. Accepts up to 1,000 events per request. The maximum allowed payload size is 5MB. A single string cannot exceed 100KB.

*Rate limits*:
Burst: `10/s`
Steady: `150/m` **Scopes:** `events:write`' parameters: - 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/EventsBulkCreateJob' responses: '202': description: Success 4XX: $ref: '#/components/responses/ClientError' 5XX: $ref: '#/components/responses/ServerError' tags: - Events x-klaviyo-operation-aliases: - create_event_bulk_create_job x-klaviyo-pre-release: None x-klaviyo-ratelimit: burst: 10/s steady: 150/m x-klaviyo-scopes: - events:write /api/events/{id}/metric: get: operationId: get_metric_for_event summary: Get Metric for Event description: 'Get the metric for an event with the given event ID.

*Rate limits*:
Burst: `350/s`
Steady: `3500/m` **Scopes:** `events:read` `metrics:read`' parameters: - name: id in: path description: ID of the event required: true schema: description: ID of the event type: string - name: fields[metric] 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: - created - integration - name - updated explode: false - 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/GetMetricResponse' 4XX: $ref: '#/components/responses/ClientError' 5XX: $ref: '#/components/responses/ServerError' tags: - Events x-klaviyo-operation-aliases: - get_event_metric x-klaviyo-pre-release: None x-klaviyo-ratelimit: burst: 350/s steady: 3500/m x-klaviyo-scopes: - events:read - metrics:read /api/events/{id}/relationships/metric: get: operationId: get_metric_id_for_event summary: Get Metric ID for Event description: 'Get a list of related Metrics for an Event

*Rate limits*:
Burst: `350/s`
Steady: `3500/m` **Scopes:** `events:read` `metrics:read`' parameters: - name: id in: path description: ID of the event required: true schema: description: ID of the event type: string - 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/GetEventMetricRelationshipResponse' 4XX: $ref: '#/components/responses/ClientError' 5XX: $ref: '#/components/responses/ServerError' tags: - Events x-klaviyo-operation-aliases: - get_event_relationships_metric x-klaviyo-pre-release: None x-klaviyo-ratelimit: burst: 350/s steady: 3500/m x-klaviyo-scopes: - events:read - metrics:read /api/events/{id}/profile: get: operationId: get_profile_for_event summary: Get Profile for Event description: 'Get the profile associated with an event with the given event ID.

*Rate limits*:
Burst: `350/s`
Steady: `3500/m` **Scopes:** `events:read` `profiles:read`' parameters: - name: id in: path description: ID of the event required: true schema: description: ID of the event type: string - name: additional-fields[profile] in: query description: 'Request additional fields not included by default in the response. Supported values: ''subscriptions'', ''predictive_analytics''' required: false schema: type: array items: type: string enum: - subscriptions - predictive_analytics explode: false - name: fields[profile] 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: - created - email - external_id - first_name - image - last_event_date - last_name - locale - location - location.address1 - location.address2 - location.city - location.country - location.ip - location.latitude - location.longitude - location.region - location.timezone - location.zip - organization - phone_number - predictive_analytics - predictive_analytics.average_days_between_orders - predictive_analytics.average_order_value - predictive_analytics.churn_probability - predictive_analytics.expected_date_of_next_order - predictive_analytics.historic_clv - predictive_analytics.historic_number_of_orders - predictive_analytics.predicted_clv - predictive_analytics.predicted_number_of_orders - predictive_analytics.ranked_channel_affinity - predictive_analytics.total_clv - properties - subscriptions - subscriptions.email - subscriptions.email.marketing - subscriptions.email.marketing.can_receive_email_marketing - subscriptions.email.marketing.consent - subscriptions.email.marketing.consent_timestamp - subscriptions.email.marketing.custom_method_detail - subscriptions.email.marketing.double_optin - subscriptions.email.marketing.last_updated - subscriptions.email.marketing.list_suppressions - subscriptions.email.marketing.method - subscriptions.email.marketing.method_detail - subscriptions.email.marketing.suppression - subscriptions.mobile_push - subscriptions.mobile_push.marketing - subscriptions.mobile_push.marketing.can_receive_push_marketing - subscriptions.mobile_push.marketing.consent - subscriptions.mobile_push.marketing.consent_timestamp - subscriptions.sms - subscriptions.sms.marketing - subscriptions.sms.marketing.can_receive_sms_marketing - subscriptions.sms.marketing.consent - subscriptions.sms.marketing.consent_timestamp - subscriptions.sms.marketing.last_updated - subscriptions.sms.marketing.method - subscriptions.sms.marketing.method_detail - subscriptions.sms.transactional - subscriptions.sms.transactional.can_receive_sms_transactional - subscriptions.sms.transactional.consent - subscriptions.sms.transactional.consent_timestamp - subscriptions.sms.transactional.last_updated - subscriptions.sms.transactional.method - subscriptions.sms.transactional.method_detail - subscriptions.whatsapp - subscriptions.whatsapp.conversational - subscriptions.whatsapp.conversational.can_receive - subscriptions.whatsapp.conversational.consent - subscriptions.whatsapp.conversational.consent_timestamp - subscriptions.whatsapp.conversational.created_timestamp - subscriptions.whatsapp.conversational.last_updated - subscriptions.whatsapp.conversational.metadata - subscriptions.whatsapp.conversational.phone_number - subscriptions.whatsapp.conversational.valid_until - subscriptions.whatsapp.marketing - subscriptions.whatsapp.marketing.can_receive - subscriptions.whatsapp.marketing.consent - subscriptions.whatsapp.marketing.consent_timestamp - subscriptions.whatsapp.marketing.created_timestamp - subscriptions.whatsapp.marketing.last_updated - subscriptions.whatsapp.marketing.metadata - subscriptions.whatsapp.marketing.phone_number - subscriptions.whatsapp.marketing.valid_until - subscriptions.whatsapp.transactional - subscriptions.whatsapp.transactional.can_receive - subscriptions.whatsapp.transactional.consent - subscriptions.whatsapp.transactional.consent_timestamp - subscriptions.whatsapp.transactional.created_timestamp - subscriptions.whatsapp.transactional.last_updated - subscriptions.whatsapp.transactional.metadata - subscriptions.whatsapp.transactional.phone_number - subscriptions.whatsapp.transactional.valid_until - title - updated explode: false - 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/GetProfileResponse' 4XX: $ref: '#/components/responses/ClientError' 5XX: $ref: '#/components/responses/ServerError' tags: - Events x-klaviyo-operation-aliases: - get_event_profile x-klaviyo-pre-release: None x-klaviyo-ratelimit: burst: 350/s steady: 3500/m x-klaviyo-scopes: - events:read - profiles:read /api/events/{id}/relationships/profile: get: operationId: get_profile_id_for_event summary: Get Profile ID for Event description: 'Get profile [relationships](https://developers.klaviyo.com/en/reference/api_overview#relationships) for an event with the given event ID.

*Rate limits*:
Burst: `350/s`
Steady: `3500/m` **Scopes:** `events:read` `profiles:read`' parameters: - name: id in: path description: ID of the event required: true schema: description: ID of the event type: string - 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/GetEventProfileRelationshipResponse' 4XX: $ref: '#/components/responses/ClientError' 5XX: $ref: '#/components/responses/ServerError' tags: - Events x-klaviyo-operation-aliases: - get_event_relationships_profile x-klaviyo-pre-release: None x-klaviyo-ratelimit: burst: 350/s steady: 3500/m x-klaviyo-scopes: - events:read - profiles:read components: schemas: PushTokenEnum: type: string enum: - push-token GetMetricResponse: type: object properties: data: $ref: '#/components/schemas/MetricResponseObjectResource' links: $ref: '#/components/schemas/ObjectLinks' required: - data 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 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 SMSTransactional: type: object properties: can_receive_sms_transactional: description: Whether or not this profile is subscribed to receive transactional SMS. type: boolean consent: description: The consent status for SMS Transactional. type: string example: SUBSCRIBED consent_timestamp: description: The timestamp when consent was recorded or updated for Transactional SMS messaging , in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2023-02-21T20:07:38+00:00' nullable: true method: description: The method by which the profile was subscribed to Transactional SMS messaging . type: string example: TEXT nullable: true method_detail: description: Additional details about the method which the profile was subscribed to Transactional SMS messaging. This may be empty if no details were provided. type: string example: JOIN default: '' nullable: true last_updated: description: The timestamp when the SMS consent record was last modified, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2023-02-21T20:07:38+00:00' nullable: true required: - can_receive_sms_transactional - consent EmailMarketing: type: object properties: can_receive_email_marketing: description: Whether or not this profile has implicit consent to receive email marketing. True if it does profile does not have any global suppressions. type: boolean consent: description: The consent status for email marketing. type: string example: SUBSCRIBED consent_timestamp: description: The timestamp when consent was recorded or updated for email marketing, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2023-02-21T20:07:38+00:00' nullable: true last_updated: description: The timestamp when a field on the email marketing object was last modified. type: string format: date-time example: '2023-02-21T20:07:38+00:00' nullable: true method: description: The method by which the profile was subscribed to email marketing. type: string example: PREFERENCE_PAGE nullable: true method_detail: description: Additional details about the method by which the profile was subscribed to email marketing. This may be empty if no details were provided. type: string example: mydomain.com/signup default: '' nullable: true custom_method_detail: description: Additional detail provided by the caller when the profile was subscribed. This may be empty if no details were provided. type: string example: marketing drive nullable: true double_optin: description: Whether the profile was subscribed to email marketing using a double opt-in. type: boolean example: true nullable: true suppression: description: The global email marketing suppression for this profile. type: array items: $ref: '#/components/schemas/EmailMarketingSuppression' nullable: true list_suppressions: description: The list suppressions for this profile. type: array items: $ref: '#/components/schemas/EmailMarketingListSuppression' nullable: true required: - can_receive_email_marketing - consent CampaignMessageEnum: type: string enum: - campaign-message WhatsappTransactionalChannel: type: object properties: consent: description: The consent status for the channel. type: string example: SUBSCRIBED consent_timestamp: description: The timestamp when consent was recorded or updated for the channel, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2023-02-21T20:07:38+00:00' nullable: true last_updated: description: The timestamp when the channel was last modified, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2023-02-21T20:07:38+00:00' nullable: true created_timestamp: description: The timestamp when the channel was created, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2023-02-21T20:07:38+00:00' nullable: true metadata: description: Channel-specific metadata containing additional information about the permission. type: object nullable: true can_receive: description: Whether the profile can receive messages on this channel. type: boolean valid_until: description: Optional expiration date for the permission, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2024-02-21T20:07:38+00:00' nullable: true phone_number: description: Phone number to which the consent was granted for. type: string required: - consent - can_receive - phone_number 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 ListEnum: type: string enum: - list EventResponseObjectResource: type: object properties: type: $ref: '#/components/schemas/EventEnum' id: description: The Event ID type: string attributes: type: object properties: timestamp: description: Event timestamp in seconds type: integer nullable: true event_properties: description: Event properties, can include identifiers and extra properties type: object nullable: true datetime: description: Event timestamp in ISO8601 format (YYYY-MM-DDTHH:MM:SS+hh:mm) type: string format: date-time example: '2022-11-08T01:23:45+00:00' nullable: true uuid: description: A unique identifier for the event, this can be used as a cursor in pagination type: string nullable: true relationships: type: object properties: profile: type: object properties: data: type: object properties: type: $ref: '#/components/schemas/ProfileEnum' id: description: Profile ID of the associated profile, if available type: string required: - type - id links: $ref: '#/components/schemas/RelationshipLinks' metric: type: object properties: data: type: object properties: type: $ref: '#/components/schemas/MetricEnum' id: description: The Metric ID type: string required: - type - id links: $ref: '#/components/schemas/RelationshipLinks' attributions: type: object properties: data: type: array items: type: object required: - type - id properties: type: $ref: '#/components/schemas/AttributionEnum' id: description: Attributions for this event type: string links: $ref: '#/components/schemas/RelationshipLinks' links: $ref: '#/components/schemas/ObjectLinks' required: - type - id - attributes - links GetProfileResponse: type: object properties: data: allOf: - properties: type: $ref: '#/components/schemas/ProfileEnum' attributes: properties: subscriptions: $ref: '#/components/schemas/Subscriptions' nullable: true predictive_analytics: $ref: '#/components/schemas/PredictiveAnalytics' nullable: true - $ref: '#/components/schemas/ProfileResponseObjectResource' links: $ref: '#/components/schemas/ObjectLinks' required: - data GetEventMetricRelationshipResponse: type: object properties: data: type: object properties: type: $ref: '#/components/schemas/MetricEnum' id: description: The Metric ID type: string required: - type - id links: $ref: '#/components/schemas/ObjectLinks' required: - data Subscriptions: type: object properties: email: description: The email channel subscription. $ref: '#/components/schemas/EmailChannel' nullable: true sms: description: The SMS channel subscription. $ref: '#/components/schemas/SMSChannel' nullable: true mobile_push: description: The mobile push channel subscription. $ref: '#/components/schemas/PushChannel' nullable: true whatsapp: description: The whatsapp channel subscription. $ref: '#/components/schemas/WhatsappChannel' nullable: true EmailMarketingListSuppression: type: object properties: list_id: description: The ID of list to which the suppression applies. type: string example: Y6nRLr reason: description: The reason the profile was suppressed from the list. type: string example: USER_SUPPRESSED timestamp: description: The timestamp when the profile was suppressed from the list, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2023-02-21T20:07:38+00:00' required: - list_id - reason - timestamp EventsBulkCreateJob: type: object properties: data: $ref: '#/components/schemas/EventsBulkCreateJobResourceObject' required: - data PredictiveAnalytics: type: object properties: historic_clv: description: Total value of all historically placed orders type: number example: 93.87 nullable: true predicted_clv: description: Predicted value of all placed orders in the next 365 days type: number example: 27.24 nullable: true total_clv: description: Sum of historic and predicted CLV type: number example: 121.11 nullable: true historic_number_of_orders: description: Number of already placed orders type: number example: 2 nullable: true predicted_number_of_orders: description: Predicted number of placed orders in the next 365 days type: number example: 0.54 nullable: true average_days_between_orders: description: Average number of days between orders (None if only one order has been placed) type: number example: 189 nullable: true average_order_value: description: Average value of placed orders type: number example: 46.94 nullable: true churn_probability: description: Probability the customer has churned type: number example: 0.89 nullable: true expected_date_of_next_order: description: Expected date of next order, as calculated at the time of their most recent order type: string format: date-time example: '2022-11-08T00:00:00+00:00' nullable: true ranked_channel_affinity: description: List of channels ranked by their predicted effectiveness for this profile, with the best channel being listed first at index 0 type: array items: type: string enum: - email - push - sms - whatsapp description: Enum for channel name return values used in the V3 API for channel affinity for the field `ranked_channel_affinity`. example: - sms - email - push nullable: true SMSMarketing: type: object properties: can_receive_sms_marketing: description: Whether or not this profile is subscribed to receive SMS marketing. type: boolean consent: description: The consent status for SMS marketing. type: string example: SUBSCRIBED consent_timestamp: description: The timestamp when consent was recorded or updated for SMS marketing, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2023-02-21T20:07:38+00:00' nullable: true method: description: The method by which the profile was subscribed to SMS marketing. type: string example: TEXT nullable: true method_detail: description: Additional details about the method which the profile was subscribed to SMS marketing. This may be empty if no details were provided. type: string example: JOIN default: '' nullable: true last_updated: description: The timestamp when the SMS consent record was last modified, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2023-02-21T20:07:38+00:00' nullable: true required: - can_receive_sms_marketing - consent AttributionResponseObjectResource: type: object properties: type: $ref: '#/components/schemas/AttributionEnum' id: description: The ID of the attribution type: string example: 925e385b52fb405715f3616c337cc65c relationships: type: object properties: event: type: object properties: data: type: object properties: type: $ref: '#/components/schemas/EventEnum' id: description: Event type: string required: - type - id links: $ref: '#/components/schemas/RelationshipLinks' attributed-event: type: object properties: data: type: object properties: type: $ref: '#/components/schemas/EventEnum' id: description: Attributed Event type: string required: - type - id links: $ref: '#/components/schemas/RelationshipLinks' campaign: type: object properties: data: type: object properties: type: $ref: '#/components/schemas/CampaignEnum' id: description: Attributed Campaign type: string required: - type - id links: $ref: '#/components/schemas/RelationshipLinks' campaign-message: type: object properties: data: type: object properties: type: $ref: '#/components/schemas/CampaignMessageEnum' id: description: Attributed Campaign Message type: string required: - type - id links: $ref: '#/components/schemas/RelationshipLinks' flow: type: object properties: data: type: object properties: type: $ref: '#/components/schemas/FlowEnum' id: description: Attributed Flow type: string required: - type - id links: $ref: '#/components/schemas/RelationshipLinks' flow-message: type: object properties: data: type: object properties: type: $ref: '#/components/schemas/FlowMessageEnum' id: description: Attributed Flow Message type: string required: - type - id links: $ref: '#/components/schemas/RelationshipLinks' flow-message-variation: type: object properties: data: type: object properties: type: $ref: '#/components/schemas/FlowMessageEnum' id: description: Attributed Flow Message Variation type: string required: - type - id links: $ref: '#/components/schemas/RelationshipLinks' links: $ref: '#/components/schemas/ObjectLinks' required: - type - id - links GetEventResponseCompoundDocument: type: object properties: data: $ref: '#/components/schemas/EventResponseObjectResource' included: type: array items: oneOf: - $ref: '#/components/schemas/MetricResponseObjectResource' - $ref: '#/components/schemas/ProfileResponseObjectResource' - $ref: '#/components/schemas/AttributionResponseObjectResource' links: $ref: '#/components/schemas/ObjectLinks' required: - data WhatsappChannel: type: object properties: marketing: description: The Whatsapp marketing subscription. $ref: '#/components/schemas/WhatsappMarketingChannel' nullable: true transactional: description: The Whatsapp transactional subscription. $ref: '#/components/schemas/WhatsappTransactionalChannel' nullable: true conversational: description: The Whatsapp conversational subscription. $ref: '#/components/schemas/WhatsappConversationalChannel' nullable: true PushChannel: type: object properties: marketing: description: The mobile push marketing subscription. $ref: '#/components/schemas/PushMarketing' nullable: true 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 AttributionEnum: type: string enum: - attribution ProfileEnum: type: string enum: - profile ProfileResponseObjectResource: 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 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 created: description: Date and time when the profile was created, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm) type: string format: date-time example: '2022-11-08T00:00:00+00:00' nullable: true updated: description: Date and time when the profile was last updated, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm) type: string format: date-time example: '2022-11-08T00:00:00+00:00' nullable: true last_event_date: description: Date and time of the most recent event the triggered an update to the profile, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm) type: string format: date-time example: '2022-11-08T00:00:00+00:00' 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 relationships: type: object properties: lists: type: object properties: data: type: array items: type: object required: - type - id properties: type: $ref: '#/components/schemas/ListEnum' id: type: string links: $ref: '#/components/schemas/RelationshipLinks' segments: type: object properties: data: type: array items: type: object required: - type - id properties: type: $ref: '#/components/schemas/SegmentEnum' id: type: string links: $ref: '#/components/schemas/RelationshipLinks' push-tokens: type: object properties: data: type: array items: type: object required: - type - id properties: type: $ref: '#/components/schemas/PushTokenEnum' id: type: string links: $ref: '#/components/schemas/RelationshipLinks' links: $ref: '#/components/schemas/ObjectLinks' required: - type - attributes - links PatchIdentifiers: type: object properties: append: type: object unappend: type: object EventBulkCreateEnum: type: string enum: - event-bulk-create SMSChannel: type: object properties: marketing: description: The SMS marketing subscription. $ref: '#/components/schemas/SMSMarketing' nullable: true transactional: description: The SMS transactional subscription. $ref: '#/components/schemas/SMSTransactional' nullable: true 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 GetEventProfileRelationshipResponse: type: object properties: data: type: object properties: type: $ref: '#/components/schemas/ProfileEnum' id: description: Primary key that uniquely identifies this profile. Generated by Klaviyo. type: string example: 01GDDKASAP8TKDDA2GRZDSVP4H required: - type - id links: $ref: '#/components/schemas/ObjectLinks' required: - data FlowEnum: type: string enum: - flow CampaignEnum: type: string enum: - campaign EmailChannel: type: object properties: marketing: description: The email marketing subscription. $ref: '#/components/schemas/EmailMarketing' nullable: true FlowMessageEnum: type: string enum: - flow-message MetricResponseObjectResource: type: object properties: type: $ref: '#/components/schemas/MetricEnum' id: description: The Metric ID type: string attributes: type: object properties: name: description: The name of the metric type: string nullable: true created: description: Creation time in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm) type: string nullable: true updated: description: Last updated time in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm) type: string nullable: true integration: description: The integration associated with the event type: object nullable: true relationships: type: object properties: flow-triggers: type: object properties: data: type: array items: type: object required: - type - id properties: type: $ref: '#/components/schemas/FlowEnum' id: type: string links: $ref: '#/components/schemas/RelationshipLinks' links: $ref: '#/components/schemas/ObjectLinks' required: - type - id - attributes - links 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 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 PushMarketing: type: object properties: can_receive_push_marketing: description: Whether or not this profile is subscribed to receive mobile push. type: boolean consent: description: The consent status for mobile push marketing. type: string example: SUBSCRIBED consent_timestamp: description: The timestamp when the consent was last changed, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2023-02-21T20:07:38+00:00' nullable: true required: - can_receive_push_marketing - consent EventCreateQueryV2: type: object properties: data: $ref: '#/components/schemas/EventCreateQueryV2ResourceObject' required: - data WhatsappMarketingChannel: type: object properties: consent: description: The consent status for the channel. type: string example: SUBSCRIBED consent_timestamp: description: The timestamp when consent was recorded or updated for the channel, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2023-02-21T20:07:38+00:00' nullable: true last_updated: description: The timestamp when the channel was last modified, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2023-02-21T20:07:38+00:00' nullable: true created_timestamp: description: The timestamp when the channel was created, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2023-02-21T20:07:38+00:00' nullable: true metadata: description: Channel-specific metadata containing additional information about the permission. type: object nullable: true can_receive: description: Whether the profile can receive messages on this channel. type: boolean valid_until: description: Optional expiration date for the permission, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2024-02-21T20:07:38+00:00' nullable: true phone_number: description: Phone number to which the consent was granted for. type: string required: - consent - can_receive - phone_number MetricEnum: type: string enum: - metric SegmentEnum: type: string enum: - segment EventsBulkCreateJobResourceObject: type: object properties: type: $ref: '#/components/schemas/EventBulkCreateJobEnum' attributes: type: object properties: events-bulk-create: type: object properties: data: type: array items: $ref: '#/components/schemas/EventsBulkCreateQueryResourceObject' required: - data required: - events-bulk-create required: - type - attributes EventEnum: type: string enum: - event WhatsappConversationalChannel: type: object properties: consent: description: The consent status for the channel. type: string example: SUBSCRIBED consent_timestamp: description: The timestamp when consent was recorded or updated for the channel, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2023-02-21T20:07:38+00:00' nullable: true last_updated: description: The timestamp when the channel was last modified, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2023-02-21T20:07:38+00:00' nullable: true created_timestamp: description: The timestamp when the channel was created, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2023-02-21T20:07:38+00:00' nullable: true metadata: description: Channel-specific metadata containing additional information about the permission. type: object nullable: true can_receive: description: Whether the profile can receive messages on this channel. type: boolean valid_until: description: Optional expiration date for the permission, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2024-02-21T20:07:38+00:00' nullable: true phone_number: description: Phone number to which the consent was granted for. type: string required: - consent - can_receive - phone_number EmailMarketingSuppression: type: object properties: reason: description: The reason the profile was suppressed. type: string example: HARD_BOUNCE enum: - HARD_BOUNCE - INVALID_EMAIL - SPAM_COMPLAINT - UNSUBSCRIBE - USER_SUPPRESSED timestamp: description: The timestamp when the profile was suppressed, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). type: string format: date-time example: '2023-02-21T20:07:38+00:00' required: - reason - timestamp GetEventResponseCollectionCompoundDocument: type: object properties: data: type: array items: $ref: '#/components/schemas/EventResponseObjectResource' links: $ref: '#/components/schemas/CollectionLinks' included: type: array items: oneOf: - $ref: '#/components/schemas/MetricResponseObjectResource' - $ref: '#/components/schemas/ProfileResponseObjectResource' - $ref: '#/components/schemas/AttributionResponseObjectResource' required: - data ObjectLinks: type: object properties: self: type: string format: uri required: - self 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 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 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 EventBulkCreateJobEnum: type: string enum: - event-bulk-create-job RelationshipLinks: type: object properties: self: type: string format: uri related: type: string format: uri required: - self - related 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