# 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'