openapi: 3.0.2
info:
title: Klaviyo Accounts Campaigns 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: Campaigns
description: campaigns
paths:
/api/campaigns:
get:
operationId: get_campaigns
summary: Get Campaigns
description: 'Returns some or all campaigns based on filters.
A channel filter is required to list campaigns. Please provide either:
`?filter=equals(messages.channel,''email'')` to list email campaigns, or
`?filter=equals(messages.channel,''sms'')` to list SMS campaigns.
`?filter=equals(messages.channel,''mobile_push'')` to list mobile push campaigns.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns:read`'
parameters:
- name: fields[campaign-message]
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_at
- definition
- definition.channel
- definition.content
- definition.content.action_buttons
- definition.content.bcc_email
- definition.content.body
- definition.content.cc_email
- definition.content.dynamic_image
- definition.content.from_email
- definition.content.from_label
- definition.content.media_url
- definition.content.preview_text
- definition.content.reply_to_email
- definition.content.subject
- definition.content.title
- definition.kv_pairs
- definition.label
- definition.notification_type
- definition.options
- definition.options.badge
- definition.options.badge.badge_options
- definition.options.badge.badge_options.badge_config
- definition.options.badge.badge_options.set_from_property
- definition.options.badge.badge_options.value
- definition.options.badge.display
- definition.options.on_open
- definition.options.on_open.android_deep_link
- definition.options.on_open.ios_deep_link
- definition.options.on_open.type
- definition.options.play_sound
- definition.render_options
- definition.render_options.add_info_link
- definition.render_options.add_opt_out_language
- definition.render_options.add_org_prefix
- definition.render_options.shorten_links
- send_times
- updated_at
explode: false
- name: fields[campaign]
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:
- archived
- audiences
- audiences.excluded
- audiences.included
- created_at
- name
- scheduled_at
- send_options
- send_options.use_smart_sending
- send_strategy
- send_strategy.date
- send_strategy.datetime
- send_strategy.method
- send_strategy.options
- send_strategy.options.is_local
- send_strategy.options.send_past_recipients_immediately
- send_strategy.throttle_percentage
- send_time
- status
- tracking_options
- tracking_options.add_tracking_params
- tracking_options.custom_tracking_params
- tracking_options.is_tracking_clicks
- tracking_options.is_tracking_opens
- updated_at
explode: false
- name: fields[tag]
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:
- name
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):
`id`: `any`
`messages.channel`: `equals`
`name`: `contains`
`status`: `any`, `equals`
`archived`: `equals`
`created_at`: `greater-or-equal`, `greater-than`, `less-or-equal`, `less-than`
`scheduled_at`: `greater-or-equal`, `greater-than`, `less-or-equal`, `less-than`
`updated_at`: `greater-or-equal`, `greater-than`, `less-or-equal`, `less-than`'
required: true
schema:
type: string
example: equals(messages.channel,'email')
- 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:
- campaign-messages
- tags
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: 100. Min: 1. Max: 100.'
required: false
schema:
type: integer
default: 100
maximum: 100
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:
- created_at
- -created_at
- id
- -id
- name
- -name
- scheduled_at
- -scheduled_at
- updated_at
- -updated_at
- 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/GetCampaignResponseCollectionCompoundDocument'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:read
post:
operationId: create_campaign
summary: Create Campaign
description: 'Creates a campaign given a set of parameters, then returns it.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns: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:
description: Creates a campaign from parameters
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CampaignCreateQuery'
responses:
'201':
description: Success
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PostCampaignResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:write
/api/campaigns/{id}:
get:
operationId: get_campaign
summary: Get Campaign
description: 'Returns a specific campaign based on a required id.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns:read`'
parameters:
- name: id
in: path
description: The campaign ID to be retrieved
required: true
schema:
description: The campaign ID to be retrieved
type: string
- name: fields[campaign-message]
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_at
- definition
- definition.channel
- definition.content
- definition.content.action_buttons
- definition.content.bcc_email
- definition.content.body
- definition.content.cc_email
- definition.content.dynamic_image
- definition.content.from_email
- definition.content.from_label
- definition.content.media_url
- definition.content.preview_text
- definition.content.reply_to_email
- definition.content.subject
- definition.content.title
- definition.kv_pairs
- definition.label
- definition.notification_type
- definition.options
- definition.options.badge
- definition.options.badge.badge_options
- definition.options.badge.badge_options.badge_config
- definition.options.badge.badge_options.set_from_property
- definition.options.badge.badge_options.value
- definition.options.badge.display
- definition.options.on_open
- definition.options.on_open.android_deep_link
- definition.options.on_open.ios_deep_link
- definition.options.on_open.type
- definition.options.play_sound
- definition.render_options
- definition.render_options.add_info_link
- definition.render_options.add_opt_out_language
- definition.render_options.add_org_prefix
- definition.render_options.shorten_links
- send_times
- updated_at
explode: false
- name: fields[campaign]
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:
- archived
- audiences
- audiences.excluded
- audiences.included
- created_at
- name
- scheduled_at
- send_options
- send_options.use_smart_sending
- send_strategy
- send_strategy.date
- send_strategy.datetime
- send_strategy.method
- send_strategy.options
- send_strategy.options.is_local
- send_strategy.options.send_past_recipients_immediately
- send_strategy.throttle_percentage
- send_time
- status
- tracking_options
- tracking_options.add_tracking_params
- tracking_options.custom_tracking_params
- tracking_options.is_tracking_clicks
- tracking_options.is_tracking_opens
- updated_at
explode: false
- name: fields[tag]
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:
- name
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:
- campaign-messages
- tags
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/GetCampaignResponseCompoundDocument'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:read
patch:
operationId: update_campaign
summary: Update Campaign
description: 'Update a campaign with the given campaign ID.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns:write`'
parameters:
- name: id
in: path
description: The campaign ID to be retrieved
required: true
schema:
description: The campaign ID to be retrieved
type: string
- name: revision
in: header
description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
required: true
schema:
type: string
default: '2026-04-15'
requestBody:
description: Update a campaign and return it
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CampaignPartialUpdateQuery'
responses:
'200':
description: Success
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PatchCampaignResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:write
delete:
operationId: delete_campaign
summary: Delete Campaign
description: 'Delete a campaign with the given campaign ID.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns:write`'
parameters:
- name: id
in: path
description: The campaign ID to be deleted
required: true
schema:
description: The campaign ID to be deleted
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:
'204':
description: Success
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:write
/api/campaign-messages/{id}:
get:
operationId: get_campaign_message
summary: Get Campaign Message
description: 'Returns a specific message based on a required id.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns:read`'
parameters:
- name: id
in: path
description: The message ID to be retrieved
required: true
schema:
description: The message ID to be retrieved
type: string
- name: fields[campaign-message]
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_at
- definition
- definition.channel
- definition.content
- definition.content.action_buttons
- definition.content.bcc_email
- definition.content.body
- definition.content.cc_email
- definition.content.dynamic_image
- definition.content.from_email
- definition.content.from_label
- definition.content.media_url
- definition.content.preview_text
- definition.content.reply_to_email
- definition.content.subject
- definition.content.title
- definition.kv_pairs
- definition.label
- definition.notification_type
- definition.options
- definition.options.badge
- definition.options.badge.badge_options
- definition.options.badge.badge_options.badge_config
- definition.options.badge.badge_options.set_from_property
- definition.options.badge.badge_options.value
- definition.options.badge.display
- definition.options.on_open
- definition.options.on_open.android_deep_link
- definition.options.on_open.ios_deep_link
- definition.options.on_open.type
- definition.options.play_sound
- definition.render_options
- definition.render_options.add_info_link
- definition.render_options.add_opt_out_language
- definition.render_options.add_org_prefix
- definition.render_options.shorten_links
- send_times
- updated_at
explode: false
- name: fields[campaign]
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:
- archived
- audiences
- audiences.excluded
- audiences.included
- created_at
- name
- scheduled_at
- send_options
- send_options.use_smart_sending
- send_strategy
- send_strategy.date
- send_strategy.datetime
- send_strategy.method
- send_strategy.options
- send_strategy.options.is_local
- send_strategy.options.send_past_recipients_immediately
- send_strategy.throttle_percentage
- send_time
- status
- tracking_options
- tracking_options.add_tracking_params
- tracking_options.custom_tracking_params
- tracking_options.is_tracking_clicks
- tracking_options.is_tracking_opens
- updated_at
explode: false
- name: fields[image]
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:
- format
- hidden
- image_url
- name
- size
- updated_at
explode: false
- name: fields[template]
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:
- amp
- created
- editor_type
- html
- name
- text
- 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:
- campaign
- image
- template
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/GetCampaignMessageResponseCompoundDocument'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:read
x-klaviyo-subtag: Messages
patch:
operationId: update_campaign_message
summary: Update Campaign Message
description: 'Update a campaign message
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns:write`'
parameters:
- name: id
in: path
description: The message ID to be retrieved
required: true
schema:
description: The message ID to be retrieved
type: string
- name: revision
in: header
description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
required: true
schema:
type: string
default: '2026-04-15'
requestBody:
description: Update a message and return it
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CampaignMessagePartialUpdateQuery'
responses:
'200':
description: Success
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PatchCampaignMessageResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:write
x-klaviyo-subtag: Messages
/api/campaign-send-jobs/{id}:
get:
operationId: get_campaign_send_job
summary: Get Campaign Send Job
description: 'Get a campaign send job
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns:read`'
parameters:
- name: id
in: path
description: The ID of the campaign to send
required: true
schema:
description: The ID of the campaign to send
type: string
- name: fields[campaign-send-job]
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:
- status
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/GetCampaignSendJobResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:read
x-klaviyo-subtag: Jobs
patch:
operationId: cancel_campaign_send
summary: Cancel Campaign Send
description: 'Permanently cancel the campaign, setting the status to CANCELED or
revert the campaign, setting the status back to DRAFT
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns:write`'
parameters:
- name: id
in: path
description: The ID of the currently sending campaign to cancel or revert
required: true
schema:
description: The ID of the currently sending campaign to cancel or revert
type: string
- name: revision
in: header
description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
required: true
schema:
type: string
default: '2026-04-15'
requestBody:
description: 'Permanently cancel the campaign, setting the status to CANCELED or
revert the campaign, setting the status back to DRAFT'
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CampaignSendJobPartialUpdateQuery'
responses:
'204':
description: Success
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-operation-aliases:
- update_campaign_send_job
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:write
x-klaviyo-subtag: Jobs
/api/campaign-recipient-estimation-jobs/{id}:
get:
operationId: get_campaign_recipient_estimation_job
summary: Get Campaign Recipient Estimation Job
description: 'Retrieve the status of a recipient estimation job triggered
with the `Create Campaign Recipient Estimation Job` endpoint.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns:read`'
parameters:
- name: id
in: path
description: The ID of the campaign to get recipient estimation status
required: true
schema:
description: The ID of the campaign to get recipient estimation status
type: string
- name: fields[campaign-recipient-estimation-job]
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:
- status
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/GetCampaignRecipientEstimationJobResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:read
x-klaviyo-subtag: Jobs
/api/campaign-recipient-estimations/{id}:
get:
operationId: get_campaign_recipient_estimation
summary: Get Campaign Recipient Estimation
description: 'Get the estimated recipient count for a campaign with the provided campaign ID.
You can refresh this count by using the `Create Campaign Recipient Estimation Job` endpoint.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns:read`'
parameters:
- name: id
in: path
description: The ID of the campaign for which to get the estimated number of recipients
required: true
schema:
description: The ID of the campaign for which to get the estimated number of recipients
type: string
- name: fields[campaign-recipient-estimation]
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:
- estimated_recipient_count
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/GetCampaignRecipientEstimationResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:read
/api/campaign-clone:
post:
operationId: create_campaign_clone
summary: Create Campaign Clone
description: 'Clones an existing campaign, returning a new campaign based on the original with a new ID and name.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns: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:
description: Clones a campaign from an existing campaign
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CampaignCloneQuery'
responses:
'201':
description: Success
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PostCampaignResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-operation-aliases:
- clone_campaign
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:write
/api/campaign-message-assign-template:
post:
operationId: assign_template_to_campaign_message
summary: Assign Template to Campaign Message
description: 'Creates a non-reusable version of the template and assigns it to the message.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns: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:
description: Takes a reusable template, clones it, and assigns the non-reusable clone to the message.
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CampaignMessageAssignTemplateQuery'
responses:
'200':
description: Success
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PostCampaignMessageResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-operation-aliases:
- create_campaign_message_assign_template
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:write
x-klaviyo-subtag: Messages
/api/campaign-send-jobs:
post:
operationId: send_campaign
summary: Send Campaign
description: 'Trigger a campaign to send asynchronously
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns: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:
description: Trigger the campaign to send asynchronously
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CampaignSendJobCreateQuery'
responses:
'202':
description: Success
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PostCampaignSendJobResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-operation-aliases:
- create_campaign_send_job
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:write
x-klaviyo-subtag: Jobs
/api/campaign-recipient-estimation-jobs:
post:
operationId: refresh_campaign_recipient_estimation
summary: Refresh Campaign Recipient Estimation
description: 'Trigger an asynchronous job to update the estimated number of recipients
for the given campaign ID. Use the `Get Campaign Recipient Estimation
Job` endpoint to retrieve the status of this estimation job. Use the
`Get Campaign Recipient Estimation` endpoint to retrieve the estimated
recipient count for a given campaign.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns: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:
description: 'Trigger an asynchronous job to update the estimated number of recipients
for the given campaign ID. Use the `Get Campaign Recipient Estimation
Job` endpoint to retrieve the status of this estimation job. Use the
`Get Campaign Recipient Estimation` endpoint to retrieve the estimated
recipient count for a given campaign.'
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CampaignRecipientEstimationJobCreateQuery'
responses:
'202':
description: Success
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PostCampaignRecipientEstimationJobResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-operation-aliases:
- create_campaign_recipient_estimation_job
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:write
x-klaviyo-subtag: Jobs
/api/campaign-messages/{id}/campaign:
get:
operationId: get_campaign_for_campaign_message
summary: Get Campaign for Campaign Message
description: 'Return the related campaign
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns:read`'
parameters:
- name: id
in: path
description: ''
required: true
schema:
type: string
- name: fields[campaign]
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:
- archived
- audiences
- audiences.excluded
- audiences.included
- created_at
- name
- scheduled_at
- send_options
- send_options.use_smart_sending
- send_strategy
- send_strategy.date
- send_strategy.datetime
- send_strategy.method
- send_strategy.options
- send_strategy.options.is_local
- send_strategy.options.send_past_recipients_immediately
- send_strategy.throttle_percentage
- send_time
- status
- tracking_options
- tracking_options.add_tracking_params
- tracking_options.custom_tracking_params
- tracking_options.is_tracking_clicks
- tracking_options.is_tracking_opens
- updated_at
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/GetCampaignResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-operation-aliases:
- get_campaign_message_campaign
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:read
x-klaviyo-subtag: Messages
/api/campaign-messages/{id}/relationships/campaign:
get:
operationId: get_campaign_id_for_campaign_message
summary: Get Campaign ID for Campaign Message
description: 'Returns the ID of the related campaign
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns:read`'
parameters:
- name: id
in: path
description: ''
required: true
schema:
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/GetCampaignMessageCampaignRelationshipResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-operation-aliases:
- get_campaign_message_relationships_campaign
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:read
x-klaviyo-subtag: Messages
/api/campaign-messages/{id}/template:
get:
operationId: get_template_for_campaign_message
summary: Get Template for Campaign Message
description: 'Return the related template
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns:read`
`templates:read`'
parameters:
- name: id
in: path
description: ''
required: true
schema:
type: string
- name: fields[template]
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:
- amp
- created
- editor_type
- html
- name
- text
- 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/GetTemplateResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-operation-aliases:
- get_campaign_message_template
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:read
- templates:read
x-klaviyo-subtag: Messages
/api/campaign-messages/{id}/relationships/template:
get:
operationId: get_template_id_for_campaign_message
summary: Get Template ID for Campaign Message
description: 'Returns the ID of the related template
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns:read`
`templates:read`'
parameters:
- name: id
in: path
description: ''
required: true
schema:
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/GetCampaignMessageTemplateRelationshipResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-operation-aliases:
- get_campaign_message_relationships_template
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:read
- templates:read
x-klaviyo-subtag: Messages
/api/campaign-messages/{id}/image:
get:
operationId: get_image_for_campaign_message
summary: Get Image for Campaign Message
description: 'Return the related image for a given campaign message
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns:read`
`images:read`'
parameters:
- name: id
in: path
description: ''
required: true
schema:
type: string
- name: fields[image]
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:
- format
- hidden
- image_url
- name
- size
- updated_at
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/GetImageResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-operation-aliases:
- get_campaign_message_image
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:read
- images:read
x-klaviyo-subtag: Messages
/api/campaign-messages/{id}/relationships/image:
get:
operationId: get_image_id_for_campaign_message
summary: Get Image ID for Campaign Message
description: 'Returns the ID of the related image
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns:read`
`images:read`'
parameters:
- name: id
in: path
description: ''
required: true
schema:
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/GetCampaignMessageImageRelationshipResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-operation-aliases:
- get_campaign_message_relationships_image
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:read
- images:read
x-klaviyo-subtag: Messages
patch:
operationId: update_image_for_campaign_message
summary: Update Image for Campaign Message
description: 'Update a campaign message image
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns:write`
`images:read`'
parameters:
- name: id
in: path
description: ''
required: true
schema:
type: string
- 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/CampaignMessageImageUpdateQuery'
responses:
'204':
description: Success
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-operation-aliases:
- update_campaign_message_relationships_image
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:write
- images:read
x-klaviyo-subtag: Messages
/api/campaigns/{id}/tags:
get:
operationId: get_tags_for_campaign
summary: Get Tags for Campaign
description: 'Return all tags that belong to the given campaign.
*Rate limits*:
Burst: `3/s`
Steady: `60/m`
**Scopes:**
`campaigns:read`
`tags:read`'
parameters:
- name: id
in: path
description: ''
required: true
schema:
type: string
- name: fields[tag]
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:
- name
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/GetTagResponseCollection'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-operation-aliases:
- get_campaign_tags
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 3/s
steady: 60/m
x-klaviyo-scopes:
- campaigns:read
- tags:read
/api/campaigns/{id}/relationships/tags:
get:
operationId: get_tag_ids_for_campaign
summary: Get Tag IDs for Campaign
description: 'Returns the IDs of all tags associated with the given campaign.
*Rate limits*:
Burst: `3/s`
Steady: `60/m`
**Scopes:**
`campaigns:read`
`tags:read`'
parameters:
- name: id
in: path
description: ''
required: true
schema:
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/GetCampaignTagsRelationshipsResponseCollection'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-operation-aliases:
- get_campaign_relationships_tags
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 3/s
steady: 60/m
x-klaviyo-scopes:
- campaigns:read
- tags:read
/api/campaigns/{id}/campaign-messages:
get:
operationId: get_messages_for_campaign
summary: Get Messages for Campaign
description: 'Return all messages that belong to the given campaign.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns:read`'
parameters:
- name: id
in: path
description: ''
required: true
schema:
type: string
- name: fields[campaign-message]
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_at
- definition
- definition.channel
- definition.content
- definition.content.action_buttons
- definition.content.bcc_email
- definition.content.body
- definition.content.cc_email
- definition.content.dynamic_image
- definition.content.from_email
- definition.content.from_label
- definition.content.media_url
- definition.content.preview_text
- definition.content.reply_to_email
- definition.content.subject
- definition.content.title
- definition.kv_pairs
- definition.label
- definition.notification_type
- definition.options
- definition.options.badge
- definition.options.badge.badge_options
- definition.options.badge.badge_options.badge_config
- definition.options.badge.badge_options.set_from_property
- definition.options.badge.badge_options.value
- definition.options.badge.display
- definition.options.on_open
- definition.options.on_open.android_deep_link
- definition.options.on_open.ios_deep_link
- definition.options.on_open.type
- definition.options.play_sound
- definition.render_options
- definition.render_options.add_info_link
- definition.render_options.add_opt_out_language
- definition.render_options.add_org_prefix
- definition.render_options.shorten_links
- send_times
- updated_at
explode: false
- name: fields[campaign]
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:
- archived
- audiences
- audiences.excluded
- audiences.included
- created_at
- name
- scheduled_at
- send_options
- send_options.use_smart_sending
- send_strategy
- send_strategy.date
- send_strategy.datetime
- send_strategy.method
- send_strategy.options
- send_strategy.options.is_local
- send_strategy.options.send_past_recipients_immediately
- send_strategy.throttle_percentage
- send_time
- status
- tracking_options
- tracking_options.add_tracking_params
- tracking_options.custom_tracking_params
- tracking_options.is_tracking_clicks
- tracking_options.is_tracking_opens
- updated_at
explode: false
- name: fields[image]
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:
- format
- hidden
- image_url
- name
- size
- updated_at
explode: false
- name: fields[template]
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:
- amp
- created
- editor_type
- html
- name
- text
- 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:
- campaign
- image
- template
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/GetCampaignMessageResponseCollectionCompoundDocument'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-operation-aliases:
- get_campaign_campaign_messages
- get_campaign_messages
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:read
/api/campaigns/{id}/relationships/campaign-messages:
get:
operationId: get_message_ids_for_campaign
summary: Get Message IDs for Campaign
description: 'Returns the IDs of all messages associated with the given campaign.
*Rate limits*:
Burst: `10/s`
Steady: `150/m`
**Scopes:**
`campaigns:read`'
parameters:
- name: id
in: path
description: ''
required: true
schema:
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/GetCampaignMessagesRelationshipsResponseCollection'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Campaigns
x-klaviyo-operation-aliases:
- get_campaign_relationships_campaign_messages
- get_campaign_relationships_messages
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 10/s
steady: 150/m
x-klaviyo-scopes:
- campaigns:read
components:
schemas:
CampaignMessageIncrement:
type: object
properties:
badge_config:
type: string
enum:
- increment_one
required:
- badge_config
CampaignMessageCreateQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignMessageEnum'
attributes:
type: object
properties:
definition:
oneOf:
- $ref: '#/components/schemas/EmailMessageDefinition'
- $ref: '#/components/schemas/SMSMessageDefinitionCreate'
- $ref: '#/components/schemas/MobilePushMessageStandardDefinitionCreate'
- $ref: '#/components/schemas/MobilePushMessageSilentDefinitionCreate'
required:
- definition
relationships:
type: object
properties:
image:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/ImageEnum'
id:
description: The associated image for mobile_push messages
type: string
required:
- type
- id
required:
- type
- attributes
MobilePushOptions:
type: object
properties:
on_open:
nullable: true
oneOf:
- $ref: '#/components/schemas/PushOnOpenApp'
- $ref: '#/components/schemas/PushOnOpenDeepLink'
badge:
description: Only supported on iOS.
nullable: true
oneOf:
- $ref: '#/components/schemas/MobilePushBadge'
- $ref: '#/components/schemas/MobilePushNoBadge'
play_sound:
description: Only supported on iOS.
type: boolean
default: false
nullable: true
ImageResponseObjectResource:
type: object
properties:
type:
$ref: '#/components/schemas/ImageEnum'
id:
description: The ID of the image
type: string
example: '7'
attributes:
type: object
properties:
name:
type: string
image_url:
type: string
format:
type: string
size:
type: integer
hidden:
type: boolean
updated_at:
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
required:
- name
- image_url
- format
- size
- hidden
- updated_at
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- type
- id
- attributes
- links
CampaignPartialUpdateQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignEnum'
id:
description: The campaign ID to be retrieved
type: string
attributes:
type: object
properties:
name:
description: The campaign name
type: string
example: My new campaign
nullable: true
audiences:
description: The audiences to be included and/or excluded from the campaign
$ref: '#/components/schemas/AudiencesUpdate'
nullable: true
send_options:
description: Options to use when sending a campaign
nullable: true
oneOf:
- $ref: '#/components/schemas/EmailSendOptions'
- $ref: '#/components/schemas/SMSSendOptions'
- $ref: '#/components/schemas/PushSendOptions'
tracking_options:
description: The tracking options associated with the campaign
nullable: true
oneOf:
- $ref: '#/components/schemas/CampaignsEmailTrackingOptions'
- $ref: '#/components/schemas/CampaignsSMSTrackingOptions'
send_strategy:
description: The send strategy the campaign will send with
nullable: true
oneOf:
- $ref: '#/components/schemas/StaticSendStrategy'
- $ref: '#/components/schemas/ThrottledSendStrategy'
- $ref: '#/components/schemas/ImmediateSendStrategy'
- $ref: '#/components/schemas/SmartSendTimeStrategy'
required:
- type
- id
- attributes
StaticSendStrategy:
type: object
properties:
method:
type: string
enum:
- static
datetime:
description: The time to send at
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
options:
description: If the campaign should be sent with local recipient timezone send (requires UTC time) or statically sent at the given time.
nullable: true
oneOf:
- $ref: '#/components/schemas/LocalStaticSend'
- $ref: '#/components/schemas/NonLocalStaticSend'
required:
- method
- datetime
CampaignMessageEnum:
type: string
enum:
- campaign-message
SMSContentCreate:
type: object
properties:
body:
description: The message body
type: string
example: My preview sms
nullable: true
GetTagResponseCollection:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/TagResponseObjectResource'
links:
$ref: '#/components/schemas/CollectionLinks'
required:
- data
ListEnum:
type: string
enum:
- list
GetCampaignResponseCompoundDocument:
type: object
properties:
data:
$ref: '#/components/schemas/CampaignResponseObjectResource'
included:
type: array
items:
oneOf:
- $ref: '#/components/schemas/TagResponseObjectResource'
- $ref: '#/components/schemas/CampaignMessageResponseObjectResource'
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
CampaignMessageAssignTemplateQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignMessageEnum'
id:
description: The message ID to be assigned to
type: string
relationships:
type: object
properties:
template:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/TemplateEnum'
id:
description: The template ID to assign
type: string
example: RipRmi
required:
- type
- id
required:
- template
required:
- type
- id
- relationships
PushSendOptions:
type: object
properties:
use_smart_sending:
description: Use smart sending.
type: boolean
example: true
default: true
nullable: true
GetCampaignMessageCampaignRelationshipResponse:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignEnum'
id:
description: The campaign ID
type: string
required:
- type
- id
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
Audiences:
type: object
properties:
included:
description: A list of included audiences
type: array
items:
type: string
example:
- Y6nRLr
excluded:
description: An optional list of excluded audiences
type: array
items:
type: string
example:
- UTd5ui
nullable: true
required:
- included
GetCampaignMessageResponseCollectionCompoundDocument:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CampaignMessageResponseObjectResource'
links:
$ref: '#/components/schemas/CollectionLinks'
included:
type: array
items:
oneOf:
- $ref: '#/components/schemas/TemplateResponseObjectResource'
- $ref: '#/components/schemas/CampaignResponseObjectResource'
- $ref: '#/components/schemas/ImageResponseObjectResource'
required:
- data
CampaignMessageResponseObjectResource:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignMessageEnum'
id:
description: The message ID
type: string
attributes:
type: object
properties:
definition:
nullable: true
oneOf:
- $ref: '#/components/schemas/EmailMessageDefinition'
- $ref: '#/components/schemas/SMSMessageDefinition'
- $ref: '#/components/schemas/MobilePushMessageStandardDefinition'
- $ref: '#/components/schemas/MobilePushMessageSilentDefinition'
send_times:
description: The list of appropriate Send Time Sub-objects associated with the message
type: array
items:
$ref: '#/components/schemas/SendTime'
nullable: true
created_at:
description: The datetime when the message was created
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
nullable: true
updated_at:
description: The datetime when the message was last updated
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
nullable: true
relationships:
type: object
properties:
campaign:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignEnum'
id:
description: The parent campaign id
type: string
required:
- type
- id
links:
$ref: '#/components/schemas/RelationshipLinks'
template:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/TemplateEnum'
id:
description: The associated template id
type: string
required:
- type
- id
links:
$ref: '#/components/schemas/RelationshipLinks'
image:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/ImageEnum'
id:
description: The associated image id
type: string
required:
- type
- id
links:
$ref: '#/components/schemas/RelationshipLinks'
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- type
- id
- attributes
- links
CampaignRecipientEstimationJobCreateQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignRecipientEstimationJobEnum'
id:
description: The ID of the campaign to perform recipient estimation
type: string
required:
- type
- id
StaticTrackingParam:
type: object
properties:
type:
description: The type of the tracking parameter
type: string
enum:
- static
value:
description: The value of the tracking parameter
type: string
name:
description: Name of the tracking param
type: string
example: utm_medium
required:
- type
- value
- name
ObjectLinks:
type: object
properties:
self:
type: string
format: uri
required:
- self
EmailContentSubObject:
type: object
properties:
subject:
description: The subject of the message
type: string
example: Buy our product!
nullable: true
preview_text:
description: Preview text associated with the message
type: string
example: My preview text
nullable: true
from_email:
description: The email the message should be sent from
type: string
example: store@my-company.com
nullable: true
from_label:
description: The label associated with the from_email
type: string
example: My Company
nullable: true
reply_to_email:
description: Optional Reply-To email address
type: string
example: reply-to@my-company.com
nullable: true
cc_email:
description: Optional CC email address
type: string
example: cc@my-company.com
nullable: true
bcc_email:
description: Optional BCC email address
type: string
example: bcc@my-company.com
nullable: true
ABTestSendStrategy:
type: object
properties:
method:
type: string
enum:
- ab_test_campaign
required:
- method
TagEnum:
type: string
enum:
- tag
SMSContent:
type: object
properties:
body:
description: The message body
type: string
example: My preview sms
nullable: true
media_url:
description: URL for included media
type: string
nullable: true
GetCampaignResponse:
type: object
properties:
data:
$ref: '#/components/schemas/CampaignResponseObjectResource'
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
SendTime:
type: object
properties:
datetime:
description: The datetime that the message is to be sent
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
is_local:
description: Whether that datetime is to be a local datetime for the recipient
type: boolean
required:
- datetime
- is_local
CampaignMessagePartialUpdateQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignMessageEnum'
id:
description: The message ID to be retrieved
type: string
attributes:
type: object
properties:
definition:
description: The contents and settings of the campaign message
nullable: true
oneOf:
- $ref: '#/components/schemas/EmailMessageDefinition'
- $ref: '#/components/schemas/SMSMessageDefinitionCreate'
- $ref: '#/components/schemas/MobilePushMessageStandardDefinitionUpdate'
- $ref: '#/components/schemas/MobilePushMessageSilentDefinitionUpdate'
relationships:
type: object
properties:
image:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/ImageEnum'
id:
description: The associated image for mobile_push messages
type: string
required:
- type
- id
required:
- type
- id
- attributes
SMSContentSubObject:
type: object
properties:
body:
description: The message body
type: string
example: My preview sms
nullable: true
media_url:
description: URL for included media
type: string
nullable: true
PostCampaignSendJobResponse:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignSendJobEnum'
id:
description: The ID of the campaign to send
type: string
attributes:
type: object
properties:
status:
description: The status of the send job
type: string
enum:
- cancelled
- complete
- processing
- queued
required:
- status
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- type
- id
- attributes
- links
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
MobilePushNoBadge:
type: object
properties:
display:
description: Whether to display a badge on the app icon
type: boolean
enum:
- false
required:
- display
CampaignCreateQuery:
type: object
properties:
data:
$ref: '#/components/schemas/CampaignCreateQueryResourceObject'
required:
- data
CampaignResponseObjectResource:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignEnum'
id:
description: The campaign ID
type: string
attributes:
type: object
properties:
name:
description: The campaign name
type: string
status:
description: The current status of the campaign
type: string
enum:
- Adding Recipients
- Cancelled
- 'Cancelled: Account Disabled'
- 'Cancelled: Billing Limit'
- 'Cancelled: Internal Error'
- 'Cancelled: Misconfigured'
- 'Cancelled: No Recipients'
- 'Cancelled: Smart Sending'
- Draft
- Preparing to schedule
- Preparing to send
- Queued without Recipients
- Scheduled
- Sending
- Sending Segments
- Sent
- Unknown
- Variations Sent
archived:
description: Whether the campaign has been archived or not
type: boolean
audiences:
description: The audiences to be included and/or excluded from the campaign
$ref: '#/components/schemas/Audiences'
send_options:
description: Options to use when sending a campaign
oneOf:
- $ref: '#/components/schemas/EmailSendOptions'
- $ref: '#/components/schemas/SMSSendOptions'
- $ref: '#/components/schemas/PushSendOptions'
tracking_options:
description: The tracking options associated with the campaign
nullable: true
oneOf:
- $ref: '#/components/schemas/CampaignsEmailTrackingOptions'
- $ref: '#/components/schemas/CampaignsSMSTrackingOptions'
send_strategy:
description: The send strategy the campaign will send with
oneOf:
- $ref: '#/components/schemas/StaticSendStrategy'
- $ref: '#/components/schemas/SmartSendTimeStrategy'
- $ref: '#/components/schemas/ThrottledSendStrategy'
- $ref: '#/components/schemas/ImmediateSendStrategy'
- $ref: '#/components/schemas/ABTestSendStrategy'
- $ref: '#/components/schemas/UnsupportedSendStrategy'
created_at:
description: The datetime when the campaign was created
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
scheduled_at:
description: The datetime when the campaign was scheduled for future sending
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
nullable: true
updated_at:
description: The datetime when the campaign was last updated by a user or the system
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
send_time:
description: The datetime when the campaign will be / was sent or None if not yet scheduled by a send_job.
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
nullable: true
required:
- name
- status
- archived
- audiences
- send_options
- send_strategy
- created_at
- updated_at
relationships:
type: object
properties:
campaign-messages:
type: object
properties:
data:
type: array
items:
type: object
required:
- type
- id
properties:
type:
$ref: '#/components/schemas/CampaignMessageEnum'
id:
description: The message(s) associated with the campaign
type: string
links:
$ref: '#/components/schemas/RelationshipLinks'
tags:
type: object
properties:
data:
type: array
items:
type: object
required:
- type
- id
properties:
type:
$ref: '#/components/schemas/TagEnum'
id:
type: string
links:
$ref: '#/components/schemas/RelationshipLinks'
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- type
- id
- attributes
- links
PatchCampaignMessageResponse:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignMessageEnum'
id:
description: The message ID
type: string
attributes:
type: object
properties:
definition:
nullable: true
oneOf:
- $ref: '#/components/schemas/EmailMessageDefinition'
- $ref: '#/components/schemas/SMSMessageDefinition'
- $ref: '#/components/schemas/MobilePushMessageStandardDefinition'
- $ref: '#/components/schemas/MobilePushMessageSilentDefinition'
send_times:
description: The list of appropriate Send Time Sub-objects associated with the message
type: array
items:
$ref: '#/components/schemas/SendTime'
nullable: true
created_at:
description: The datetime when the message was created
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
nullable: true
updated_at:
description: The datetime when the message was last updated
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
nullable: true
relationships:
type: object
properties:
campaign:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignEnum'
id:
description: The parent campaign id
type: string
required:
- type
- id
links:
$ref: '#/components/schemas/RelationshipLinks'
template:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/TemplateEnum'
id:
description: The associated template id
type: string
required:
- type
- id
links:
$ref: '#/components/schemas/RelationshipLinks'
image:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/ImageEnum'
id:
description: The associated image id
type: string
required:
- type
- id
links:
$ref: '#/components/schemas/RelationshipLinks'
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- type
- id
- attributes
- links
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
EmailContent:
type: object
properties:
subject:
description: The subject of the message
type: string
example: Buy our product!
nullable: true
preview_text:
description: Preview text associated with the message
type: string
example: My preview text
nullable: true
from_email:
description: The email the message should be sent from
type: string
example: store@my-company.com
nullable: true
from_label:
description: The label associated with the from_email
type: string
example: My Company
nullable: true
reply_to_email:
description: Optional Reply-To email address
type: string
example: reply-to@my-company.com
nullable: true
cc_email:
description: Optional CC email address
type: string
example: cc@my-company.com
nullable: true
bcc_email:
description: Optional BCC email address
type: string
example: bcc@my-company.com
nullable: true
SMSMessageDefinitionCreate:
type: object
properties:
channel:
type: string
enum:
- sms
content:
$ref: '#/components/schemas/SMSContentCreate'
description: Additional attributes relating to the content of the message
nullable: true
render_options:
description: Additional options for rendering the message
$ref: '#/components/schemas/RenderOptions'
nullable: true
required:
- channel
CampaignMessageStaticCount:
type: object
properties:
badge_config:
type: string
enum:
- set_count
value:
type: string
required:
- badge_config
- value
ImageEnum:
type: string
enum:
- image
MobilePushMessageStandardDefinitionUpdate:
type: object
properties:
channel:
type: string
enum:
- mobile_push
kv_pairs:
description: The key-value pairs to be sent with the push notification
type: object
nullable: true
content:
$ref: '#/components/schemas/MobilePushContentUpdate'
description: Additional attributes relating to the content of the message
nullable: true
options:
description: Additional device specific options for the push notification
$ref: '#/components/schemas/MobilePushOptions'
nullable: true
notification_type:
description: The type of notification to send
type: string
example: standard
default: standard
enum:
- standard
required:
- channel
CampaignMessageAssignTemplateQuery:
type: object
properties:
data:
$ref: '#/components/schemas/CampaignMessageAssignTemplateQueryResourceObject'
required:
- data
GetCampaignMessageResponseCompoundDocument:
type: object
properties:
data:
$ref: '#/components/schemas/CampaignMessageResponseObjectResource'
included:
type: array
items:
oneOf:
- $ref: '#/components/schemas/TemplateResponseObjectResource'
- $ref: '#/components/schemas/CampaignResponseObjectResource'
- $ref: '#/components/schemas/ImageResponseObjectResource'
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
MobilePushMessageStandardDefinitionCreate:
type: object
properties:
channel:
type: string
enum:
- mobile_push
content:
$ref: '#/components/schemas/MobilePushContentCreate'
description: Additional attributes relating to the content of the message
kv_pairs:
description: The key-value pairs to be sent with the push notification
type: object
nullable: true
options:
$ref: '#/components/schemas/MobilePushOptions'
nullable: true
notification_type:
description: The type of notification to send
type: string
example: standard
default: standard
enum:
- standard
required:
- channel
- content
RenderOptionsSubObject:
type: object
properties:
shorten_links:
type: boolean
example: true
default: true
nullable: true
add_org_prefix:
type: boolean
example: true
default: true
nullable: true
add_info_link:
type: boolean
example: true
default: true
nullable: true
add_opt_out_language:
type: boolean
default: false
nullable: true
GetTemplateResponse:
type: object
properties:
data:
$ref: '#/components/schemas/TemplateResponseObjectResource'
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
FlowEnum:
type: string
enum:
- flow
CampaignEnum:
type: string
enum:
- campaign
LocalStaticSend:
type: object
properties:
is_local:
description: Whether the campaign should be sent with local recipient timezone send (requires UTC time) or statically sent at the given time.
type: boolean
enum:
- true
send_past_recipients_immediately:
description: Determines if we should send to local recipient timezone if the given time has passed. Only applicable to local sends.
type: boolean
default: false
required:
- is_local
MobilePushContentUpdate:
type: object
properties:
title:
description: The title of the message
type: string
nullable: true
body:
description: The message body
type: string
example: My preview push notification
nullable: true
dynamic_image:
description: The dynamic image to be used in the push notification
type: string
nullable: true
action_buttons:
description: Action buttons for the push notification (max 3, positions 0-indexed with no gaps)
type: array
items:
$ref: '#/components/schemas/PushActionButtonDefinition'
nullable: true
MobilePushContent:
type: object
properties:
title:
description: The title of the message
type: string
nullable: true
body:
description: The message body
type: string
example: My preview push notification
nullable: true
dynamic_image:
description: The dynamic image to be used in the push notification
type: string
nullable: true
action_buttons:
description: Action buttons for the push notification
type: array
items:
$ref: '#/components/schemas/PushActionButtonDefinition'
nullable: true
CampaignCloneQuery:
type: object
properties:
data:
$ref: '#/components/schemas/CampaignCloneQueryResourceObject'
required:
- data
AudiencesUpdate:
type: object
properties:
included:
description: An optional list of included audiences, will override existing included audiences
type: array
items:
type: string
example:
- Y6nRLr
nullable: true
excluded:
description: An optional list of excluded audiences, will override exising excluded audiences
type: array
items:
type: string
example:
- UTd5ui
nullable: true
PostCampaignRecipientEstimationJobResponse:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignRecipientEstimationJobEnum'
id:
description: The ID of the campaign used for estimating recipients
type: string
example: 01GMRWDSA0ARTAKE1SFX8JGXAY
attributes:
type: object
properties:
status:
description: The status of the recipient estimation job
type: string
enum:
- cancelled
- complete
- processing
- queued
required:
- status
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- type
- id
- attributes
- links
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
PatchCampaignResponse:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignEnum'
id:
description: The campaign ID
type: string
attributes:
type: object
properties:
name:
description: The campaign name
type: string
status:
description: The current status of the campaign
type: string
enum:
- Adding Recipients
- Cancelled
- 'Cancelled: Account Disabled'
- 'Cancelled: Billing Limit'
- 'Cancelled: Internal Error'
- 'Cancelled: Misconfigured'
- 'Cancelled: No Recipients'
- 'Cancelled: Smart Sending'
- Draft
- Preparing to schedule
- Preparing to send
- Queued without Recipients
- Scheduled
- Sending
- Sending Segments
- Sent
- Unknown
- Variations Sent
archived:
description: Whether the campaign has been archived or not
type: boolean
audiences:
description: The audiences to be included and/or excluded from the campaign
$ref: '#/components/schemas/Audiences'
send_options:
description: Options to use when sending a campaign
oneOf:
- $ref: '#/components/schemas/EmailSendOptions'
- $ref: '#/components/schemas/SMSSendOptions'
- $ref: '#/components/schemas/PushSendOptions'
tracking_options:
description: The tracking options associated with the campaign
nullable: true
oneOf:
- $ref: '#/components/schemas/CampaignsEmailTrackingOptions'
- $ref: '#/components/schemas/CampaignsSMSTrackingOptions'
send_strategy:
description: The send strategy the campaign will send with
oneOf:
- $ref: '#/components/schemas/StaticSendStrategy'
- $ref: '#/components/schemas/SmartSendTimeStrategy'
- $ref: '#/components/schemas/ThrottledSendStrategy'
- $ref: '#/components/schemas/ImmediateSendStrategy'
- $ref: '#/components/schemas/ABTestSendStrategy'
- $ref: '#/components/schemas/UnsupportedSendStrategy'
created_at:
description: The datetime when the campaign was created
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
scheduled_at:
description: The datetime when the campaign was scheduled for future sending
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
nullable: true
updated_at:
description: The datetime when the campaign was last updated by a user or the system
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
send_time:
description: The datetime when the campaign will be / was sent or None if not yet scheduled by a send_job.
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
nullable: true
required:
- name
- status
- archived
- audiences
- send_options
- send_strategy
- created_at
- updated_at
relationships:
type: object
properties:
campaign-messages:
type: object
properties:
data:
type: array
items:
type: object
required:
- type
- id
properties:
type:
$ref: '#/components/schemas/CampaignMessageEnum'
id:
description: The message(s) associated with the campaign
type: string
links:
$ref: '#/components/schemas/RelationshipLinks'
tags:
type: object
properties:
data:
type: array
items:
type: object
required:
- type
- id
properties:
type:
$ref: '#/components/schemas/TagEnum'
id:
type: string
links:
$ref: '#/components/schemas/RelationshipLinks'
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- type
- id
- attributes
- links
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
CampaignRecipientEstimationJobEnum:
type: string
enum:
- campaign-recipient-estimation-job
GetCampaignMessagesRelationshipsResponseCollection:
type: object
properties:
data:
type: array
items:
type: object
required:
- type
- id
properties:
type:
$ref: '#/components/schemas/CampaignMessageEnum'
id:
description: The message ID
type: string
links:
$ref: '#/components/schemas/CollectionLinks'
required:
- data
RelationshipLinks:
type: object
properties:
self:
type: string
format: uri
related:
type: string
format: uri
required:
- self
- related
MobilePushMessageSilentDefinition:
type: object
properties:
channel:
type: string
enum:
- mobile_push
notification_type:
description: The type of notification to send
type: string
enum:
- silent
kv_pairs:
description: The key-value pairs to be sent with the push notification
type: object
nullable: true
required:
- channel
- notification_type
CampaignMessageProperty:
type: object
properties:
badge_config:
type: string
enum:
- set_property
set_from_property:
type: string
required:
- badge_config
- set_from_property
GetCampaignMessageTemplateRelationshipResponse:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/TemplateEnum'
id:
description: The ID of template
type: string
required:
- type
- id
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
GetCampaignResponseCollectionCompoundDocument:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CampaignResponseObjectResource'
links:
$ref: '#/components/schemas/CollectionLinks'
included:
type: array
items:
oneOf:
- $ref: '#/components/schemas/TagResponseObjectResource'
- $ref: '#/components/schemas/CampaignMessageResponseObjectResource'
required:
- data
MobilePushMessageSilentDefinitionUpdate:
type: object
properties:
channel:
type: string
enum:
- mobile_push
kv_pairs:
description: The key-value pairs to be sent with the push notification
type: object
notification_type:
description: The type of notification to send
type: string
example: silent
default: silent
enum:
- silent
required:
- channel
CampaignRecipientEstimationJobResponseObjectResource:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignRecipientEstimationJobEnum'
id:
description: The ID of the campaign used for estimating recipients
type: string
example: 01GMRWDSA0ARTAKE1SFX8JGXAY
attributes:
type: object
properties:
status:
description: The status of the recipient estimation job
type: string
enum:
- cancelled
- complete
- processing
- queued
required:
- status
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- type
- id
- attributes
- links
CampaignRecipientEstimationEnum:
type: string
enum:
- campaign-recipient-estimation
EmailSendOptions:
type: object
properties:
use_smart_sending:
description: Use smart sending.
type: boolean
example: true
default: true
nullable: true
CampaignCloneQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignEnum'
id:
description: The campaign ID to be cloned
type: string
attributes:
type: object
properties:
new_name:
description: The name for the new cloned campaign
type: string
example: My cloned campaign's new name
nullable: true
required:
- type
- id
- attributes
SMSMessageDefinition:
type: object
properties:
channel:
type: string
enum:
- sms
content:
$ref: '#/components/schemas/SMSContent'
description: Additional attributes relating to the content of the message
nullable: true
render_options:
description: Additional options for rendering the message
$ref: '#/components/schemas/RenderOptions'
nullable: true
required:
- channel
TagResponseObjectResource:
type: object
properties:
type:
$ref: '#/components/schemas/TagEnum'
id:
description: The Tag ID
type: string
example: abcd1234-ef56-gh78-ij90-abcdef123456
attributes:
type: object
properties:
name:
description: The Tag name
type: string
example: My Tag
required:
- name
relationships:
type: object
properties:
tag-group:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/TagGroupEnum'
id:
type: string
required:
- type
- id
links:
$ref: '#/components/schemas/RelationshipLinks'
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'
campaigns:
type: object
properties:
data:
type: array
items:
type: object
required:
- type
- id
properties:
type:
$ref: '#/components/schemas/CampaignEnum'
id:
type: string
links:
$ref: '#/components/schemas/RelationshipLinks'
flows:
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
PushOnOpenApp:
type: object
properties:
type:
type: string
enum:
- open_app
required:
- type
SmartSendTimeStrategy:
type: object
properties:
method:
type: string
enum:
- smart_send_time
date:
description: The day to send on
type: string
format: date
required:
- method
- date
MobilePushMessageSilentDefinitionCreate:
type: object
properties:
channel:
type: string
enum:
- mobile_push
kv_pairs:
description: The key-value pairs to be sent with the push notification
type: object
nullable: true
notification_type:
description: The type of notification to send
type: string
example: silent
default: silent
enum:
- silent
required:
- channel
SegmentEnum:
type: string
enum:
- segment
MobilePushContentCreate:
type: object
properties:
title:
description: The title of the message
type: string
nullable: true
body:
description: The message body
type: string
example: My preview push notification
dynamic_image:
description: The dynamic image to be used in the push notification
type: string
nullable: true
action_buttons:
description: Action buttons for the push notification (max 3, positions 0-indexed with no gaps)
type: array
items:
$ref: '#/components/schemas/PushActionButtonDefinition'
nullable: true
required:
- body
PushOnOpenDeepLink:
type: object
properties:
type:
type: string
enum:
- deep_link
ios_deep_link:
description: required for all platforms enabled for push
type: string
nullable: true
android_deep_link:
description: required for all platforms enabled for push
type: string
nullable: true
required:
- type
TagGroupEnum:
type: string
enum:
- tag-group
PushActionButtonDefinition:
type: object
properties:
label:
description: The button label (max 40 characters)
type: string
action_type:
description: 'The action type: open_app, deep_link, open_url, or dismiss'
type: string
position:
description: The display order of the button (0-indexed). If omitted, inferred from the button's order in the list.
type: integer
nullable: true
url:
description: URL for deep_link or open_url action types (max 2048 characters)
type: string
nullable: true
required:
- label
- action_type
GetCampaignRecipientEstimationResponse:
type: object
properties:
data:
$ref: '#/components/schemas/CampaignRecipientEstimationResponseObjectResource'
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
CampaignSendJobPartialUpdateQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignSendJobEnum'
id:
description: The ID of the currently sending campaign to cancel or revert
type: string
attributes:
type: object
properties:
action:
description: The action you would like to take with this send job from among 'cancel' and 'revert'
type: string
example: cancel
enum:
- cancel
- revert
required:
- action
required:
- type
- id
- attributes
EmailMessageDefinition:
type: object
properties:
channel:
type: string
enum:
- email
label:
description: The label or name on the message
type: string
example: My message name
nullable: true
content:
$ref: '#/components/schemas/EmailContent'
description: Additional attributes relating to the content of the message
nullable: true
required:
- channel
CampaignRecipientEstimationResponseObjectResource:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignRecipientEstimationEnum'
id:
description: The ID of the campaign for which to get the estimated number of recipients
type: string
attributes:
type: object
properties:
estimated_recipient_count:
description: The estimated number of unique recipients the campaign will send to
type: integer
required:
- estimated_recipient_count
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- type
- id
- attributes
- links
ThrottledSendStrategy:
type: object
properties:
method:
type: string
enum:
- throttled
datetime:
description: The time to send at
type: string
format: date-time
throttle_percentage:
description: The percentage of recipients per hour to send to.
type: integer
enum:
- 10
- 11
- 13
- 14
- 17
- 20
- 25
- 33
- 50
required:
- method
- datetime
- throttle_percentage
CampaignSendJobResponseObjectResource:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignSendJobEnum'
id:
description: The ID of the campaign to send
type: string
attributes:
type: object
properties:
status:
description: The status of the send job
type: string
enum:
- cancelled
- complete
- processing
- queued
required:
- status
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- type
- id
- attributes
- links
CampaignMessageImageUpdateQuery:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/ImageEnum'
id:
description: Campaign Message Image
type: string
example: '14254'
required:
- type
- id
required:
- data
SMSSendOptions:
type: object
properties:
use_smart_sending:
description: Use smart sending.
type: boolean
example: true
default: true
nullable: true
PostCampaignResponse:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignEnum'
id:
description: The campaign ID
type: string
attributes:
type: object
properties:
name:
description: The campaign name
type: string
status:
description: The current status of the campaign
type: string
enum:
- Adding Recipients
- Cancelled
- 'Cancelled: Account Disabled'
- 'Cancelled: Billing Limit'
- 'Cancelled: Internal Error'
- 'Cancelled: Misconfigured'
- 'Cancelled: No Recipients'
- 'Cancelled: Smart Sending'
- Draft
- Preparing to schedule
- Preparing to send
- Queued without Recipients
- Scheduled
- Sending
- Sending Segments
- Sent
- Unknown
- Variations Sent
archived:
description: Whether the campaign has been archived or not
type: boolean
audiences:
description: The audiences to be included and/or excluded from the campaign
$ref: '#/components/schemas/Audiences'
send_options:
description: Options to use when sending a campaign
oneOf:
- $ref: '#/components/schemas/EmailSendOptions'
- $ref: '#/components/schemas/SMSSendOptions'
- $ref: '#/components/schemas/PushSendOptions'
tracking_options:
description: The tracking options associated with the campaign
nullable: true
oneOf:
- $ref: '#/components/schemas/CampaignsEmailTrackingOptions'
- $ref: '#/components/schemas/CampaignsSMSTrackingOptions'
send_strategy:
description: The send strategy the campaign will send with
oneOf:
- $ref: '#/components/schemas/StaticSendStrategy'
- $ref: '#/components/schemas/SmartSendTimeStrategy'
- $ref: '#/components/schemas/ThrottledSendStrategy'
- $ref: '#/components/schemas/ImmediateSendStrategy'
- $ref: '#/components/schemas/ABTestSendStrategy'
- $ref: '#/components/schemas/UnsupportedSendStrategy'
created_at:
description: The datetime when the campaign was created
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
scheduled_at:
description: The datetime when the campaign was scheduled for future sending
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
nullable: true
updated_at:
description: The datetime when the campaign was last updated by a user or the system
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
send_time:
description: The datetime when the campaign will be / was sent or None if not yet scheduled by a send_job.
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
nullable: true
required:
- name
- status
- archived
- audiences
- send_options
- send_strategy
- created_at
- updated_at
relationships:
type: object
properties:
campaign-messages:
type: object
properties:
data:
type: array
items:
type: object
required:
- type
- id
properties:
type:
$ref: '#/components/schemas/CampaignMessageEnum'
id:
description: The message(s) associated with the campaign
type: string
links:
$ref: '#/components/schemas/RelationshipLinks'
tags:
type: object
properties:
data:
type: array
items:
type: object
required:
- type
- id
properties:
type:
$ref: '#/components/schemas/TagEnum'
id:
type: string
links:
$ref: '#/components/schemas/RelationshipLinks'
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- type
- id
- attributes
- links
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
CampaignsEmailTrackingOptions:
type: object
properties:
add_tracking_params:
description: Whether the campaign needs custom tracking parameters. If set to False, tracking params will not be used.
type: boolean
nullable: true
custom_tracking_params:
description: A list of custom tracking parameters. If an empty list is given and add_tracking_params is True, uses company defaults.
type: array
items:
oneOf:
- $ref: '#/components/schemas/DynamicTrackingParam'
- $ref: '#/components/schemas/StaticTrackingParam'
nullable: true
is_tracking_clicks:
description: Whether the campaign is tracking click events. If not specified, uses company defaults.
type: boolean
nullable: true
is_tracking_opens:
description: Whether the campaign is tracking open events. If not specified, uses company defaults.
type: boolean
nullable: true
CampaignRecipientEstimationJobCreateQuery:
type: object
properties:
data:
$ref: '#/components/schemas/CampaignRecipientEstimationJobCreateQueryResourceObject'
required:
- data
UnsupportedSendStrategy:
type: object
properties:
method:
type: string
enum:
- unsupported
required:
- method
CampaignMessagePartialUpdateQuery:
type: object
properties:
data:
$ref: '#/components/schemas/CampaignMessagePartialUpdateQueryResourceObject'
required:
- data
RenderOptions:
type: object
properties:
shorten_links:
type: boolean
example: true
default: true
nullable: true
add_org_prefix:
type: boolean
example: true
default: true
nullable: true
add_info_link:
type: boolean
example: true
default: true
nullable: true
add_opt_out_language:
type: boolean
default: false
nullable: true
GetCampaignMessageImageRelationshipResponse:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/ImageEnum'
id:
description: The ID of the image
type: string
example: '7'
required:
- type
- id
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
GetImageResponse:
type: object
properties:
data:
$ref: '#/components/schemas/ImageResponseObjectResource'
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
MobilePushMessageStandardDefinition:
type: object
properties:
channel:
type: string
enum:
- mobile_push
notification_type:
description: The type of notification to send
type: string
enum:
- standard
content:
$ref: '#/components/schemas/MobilePushContent'
description: Additional attributes relating to the content of the message
kv_pairs:
description: The key-value pairs to be sent with the push notification
type: object
nullable: true
options:
$ref: '#/components/schemas/MobilePushOptions'
nullable: true
required:
- channel
- notification_type
- content
TemplateEnum:
type: string
enum:
- template
CampaignPartialUpdateQuery:
type: object
properties:
data:
$ref: '#/components/schemas/CampaignPartialUpdateQueryResourceObject'
required:
- data
CampaignCreateQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignEnum'
attributes:
type: object
properties:
name:
description: The campaign name
type: string
example: My new campaign
audiences:
description: The audiences to be included and/or excluded from the campaign
$ref: '#/components/schemas/Audiences'
send_strategy:
description: The send strategy the campaign will send with. Defaults to 'Immediate' send strategy.
nullable: true
oneOf:
- $ref: '#/components/schemas/StaticSendStrategy'
- $ref: '#/components/schemas/ThrottledSendStrategy'
- $ref: '#/components/schemas/ImmediateSendStrategy'
- $ref: '#/components/schemas/SmartSendTimeStrategy'
send_options:
description: Options to use when sending a campaign
nullable: true
oneOf:
- $ref: '#/components/schemas/EmailSendOptions'
- $ref: '#/components/schemas/SMSSendOptions'
- $ref: '#/components/schemas/PushSendOptions'
tracking_options:
description: The tracking options associated with the campaign
nullable: true
oneOf:
- $ref: '#/components/schemas/CampaignsEmailTrackingOptions'
- $ref: '#/components/schemas/CampaignsSMSTrackingOptions'
campaign-messages:
description: The message(s) associated with the campaign
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CampaignMessageCreateQueryResourceObject'
required:
- data
required:
- name
- audiences
- campaign-messages
required:
- type
- attributes
GetCampaignTagsRelationshipsResponseCollection:
type: object
properties:
data:
type: array
items:
type: object
required:
- type
- id
properties:
type:
$ref: '#/components/schemas/TagEnum'
id:
description: The Tag ID
type: string
example: abcd1234-ef56-gh78-ij90-abcdef123456
links:
$ref: '#/components/schemas/CollectionLinks'
required:
- data
PostCampaignMessageResponse:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignMessageEnum'
id:
description: The message ID
type: string
attributes:
type: object
properties:
label:
description: The label or name on the message
type: string
channel:
description: The channel the message is to be sent on
type: string
content:
description: Additional attributes relating to the content of the message
oneOf:
- $ref: '#/components/schemas/EmailContentSubObject'
- $ref: '#/components/schemas/SMSContentSubObject'
send_times:
description: The list of appropriate Send Time Sub-objects associated with the message
type: array
items:
$ref: '#/components/schemas/SendTimeSubObject'
nullable: true
render_options:
description: Additional options for rendering the message
$ref: '#/components/schemas/RenderOptionsSubObject'
nullable: true
created_at:
description: The datetime when the message was created
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
nullable: true
updated_at:
description: The datetime when the message was last updated
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
nullable: true
required:
- label
- channel
- content
relationships:
type: object
properties:
campaign:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignEnum'
id:
description: The parent campaign id
type: string
required:
- type
- id
links:
$ref: '#/components/schemas/RelationshipLinks'
template:
type: object
properties:
data:
type: object
properties:
type:
$ref: '#/components/schemas/TemplateEnum'
id:
description: The associated template id
type: string
required:
- type
- id
links:
$ref: '#/components/schemas/RelationshipLinks'
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- type
- id
- attributes
- links
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
GetCampaignRecipientEstimationJobResponse:
type: object
properties:
data:
$ref: '#/components/schemas/CampaignRecipientEstimationJobResponseObjectResource'
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
CampaignSendJobCreateQueryResourceObject:
type: object
properties:
type:
$ref: '#/components/schemas/CampaignSendJobEnum'
id:
description: The ID of the campaign to send
type: string
required:
- type
- id
GetCampaignSendJobResponse:
type: object
properties:
data:
$ref: '#/components/schemas/CampaignSendJobResponseObjectResource'
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
MobilePushBadge:
type: object
properties:
display:
description: Whether to display a badge on the app icon
type: boolean
enum:
- true
badge_options:
description: Badge options
nullable: true
oneOf:
- $ref: '#/components/schemas/CampaignMessageIncrement'
- $ref: '#/components/schemas/CampaignMessageStaticCount'
- $ref: '#/components/schemas/CampaignMessageProperty'
required:
- display
CampaignSendJobEnum:
type: string
enum:
- campaign-send-job
CampaignSendJobPartialUpdateQuery:
type: object
properties:
data:
$ref: '#/components/schemas/CampaignSendJobPartialUpdateQueryResourceObject'
required:
- data
ImmediateSendStrategy:
type: object
properties:
method:
type: string
enum:
- immediate
required:
- method
SendTimeSubObject:
type: object
properties:
datetime:
description: The datetime that the message is to be sent
type: string
format: date-time
example: '2022-11-08T00:00:00+00:00'
is_local:
description: Whether that datetime is to be a local datetime for the recipient
type: boolean
required:
- datetime
- is_local
CampaignsSMSTrackingOptions:
type: object
properties:
add_tracking_params:
description: Whether the campaign needs custom tracking parameters. If set to False, tracking params will not be used.
type: boolean
nullable: true
custom_tracking_params:
description: A list of custom tracking parameters. If an empty list is given and add_tracking_params is True, uses company defaults.
type: array
items:
oneOf:
- $ref: '#/components/schemas/DynamicTrackingParam'
- $ref: '#/components/schemas/StaticTrackingParam'
nullable: true
NonLocalStaticSend:
type: object
properties:
is_local:
description: Whether the campaign should be sent with local recipient timezone send (requires UTC time) or statically sent at the given time.
type: boolean
enum:
- false
required:
- is_local
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
DynamicTrackingParam:
type: object
properties:
type:
description: The type of the tracking parameter
type: string
enum:
- dynamic
value:
description: The value of the tracking parameter
type: string
enum:
- campaign_id
- campaign_name
- campaign_name_id
- campaign_name_send_day
- email_subject
- group_id
- group_name
- group_name_id
- link_alt_text
- message_type
- profile_external_id
- profile_id
name:
description: Name of the tracking param
type: string
example: utm_medium
required:
- type
- value
- name
CampaignSendJobCreateQuery:
type: object
properties:
data:
$ref: '#/components/schemas/CampaignSendJobCreateQueryResourceObject'
required:
- data
TemplateResponseObjectResource:
type: object
properties:
type:
$ref: '#/components/schemas/TemplateEnum'
id:
description: The ID of template
type: string
attributes:
type: object
properties:
name:
description: The name of the template
type: string
editor_type:
description: '`editor_type` has a fixed set of values:
* SYSTEM_DRAGGABLE: indicates a drag-and-drop editor template
* SIMPLE: A rich text editor template
* CODE: A custom HTML template
* USER_DRAGGABLE: A hybrid template, using custom HTML in the drag-and-drop editor'
type: string
html:
description: The rendered HTML of the template
type: string
text:
description: The template plain_text
type: string
nullable: true
amp:
description: The AMP version of the template. Requires AMP Email to be enabled to access in-app. Refer to the AMP Email setup guide at https://developers.klaviyo.com/en/docs/send_amp_emails_in_klaviyo
type: string
nullable: true
created:
description: The date the template 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: The date the template was 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
required:
- name
- editor_type
- html
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- type
- id
- attributes
- links
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