Klaviyo · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Klaviyo Campaigns API
27 actions
27 updates
phrasing
extends
openapi/klaviyo-campaigns-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Klaviyo's API. It is a proposal applied on top of the contract, not a document Klaviyo publishes.
What the actions change
x-apievangelist-phrasing
Targets 27 · first 16 shown; the file carries all of them
$.info
$.paths['/api/campaigns'].get
$.paths['/api/campaigns'].post
$.paths['/api/campaigns/{id}'].get
$.paths['/api/campaigns/{id}'].delete
$.paths['/api/campaigns/{id}'].patch
$.paths['/api/campaign-messages/{id}'].get
$.paths['/api/campaign-messages/{id}'].patch
$.paths['/api/campaign-send-jobs/{id}'].get
$.paths['/api/campaign-send-jobs/{id}'].patch
$.paths['/api/campaign-recipient-estimation-jobs/{id}'].get
$.paths['/api/campaign-recipient-estimations/{id}'].get
$.paths['/api/campaign-clone'].post
$.paths['/api/campaign-message-assign-template'].post
$.paths['/api/campaign-send-jobs'].post
$.paths['/api/campaign-recipient-estimation-jobs'].post
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for Klaviyo Campaigns API
version: 1.0.0
extends: openapi/klaviyo-campaigns-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-09-26'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 26
- target: $.paths['/api/campaigns'].get
update:
x-apievangelist-phrasing:
intent: List email or SMS campaigns
effect: read
questions:
- How do I list all my email campaigns in Klaviyo?
- Why do I have to filter by channel before I can list campaigns?
- Can I sort campaigns by when they were created or scheduled?
instructions:
- text: List my campaigns matching {filter}.
slots:
filter: query.filter
- text: Show SMS campaigns using filter {filter}, sorted by {sort}.
slots:
filter: query.filter
sort: query.sort
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaigns'].post
update:
x-apievangelist-phrasing:
intent: Create a new campaign
effect: write
questions:
- What do I need to set up a new email campaign from scratch?
- Can I define the audience and send strategy when creating a campaign?
instructions:
- text: 'Create a campaign with these settings: {campaign}.'
slots:
campaign: requestBody.data
- text: Set up a new draft campaign targeting the audiences in {campaign}.
slots:
campaign: requestBody.data
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaigns/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get one campaign by ID
effect: read
questions:
- How can I see the status and settings of a single campaign?
- Can I include the campaign's messages and tags when fetching it?
instructions:
- text: Get campaign {campaign_id}.
slots:
campaign_id: path.id
- text: Show campaign {campaign_id} with its related {include}.
slots:
campaign_id: path.id
include: query.include
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaigns/{id}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a campaign
effect: destructive
questions:
- How do I permanently remove a campaign I no longer need?
- Is deleting a campaign by ID reversible?
instructions:
- text: Delete campaign {campaign_id}.
slots:
campaign_id: path.id
- text: Remove the old campaign {campaign_id} from my account.
slots:
campaign_id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaigns/{id}'].patch
update:
x-apievangelist-phrasing:
intent: Update a campaign's settings
effect: write
questions:
- Can I change the name or audience of a campaign that already exists?
- How do I reschedule a campaign's send strategy after creating it?
instructions:
- text: Update campaign {campaign_id} with {changes}.
slots:
campaign_id: path.id
changes: requestBody.data
- text: Rename campaign {campaign_id} and change its audiences to {changes}.
slots:
campaign_id: path.id
changes: requestBody.data
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaign-messages/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get one campaign message
effect: read
questions:
- How do I see the subject line and content settings of a campaign message?
- Can I fetch a single campaign message by its own ID?
instructions:
- text: Get campaign message {message_id}.
slots:
message_id: path.id
- text: Show campaign message {message_id} including its {include}.
slots:
message_id: path.id
include: query.include
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaign-messages/{id}'].patch
update:
x-apievangelist-phrasing:
intent: Update a campaign message
effect: write
questions:
- Can I change the subject line or preview text on a campaign message?
- What's the way to edit a message's content settings before it sends?
instructions:
- text: Update campaign message {message_id} with {changes}.
slots:
message_id: path.id
changes: requestBody.data
- text: Change the subject and preview text of message {message_id} to {changes}.
slots:
message_id: path.id
changes: requestBody.data
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaign-send-jobs/{id}'].get
update:
x-apievangelist-phrasing:
intent: Check a campaign send job
effect: read
questions:
- Has my campaign actually finished sending?
- Where do I check the status of a campaign send I triggered?
instructions:
- text: Get campaign send job {send_job_id}.
slots:
send_job_id: path.id
- text: Check whether send job {send_job_id} is still in progress.
slots:
send_job_id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaign-send-jobs/{id}'].patch
update:
x-apievangelist-phrasing:
intent: Cancel or revert a campaign send
effect: destructive
questions:
- Can I stop a campaign that's currently sending?
- Is it possible to put a sending campaign back into draft instead of canceling it?
instructions:
- text: Cancel the send for campaign job {send_job_id}.
slots:
send_job_id: path.id
- text: Revert send job {send_job_id} to draft using {action}.
slots:
send_job_id: path.id
action: requestBody.data
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaign-recipient-estimation-jobs/{id}'].get
update:
x-apievangelist-phrasing:
intent: Check a recipient estimation job
effect: read
questions:
- Has the job refreshing my campaign's recipient count finished?
- Where can I see the status of a recipient estimation job?
instructions:
- text: Get recipient estimation job {job_id}.
slots:
job_id: path.id
- text: Check if estimation job {job_id} is done running.
slots:
job_id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaign-recipient-estimations/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get a campaign's estimated recipients
effect: read
questions:
- About how many people will receive this campaign?
- What is the current estimated audience size for a campaign?
instructions:
- text: Get the estimated recipient count for campaign {campaign_id}.
slots:
campaign_id: path.id
- text: Tell me how many people campaign {campaign_id} is expected to reach.
slots:
campaign_id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaign-clone'].post
update:
x-apievangelist-phrasing:
intent: Clone an existing campaign
effect: write
questions:
- Can I duplicate a past campaign as the starting point for a new one?
- Does a cloned campaign get its own new ID and name?
instructions:
- text: Clone the campaign described in {clone_request}.
slots:
clone_request: requestBody.data
- text: 'Duplicate a campaign under a new name: {clone_request}.'
slots:
clone_request: requestBody.data
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaign-message-assign-template'].post
update:
x-apievangelist-phrasing:
intent: Assign a template to a campaign message
effect: write
questions:
- How do I apply one of my email templates to a campaign message?
- Does assigning a template to a message change the original template?
instructions:
- text: Assign the template to the campaign message as described in {assignment}.
slots:
assignment: requestBody.data
- text: Use template and message IDs {assignment} to set the message's design.
slots:
assignment: requestBody.data
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaign-send-jobs'].post
update:
x-apievangelist-phrasing:
intent: Send a campaign
effect: write
questions:
- How do I trigger a campaign to go out now?
- Is sending a campaign synchronous, or does it run as a background job?
instructions:
- text: Send campaign {campaign}.
slots:
campaign: requestBody.data
- text: Start the send job for campaign {campaign} right away.
slots:
campaign: requestBody.data
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaign-recipient-estimation-jobs'].post
update:
x-apievangelist-phrasing:
intent: Refresh a campaign's recipient estimate
effect: write
questions:
- My audience changed; how do I recalculate how many people a campaign will reach?
- Can I kick off a fresh recipient count for a campaign?
instructions:
- text: Refresh the recipient estimate for campaign {campaign}.
slots:
campaign: requestBody.data
- text: Start a new recipient estimation job for {campaign}.
slots:
campaign: requestBody.data
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaign-messages/{id}/campaign'].get
update:
x-apievangelist-phrasing:
intent: Get the campaign a message belongs to
effect: read
questions:
- Which campaign does this campaign message belong to?
- Can I get the full parent campaign from a message ID?
instructions:
- text: Get the campaign that message {message_id} belongs to.
slots:
message_id: path.id
- text: Show the full parent campaign for message {message_id}.
slots:
message_id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaign-messages/{id}/relationships/campaign'].get
update:
x-apievangelist-phrasing:
intent: Get the campaign ID for a message
effect: read
questions:
- Can I fetch only the parent campaign ID for a campaign message?
- What's the campaign relationship on a given message?
instructions:
- text: Get just the campaign ID for message {message_id}.
slots:
message_id: path.id
- text: Return the campaign relationship of message {message_id}.
slots:
message_id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaign-messages/{id}/template'].get
update:
x-apievangelist-phrasing:
intent: Get the template used by a campaign message
effect: read
questions:
- Which template is a campaign message using right now?
- Can I see the full HTML template assigned to a message?
instructions:
- text: Get the template assigned to campaign message {message_id}.
slots:
message_id: path.id
- text: Show the full template content for message {message_id}.
slots:
message_id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaign-messages/{id}/relationships/template'].get
update:
x-apievangelist-phrasing:
intent: Get the template ID for a campaign message
effect: read
questions:
- Can I get only the template ID a campaign message points to?
- What's the template relationship on a message?
instructions:
- text: Look up which template ID campaign message {message_id} points to.
slots:
message_id: path.id
- text: Return the template relationship of message {message_id}.
slots:
message_id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaign-messages/{id}/image'].get
update:
x-apievangelist-phrasing:
intent: Get the image on a campaign message
effect: read
questions:
- Which image is attached to a campaign message?
- Can I see the full image record used by a push or SMS message?
instructions:
- text: Get the image attached to campaign message {message_id}.
slots:
message_id: path.id
- text: Show image details for message {message_id}.
slots:
message_id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaign-messages/{id}/relationships/image'].get
update:
x-apievangelist-phrasing:
intent: Get the image ID for a campaign message
effect: read
questions:
- Can I get only the image ID a campaign message references?
- What's the image relationship on a message?
instructions:
- text: Look up the image ID referenced by campaign message {message_id}.
slots:
message_id: path.id
- text: Return the image relationship of message {message_id}.
slots:
message_id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaign-messages/{id}/relationships/image'].patch
update:
x-apievangelist-phrasing:
intent: Change the image on a campaign message
effect: write
questions:
- How do I swap the image used in a campaign message?
- Can I point a message at a different uploaded image?
instructions:
- text: Set the image on campaign message {message_id} to {image}.
slots:
message_id: path.id
image: requestBody.data
- text: Replace message {message_id}'s image with {image}.
slots:
message_id: path.id
image: requestBody.data
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaigns/{id}/tags'].get
update:
x-apievangelist-phrasing:
intent: List a campaign's tags
effect: read
questions:
- What tags are applied to a particular campaign?
- Can I get the full tag records for one campaign?
instructions:
- text: List the tags on campaign {campaign_id}.
slots:
campaign_id: path.id
- text: Show full tag details for campaign {campaign_id}.
slots:
campaign_id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaigns/{id}/relationships/tags'].get
update:
x-apievangelist-phrasing:
intent: Get tag IDs for a campaign
effect: read
questions:
- Can I fetch only the tag IDs on a campaign?
- What tag relationships does a campaign have?
instructions:
- text: Get just the tag IDs for campaign {campaign_id}.
slots:
campaign_id: path.id
- text: Return tag relationships of campaign {campaign_id}.
slots:
campaign_id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaigns/{id}/campaign-messages'].get
update:
x-apievangelist-phrasing:
intent: List a campaign's messages
effect: read
questions:
- What messages make up a given campaign?
- Can I see the full content settings of every message in a campaign?
instructions:
- text: List the messages in campaign {campaign_id}.
slots:
campaign_id: path.id
- text: Show every message of campaign {campaign_id} with its {include}.
slots:
campaign_id: path.id
include: query.include
method: generated
generated: '2026-09-26'
- target: $.paths['/api/campaigns/{id}/relationships/campaign-messages'].get
update:
x-apievangelist-phrasing:
intent: Get message IDs for a campaign
effect: read
questions:
- Can I get only the message IDs that belong to a campaign?
- What message relationships does a campaign carry?
instructions:
- text: Get just the message IDs for campaign {campaign_id}.
slots:
campaign_id: path.id
- text: Return message relationships of campaign {campaign_id}.
slots:
campaign_id: path.id
method: generated
generated: '2026-09-26'