{ "openapi": "3.0.2", "info": { "title": "Klaviyo API", "version": "2026-07-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": [] } ], "paths": { "/api/campaign-messages/{id}": { "patch": { "operationId": "update_campaign_message", "summary": "Update Campaign Message", "description": "Update a campaign message

*Rate limits*:
Burst: `10/s`
Steady: `150/m`\n\n**Scopes:**\n`campaigns:write`\n\n[OpenAPI Spec](https://raw.githubusercontent.com/klaviyo/openapi/main/openapi/stable/apis/update_campaign_message.json)", "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-07-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.on_open.web_url", "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", "id", "send_times", "updated_at" ] } }, "explode": false }, { "name": "revision", "in": "header", "description": "API endpoint revision (format: YYYY-MM-DD[.suffix])", "required": true, "schema": { "type": "string", "default": "2026-07-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" } } }, "components": { "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" ] } } } } }, "schemas": { "AgentHints": { "description": "Optional hints emitted by the API for agent callers", "type": "object", "properties": { "next_steps": { "description": "Suggested follow-up actions for agents to take after this response", "type": "array", "items": { "type": "string" } } } }, "CampaignEnum": { "type": "string", "enum": [ "campaign" ] }, "CampaignMessageEnum": { "type": "string", "enum": [ "campaign-message" ] }, "CampaignMessageIncrement": { "type": "object", "properties": { "badge_config": { "type": "string", "enum": [ "increment_one" ] } }, "required": [ "badge_config" ] }, "CampaignMessagePartialUpdateQuery": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/CampaignMessagePartialUpdateQueryResourceObject" } }, "required": [ "data" ] }, "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 or SMS messages", "type": "string" } }, "required": [ "type", "id" ] } } } } } }, "required": [ "type", "id", "attributes" ] }, "CampaignMessageProperty": { "type": "object", "properties": { "badge_config": { "type": "string", "enum": [ "set_property" ] }, "set_from_property": { "type": "string" } }, "required": [ "badge_config", "set_from_property" ] }, "CampaignMessageStaticCount": { "type": "object", "properties": { "badge_config": { "type": "string", "enum": [ "set_count" ] }, "value": { "type": "string" } }, "required": [ "badge_config", "value" ] }, "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 } } }, "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" ] }, "ImageEnum": { "type": "string", "enum": [ "image" ] }, "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" ] }, "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 } } }, "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 } } }, "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" ] }, "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" ] }, "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" ] }, "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" ] }, "MobilePushNoBadge": { "type": "object", "properties": { "display": { "description": "Whether to display a badge on the app icon", "type": "boolean", "enum": [ false ] } }, "required": [ "display" ] }, "MobilePushOptions": { "type": "object", "properties": { "on_open": { "nullable": true, "oneOf": [ { "$ref": "#/components/schemas/PushOnOpenApp" }, { "$ref": "#/components/schemas/PushOnOpenDeepLink" }, { "$ref": "#/components/schemas/PushOnOpenWebUrl" } ] }, "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 } } }, "ObjectLinks": { "type": "object", "properties": { "self": { "type": "string", "format": "uri" } }, "required": [ "self" ] }, "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" }, "meta": { "$ref": "#/components/schemas/ResponseMeta" } }, "required": [ "data" ] }, "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). Used as a fallback on platforms without a more specific ios_deep_link or android_deep_link.", "type": "string", "nullable": true }, "ios_deep_link": { "description": "iOS-specific URL for deep_link or open_url action types (max 2048 characters). Overrides url on iOS.", "type": "string", "nullable": true }, "android_deep_link": { "description": "Android-specific URL for deep_link or open_url action types (max 2048 characters). Overrides url on Android.", "type": "string", "nullable": true } }, "required": [ "label", "action_type" ] }, "PushOnOpenApp": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "open_app" ] } }, "required": [ "type" ] }, "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" ] }, "PushOnOpenWebUrl": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "open_web_url" ] }, "web_url": { "description": "External url to open when push notification is triggered", "type": "string", "nullable": true } }, "required": [ "type" ] }, "RelationshipLinks": { "type": "object", "properties": { "self": { "type": "string", "format": "uri" }, "related": { "type": "string", "format": "uri" } }, "required": [ "self", "related" ] }, "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 } } }, "ResponseMeta": { "description": "Response-level metadata", "type": "object", "properties": { "agent_hints": { "$ref": "#/components/schemas/AgentHints" } } }, "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 } } }, "SMSContentCreate": { "type": "object", "properties": { "body": { "description": "The message body", "type": "string", "example": "My preview sms", "nullable": true } } }, "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" ] }, "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" ] }, "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" ] }, "TemplateEnum": { "type": "string", "enum": [ "template" ] } }, "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-07-15/reference/api-overview#authentication", "x-default": "Klaviyo-API-Key your-private-api-key" } } }, "tags": [ { "name": "Campaigns", "description": "campaigns" } ] }