Skip to content

klaviyo/klaviyo-api-ruby

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Klaviyo Ruby SDK

  • SDK version: 11.0.0
  • API revision: 2024-10-15

Helpful Resources

Design & Approach

This SDK is a thin wrapper around our API. See our API Reference for full documentation on API behavior.

Organization

This SDK is organized into the following resources:

  • Accounts

  • Campaigns

  • Catalogs

  • Coupons

  • Data Privacy

  • Events

  • Flows

  • Forms

  • Images

  • Lists

  • Metrics

  • Profiles

  • Reporting

  • Reviews

  • Segments

  • Tags

  • Templates

  • Tracking Settings

  • Webhooks

Installation

Build

To build the Ruby code into a gem:

gem build klaviyo-api-sdk.gemspec

Then install the gem locally:

gem install ./klaviyo-api-sdk-11.0.0.gem

Finally add this to the Gemfile:

gem 'klaviyo-api-sdk', '~> 11.0.0'

To install directly from rubygems:

gem install klaviyo-api-sdk

For macOS developers

To avoid compatability issues between macOS and the underlying HTTP client library (Typhoeus), add the following to your local bash file:

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

As the issue only affects macOS, it should not affect your production environment. Check this thread for more information.

Usage Example

To load the gem

# Load the gem
require 'klaviyo-api-sdk'

# Setup authorization
KlaviyoAPI.configure do |config|
  config.api_key['Klaviyo-API-Key'] = 'Klaviyo-API-Key your-api-key'
  #config.max_retries = 5 # optional
  #config.max_delay = 60 # optional
end

NOTE:

  • The SDK retries on resolvable errors, namely: rate limits (common) and server errors on klaviyo (rare).
  • max_retries denotes the number of attempts the client will make in order to execute the request successfully.
    • Set to 0 to disable automatic retries
  • max_delay denotes the maximum amount of time (in seconds) that will be spent retrying a request across all attempts.
  • The time interval between retries is calculated using exponential backoff and the Retry-After header.

To call the get_catalog_items operation:

opts = {
  include: ['variants'],
  sort: 'created',
  filter: 'equals(published,false)',
  fields_catalog_item: ['external_id','title']
}

begin
  result = KlaviyoAPI::Catalogs.get_catalog_items(opts)
end

Error Handling

This SDK throws an ApiException error when the server returns a non-2XX response.

begin
  result = KlaviyoAPI::Catalogs.get_catalog_items(opts)
rescue KlaviyoAPI::ApiError => e
  puts "Error when calling get_catalog_items #{e}"
end

Method signatures

  • get operations can be passed an optional opts object (e.g. get_list_profiles(opts)). opts describes the available options for fetching data (some operations only support a subset of these or none). i.e.
opts = {
  include: ['variants'], # includes
  sort: '-created', # sorting
  filter: 'equals(published,false)', # filters
  page_cursor: 'page_cursor_example', # cursor pagination
  fields_catalog_item: ['external_id','title'], # sparse fieldset
  fields_catalog_variant: ['external_id','title'], # sparse fieldset
  additional_fields_profile: ['predictive_analytics'], # for endpoints that support predictive analytics such as `get_profile`
}

For GET methods that require a filter, Pass the filter perameter as a query paraemeter not inside the opts object

 KlaviyoAPI::Campaigns.get_campaigns("equals(messages.channel,'email')")

**Note, for parameters that use square brackets such as page[cursor] or fields[catalog-item] ruby will replace the square brackets [] with _ underscores.

  • For create, update & some delete operations (i.e. create_catalog_item or update_catalog_item or delete_catalog_category_relationships) the body object is required in the method signature (i.e. create_catalog_item(body)).
body = {
  data: {
    type: "catalog-item",
    attributes: {
      external_id: "catalog-item-test",
      title: "Catalog Item Test",
      description: "this is a description",
      url: "http://catalog-item.klaviyo.com",
      published: true
    }
  }
}
KlaviyoAPI::Catalogs.create_catalog_item(body)

For uploading a file using the Images.upload_image_from_file simply pass in an opened file

result = KlaviyoAPI::Images.upload_image_from_file(File.open('test_file.jpg', 'r'))

Optional Parameters and Json Api Features

Here we will go over

  • Pagination
  • Page size
  • Additional Fields
  • Filtering
  • Sparse Fields
  • Sorting
  • Relationships

Quick rule

As a reminder, the optional parameters are named slightly different from how you would make the call without the SDK docs, query parameter names have variables that make bad Ruby names like page[cursor] are transformed to page_cursor.

Cursor based Pagination

All the endpoints that return list of results use cursor base pagination.

Obtain the cursor value from the call you want to get the next page for, then pass it under the page_cursor optional parameter. The page cursor looks like WzE2NDA5OTUyMDAsICIzYzRjeXdGTndadyIsIHRydWVd.

If you were using the api directly you would pass the cursor like:

https://a.klaviyo.com/api/profiles/?page[cursor]=WzE2NTcyMTM4NjQsICIzc042NjRyeHo0ciIsIHRydWVd

The same call in the sdk the call would look like this:

opts = {
  page_cursor: 'WzE2NTcyMTM4NjQsICIzc042NjRyeHo0ciIsIHRydWVd',
}

response = KlaviyoAPI::Profiles.get_profiles(opts)

You get the cursor for the next page from response[:links][:next] returns the entire url of the next call but the sdk will accept the entire link and use only the relevant cursor.

Here is an example of getting the second next and passing in the page cursor:

opts = {
  page_cursor: response[:links][:next], # previous response
}

response = KlaviyoAPI::Profiles.get_profiles(opts)

There are more page cursors than just next, check the endpoint's docs or the response type but often there is first, last, next and prev.

Page Size

Some endpoint you can get a larger or smaller page size by using the page_size parameter.

if you were hitting the api directly this would look like

https://a.klaviyo.com/api/profiles/?page[size]=20

In the SDK this looks like:

opts = {
  page_size: 20,
}

response = KlaviyoAPI::Profiles.get_profiles(opts)

Additional Fields

Additional fields are used to populate part of the response that would be null otherwise. For the getProfile endpoint you can pass in a request to get the predictive analytics of the profile. Using the additional_fields parameter often will change the rate limit of the endpoint so be sure to keep an eye on your usage.

The url would look like:

https://a.klaviyo.com/api/profiles/01GDDKASAP8TKDDA2GRZDSVP4H/?additional-fields[profile]=predictive_analytics

The SDK equivalent is:

profile_id = '01GDDKASAP8TKDDA2GRZDSVP4H'
opts = {
  additional_fields_profile: ["predictive_analytics"]
}

response = KlaviyoAPI::Profiles.get_profile(profile_id, opts)

# If your profile has enough information for predictive analytis it will populate
pp(response[:data][:attributes][:predictive_analytics])

Filtering

Filter by passing the filter as a string as under the optional parameter filter.

Read more about formatting your filter strings in our developer documentation

Here is an example of a filter string for results between two date times: less-than(updated,2023-04-26T00:00:00Z),greater-than(updated,2023-04-19T00:00:00Z)

Here is a code example filter for profiles with the matching emails:

https://a.klaviyo.com/api/profiles/?filter=any(email,["[email protected]","[email protected]"]

For the sdk:

opts = {
  filter: 'any(email,["[email protected]","[email protected]"])'
}

response = KlaviyoAPI::Profiles.get_profiles(opts)

Sparse Fields

If you only want a specific subset of data from a specific query you can use sparse fields to request only the specific properties. The SDK expands the optional sparse fields into their own option, where you can pass a list of the desired items to include.

To get a list of event properties the URL your would use is:

https://a.klaviyo.com/api/events/?fields[event]=event_properties

In the SDK you would use

opts = {
  fields_event: ["event_properties"]
}

response = KlaviyoAPI::Events.get_events(opts)

Sorting

Your can request the results of specific endpoints to be ordered by a given parameter. The direction of the sort can swapped by adding a - in front of the sort key. For example datetime will be ascending while -datetime will be descending.

If you are unsure about the available sort fields you can always check the documentation for the endpoint you are using. For a comprehensive list that links to the documentation for each function check the Endpoints section below.

Get events sorted by oldest to newest datetime.

https://a.klaviyo.com/api/events/?sort=-datetime

and via the sdk

opts = {
  sort: '-datetime'
}

response = KlaviyoAPI::Events.get_events(opts)

Includes

How to add additional information to your API response via additional-fields and the includes parameter. This allows you to get information about two or more objects from a single api call. Using the includes parameter often changes the rate limit of the endpoint so be sure to take note.

Using the URl to get profile information and the information about the lists the profile is in:

https://a.klaviyo.com/api/profiles/01GDDKASAP8TKDDA2GRZDSVP4H/?include=lists

In the sdk:

profile_id = '01GDDKASAP8TKDDA2GRZDSVP4H'
opts = {
  include: ["lists"]
}

response = KlaviyoAPI::Profiles.get_profile(profile_id,opts)

# Profile information is accessed the same way with
pp(response[:data])
# Lists related to the profile with be accessible via the included array
pp(response[:included])

Note about sparse fields and relationships: you can request only specific fields of the included object as well.

profile_id = '01GDDKASAP8TKDDA2GRZDSVP4H'
opts = {
  fields_list: ["name"],
  include: ["lists"]
}

response = KlaviyoAPI::Profiles.get_profile(profile_id,opts)



# Profile information is accessed the same way with
pp(response[:data])
# Lists related to the profile with be accessible via the included array
pp(response[:included])

Relationships

The Klaviyo Api has a series of endpoints to expose the relationships between your different Klaviyo Items. You can read more about relationships in our documentation.

Here are some use cases and their examples:

How to get the list memberships for a profile with the given profile ID.

Via the URL:

https://a.klaviyo.com/api/profiles/01GDDKASAP8TKDDA2GRZDSVP4H/relationships/lists/

and for the SDK:

profile_id = '01GDDKASAP8TKDDA2GRZDSVP4H'

response = KlaviyoAPI::Profiles.get_profile_relationships_lists(profile_id)

For another example:

Get all campaigns associated with the given tag_id.

the URL:

https://a.klaviyo.com/api/tags/9c8db7a0-5ab5-4e3c-9a37-a3224fd14382/relationships/campaigns/

Through the SDK:

tag_id = '9c8db7a0-5ab5-4e3c-9a37-a3224fd14382'

response = KlaviyoAPI::Tags.get_tag_relationships_campaigns(tag_id)

Combining

You can use any combination of the features outlines above in conjunction with one another.

Get events associated with a specific metric, then return just the event properties sorted by oldest to newest datetime.

https://a.klaviyo.com/api/events/?fields[event]=event_properties&filter=equals(metric_id,"URDbLg")&sort=-datetime

or

opts = {
  filter: 'equals(metric_id,"URDbLg")',
  fields_event: ["event_properties"]
}

response = KlaviyoAPI::Events.get_events(opts)

Comprehensive list of Operations & Parameters

NOTE:

  • Organization: Resource groups and operation_ids are listed in alphabetical order, first by Resource name, then by OpenAPI Summary. Operation summaries are those listed in the right side bar of the API Reference.
  • For example values / data types, as well as whether parameters are required/optional, please reference the corresponding API Reference link.
  • Some args are required for the API call to succeed, the API docs above are the source of truth regarding which params are required.

Accounts

KlaviyoAPI::Accounts.get_account(id, opts)
KlaviyoAPI::Accounts.get_accounts(opts)

Campaigns

KlaviyoAPI::Campaigns.assign_template_to_campaign_message(body)
Method alias:
KlaviyoAPI::Campaigns.create_campaign_message_assign_template(body)
KlaviyoAPI::Campaigns.cancel_campaign_send(id, body)
Method alias:
KlaviyoAPI::Campaigns.update_campaign_send_job(id, body)
KlaviyoAPI::Campaigns.create_campaign(body)
KlaviyoAPI::Campaigns.create_campaign_clone(body)
Method alias:
KlaviyoAPI::Campaigns.clone_campaign(body)
KlaviyoAPI::Campaigns.delete_campaign(id)
KlaviyoAPI::Campaigns.get_campaign(id, opts)
KlaviyoAPI::Campaigns.get_campaign_for_campaign_message(id, opts)
Method alias:
KlaviyoAPI::Campaigns.get_campaign_message_campaign(id, opts)
KlaviyoAPI::Campaigns.get_campaign_id_for_campaign_message(id)
Method alias:
KlaviyoAPI::Campaigns.get_campaign_message_relationships_campaign(id)
KlaviyoAPI::Campaigns.get_campaign_message(id, opts)
KlaviyoAPI::Campaigns.get_campaign_recipient_estimation(id, opts)
KlaviyoAPI::Campaigns.get_campaign_recipient_estimation_job(id, opts)
KlaviyoAPI::Campaigns.get_campaign_send_job(id, opts)
KlaviyoAPI::Campaigns.get_campaign_tags(id, opts)
KlaviyoAPI::Campaigns.get_campaigns(filter, opts)
KlaviyoAPI::Campaigns.get_message_ids_for_campaign(id)
Method alias:
KlaviyoAPI::Campaigns.get_campaign_relationships_campaign_messages(id)
KlaviyoAPI::Campaigns.get_messages_for_campaign(id, opts)
Method alias:
KlaviyoAPI::Campaigns.get_campaign_campaign_messages(id, opts)
KlaviyoAPI::Campaigns.get_tag_ids_for_campaign(id)
Method alias:
KlaviyoAPI::Campaigns.get_campaign_relationships_tags(id)
KlaviyoAPI::Campaigns.get_template_for_campaign_message(id, opts)
Method alias:
KlaviyoAPI::Campaigns.get_campaign_message_template(id, opts)
KlaviyoAPI::Campaigns.get_template_id_for_campaign_message(id)
Method alias:
KlaviyoAPI::Campaigns.get_campaign_message_relationships_template(id)
KlaviyoAPI::Campaigns.refresh_campaign_recipient_estimation(body)
Method alias:
KlaviyoAPI::Campaigns.create_campaign_recipient_estimation_job(body)
KlaviyoAPI::Campaigns.send_campaign(body)
Method alias:
KlaviyoAPI::Campaigns.create_campaign_send_job(body)
KlaviyoAPI::Campaigns.update_campaign(id, body)
KlaviyoAPI::Campaigns.update_campaign_message(id, body)

Catalogs

KlaviyoAPI::Catalogs.add_category_to_catalog_item(id, body)
Method alias:
KlaviyoAPI::Catalogs.create_catalog_item_relationships_categories(id, body)
Method alias:
KlaviyoAPI::Catalogs.create_catalog_item_relationships_category(id, body)
KlaviyoAPI::Catalogs.add_items_to_catalog_category(id, body)
Method alias:
KlaviyoAPI::Catalogs.create_catalog_category_relationships_items(id, body)
Method alias:
KlaviyoAPI::Catalogs.create_catalog_category_relationships_item(id, body)
KlaviyoAPI::Catalogs.bulk_create_catalog_categories(body)
Method alias:
KlaviyoAPI::Catalogs.spawn_create_categories_job(body)
Method alias:
KlaviyoAPI::Catalogs.create_catalog_category_bulk_create_job(body)
KlaviyoAPI::Catalogs.bulk_create_catalog_items(body)
Method alias:
KlaviyoAPI::Catalogs.spawn_create_items_job(body)
Method alias:
KlaviyoAPI::Catalogs.create_catalog_item_bulk_create_job(body)
KlaviyoAPI::Catalogs.bulk_create_catalog_variants(body)
Method alias:
KlaviyoAPI::Catalogs.spawn_create_variants_job(body)
Method alias:
KlaviyoAPI::Catalogs.create_catalog_variant_bulk_create_job(body)
KlaviyoAPI::Catalogs.bulk_delete_catalog_categories(body)
Method alias:
KlaviyoAPI::Catalogs.spawn_delete_categories_job(body)
Method alias:
KlaviyoAPI::Catalogs.create_catalog_category_bulk_delete_job(body)
KlaviyoAPI::Catalogs.bulk_delete_catalog_items(body)
Method alias:
KlaviyoAPI::Catalogs.spawn_delete_items_job(body)
Method alias:
KlaviyoAPI::Catalogs.create_catalog_item_bulk_delete_job(body)
KlaviyoAPI::Catalogs.bulk_delete_catalog_variants(body)
Method alias:
KlaviyoAPI::Catalogs.spawn_delete_variants_job(body)
Method alias:
KlaviyoAPI::Catalogs.create_catalog_variant_bulk_delete_job(body)
KlaviyoAPI::Catalogs.bulk_update_catalog_categories(body)
Method alias:
KlaviyoAPI::Catalogs.spawn_update_categories_job(body)
Method alias:
KlaviyoAPI::Catalogs.create_catalog_category_bulk_update_job(body)
KlaviyoAPI::Catalogs.bulk_update_catalog_items(body)
Method alias:
KlaviyoAPI::Catalogs.spawn_update_items_job(body)
Method alias:
KlaviyoAPI::Catalogs.create_catalog_item_bulk_update_job(body)
KlaviyoAPI::Catalogs.bulk_update_catalog_variants(body)
Method alias:
KlaviyoAPI::Catalogs.spawn_update_variants_job(body)
Method alias:
KlaviyoAPI::Catalogs.create_catalog_variant_bulk_update_job(body)
KlaviyoAPI::Catalogs.create_back_in_stock_subscription(body)
KlaviyoAPI::Catalogs.create_catalog_category(body)
KlaviyoAPI::Catalogs.create_catalog_item(body)
KlaviyoAPI::Catalogs.create_catalog_variant(body)
KlaviyoAPI::Catalogs.delete_catalog_category(id)
KlaviyoAPI::Catalogs.delete_catalog_item(id)
KlaviyoAPI::Catalogs.delete_catalog_variant(id)
KlaviyoAPI::Catalogs.get_bulk_create_catalog_items_job(job_id, opts)
Method alias:
KlaviyoAPI::Catalogs.get_create_items_job(job_id, opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_item_bulk_create_job(job_id, opts)
KlaviyoAPI::Catalogs.get_bulk_create_catalog_items_jobs(opts)
Method alias:
KlaviyoAPI::Catalogs.get_create_items_jobs(opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_item_bulk_create_jobs(opts)
KlaviyoAPI::Catalogs.get_bulk_delete_catalog_items_job(job_id, opts)
Method alias:
KlaviyoAPI::Catalogs.get_delete_items_job(job_id, opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_item_bulk_delete_job(job_id, opts)
KlaviyoAPI::Catalogs.get_bulk_delete_catalog_items_jobs(opts)
Method alias:
KlaviyoAPI::Catalogs.get_delete_items_jobs(opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_item_bulk_delete_jobs(opts)
KlaviyoAPI::Catalogs.get_bulk_update_catalog_items_job(job_id, opts)
Method alias:
KlaviyoAPI::Catalogs.get_update_items_job(job_id, opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_item_bulk_update_job(job_id, opts)
KlaviyoAPI::Catalogs.get_bulk_update_catalog_items_jobs(opts)
Method alias:
KlaviyoAPI::Catalogs.get_update_items_jobs(opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_item_bulk_update_jobs(opts)
KlaviyoAPI::Catalogs.get_catalog_categories(opts)
KlaviyoAPI::Catalogs.get_catalog_category(id, opts)
KlaviyoAPI::Catalogs.get_catalog_item(id, opts)
KlaviyoAPI::Catalogs.get_catalog_items(opts)
KlaviyoAPI::Catalogs.get_catalog_variant(id, opts)
KlaviyoAPI::Catalogs.get_catalog_variants(opts)
KlaviyoAPI::Catalogs.get_categories_for_catalog_item(id, opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_item_categories(id, opts)
KlaviyoAPI::Catalogs.get_category_ids_for_catalog_item(id, opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_item_relationships_categories(id, opts)
KlaviyoAPI::Catalogs.get_create_categories_job(job_id, opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_category_bulk_create_job(job_id, opts)
KlaviyoAPI::Catalogs.get_create_categories_jobs(opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_category_bulk_create_jobs(opts)
KlaviyoAPI::Catalogs.get_create_variants_job(job_id, opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_variant_bulk_create_job(job_id, opts)
KlaviyoAPI::Catalogs.get_create_variants_jobs(opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_variant_bulk_create_jobs(opts)
KlaviyoAPI::Catalogs.get_delete_categories_job(job_id, opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_category_bulk_delete_job(job_id, opts)
KlaviyoAPI::Catalogs.get_delete_categories_jobs(opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_category_bulk_delete_jobs(opts)
KlaviyoAPI::Catalogs.get_delete_variants_job(job_id, opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_variant_bulk_delete_job(job_id, opts)
KlaviyoAPI::Catalogs.get_delete_variants_jobs(opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_variant_bulk_delete_jobs(opts)
KlaviyoAPI::Catalogs.get_item_ids_for_catalog_category(id, opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_category_relationships_items(id, opts)
KlaviyoAPI::Catalogs.get_items_for_catalog_category(id, opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_category_items(id, opts)
KlaviyoAPI::Catalogs.get_update_categories_job(job_id, opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_category_bulk_update_job(job_id, opts)
KlaviyoAPI::Catalogs.get_update_categories_jobs(opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_category_bulk_update_jobs(opts)
KlaviyoAPI::Catalogs.get_update_variants_job(job_id, opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_variant_bulk_update_job(job_id, opts)
KlaviyoAPI::Catalogs.get_update_variants_jobs(opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_variant_bulk_update_jobs(opts)
KlaviyoAPI::Catalogs.get_variants_for_catalog_item(id, opts)
Method alias:
KlaviyoAPI::Catalogs.get_catalog_item_variants(id, opts)
KlaviyoAPI::Catalogs.remove_categories_from_catalog_item(id, body)
Method alias:
KlaviyoAPI::Catalogs.delete_catalog_item_relationships_categories(id, body)
KlaviyoAPI::Catalogs.remove_items_from_catalog_category(id, body)
Method alias:
KlaviyoAPI::Catalogs.delete_catalog_category_relationships_items(id, body)
KlaviyoAPI::Catalogs.update_catalog_category(id, body)
KlaviyoAPI::Catalogs.update_catalog_item(id, body)
KlaviyoAPI::Catalogs.update_catalog_variant(id, body)
KlaviyoAPI::Catalogs.update_categories_for_catalog_item(id, body)
Method alias:
KlaviyoAPI::Catalogs.update_catalog_item_relationships_categories(id, body)
KlaviyoAPI::Catalogs.update_items_for_catalog_category(id, body)
Method alias:
KlaviyoAPI::Catalogs.update_catalog_category_relationships_items(id, body)

Coupons

KlaviyoAPI::Coupons.bulk_create_coupon_codes(body)
Method alias:
KlaviyoAPI::Coupons.spawn_coupon_code_bulk_create_job(body)
Method alias:
KlaviyoAPI::Coupons.create_coupon_code_bulk_create_job(body)
KlaviyoAPI::Coupons.create_coupon(body)
KlaviyoAPI::Coupons.create_coupon_code(body)
KlaviyoAPI::Coupons.delete_coupon(id)
KlaviyoAPI::Coupons.delete_coupon_code(id)
KlaviyoAPI::Coupons.get_bulk_create_coupon_code_jobs(opts)
Method alias:
KlaviyoAPI::Coupons.get_coupon_code_bulk_create_jobs(opts)
KlaviyoAPI::Coupons.get_bulk_create_coupon_codes_job(job_id, opts)
Method alias:
KlaviyoAPI::Coupons.get_coupon_code_bulk_create_job(job_id, opts)
KlaviyoAPI::Coupons.get_code_ids_for_coupon(id, opts)
Method alias:
KlaviyoAPI::Coupons.get_coupon_code_relationships_coupon(id, opts)
KlaviyoAPI::Coupons.get_coupon(id, opts)
KlaviyoAPI::Coupons.get_coupon_code(id, opts)
KlaviyoAPI::Coupons.get_coupon_codes(opts)
KlaviyoAPI::Coupons.get_coupon_codes_for_coupon(id, opts)
Method alias:
KlaviyoAPI::Coupons.get_coupon_coupon_codes(id, opts)
KlaviyoAPI::Coupons.get_coupon_for_coupon_code(id, opts)
Method alias:
KlaviyoAPI::Coupons.get_coupon_code_coupon(id, opts)
KlaviyoAPI::Coupons.get_coupon_id_for_coupon_code(id)
Method alias:
KlaviyoAPI::Coupons.get_coupon_relationships_coupon_codes(id)
KlaviyoAPI::Coupons.get_coupons(opts)
KlaviyoAPI::Coupons.update_coupon(id, body)
KlaviyoAPI::Coupons.update_coupon_code(id, body)

Data Privacy

KlaviyoAPI::DataPrivacy.request_profile_deletion(body)
Method alias:
KlaviyoAPI::DataPrivacy.create_data_privacy_deletion_job(body)

Events

KlaviyoAPI::Events.bulk_create_events(body)
Method alias:
KlaviyoAPI::Events.create_event_bulk_create_job(body)
KlaviyoAPI::Events.create_event(body)
KlaviyoAPI::Events.get_event(id, opts)
KlaviyoAPI::Events.get_event_metric(id, opts)
KlaviyoAPI::Events.get_event_profile(id, opts)
KlaviyoAPI::Events.get_events(opts)
KlaviyoAPI::Events.get_metric_id_for_event(id)
Method alias:
KlaviyoAPI::Events.get_event_relationships_metric(id)
KlaviyoAPI::Events.get_profile_id_for_event(id)
Method alias:
KlaviyoAPI::Events.get_event_relationships_profile(id)

Flows

KlaviyoAPI::Flows.delete_flow(id)
KlaviyoAPI::Flows.get_action_id_for_flow_message(id)
Method alias:
KlaviyoAPI::Flows.get_flow_message_relationships_action(id)
KlaviyoAPI::Flows.get_action_ids_for_flow(id, opts)
Method alias:
KlaviyoAPI::Flows.get_flow_relationships_flow_actions(id, opts)
KlaviyoAPI::Flows.get_actions_for_flow(id, opts)
Method alias:
KlaviyoAPI::Flows.get_flow_flow_actions(id, opts)
KlaviyoAPI::Flows.get_flow(id, opts)
KlaviyoAPI::Flows.get_flow_action(id, opts)
KlaviyoAPI::Flows.get_flow_action_flow(id, opts)
KlaviyoAPI::Flows.get_flow_id_for_flow_action(id)
Method alias:
KlaviyoAPI::Flows.get_flow_action_relationships_flow(id)
KlaviyoAPI::Flows.get_flow_message(id, opts)
KlaviyoAPI::Flows.get_flow_message_action(id, opts)
KlaviyoAPI::Flows.get_flow_tags(id, opts)
KlaviyoAPI::Flows.get_flows(opts)
KlaviyoAPI::Flows.get_message_ids_for_flow_action(id, opts)
Method alias:
KlaviyoAPI::Flows.get_flow_action_relationships_messages(id, opts)
KlaviyoAPI::Flows.get_messages_for_flow_action(id, opts)
Method alias:
KlaviyoAPI::Flows.get_flow_action_messages(id, opts)
KlaviyoAPI::Flows.get_tag_ids_for_flow(id)
Method alias:
KlaviyoAPI::Flows.get_flow_relationships_tags(id)
KlaviyoAPI::Flows.get_template_for_flow_message(id, opts)
Method alias:
KlaviyoAPI::Flows.get_flow_message_template(id, opts)
KlaviyoAPI::Flows.get_template_id_for_flow_message(id)
Method alias:
KlaviyoAPI::Flows.get_flow_message_relationships_template(id)
KlaviyoAPI::Flows.update_flow(id, body)

Forms

KlaviyoAPI::Forms.get_form(id, opts)
KlaviyoAPI::Forms.get_form_for_form_version(id, opts)
Method alias:
KlaviyoAPI::Forms.get_form_version_form(id, opts)
KlaviyoAPI::Forms.get_form_id_for_form_version(id)
Method alias:
KlaviyoAPI::Forms.get_form_version_relationships_form(id)
KlaviyoAPI::Forms.get_form_version(id, opts)
KlaviyoAPI::Forms.get_forms(opts)
KlaviyoAPI::Forms.get_version_ids_for_form(id)
Method alias:
KlaviyoAPI::Forms.get_form_relationships_form_versions(id)
KlaviyoAPI::Forms.get_versions_for_form(id, opts)
Method alias:
KlaviyoAPI::Forms.get_form_form_versions(id, opts)

Images

KlaviyoAPI::Images.get_image(id, opts)
KlaviyoAPI::Images.get_images(opts)
KlaviyoAPI::Images.update_image(id, body)
KlaviyoAPI::Images.upload_image_from_file(file, opts)
Method alias:
KlaviyoAPI::Images.create_image_upload(file, opts)
KlaviyoAPI::Images.upload_image_from_url(body)
Method alias:
KlaviyoAPI::Images.create_image(body)

Lists

KlaviyoAPI::Lists.create_list(body)
KlaviyoAPI::Lists.create_list_relationships(id, body)
Method alias:
KlaviyoAPI::Lists.create_list_relationships_profile(id, body)
KlaviyoAPI::Lists.delete_list(id)
KlaviyoAPI::Lists.delete_list_relationships(id, body)
Method alias:
KlaviyoAPI::Lists.delete_list_relationships_profiles(id, body)
KlaviyoAPI::Lists.get_list(id, opts)
KlaviyoAPI::Lists.get_list_flow_triggers(id, opts)
KlaviyoAPI::Lists.get_list_profiles(id, opts)
KlaviyoAPI::Lists.get_list_relationships_flow_triggers(id)
KlaviyoAPI::Lists.get_list_tags(id, opts)
KlaviyoAPI::Lists.get_lists(opts)
KlaviyoAPI::Lists.get_profile_ids_for_list(id, opts)
Method alias:
KlaviyoAPI::Lists.get_list_relationships_profiles(id, opts)
KlaviyoAPI::Lists.get_tag_ids_for_list(id)
Method alias:
KlaviyoAPI::Lists.get_list_relationships_tags(id)
KlaviyoAPI::Lists.update_list(id, body)

Metrics

KlaviyoAPI::Metrics.get_metric(id, opts)
KlaviyoAPI::Metrics.get_metric_flow_triggers(id, opts)
KlaviyoAPI::Metrics.get_metric_for_metric_property(id, opts)
Method alias:
KlaviyoAPI::Metrics.get_metric_property_metric(id, opts)
KlaviyoAPI::Metrics.get_metric_id_for_metric_property(id)
Method alias:
KlaviyoAPI::Metrics.get_metric_property_relationships_metric(id)
KlaviyoAPI::Metrics.get_metric_property(id, opts)
KlaviyoAPI::Metrics.get_metric_relationships_flow_triggers(id)
KlaviyoAPI::Metrics.get_metrics(opts)
KlaviyoAPI::Metrics.get_properties_for_metric(id, opts)
Method alias:
KlaviyoAPI::Metrics.get_metric_metric_properties(id, opts)
KlaviyoAPI::Metrics.get_property_ids_for_metric(id)
Method alias:
KlaviyoAPI::Metrics.get_metric_relationships_metric_properties(id)
KlaviyoAPI::Metrics.query_metric_aggregates(body)
Method alias:
KlaviyoAPI::Metrics.create_metric_aggregate(body)

Profiles

KlaviyoAPI::Profiles.bulk_subscribe_profiles(body)
Method alias:
KlaviyoAPI::Profiles.subscribe_profiles(body)
Method alias:
KlaviyoAPI::Profiles.create_profile_subscription_bulk_create_job(body)
KlaviyoAPI::Profiles.bulk_suppress_profiles(body)
Method alias:
KlaviyoAPI::Profiles.suppress_profiles(body)
Method alias:
KlaviyoAPI::Profiles.create_profile_suppression_bulk_create_job(body)
KlaviyoAPI::Profiles.bulk_unsubscribe_profiles(body)
Method alias:
KlaviyoAPI::Profiles.unsubscribe_profiles(body)
Method alias:
KlaviyoAPI::Profiles.create_profile_subscription_bulk_delete_job(body)
KlaviyoAPI::Profiles.bulk_unsuppress_profiles(body)
Method alias:
KlaviyoAPI::Profiles.unsuppress_profiles(body)
Method alias:
KlaviyoAPI::Profiles.create_profile_suppression_bulk_delete_job(body)
KlaviyoAPI::Profiles.create_or_update_profile(body, opts)
Method alias:
KlaviyoAPI::Profiles.create_profile_import(body, opts)
KlaviyoAPI::Profiles.create_profile(body, opts)
KlaviyoAPI::Profiles.create_push_token(body)
KlaviyoAPI::Profiles.get_bulk_import_profiles_job(job_id, opts)
Method alias:
KlaviyoAPI::Profiles.get_bulk_profile_import_job(job_id, opts)
Method alias:
KlaviyoAPI::Profiles.get_profile_bulk_import_job(job_id, opts)
KlaviyoAPI::Profiles.get_bulk_import_profiles_jobs(opts)
Method alias:
KlaviyoAPI::Profiles.get_bulk_profile_import_jobs(opts)
Method alias:
KlaviyoAPI::Profiles.get_profile_bulk_import_jobs(opts)
KlaviyoAPI::Profiles.get_bulk_suppress_profiles_job(job_id, opts)
Method alias:
KlaviyoAPI::Profiles.get_profile_suppression_bulk_create_job(job_id, opts)
KlaviyoAPI::Profiles.get_bulk_suppress_profiles_jobs(opts)
Method alias:
KlaviyoAPI::Profiles.get_profile_suppression_bulk_create_jobs(opts)
KlaviyoAPI::Profiles.get_bulk_unsuppress_profiles_job(job_id, opts)
Method alias:
KlaviyoAPI::Profiles.get_profile_suppression_bulk_delete_job(job_id, opts)
KlaviyoAPI::Profiles.get_bulk_unsuppress_profiles_jobs(opts)
Method alias:
KlaviyoAPI::Profiles.get_profile_suppression_bulk_delete_jobs(opts)
KlaviyoAPI::Profiles.get_errors_for_bulk_import_profiles_job(id, opts)
Method alias:
KlaviyoAPI::Profiles.get_bulk_profile_import_job_import_errors(id, opts)
Method alias:
KlaviyoAPI::Profiles.get_profile_bulk_import_job_import_errors(id, opts)
KlaviyoAPI::Profiles.get_list_for_bulk_import_profiles_job(id, opts)
Method alias:
KlaviyoAPI::Profiles.get_bulk_profile_import_job_lists(id, opts)
Method alias:
KlaviyoAPI::Profiles.get_profile_bulk_import_job_lists(id, opts)
KlaviyoAPI::Profiles.get_list_ids_for_bulk_import_profiles_job(id)
Method alias:
KlaviyoAPI::Profiles.get_bulk_profile_import_job_relationships_lists(id)
Method alias:
KlaviyoAPI::Profiles.get_profile_bulk_import_job_relationships_lists(id)
KlaviyoAPI::Profiles.get_list_ids_for_profile(id)
Method alias:
KlaviyoAPI::Profiles.get_profile_relationships_lists(id)
KlaviyoAPI::Profiles.get_lists_for_profile(id, opts)
Method alias:
KlaviyoAPI::Profiles.get_profile_lists(id, opts)
KlaviyoAPI::Profiles.get_profile(id, opts)
KlaviyoAPI::Profiles.get_profile_ids_for_bulk_import_profiles_job(id, opts)
Method alias:
KlaviyoAPI::Profiles.get_bulk_profile_import_job_relationships_profiles(id, opts)
Method alias:
KlaviyoAPI::Profiles.get_profile_bulk_import_job_relationships_profiles(id, opts)
KlaviyoAPI::Profiles.get_profiles(opts)
KlaviyoAPI::Profiles.get_profiles_for_bulk_import_profiles_job(id, opts)
Method alias:
KlaviyoAPI::Profiles.get_bulk_profile_import_job_profiles(id, opts)
Method alias:
KlaviyoAPI::Profiles.get_profile_bulk_import_job_profiles(id, opts)
KlaviyoAPI::Profiles.get_segment_ids_for_profile(id)
Method alias:
KlaviyoAPI::Profiles.get_profile_relationships_segments(id)
KlaviyoAPI::Profiles.get_segments_for_profile(id, opts)
Method alias:
KlaviyoAPI::Profiles.get_profile_segments(id, opts)
KlaviyoAPI::Profiles.merge_profiles(body)
Method alias:
KlaviyoAPI::Profiles.create_profile_merge(body)
KlaviyoAPI::Profiles.spawn_bulk_profile_import_job(body)
Method alias:
KlaviyoAPI::Profiles.bulk_import_profiles(body)
Method alias:
KlaviyoAPI::Profiles.create_profile_bulk_import_job(body)
KlaviyoAPI::Profiles.update_profile(id, body, opts)

Reporting

KlaviyoAPI::Reporting.query_campaign_values(body, opts)
Method alias:
KlaviyoAPI::Reporting.create_campaign_value_report(body, opts)
KlaviyoAPI::Reporting.query_flow_series(body, opts)
Method alias:
KlaviyoAPI::Reporting.create_flow_sery_report(body, opts)
KlaviyoAPI::Reporting.query_flow_values(body, opts)
Method alias:
KlaviyoAPI::Reporting.create_flow_value_report(body, opts)
KlaviyoAPI::Reporting.query_form_series(body)
Method alias:
KlaviyoAPI::Reporting.create_form_sery_report(body)
KlaviyoAPI::Reporting.query_form_values(body)
Method alias:
KlaviyoAPI::Reporting.create_form_value_report(body)
KlaviyoAPI::Reporting.query_segment_series(body)
Method alias:
KlaviyoAPI::Reporting.create_segment_sery_report(body)
KlaviyoAPI::Reporting.query_segment_values(body)
Method alias:
KlaviyoAPI::Reporting.create_segment_value_report(body)

Reviews

KlaviyoAPI::Reviews.get_review(id, opts)
KlaviyoAPI::Reviews.get_reviews(opts)

Segments

KlaviyoAPI::Segments.create_segment(body)
KlaviyoAPI::Segments.delete_segment(id)
KlaviyoAPI::Segments.get_profile_ids_for_segment(id, opts)
Method alias:
KlaviyoAPI::Segments.get_segment_relationships_profiles(id, opts)
KlaviyoAPI::Segments.get_profiles_for_segment(id, opts)
Method alias:
KlaviyoAPI::Segments.get_segment_profiles(id, opts)
KlaviyoAPI::Segments.get_segment(id, opts)
KlaviyoAPI::Segments.get_segment_flow_triggers(id, opts)
KlaviyoAPI::Segments.get_segment_relationships_flow_triggers(id)
KlaviyoAPI::Segments.get_segments(opts)
KlaviyoAPI::Segments.get_tag_ids_for_segment(id)
Method alias:
KlaviyoAPI::Segments.get_segment_relationships_tags(id)
KlaviyoAPI::Segments.get_tags_for_segment(id, opts)
Method alias:
KlaviyoAPI::Segments.get_segment_tags(id, opts)
KlaviyoAPI::Segments.update_segment(id, body)

Tags

KlaviyoAPI::Tags.create_tag(body)
KlaviyoAPI::Tags.create_tag_group(body)
KlaviyoAPI::Tags.delete_tag(id)
KlaviyoAPI::Tags.delete_tag_group(id)
KlaviyoAPI::Tags.get_campaign_ids_for_tag(id)
Method alias:
KlaviyoAPI::Tags.get_tag_relationships_campaigns(id)
KlaviyoAPI::Tags.get_flow_ids_for_tag(id)
Method alias:
KlaviyoAPI::Tags.get_tag_relationships_flows(id)
KlaviyoAPI::Tags.get_list_ids_for_tag(id)
Method alias:
KlaviyoAPI::Tags.get_tag_relationships_lists(id)
KlaviyoAPI::Tags.get_segment_ids_for_tag(id)
Method alias:
KlaviyoAPI::Tags.get_tag_relationships_segments(id)
KlaviyoAPI::Tags.get_tag(id, opts)
KlaviyoAPI::Tags.get_tag_group(id, opts)
KlaviyoAPI::Tags.get_tag_group_for_tag(id, opts)
Method alias:
KlaviyoAPI::Tags.get_tag_tag_group(id, opts)
KlaviyoAPI::Tags.get_tag_group_id_for_tag(id)
Method alias:
KlaviyoAPI::Tags.get_tag_relationships_tag_group(id)
KlaviyoAPI::Tags.get_tag_groups(opts)
KlaviyoAPI::Tags.get_tag_ids_for_tag_group(id)
Method alias:
KlaviyoAPI::Tags.get_tag_group_relationships_tags(id)
KlaviyoAPI::Tags.get_tags(opts)
KlaviyoAPI::Tags.get_tags_for_tag_group(id, opts)
Method alias:
KlaviyoAPI::Tags.get_tag_group_tags(id, opts)
KlaviyoAPI::Tags.remove_tag_from_campaigns(id, body)
Method alias:
KlaviyoAPI::Tags.delete_tag_relationships_campaigns(id, body)
KlaviyoAPI::Tags.remove_tag_from_flows(id, body)
Method alias:
KlaviyoAPI::Tags.delete_tag_relationships_flows(id, body)
KlaviyoAPI::Tags.remove_tag_from_lists(id, body)
Method alias:
KlaviyoAPI::Tags.delete_tag_relationships_lists(id, body)
KlaviyoAPI::Tags.remove_tag_from_segments(id, body)
Method alias:
KlaviyoAPI::Tags.delete_tag_relationships_segments(id, body)
KlaviyoAPI::Tags.tag_campaigns(id, body)
Method alias:
KlaviyoAPI::Tags.create_tag_relationships_campaigns(id, body)
Method alias:
KlaviyoAPI::Tags.create_tag_relationships_campaign(id, body)
KlaviyoAPI::Tags.tag_flows(id, body)
Method alias:
KlaviyoAPI::Tags.create_tag_relationships_flows(id, body)
Method alias:
KlaviyoAPI::Tags.create_tag_relationships_flow(id, body)
KlaviyoAPI::Tags.tag_lists(id, body)
Method alias:
KlaviyoAPI::Tags.create_tag_relationships_lists(id, body)
Method alias:
KlaviyoAPI::Tags.create_tag_relationships_list(id, body)
KlaviyoAPI::Tags.tag_segments(id, body)
Method alias:
KlaviyoAPI::Tags.create_tag_relationships_segments(id, body)
Method alias:
KlaviyoAPI::Tags.create_tag_relationships_segment(id, body)
KlaviyoAPI::Tags.update_tag(id, body)
KlaviyoAPI::Tags.update_tag_group(id, body)

Templates

KlaviyoAPI::Templates.clone_template(body)
Method alias:
KlaviyoAPI::Templates.create_template_clone(body)
KlaviyoAPI::Templates.create_template(body)
KlaviyoAPI::Templates.create_universal_content(body)
Method alias:
KlaviyoAPI::Templates.create_template_universal_content(body)
KlaviyoAPI::Templates.delete_template(id)
KlaviyoAPI::Templates.delete_universal_content(id)
Method alias:
KlaviyoAPI::Templates.delete_template_universal_content(id)
KlaviyoAPI::Templates.get_all_universal_content(opts)
Method alias:
KlaviyoAPI::Templates.get_template_universal_content(opts)
KlaviyoAPI::Templates.get_template(id, opts)
KlaviyoAPI::Templates.get_templates(opts)
KlaviyoAPI::Templates.get_universal_content(id, opts)
KlaviyoAPI::Templates.render_template(body)
Method alias:
KlaviyoAPI::Templates.create_template_render(body)
KlaviyoAPI::Templates.update_template(id, body)
KlaviyoAPI::Templates.update_universal_content(id, body)
Method alias:
KlaviyoAPI::Templates.update_template_universal_content(id, body)

Tracking Settings

KlaviyoAPI::TrackingSettings.get_tracking_setting(id, opts)
KlaviyoAPI::TrackingSettings.get_tracking_settings(opts)
KlaviyoAPI::TrackingSettings.update_tracking_setting(id, body)

Webhooks

KlaviyoAPI::Webhooks.create_webhook(body)
KlaviyoAPI::Webhooks.delete_webhook(id)
KlaviyoAPI::Webhooks.get_webhook(id, opts)
KlaviyoAPI::Webhooks.get_webhook_topic(id)
KlaviyoAPI::Webhooks.get_webhook_topics
KlaviyoAPI::Webhooks.get_webhooks(opts)
KlaviyoAPI::Webhooks.update_webhook(id, body)

Appendix

Per Request API key

response = KlaviyoAPI::Catalogs.get_catalog_items({
  header_params: {
    'Authorization': 'Klaviyo-API-Key your-api-key',
  },
  debug_auth_names: []
})